首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当有效负载跨多个数据包中断时,CRC在有效负载上的用途是什么?

当有效负载跨多个数据包中断时,CRC在有效负载上的用途是什么?
EN

Stack Overflow用户
提问于 2013-08-14 21:01:10
回答 2查看 1.2K关注 0票数 1

我一直在阅读一个自定义的低速通信协议,它计算一个CRC的全部有效载荷。此有效载荷可分成多个数据包。自定义协议运行在现有总线协议之上,该协议允许每个数据包CRCs可选。

所以可能发生的是:

Pkt 0: s_ Pkt Hdr Seq=0 _~_

Pkt 1: s_ Pkt Hdr Seq=1 _x有效载荷续用_

Pkt 2: s_s_ Pkt Hdr Seq=2 \\E.有效载荷的结束

分组的开始;包的E端;分组的序列号

为什么一个协议会在它通过的有效负载上有它自己的CRC,当已经有一个数据包级别的CRC时?有效载荷已经受到保护。协议设计者知道CRC数据包级选项。

我能想到的唯一原因是:

  1. 将有效负载传递到较低协议层的层不一定知道下层是否已经有CRC。
  2. 传递有效负载的层不知道下层协议层的配置是否启用了CRC。
  3. 通过有效载荷下降的层使用对有效载荷的高级错误检查或校正技术。
  4. 传递有效载荷的层是保护有效负载,使其免受潜在的不良/片状低层/硬件的影响。

1,2,&3不适用于这种情况。所以我唯一的“好”理由是。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-14 22:58:37

1,4,也许3。

在协议栈中,层之间相互独立通常是很重要的。层通常有它们提供的基本服务,并且可以提供额外的功能。例如:在ISO/OSI 7层,您可以编写一个通过套接字进行通信的应用程序。如果将校验和添加到您自己的应用程序级协议层,则不必依赖下面TCP或UDP层的错误检查。

因此,在目前的情况下,您可能知道协议运行在某个现有的总线协议上。但也许在未来(比如说5年后),那辆公共汽车会被换成别的东西。某种I2C谁知道呢。现在,通常较新的协议可能提供更好的错误检查,但您不必依赖未知。

您可以在ISO/OSI层中观察到这一点,更多的层有各种错误检查。这似乎是多余的,但层技术是可交换的。

票数 1
EN

Stack Overflow用户

发布于 2013-08-14 21:50:43

在从源到目的地时,包可以多次(下层)跳。在目的地验证校验和确保我们没有在任何中间跳中遇到任何位错误。因此,即使我们将一个数据包分割成多个较小的数据包,它也是执行分段的源,也是重新组合碎片的目的地。这就是为什么,从校验和的角度来看,它使senese将每个片段作为一个单独的包来处理。事实上,这正是在IP网络中进行分割和校验和的方式。如果要发送的数据包大于MTU,则发送方将分组分割为多个较小的数据包,并计算每个数据包的校验和。一旦目标接收到这些片段,它就会在重新组装之前验证每个片段的校验和。所以,我也将选择4!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18242223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档