栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

TCP 的三次握手和四次挥手

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

TCP 的三次握手和四次挥手

三次握手


首先需要客户端Init状态,服务端LISTEN状态

过程
  1. 客户端向服务端询问是否可以建立连接(中途可能因为某些原因导致SYN包在网络节点中滞留)
  2. 服务端接收之后,如果可以建立连接则返回SYN+ACK包
  3. 客户端接收到SYN+ACK包之后,将ACK包发送给服务端之后,客户端变成ESTABLISHED状态
  4. 服务端接收到ACK包之后,状态变成ESTABLISHED状态
流程图

如果只有2次握手


首先需要客户端Init状态,服务端LISTEN状态

过程
  1. 客户端向服务端询问是否可以建立连接,发送SYB-1-1包
  2. SYN-1-1包可能因为某些原因导致在某个网络节点之中阻塞
  3. 为了建立连接,客户端会重发SYN-1-1包(为了区分,后面叫做SYN-1-2包)
  4. 服务端接收到SYN-1-2包之后,这次SYN包发送正常,服务端接收之后,发送SYN+ACK包之后就建立连接
  5. 这个时候在某个阶段阻塞的SYN-1-1包突然恢复,然后服务端接收到SYN-1-1包之后,服务端会认为客户端又发起了一个新的连接
  6. 就会导致客户端认为和服务端只有一个连接,而服务端认为和客户端有2个连接,最后造成了状态不一致
  7. 如果在三次握手中,服务端接收不到ACK包,就不会建立连接
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013550.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号