如果被封装的数据在通过线路时有损坏的可能性,是什么阻止了 TCP 校验和本身被损坏,如果它也可以被损坏,为什么它被认为是可靠的数据传输?
校验和位会被破坏吗?
严格回答问题:
- 校验和本身会被破坏吗?当然,噪声源不知道它们是破坏数据位还是校验和位
- 如果只有校验和本身被损坏会发生什么?接收方计算出的值肯定会匹配失败。
- 如果校验和和数据已损坏,则 t(如第一个答案中所述)不太可能匹配。
虽然校验和通常具有以下特征:有许多消息具有相同的校验和(毕竟,我们可能从 1Kbyte 数据包到 16 位),但许多现实生活中的校验和具有令人惊讶的好坏属性。例如,IP 校验和保证检测所有 1 位错误;但未能检测到字节交换。真正的通信线路有一些比其他线路更常见的错误:例如,在短时间内“所有位到达为 0”更常见,而“字节交换”或多或少是不可能的。
为了更深入的了解
RFC 1071“计算互联网校验和” https://www.rfc-editor.org/rfc/rfc1071
Stone Greenwald Partridge Hughs (1998) “真实数据的 CRC 和校验和” http://ieeexplore.ieee.org/document/731187/或更早版本的全文http://ccr.sigcomm.org/archive/1995/ conf/partridge.pdf
Wood Eddy McKim Ivancic (2007) “校验和覆盖和错误内容的传递” http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.131.7753&rep=rep1&type=pdf
希望这有帮助
乔纳森。
如果 TCP 校验和损坏,则它将与 TCP 伪标头和有效负载不匹配。应该只有一个校验和与伪标头和有效载荷匹配,但是有多个 TCP 伪标头和有效载荷组合将解析为相同的校验和。它是一种单向函数。
没有完全可靠的方式通过网络进行通信。即使将有效负载的第二个副本用作校验和,两个副本也可能以完全相同的方式损坏。这种可能性非常低,但这会大大增加发送的比特数,从而影响吞吐量。
校验和的作用是为您提供一个很好的机会,您的数据不会损坏,并且它非常小且快速,易于计算。
TCP 可靠性的真正含义是保证数据按顺序传送到应用程序。这是通过握手和确认来完成的。将此与 UDP 形成对比,UDP 是一种不可靠的协议,它不提供此类保证,甚至不保证数据将到达目的地。
是什么阻止了 TCP 校验和本身被破坏,
没有什么。
如果它也可能被损坏,为什么它被认为是可靠的数据传输?
如果校验和或数据或两者都损坏,则校验和很可能不匹配并且数据包将被丢弃(然后重新传输)。但是,尽管存在损坏,校验和仍有可能匹配。
通常,大多数网络很少损坏数据包,并且 TCP 校验和拒绝大多数确实损坏的数据包,因此传送损坏数据包的总体概率因此应用程序在大多数网络上是可以接受的低。但是,如果您的网络经常损坏数据包,并且您传输了大量数据,那么 TCP 校验和就会显得非常不足。