gpt4 book ai didi

network-protocols - TCP 和 UDP 如何检测传输错误?

转载 作者:行者123 更新时间:2023-12-04 07:45:04 24 4
gpt4 key购买 nike

我想知道这些协议(protocol)是如何检测到数据传输过程中发生了错误的?
谢谢

最佳答案

可能会出现不同的错误:

  • 数据包顺序不正确
  • 丢包
  • 数据包内的损坏数据
  • 虚拟数据包(接收方获取从未发送过的数据包)

  • UDP 仅提供一种机制来克服数据损坏(这是 IPv4 中的可选功能,在 IPv6 中是强制性的)。

    数据损坏

    如果在每个数据包的 header 中使用校验和字段,UDP 仅能抵抗数据包内的数据损坏。基本上,它需要 header 、数据包内容和更多信息(如 IP 地址),将其解释为 16 位字的长列表,并将它们总结为 UDP checksum .

    TCP 有类似的方法来处理数据损坏。

    所有其他问题

    TCP 对每个数据包都有所谓的序列号。序列号寻址字节,因此如果发送者说“这是序列号为 102 的数据包”,他说,他发送的数据包从流的字节 102 开始。接收方然后向接收方发送和确认。例如,如果数据包的长度为 10 字节,则接收方将以序列号 112 发送和确认,这意味着“我希望接收到的下一个数据包以序列号 112 开始”。每个具有不同序列号的数据包要么是重复的(太低),要么是丢失的数据包(接收到的序列号太高),或者是幻像(预期序列号和接收到的序列号完全不匹配)。因此,在所有序列号不匹配的情况下,接收方都知道出了问题并可以使用react(与不同的 TCP 版本不同)。

    发送者等待接收者的确认。如果他在一定时间内没有收到预期的确认,他将重新传输数据包,因为他假设数据包在途中丢失了。

    这只是一个非常简短的解释。该主题比此处描述的要大一些;)

    关于network-protocols - TCP 和 UDP 如何检测传输错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4529604/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com