在各个层级中为什么需要使用校验和?例如,在TCP层、IP层以及以太网层都有校验和。
只在一层级中使用校验和不足够吗?
在各个层级中为什么需要使用校验和?例如,在TCP层、IP层以及以太网层都有校验和。
只在一层级中使用校验和不足够吗?
出于多种原因,这三个层次都是必需的:
IP并不总是在以太网上运行(想象一下IP在RS-232串行线路上运行,这是每个Cisco和Unix盒子都可以做到的)
IP不会对数据进行校验和
TCP数据包可能会从具有完美校验和的IP数据包和片段中错误地重组,即使正确重组,IP和TCP之间的层中也可能引入软件或其他错误。
即使所有软件功能都正常,并且TCP/IP在以太网上运行,由于持续错误,校验和的有限大小可能会被意外地纠正(如果有足够的数据包,则一定会),因此多个校验和是有帮助的。
每次引入新的标题时,就会有更多需要进行校验和的内容,并且新层无法看到下面一层的标题位。
Ethernet校验和是一种跳跃到跳跃的校验和 - 这意味着每次以太网头字段更改时都会重新计算。 TCP / UDP校验和是端到端的校验和,这意味着它由发送方计算并由接收方验证。 TCP / UDP校验和涵盖整个段。 IP校验和仅涵盖头部。 Ethernet CRC覆盖整个帧。