- TCP的三次握手:
- 一定由
客户端主动发起的,发生在建立连接的过程中。 - 此过程发生在
客户端的connect()函数和服务器的accept()函数之间。 - 第一次握手:
- 客户端向服务器发送一个
带有SYN标志的数据包,表示客户端请求建立连接。 - 并且客户端会
选择一个随机的序列号a放在SYN标志的数据包中,然后向服务器发送这个数据包。 - 第二次握手:
- 服务器收到客户端的请求后,会
回复一个带有SYN/ACK标志的数据包,表示服务器已经收到客户端的请求,并同意建立连接。 - 服务器会
选择一个随机的序列号b放在SYN标志的字段中,并且序列号a+1放在ACK标志的字段中,然后将数据包发送给客户端。 - 第三次握手:
- 客户端收到服务器的回复后,
会发送一个带有ACK标志的数据包,表示客户端确认已经收到了服务器的响应,并同意建立连接。 - 客户端
将服务器的序列号b+1放在ACK标志的字段中,然后将数据包发送给服务器。 - TCP的四次挥手:
- 由
主动关闭方(客户端或者服务器都可以扮演这个角色)发起的,发生在断开连接的过程中。 - 以
客户端主动发起断开连接为例: - 第一次挥手:
- 客户端向服务器发送一个
带有FIN/ACK标志的数据包,表示客户端请求与服务器断开连接。 - 并且客户端会
选择一个随机的序列号a放在FIN/ACK标志的数据包中,然后向服务器发送这个数据包。 - 第二次挥手:
- 服务器收到客户端的请求断开连接后,会
回复一个带有ACK标志的数据包,表示服务器已经收到客户端的请求,并且序列号a+1放在ACK标志的字段中,然后将数据包发送给客户端。 - 第三次挥手:
- 服务器向客户端发送一个
带有FIN/ACK标志的数据包,通知客户端,服务器要关闭了。 - 并且服务器会
选择一个随机的序列号b放在FIN/ACK标志的数据包中,然后向客户端发送这个数据包。 - 第四次挥手:
- 客户端收到服务器的断开连接信号后,会
回复一个带有ACK标志的数据包,表示客户端已经收到服务器的请求,并且序列号b+1放在ACK标志的字段中,然后将数据包发送给服务器。 - TCP的三次握手和四次挥手,抓包如下图所示:

C/S架构学习之TCP的三次握手和四次挥手
李十五哥2023-10-08 1:40
相关推荐
JustHappy13 小时前
古法编程秘籍(七):互联网到底是什么?把两台电脑怎么说话搞懂就够了袁小皮皮不皮15 小时前
3.HCIP OSPF补充知识(优化版)一水鉴天16 小时前
不确定性问题确定解的 DevOps 九宫格内核 20260612(腾讯元宝)小短腿的代码世界16 小时前
Qt行情协议解析与二进制编解码优化:从FIX到自定义协议的全链路架构袁小皮皮不皮17 小时前
1.HCIP BFD 学习笔记(优化版)装不满的克莱因瓶17 小时前
【自动驾驶领域】学习 Cityscapes 数据集——城市街景语义理解的标准基准是温不嗜温17 小时前
QR 准谐振反激架构:当下中小功率快充的主流选择AI焦点17 小时前
2026年AI应用架构:如何避坑并选对API聚合中转服务?TOPGO智能17 小时前
AI PC 端侧 AI 实战:知易智能知识管家的全栈架构与踩坑实录清辞85318 小时前
产品经理需求推进流程