网站首页 > 博客文章 正文
TCP 三次握手
图解
三次握手过程详解
- 第一次握手
【客户端】向【服务端】发送连接请求报文,标记 ACK=1 , SYN=1 , 客户端序列号 seq=x ,客户端进入等待状态。
- 第二次握手
1、【服务端】收到请求报文,将收到的报文缓存起来,缓存客户端 seq=x
2、【服务端】向【客户端】发送确认报文,生成一个【服务端】seq=y ,标记 ACK=1 ,SYN=1 ,【服务端】自己的序列号 seq=y ,确认序列号 ACK_Number=x+1 ,发送给【客户端】
- 第三次握手
1、【客户端】收到服务端发送的确认报文,将收到的报文存起来,缓存【服务端】seq=y
2、【客户端】发送确认报文给【服务端】,标记 ACK=1,SYN=0 ,【客户端】自己的序列号 seq=x+1,确认序列号 ACK_Number=y+1
3、【客户端】、【服务端】都会进入 ESTABLISHED (连接已建立状态)
TCP 四次挥手
图解
四次挥手过程详解
- 第一次挥手:
1、【客户端】向【服务端】发送释放连接报文,并停止发送数据,主动关闭 TCP 连接
2、标记 FIN=1 ,【客户端序列号】 seq=x ,该序号等于前面已经传送过去的数据的最后一个字节的序号加 1
3、这时,客户端 FIN—WAIT-1 (终止等待 1)状态,等待服务端确认
- 第二次挥手:
1、【服务端】收到释放连接报文,将收到的报文缓存起来,缓存【客户端】 seq=x
2、【服务端】向【客户端】发出确认释放报文,标记 ACK=1 ,【服务端序列号】 seq=y ,确认序列号 ACK_Number=a+1
(a 为【服务端】前面已经传送过的数据的最后一个字节的序号)
3、此时【服务端】进入 CLOSE—WAIT (关闭等待)状态
4、此时 TCP 服务器进程应该通知上层的应用进程,因为【客户端】到【服务端】这个方向的连接就释放了,这时 TCP 处于半关闭状态,即【客户端】已经没有数据要发了。
但【服务端】若发送数据,【客户端】仍要接受,也就是说从【服务端】到【客户端】这个方向的连接并没有关闭,这个状态可能会持续一些时间。
- 第三次挥手:
1、【客户端】收到【服务端】确认报文,并缓存起来
2、此时【客户端】进入 FIN—WAIT (终止等待 2)状态,等待【服务端】发起释放连接报文
3、如果【服务端】没有数据要发送给【客户端】了,【服务端】的应用进程就会通知 TCP 释放连接
4、此时【服务端】向【客户端】发送释放连接报文,标记 FIN=1 ,确认序列号 ACK_Number=a+1 (与第二次挥手的确认号一致),【服务端序号】 seq=z+1 (z 为半关闭状态发送的数据的最后一个字节的序号)
5、此时【服务端】进入最后确认状态,等待【客户端】确认
- 第四次挥手:
1、【客户端】收到【服务端】释放连接请求,必须发出确认
2、【客户端】向【服务端】发送确认报文,标记 ACK=1 ,确认号序列号 ACK_Numbe=z+1+1 ,【客户端序号】 seq=x+1 (x 为第一次挥手的 seq)
3、此时【客户端】进入等待状态,必须经过时间等待计时器设置的时间 2 倍 MSL(报文最大生存时间)后,【客户端】才进入 CLOSED 状态。
MSL 叫做最长报文寿命,RFC 建议设为 2 分钟,实际应用中是 30 秒。
在这 2 倍 MSL 期间【客户端】进入 TIME—WAIT 状态后,要经过 4 分钟才能进入到 CLOSED 状态。
4、【服务端】只要收到了【客户端】的确认后,就进入了 CLOSED 状态
5、当【客户端】和【服务端】都进入 CLOSED 状态后,连接就完全释放了
猜你喜欢
- 2025-05-03 什么是TCP?什么是UDP?它们有什么区别?
- 2025-05-03 Linux:TCP 大量连接状态为CLOSE_WAIT
- 2025-05-03 TCP可靠传输的一点知识(简述tcp可靠传输的工作原理)
- 2025-05-03 图解TCP、UDP,流量控制,拥塞控制,一次看懂
- 2025-05-03 一篇文章读懂HTTPS及其背后的加密原理
- 2025-05-03 TCP三次握手和四次挥手详解(tcp三次握手的作用)
- 2025-05-03 面试必备TCP(二):四次挥手(四次挥手面试题)
- 2025-05-03 简述:TCP四次挥手(断开连接)(tcp 4次挥手)
- 2025-05-03 腾讯云国际站:为什么需要调整TCP内核参数?
- 2025-05-03 Linux实例常用内核网络参数介绍与常见问题处理
你 发表评论:
欢迎- 07-08Google Cloud Platform 加入支持 Docker 的容器引擎
- 07-08日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 07-08美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- 07-08GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 07-08谷歌推出Cloud Dataproc,缩短集群启动时间
- 07-08Infovista与Google Cloud携手推进射频网络规划革新
- 07-08比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- 07-08BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- 最近发表
-
- Google Cloud Platform 加入支持 Docker 的容器引擎
- 日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 谷歌推出Cloud Dataproc,缩短集群启动时间
- Infovista与Google Cloud携手推进射频网络规划革新
- 比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- NCSA和Google Cloud合作开发AI驱动的网络防御系统,加强泰国网络空间的安全性
- SAP将在沙特阿拉伯 Google Cloud 上推出BTP服务
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)