讨论IP、TCP、UDP的Checksum设计

1. Ethernet

Ethernet frame 的首部没有校验,它的校验在尾部,是32位的帧校验序列(Frame Check Sequence, FCS)

2. IP

IP的校验和仅校验首部(而不是校验整个IP包),这是出于性能考虑:如果每一跳都要校验全部数据,那对网络的压力太大了,所以IP被设计为只校验首部,这样可以确保至少在网络路由层面,IP包携带的数据是正确的,能让网络可靠的作出路由决策;至于Payload,则由上层协议(如TCP)在对端计算机进行校验与完整性保证。
以IPV4为例:
图片

3. UDP/TCP

UDP/TCP的校验和均由三部分一起计算而来:伪首部 + 首部 + Payload
其中伪首部包含以下数据:

  • 源IP地址
  • 目标IP地址
  • 协议号
  • TCP/UDP包长度

计算校验和时包含伪首部是为了防止网络层路由错误,导致错误(比如IP地址错误)的包被送达

posted @ 2025-11-11 19:27  KBZ232  阅读(61)  评论(0)    收藏  举报