首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >tcpip3次握手的通信过程是_tcp协议为什么要三次握手

tcpip3次握手的通信过程是_tcp协议为什么要三次握手

作者头像
全栈程序员站长
发布2022-09-23 20:37:43
发布2022-09-23 20:37:43
3760
举报

大家好,又见面了,我是你们的朋友全栈君。

文章目录

TCP通信过程的三次握手和四次握手

三次握手:

此过程中: 第一次握手,客户端先发一个SYN请求并附带一个J的值给服务端 第二次握手,服务端收到请求后解堵塞,发送一个SYN请求并附带一个K值,还发送了第一次握手后对客户端的响应包并附带在之前接收到的J值的基础上加上1,即J+1 第三次握手,客户端收到服务端发来的SYN请求和K值后,再发送一个K+1的响应包给服务端 至此,三次握手成功完成,客户端和服务端之间成功建立tcp链接

四次挥手:

此过程中: 第一次挥手:客户端调用了close,发送一个结束请求附带一个x+2的值,和一个y+1的响应包给服务端 第二次挥手:服务端发送x+3的响应包给客户端(其实每次的响应包的附带值都是在之前接收到的seq的值上加上1的结果) 第三次挥手:服务端调用close,发送一个结束seq附带一个y+1的值给客户端,此时服务端成功断开连接 第四次挥手:客户端接收到服务端的响应包和FIN请求后,回递一个y+2的响应包给服务端,此时的客户端进入time_wait状态,即继续等待2MSL的时间再完全断开链接(至于为什么要等待2MSL的时间,请看下文的MSL详解 _ )

要点:在四次挥手的过程中,哪一方先调用close, 哪一方就会在第三次挥手后继续等待2MSL的时间

tcp通信过程中的2MSL的问题:

2MSL即为在四次挥手的第三次过程中,先发起中断连接的一方将会继续等待2倍的MSL时间后再完全中断tcp连接

MSL即为一个数据包在网络上存活的最长时间,即数据包从被发送到被接收所经历的最长时间 等待2倍的MSL时间就是因为防止服务端没收到最后一次的ACK,即在2MSL的时间内,若服务端没收到最后的ACK,在超时时间(MSL)后,服务端会认为客户端没收到第三次挥手中的FIN,这时服务端会再发一份FIN,这时一共经历了2MSL的时间,而客户端此时等待了2MSL的时间,正好可以接收这一次服务端重发的FIN请求,从而有效的保证了所有的请求和回应都会被对方接收

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170940.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • TCP通信过程的三次握手和四次握手
    • 三次握手:
    • 四次挥手:
    • tcp通信过程中的2MSL的问题:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档