为什么TCP和IP头中有单独的校验和?

sas*_*ian 16 networking

在各层进行校验和需要什么?例如,在TCP层中存在校验和,并且在IP层中也存在校验和,并且以太网层也具有校验和.在一层有校验和是不够的?

Dig*_*oss 16

由于多种原因,需要所有三个层:

  • IP并不总是通过以太网运行(想象一下IP over RS-232串口,每个Cisco和Unix机箱都可以做到)

  • IP不校验数据

  • TCP数据包可以从IP数据包和每个都具有完美校验和的片段中错误地重新组装

  • 即使重新组装正确,也可能在IP和TCP之间的层中引入软件或其他错误

  • 即使所有软件的功能是否正确,以及TCP/IP的以太网,校验规模有限可能是偶然正确的(和要在某些时候,给予足够的数据包)的持久性错误的脸,所以有一个以上的校验很有帮助.

  • 每次引入新标头时,校验和都会有更多,而新图层无法看到下面图层的标头位.

  • RFC表示,TCP校验和覆盖整个段,而IP校验和仅涵盖错误的IP头. (3认同)

use*_*645 8

以太网校验和是一种跳到跳的校验和 - 这意味着每次以太网报头字段更改时都会重新计算它.TCP/UDP校验和是一种端到端校验和,这意味着它由发送方计算并由接收方验证.TCP/UDP校验和覆盖整个段.IP校验和仅涵盖标题.以太网CRC覆盖整个帧.