TCP三次握手与四次挥手

TCP 基础知识

TCP 是面向连接的、可靠的、基于字节流传输层通信协议

TCP 连接是用于保证可靠性和流量控制维护的某些状态信息的组合,包括 Socket、序列 号和窗口大小

TCP 四元组可以唯一的确定一个连接:源地址、源端口、目的地址、目的端口

三次握手建立连接

术语

seq(sequence number),通过 sequence initial algorithm 随机生成的
ack(acknowledgement number),确认号 ack=seq+1
ACK(acknowledgement)确定确认号有效
SYN(synchronous)发起新连接

过程

image-20240202191157031

image-20240202191822606

四次挥手断开连接

术语

seq(sequence number),通过 sequence initial algorithm 随机生成的
ack(acknowledgement number),确认号 ack=seq+1
ACK(acknowledgement)确定确认号有效
SYN(synchronous)发起新连接
FIN(FINISH)完成

过程

image-20240202191126170

image-20240202191750514

等待阶段 2

FIN_WAIT_2 会处理还没有完成的任务,直到所有的任务处理完毕,才会发送第三次挥手

超时等待状态持续 1 ~ 4 分钟,存在的原因?

这是为了保证服务端收到 ACK 包。

假设如果没有 2MSL 的等待时间,ACK 包丢失了,那服务端将永远不会断开连接。

有了 2MSL,如果一旦发生丢包将会进行超时重传,实现可靠连接。


TCP三次握手与四次挥手
https://hugtyftg.github.io/2024/01/25/TCP三次握手与四次挥手/
作者
mmy@hugtyftg
发布于
2024年1月25日
许可协议