网工 tcp 与udp 的伪首部

一、TCP伪首部

  1. 组成:
    • 源IP地址:发送方的IP地址,占4字节。
    • 目的IP地址:接收方的IP地址,占4字节。
    • 保留:置为0,占1字节。
    • 协议:标识上层协议是TCP,值为6,占1字节。
    • TCP报文长度:TCP报文段的长度(包括TCP首部和数据),占2字节。
  2. 作用:
    • 在计算TCP校验和时使用。通过把伪首部与TCP报文(包括TCP首部和数据)一起进行校验和计算,可以增强校验的准确性,确保TCP报文在传输过程中没有被篡改,并且能够正确地到达目标地址和上层协议。

二、UDP伪首部

  1. 组成:
    • 源IP地址:同样是发送方的IP地址,4字节。
    • 目的IP地址:接收方的IP地址,4字节。
    • 保留:也是置为0,1字节。
    • 协议:标识上层协议是UDP,值为17,1字节。
    • UDP报文长度:UDP数据报的长度(包括UDP首部和数据),2字节。
  2. 作用:
    • 与TCP伪首部类似,主要用于计算UDP校验和。确保UDP数据报在网络中传输的完整性和正确性,防止在传输过程中因各种原因导致的数据错误或被篡改。

三、两者的共同点和意义

  • 共同点:
    • 都包含源IP地址、目的IP地址、协议类型和报文长度等关键信息。
    • 都不实际在网络中传输,只是在计算校验和时临时参与运算。
  • 意义:
    • 增强了校验的可靠性:通过引入这些网络层的关键信息(IP地址等)到传输层校验和的计算中,可以更全面地验证数据在网络中传输的正确性,因为IP地址的参与可以确保数据到达了正确的目的地,协议类型的确认可以保证上层协议的匹配性。
    • 提高数据传输的准确性:有助于检测和防范在传输过程中可能出现的各种错误,如数据位的篡改、传输路径错误等,从而提升了整个网络通信的质量和可靠性。

示例

某UDP报文的2个16bit 为 1110011001100110 1101010101010101 得到的校验和是

  1. 首先将两个 16 位的数据相加: 1110011001100110 +1101010101010101 = 1 1011101110111011
  2. 然后对结果进行回卷进位:
    • 如果相加结果超过 16 位,将进位值与低 16 位的值再次相加。这里超过了 16 位,只取低 16 位,进位是1。
    • 把进位与低 16 位相加:1011101110111011+1 = 1011101110111100
  3. 最后对结果取反:
    • 对1011101110111100取反,得到0100010001000011
    所以校验和是 0100010001000011