校验和在互联网层或传输层完成?

时间:2011-09-19 19:55:40

标签: networking tcp ip checksum ipv4

我做了很多研究,这让我更加困惑。问题是,是否在互联网层(IP),传输层(TCP / UDP)或两者都验证了数据包校验和?

谢谢, 颜

2 个答案:

答案 0 :(得分:4)

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

校验和由两者检查,IP检查其头校验和,如果它通过,TCP在从IP层接收数据包时执行校验和。校验和都应传递给数据以达到预期的应用程序。

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

答案 1 :(得分:0)

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

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

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