TCP三次握手 四次挥手

TCP三次握手 四次挥手TCP三次握手四次挥手预备知识TCP的标志位SYN(请求建立连接)ACK(确认)PSH(传送)FIN(结束)RST(重置)URG(紧急)TCP是面向连接的字节流协议,是全双工的。三次握手例图:第一次握手:客户端发送一个连接请求(SYN位置为1)第二次握手:服务端接收到连接请求,发送确认(SYN位置为1,ACK位置为1)第三次握手:客户端接受到服务端的确认,发

大家好,欢迎来到IT知识分享网。

TCP三次握手 四次挥手

预备知识

TCP的标志位

  • SYN(请求建立连接)
  • ACK(确认)
  • PSH(传送)
  • FIN(结束)
  • RST(重置)
  • URG(紧急)

TCP是面向连接的字节流协议,是全双工的。

三次握手

例图:
TCP三次握手 四次挥手

  • 第一次握手:客户端发送一个连接请求,测试服务端是否可以正常通信(SYN位置为1)
  • 第二次握手:服务端确认客户端的连接请求,并且同时发送一个请求,测试客户端是否可以正常通信(SYN位置为1, ACK位置为1)
  • 第三次握手:客户端接受到服务端的确认(了解到服务器可以正常通信),之后发送一个ACK,告诉服务器我可以正常通信(ACK位置为1)

如果服务器没有收到客服端的ACK,会超时重传自己的SYN请求,一直到收到服务端的ACK为止

为什么一定是三次握手呢?

考虑两次握手:客户端发送一个连接请求,服务端接受到连接请求,发送一个确认,此时服务端已经确认自己有接受报文的能力,认为连接已经建立,所以开始为已建立的连接分配资源,如果服务端发送的确认丢失,客户端就无从知道连接已经建立。如果存在大量这种情况,就有可能会造成服务器崩溃。

为什么不是四次呢?三次都已经够了,为什么还要多加一次

四次挥手

例图:
TCP三次握手 四次挥手

  • 第一次挥手:客户端的数据到达尾部,向服务端发送请求断开(FIN位置1)

    相当于我这边数据传送完了,准备断开连接了

  • 第二次挥手:TCP的连接是全双工的双向连接,关闭必须从两边关闭,服务端收到FIN标志位后,并不会立即向客服端发送FIN标志位,而是发送一个ACK的应答信息

    相当于:你请求关闭的请求我已经收到,但我可能还有数据没有接受完(数据传送需要时间),你再等下,等我数据传输完成了我就告诉你

  • 第三次挥手:服务端接受数据完成,向服务端发送一个FIN=1

  • 第四次挥手:客户端接收到服务端发送来的断开连接请求,发送一个确认。并把自己设置成TIME_WAIT状态,并启动计时器

    如果服务端没有收到ACK, 服务端的TCP的定时器到达后,会要求客户端重新发送ACK, 服务端收到ACK就断开连接,当客户端等待2MSL(2倍报文最大生存时间)后,没有收到服务端的重传请求后,就知道服务端已经接收到ACK,此时关闭自己的连接。

参考博客:

三次握手,四次挥手

为什么一定是三次握手

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/10052.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信