[转载]以太网的最小帧长度64B是如何计算出来的?

简介:
以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,如需转载请自行联系原作者
相关文章
|
安全 小程序 PHP
PHP代码审计(六)Seay源代码审计系统使用教程
www.cnseay.com/ 当然,这个已经不能访问了。 软件的版本比较早,需要.NET framework3.5框架,我这里是软件启动的时候自动提醒安装,如果没有自动提醒,那么你需要手动安装.NET frameWork3.5框架,否则,程序应该是没有办法运行。
1739 0
|
7月前
|
Android开发 开发者
Android SVG动画详细例子
本文详细讲解了在Android中利用SVG实现动画效果的方法,通过具体例子帮助开发者更好地理解和应用SVG动画。文章首先展示了动画的实现效果,接着回顾了之前的文章链接及常见问题(如属性名大小写错误)。核心内容包括:1) 使用阿里图库获取SVG图形;2) 借助工具将SVG转换为VectorDrawable;3) 为每个路径添加动画绑定属性;4) 创建动画文件并关联SVG;5) 在ImageView中引用动画文件;6) 在Activity中启动动画。文末还提供了完整的代码示例和源码下载链接,方便读者实践操作。
345 65
|
7月前
|
机器学习/深度学习 Docker 容器
飞桨x昇腾生态适配方案:01_基础环境准备
本指南详细介绍在ARM环境中准备CANN环境、安装Paddle深度学习框架及PaddleCustomDevice的过程。首先下载并加载CANN镜像,启动Docker容器;接着通过日构建包或源码编译安装PaddlePaddle和PaddleCustomDevice;可选更新CANN版本时需注意环境变量配置与路径设置。最后提供基础功能检查方法,包括硬件后端、版本验证及框架健康检查,确保环境搭建成功。
420 0
|
网络协议 安全 算法
RIP两个版本:RIP-1和RIP-2
【7月更文挑战第14天】
556 0
RIP两个版本:RIP-1和RIP-2
|
监控 供应链 数据挖掘
ERP系统中的成本控制与降低成本策略解析
【7月更文挑战第25天】 ERP系统中的成本控制与降低成本策略解析
1211 3
|
设计模式 前端开发 安全
理解最常用的MVC分层模型及其变种
【6月更文挑战第24天】 本文介绍架构模式如MVC、MVVM和MVP是解决软件结构问题的通用方案。。每种模式有其优缺点,适用场景不同。
853 0
理解最常用的MVC分层模型及其变种
|
Cloud Native Go 数据安全/隐私保护
自定义Docker镜像推送到Docker Hub实战
自定义Docker镜像推送到Docker Hub实战
467 2
自定义Docker镜像推送到Docker Hub实战
|
Ubuntu Python
Python(六)使用pycharm创建项目报错:ModuleNotFoundError No module named distutils.util
在ubuntu上使用pycharm创建项目的时候报错: ModuleNotFoundError: No module named 'distutils.util'
1790 0
|
传感器 安全 物联网
智能家居系统的安全性分析与强化策略
随着物联网技术的飞速发展,智能家居系统已成为现代生活的重要组成部分。然而,其安全性问题也日益凸显。本文从智能家居系统的架构出发,深入探讨了系统中存在的安全风险,并提出了相应的防御措施和改进建议。通过案例分析,本文旨在为智能家居系统的用户提供一个全面的安全指南,确保技术便利性与个人隐私保护之间的平衡。
|
Linux 虚拟化 云计算
虚拟化技术及实时虚拟化概述
本文探讨了实时虚拟化技术,它是虚拟化技术的一种,旨在保证严格的时间约束和高可靠性。文章介绍了虚拟化的起源、分时系统的历史以及虚拟化技术在云计算时代的复兴。内容涵盖分时系统、虚拟化技术的定义、类型(全虚拟化、半虚拟化、硬件辅助完全虚拟化和操作系统级虚拟化)及其优缺点。此外,还讨论了不同类型虚拟化技术的实现方式,如Type-1和Type-2虚拟化,以及容器技术。文章强调了实时虚拟化在工业实时控制、汽车、通信等领域的应用,并预告后续将重点讨论实时虚拟化技术。
999 0
虚拟化技术及实时虚拟化概述