TCP的校验和与编号
TCP校验和
特点:
- 端到端校验:校验和覆盖TCP首部和TCP数据,确保从发送端到接收端的数据完整性。
- 检错能力:TCP校验和具有较强的检错能力,可以检测出在传输过程中发生的位错误。
- 伪首部:在计算TCP校验和时,会加上一个12字节的伪首部,包含源IP地址、目的IP地址、保留字节(置0)、传输层协议号(TCP是6)和TCP报文长度(报头+数据)。伪首部的加入增加了TCP校验和的检错能力。
TCP编号(序列号)
作用:
- 数据分段与重组:当一次发送的数据长度超过设定的MSS(最大段大小)时,数据会被分成多个带有TCP协议头的段分别发送出去。接收端需根据每个TCP数据段头部的序列号来重组数据。
- 数据的可靠性传输:接收端在收到发送端的数据后,通过ACK(确认)返回接收数据的序列号,这样发送端就可以确认数据已抵达接收端。
- 流量控制:TCP通过滑动窗口来进行流量控制。通信双方各自维护自身的发送和接收滑动窗口大小,并将自身接收滑动窗口大小和序列号发送给对端,让对端知道当前最大可以发送的数据量。
- 防止重复报文:由于TCP的序列号是由32位表示,所以每2^32个字节,就会产生序列号回绕,再次从0开始。这种设计可以防止因序列号重复而导致的混淆。