我希望我在正确的 stackexchange 子站点(似乎找不到与网络相关的子站点..)。
我对 CSMA/CD 网络协议有两个问题:
在通过总线发送一些(比如说 5 条)消息之前,是否有某种公式可以计算成功传输所有消息(从而避免冲突)需要多长时间?或者开始传输时的时间未知?
如果 (1) 为否 -> 是否可以计算传输的最大时间?例如 -> “所有消息成功传输最多需要 10 毫秒”。
希望您能理解我的问题!如果没有,我很乐意在需要时为您解答!
谢谢你的时间!
答案1
如果您处于自己的空碰撞域中,则对于以太网的计算应如下:
Inter fram gap = 96 Bit / link speed (in MBit/s)
Packetsize = Preamble (8 bytes) + Ethernetframe (68-1522 bytes)
Time = Packetsize / Link speed (either 10 MBit/s, 100 MBit/s, 1 GBit/s, 10 GBit/s) + Inter frame gap
因此,要传输全尺寸标准框架
8 bytes preamble + 22 bytes header + 1500 bytes payload = 1530 bytes
通过 1 GBit/s 连接
Time = 1530 bytes / 1 GBit/s = 12.24 µs
帧间间隙为96纳秒使12.336微秒。
对每个数据包进行此计算并添加持续时间。
这是所需的最小时间跨度,因为一旦您不在自己的碰撞域中,就无法计算所需的时间,因为您甚至可能根本无法发送它。
答案2
CSMA/CD 本质上不是完全可预测的,因为你不知道网络上的其他站点会做什么。你可以计算最低限度时间(正如 bot47 所做的那样)但最大时间是无法提前知道的。