美文网首页
tcp的3次握手、4次挥手过程

tcp的3次握手、4次挥手过程

作者: 馒Care | 来源:发表于2021-08-25 10:17 被阅读0次

这篇讲的更加合理

https://blog.csdn.net/qq_25948717/article/details/80382766

3次握手流程

  • 首先要先明白TCP的几个关键标志位

位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)

  • 为什么要3次握手

三次握手(A three way handshake)是必须的, 因为 sequence numbers(序列号)没有绑定到整个网络的全局时钟(全部统一使用一个时钟,就可以确定这个包是不是延迟到的)以及 TCPs 可能有不同的机制来选择 ISN(初始序列号)。接收方接收到第一个 SYN 时,没有办法知道这个 SYN 是是否延迟了很久了,除非他有办法记住在这条连接中,最后接收到的那个sequence numbers(然而这不总是可行的)。这句话的意思是:一个 seq 过来了,跟现在记住的 seq 不一样,我怎么知道他是上条延迟的,还是上上条延迟的呢?所以,接收方一定需要跟发送方确认 SYN。

image.png

1.主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;
2.主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包,此时服务器进入SYN_RECV状态
3.主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

4次挥手

1.主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了
2.主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求,表示主机2也没有数据要发送给主机1了
3.主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态
4.主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。

  • 引申

为什么要3次握手

https://www.zhihu.com/question/24853633

为何要四次分手呢?

TCP是全双工模式,这就意味着:
1、当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;
2、当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;
3、当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,
4、之后彼此就会愉快的中断这次TCP连接

相关文章

  • 不积跬步--TCP三次握手和四次挥手过程

    本文来至转载TCP三次握手和四次挥手过程 TCP三次握手和四次挥手过程 1、三次握手 (1)三次握手的详述 首先C...

  • TCP连接和关闭过程

    TCP三次握手过程及四次挥手过程 HTTPS加密请求过程

  • TCP握手与挥手过程

    序列号: Seq 序列号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记确认序...

  • day 27 操作系统基础网络章节

    TCP/UDP协议说明 TCP协议三次握手过程原理 TCP协议四次挥手过程原理 问题: TCP十一种状态集转换 三...

  • TCP三次握手四次挥手(面试题)

    2020-12-25 简述下TCP三次握手的过程 简述下TCP四次挥手的过程 TCP/IP七层图解

  • 简明理解三次握手和四次挥手

    三次握手与四次挥手分别对应TCP连接建立过程与断开过程,先上TCP报文格式: 三次握手过程: 问题1: 为什么要三...

  • iOS 网络

    Http的报文结构 Https的4次握手过程 Cookie/Session TCP、三次握手、四次挥手、代码实现 ...

  • tcp三次握手四次挥手

    tcp三次握手四次挥手 TCP状态图 TCP状态时序图 tcp三次握手 流程图: TCP握手状态说明: TCP_S...

  • TCP的三次握手和四次挥手

    参考资料:[1].【TCP】详解TCP 三次握手和四次挥手[2]. iOS:为什么TCP连接要三次握手,四次挥手[...

  • 十七、网络解析

    一.TCP三次握手和四次挥手 1.TCP的传输过程: Seq 序列号 保障传输过程可靠。(缺点:发送速度,...

网友评论

      本文标题:tcp的3次握手、4次挥手过程

      本文链接:https://www.haomeiwen.com/subject/anajiltx.html