美文网首页
4.TCP的三次握手与四次挥手

4.TCP的三次握手与四次挥手

作者: 沫明 | 来源:发表于2018-09-25 20:35 被阅读0次

4.TCP的三次握手与四次挥手

三次握手
1.客户端将标志位syn=1,随机产生一个值seq=x,并将给数据包发送给服务端,客户端进入SYN-SENT(同步已发送)状态,等待服务端确认
2.服务端收到数据包后由syn=1得知客户端请求建立连接,服务端将标志位syn和ack都置为1,ack=1,随机产生一个值seq=y,并将该数据包发送给客户端用来确认连接请求,服务端进入SYN-RCVD(同步收到)状态,此时操作系统为该TCP连接分配TCP缓存和变量
3.客户端收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并且此时操作系统为该TCP连接分配TCP缓存和变量,并将该数据包发送给服务端,服务端检查ack是否为y+1,如果正确则连接建立成功

四次挥手

1.A的应用进程先向其TCP发出连接释放报文段(FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN-WAIT-1(终止等待1)状态,等待B的确认。
2.B收到连接释放报文段后即发出确认报文段,(ACK=1,确认号ack=u+1,序号seq=v),B进入CLOSE-WAIT(关闭等待)状态,此时的TCP处于半关闭状态,A到B的连接释放。
3.A收到B的确认后,进入FIN-WAIT-2(终止等待2)状态,等待B发出的连接释放报文段。
4.B没有要向A发出的数据,B发出连接释放报文段(FIN=1,ACK=1,序号seq=w,确认号ack=u+1),B进入LAST-ACK(最后确认)状态,等待A的确认。
5.A收到B的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),A进入TIME-WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,A才进入CLOSED状态。

为什么需要2MSL时间?

首先,MSL即Maximum Segment Lifetime,就是最大报文生存时间(即最长报文段寿命),是任何报文在网络上的存在的最长时间,超过这个时间报文将被丢弃。《TCP/IP详解》中是这样描述的:MSL是任何报文段被丢弃前在网络内的最长时间。RFC 793中规定MSL为2分钟,实际应用中常用的是30秒、1分钟、2分钟等。

为什么连接的时候是三次握手,关闭的时候却是四次握手?

答:因为当Server(服务)端收到Client(客户)端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

相关文章

  • 4.TCP的三次握手与四次挥手

    4.TCP的三次握手与四次挥手 三次握手1.客户端将标志位syn=1,随机产生一个值seq=x,并将给数据包发送给...

  • TCP的3次握手&4次挥手

    详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ” 为什么“握手”是三次,“挥手”却要四次? 建立连接时,被动...

  • 2、tcpdump抓包分析三次握手和四次挥手

    TCP为什么需要三次握手、四次挥手 三次握手 三次握手 四次挥手 SYN flood攻击

  • 基础-TCP连接

    理解三次握手以及四次挥手具体过程,三次握手的原因、四次挥手原因、TIME_WAIT 的作用。 一、三次握手 假设 ...

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

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

  • TCP连接的建立和终止

    目录(1)三次握手(2)四次挥手(3)TCP状态转换图(4)TCP连接三次握手+四次挥手+状态转换 一:三次握手 ...

  • tcp

    报文结构、三次握手、四次挥手 Tcp--三次握手,四次挥手[https://www.jianshu.com/p/a...

  • 三次握手与四次挥手

    三次握手 四次挥手

  • 2019-05-31

    三次握手 四次挥手

  • TCP三次握手与四次挥手

    TCP的三次握手与四次挥手(详解+动图)TCP之三次握手四次挥手 UDP,在传送数据前不需要先建立连接,远地的主机...

网友评论

      本文标题:4.TCP的三次握手与四次挥手

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