Skip to content

deepseek

ack number

ACK Number 表示接收方期望收到的下一个字节的序号,即确认之前的所有数据已正确接收。

CASE-1: 正常数据传输

1
2
3
- 发送方发送一段数据,序号(SEQ)为 X,数据长度为 L。

- 接收方正确接收后,回复的 ACK Number = X + L。

CASE-2: 乱序或丢包

1
- 如果接收方收到不连续的数据(如只收到 SEQ=1000, L=200,但未收到 SEQ=1200),它会重复发送之前的 ACK(例如 ACK=1200),要求重传缺失部分。

CASE-3: 初始 SYN 和 FIN 控制位

1
2
3
- SYN 标志: 建立连接时,SYN 占用一个序号。若发送 SYN, SEQ=0,接收方回复 ACK=1。

- FIN 标志: 关闭连接时,FIN 也占用一个序号。若发送 FIN, SEQ=2000,接收方回复 ACK=2001。

特殊情况:

1
2
3
- 零窗口探测:接收方窗口为 0 时,发送方会发送 1 字节探测包,ACK 仍按 SEQ + 1 计算。

- 选择性确认(SACK):通过 TCP 扩展选项(SACK)告知非连续接收的数据块,但 ACK Number 仍指向连续数据的下一个预期序号。