博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载]以太网的最小帧长度64B是如何计算出来的?
阅读量:5902 次
发布时间:2019-06-19

本文共 1833 字,大约阅读时间需要 6 分钟。

以CSMA/CD作为MAC算法的一类LAN称为以太网。CSMA/CD冲突避免的方法:先听后发、边听边发、随机延迟后重发。一旦发生冲突,必须让每台主机都能检测到。关于最小发送间隙和最小帧长的规定也是为了避免冲突。
考虑如下极限的情况,主机发送的帧很小,而两台冲突主机相距很远。在主机A发送的帧传输到B的前一刻,B开始发送帧。这样,当A的帧到达B时,B检测到冲突,于是发送冲突信号。假如在B的冲突信号传输到A之前,A的帧已经发送完毕,那么A将检测不到冲突而误认为已发送成功。由于信号传播是有时延的,因此检测冲突也需要一定的时间。这也是为什么必须有个最小帧长的限制。
下面介绍一下碰撞槽时间的概念.
假设公共总线媒体长度为S,帧在媒体上的传播速度为0.7C(光速),网络的传输率为R(bps),
帧长为L(bps),Tphy为某站的物理层时延;
则有:碰撞槽时间=2S/0.7C+2Tphy      2S是因为要计算往返传输距离
因为Lmin/R=碰撞槽时间, 意思是Lmin的帧完全传输到对端所需的时间,应该大于对端发过来的指示发生碰撞的帧所需要的时间.
所以:Lmin =(2S/0.7C+2Tphy )×R
Lmin 称为最小帧长度。
碰撞槽时间在以太网中是一个极为重要的参数,有如下特点:
(1)它是检测一次碰撞所需的最长时间。
(2)要求帧长度有个下限。(即最短帧长)
(3)产生碰撞,就会出现帧碎片。
(4)如发生碰撞,要等待一定的时间。t=rT。(T为碰撞槽时间)
按照标准,10Mbps以太网采用中继器时,连接最大长度为2500米,最多经过4个中继器, 介绍一个公式如下:
Lmin/R = 2*S/(0.7*C) + 2*Tphy + 2*n*Tr
Lmin – 最小帧长
R – 网络速率(10M等)
S – 碰撞域   (*2 表示一来一回,划个图就明白了)
C – 标准光速(*0.7表示在双绞线中,用光纤的话别论)
Tphy – 物理层延时(*2 是因为要经过一收一发两个主机的物理层)
Tr – 中继器延时(一般来说,相当于两个物理层的延时
如图所示,
主机 A                中继器 B                主机 B
——————————————————————
|                         物理层                         |
——————————————————————
+—————————+    +————————+
|<——————————S ——————–——>|
根据以太网媒体访问控制机制,A 在发出长度为La的数据流后如果收到B返回的碰撞指示,则停止该帧的发送,并且发32bit的010101…以强化碰撞;并延时t = r*T 这样长的时间;其中T = 1/C,r是一个在(0, 2^k)内的随机数,k = min(n,10) n 为本次发生连续碰撞的次数,如果n过大则上交高层处理。
所以,如果我们规定了某种介质的碰撞域S,就可以通过上面的公式计算出Lmin。反之,如果先定义了Lmin,同样可以定出S。
如 IEEE 802.3 Lmin = 64B;设R = 10M bps Tphy = 15us Tr = 0   则可以计算出 S = 2.3km 
按照标准,10Mbps以太网采用中继器时,连接最大长度为2500米,最多经过4个中继器,因此规定对于10Mbps以太网规定一帧的最小发送时间必须为 51.2μs(电气标准)。51.2μs也就是512位数据在10Mbps以太网速率下的传播时间,常称为512位时。这个时间定义为以太网时隙。512 位时=64字节,因此以太网帧的最小长度为512位时=64字节。
512位时是主机捕获信道的时间。如果某主机发送一个帧的64字节仍无冲突,以后也就不会再发生冲突了,称此主机捕获了信道。由于信道是所有主机共享的,为避免单一主机占用信道时间过长,规定了以太网帧的最大帧长为1500。
100Mbps以太网的时隙仍为512位时,以太网规定一帧的最小发送时间必须为5.12μs。
1000Mbps以太网的时隙增至512字节,即4096位时,4.096μs。
最小MTU应该是传输介质物理特性和链路层协议特性共同决定的。以太网封装下帧最大MTU为1500,这个是标准规定的值,目的也是因为以太网介质是一个带冲突检测的共享的链路。
本文转自jasonccier 51CTO博客,原文链接:http://blog.51cto.com/jasonccie/391047,如需转载请自行联系原作者
你可能感兴趣的文章
mysql 数据库怎样快速的复制表以及表中的数据
查看>>
vue-cli的webpack配置,迁移适用到react开发配置webpack
查看>>
BIOS,MBR与grub-我从哪里来
查看>>
CUDA学习(九十三)
查看>>
Mysql如何使自增字段重新计算?
查看>>
使用Telnet测试基本POP3服务
查看>>
Flink SQL 功能解密系列 —— 维表 JOIN 与异步优化
查看>>
Codeforces Round #442 (Div. 2) A B
查看>>
封装一个日期时间选择器
查看>>
极值问题(acms)
查看>>
swift UI专项训练8 展示数据
查看>>
openstacks
查看>>
PHP5下单独编译php模块
查看>>
字体图标学习
查看>>
局域网网速变慢的故障细致分析
查看>>
oracle 远程tns配置
查看>>
7.1.3.3. Using the Rails console with ActionPack
查看>>
虚拟桌面带宽评估
查看>>
一起学shell(十一)之安全的shell脚本:起点
查看>>
Microsoft® Deployment Toolkit 2010之快速部署Windows 7
查看>>