美文网首页
TCP三次握手和四次挥手

TCP三次握手和四次挥手

作者: 楼上那只猫 | 来源:发表于2020-06-13 13:37 被阅读0次

三次握手

  1. 客户端向服务端发出连接请求报文,报文首部同步位SYN=1,随机初始序列号seq=x,此时客户端进程进入了同步已发送状态
  2. 服务器收到请求报文后,如果同意连接,则发出确认报文,确认报文中包含ACK=1,SYN=1,确认号ack=x+1,同时自己要生成一个随机序列号seq=y,进入同步收到状态
  3. 客户端收到报文后,还要给出确认报文,ACK=1,ack=y+1,然后进入连接状态。
3次握手.png

为什么要3次握手呢?

如果客户端发送的一个连接请求,因为网络延迟失效,知道那么当这个失效的连接请求达到服务端后,服务端误以为请求有效,依然会返回确认报文,并进入连接状态,但是因为请求是失效的,所以客户端不会对服务端返回的报文进行响应,这样就导致服务器一直处于连接状态,等待客户端发送数据,造成资源浪费。如果采用三次握手,只有在收到客户端的确认报文后,整个TCP连接才算建立。

四次挥手

  1. 客户端发出连接释放报文,停止发送数据,报文首部FIN=1,seq=u,客户端进入等待状态1,FIN-WAIT-1。
  2. 服务端收到连接释放报文后,返回一个确认报文,ACK=1,ack=u+1,带上自己的序列号seq=v,此时服务器端进入关闭等待(CLOSE-WAIT)状态,这时处于半关闭状态,客户端不再发送数据,但是服务端要继续把未发送完的数据发送完毕。
    客户端收到服务端的确认报文后,进入FIN-WAIT-2状态,等待服务端发送连接释放报文。
  3. 服务端将最后的数据发送完毕后,向客户端发送连接释放报文,FIN=1,ack=u+1,此时,服务器进入LAST-ACK(最后确认)状态,等待客户端的确认。
  4. 客户端收到服务端的链接释放报文后,发出确认,ACK=1,ack=w+1,客户端进入TIME-WAIT(时间等待)状态,必须过一段时间后,才进入CLOSED状态。


    四次挥手.png

为什么要四次挥手?

服务器端在收到客户端的FIN报文后,并不会立即关闭SOCKET,因为此时服务器可能有些数据还未发送完成,因此只能先回应一个ACK报文,告诉客户端收到了释放报文,等到数据发送完成后,才向客户端发送FIN 报文。

相关文章

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

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

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

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

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

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

  • TCP连接的建立和终止

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

  • tcp/ip

    TCP/IP--理解TCP三次握手和四次挥手 - 简书

  • 知识点总结1-计算机网络

    1.TCP的三次握手和四次握手 建立TCP的话,需要三次握手才能建立,而断开连接则需要四次挥手 三次握手:通俗描述...

  • 三次握手和四次挥手

    三次握手是TCP建立连接时进行的,四次挥手是TCP断开连接是进行的,要弄明白三次握手和四次挥手,需要了解TCP的协...

  • TCP三次握手和四次挥手小结

    最近又在看TCP三次握手和四次挥手了,真的是每次看都会有新的体会啊。 通讯的动作 TCP三次握手和四次挥手看似复杂...

  • TCP连接管理(三次握手,四次挥手)

    TCP连接管理(三次握手,四次挥手) 三次握手 四次挥手 client和server的连接状态变化 主动发起关闭的...

  • tcp

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

网友评论

      本文标题:TCP三次握手和四次挥手

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