【问题标题】:Checksum done on internet layer or transport layer? [closed]校验和在互联网层或传输层完成? [关闭]
【发布时间】:2011-11-20 13:12:57
【问题描述】:

我进行了大量研究,但这只让我更加困惑。问题是,数据包校验和是否在 Internet 层 (IP)、传输层 (TCP/UDP) 或两者都验证?

【问题讨论】:

  • 数据包是第 3 层数据报。 IPv4 有一个数据包头校验和,但 IPv6 没有。数据链路协议,例如以太网、Wi-Fi 和其他网络在整个帧上都有一个校验和。 TCP 对整个段都有校验和,UDP 对其数据报也有校验和,但对于 IPv4 是可选的,对于 IPv6 是必需的。

标签: networking tcp ip checksum ipv4


【解决方案1】:

IP 和 TCP 层都有校验和。 IP 校验和只是报头校验和,而 TCP 执行伪报头、TCP 段报头和有效负载的校验和。

双方都检查校验和,IP 检查其标头校验和,如果通过,TCP 在从 IP 层接收数据包时执行其校验和。两个校验和都应该通过数据才能到达预期的应用程序。

如果 IP 校验和失败,IP 应该丢弃数据报,如果 TCP 校验和失败,它也应该丢弃它。

【讨论】:

  • "IP 和 TCP 层都有校验和。" 只有 IPv4 有标头校验和。 IPv6 上没有校验和。
【解决方案2】:

很好的问题。这是另一个问题,谁的答案可能会提供一些帮助。谁使用校验和?

不是每个设备都会查看每个标头,对吗?交换机仅查看第 2 层/数据链路层,路由器仅查看第 3 层/网络层,终端主机评估第 4 层/传输层。正如您所提到的,只有 L3 和 L4 标头具有校验和,这意味着交换机无法评估校验和。然而,路由器可以丢弃带有错误 CRC 的数据包(它只评估 IP 标头校验和)。这节省了带宽,因为数据包将被转发到目的地只是被丢弃。如果数据包最终到达终端主机,它会验证 L3 校验和以及 L4 标头。因此,我们对 CRC 错误进行了端到端检测,从而节省了带宽。

注意:我不确定由于 CRC 错误而丢弃数据包的路由器是否会向客户端生成通知,以便它可以立即重新传输,而不是等待计时器到期。这将加快重传过程,它可能是路由器上的一个可配置选项,但我想如果它存在,那将是一个安全漏洞。

【讨论】:

  • "只有 L3 和 L4 标头有校验和" 实际上每个第 2 层协议都有一个校验和,包括以太网和 Wi-Fi,但它们一般都在帧拖车里。并非所有网络层协议都使用校验和。 IPv4 在数据包头上有一个校验和,但 IPv6 没有校验和。 “我不确定路由器是否会因 CRC 错误而丢弃数据包,从而向客户端生成通知,以便它可以立即重新传输” 不,未通过标头校验和的 IPv4 数据包将被丢弃,因为源地址不可信,因此不会针对该类型的错误发送 ICMP 错误消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 2013-02-25
相关资源
最近更新 更多