[转载]以太网的最小帧长度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,如需转载请自行联系原作者
相关文章
|
12月前
|
人工智能 开发者
大模型工具链之FunctionCall实战教学
【10月更文挑战第15天】在人工智能领域,大模型工具链的构建和应用日益重要。FunctionCall作为一种高效工具链,允许开发者在复杂模型中实现函数调用,提高模型的灵活性和可扩展性。本文探讨了FunctionCall的实际应用,并提供了实战教学,涵盖基本语法、工作原理及复杂功能的实现,如条件语句、循环控制和自定义操作。通过具体示例,展示了如何使用FunctionCall构建清晰、可维护的模型结构。
1430 2
|
网络协议 物联网 虚拟化
|
网络协议 安全 算法
RIP两个版本:RIP-1和RIP-2
【7月更文挑战第14天】
512 0
RIP两个版本:RIP-1和RIP-2
|
监控 安全 项目管理
『软件工程3』你应该知道的三种原型实现模型:抛弃式、演化式、增量式
该文章详细解释了三种原型实现模型——抛弃式、演化式、增量式模型的特点、流程、优缺点及适用场景。
『软件工程3』你应该知道的三种原型实现模型:抛弃式、演化式、增量式
|
监控 供应链 数据挖掘
ERP系统中的成本控制与降低成本策略解析
【7月更文挑战第25天】 ERP系统中的成本控制与降低成本策略解析
1123 3
|
Cloud Native Go 数据安全/隐私保护
自定义Docker镜像推送到Docker Hub实战
自定义Docker镜像推送到Docker Hub实战
411 2
自定义Docker镜像推送到Docker Hub实战
|
设计模式 前端开发 安全
理解最常用的MVC分层模型及其变种
【6月更文挑战第24天】 本文介绍架构模式如MVC、MVVM和MVP是解决软件结构问题的通用方案。。每种模式有其优缺点,适用场景不同。
771 0
理解最常用的MVC分层模型及其变种
|
消息中间件 JSON 自然语言处理
python多进程日志以及分布式日志的实现方式
python日志在多进程环境下的问题 python日志模块logging支持多线程,但是在多进程下写入日志文件容易出现下面的问题: PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。 也就是日志文件被占用的情况,原因是多个进程的文件handler对日志文件进行操作产生的。
|
Linux 虚拟化 云计算
虚拟化技术及实时虚拟化概述
本文探讨了实时虚拟化技术,它是虚拟化技术的一种,旨在保证严格的时间约束和高可靠性。文章介绍了虚拟化的起源、分时系统的历史以及虚拟化技术在云计算时代的复兴。内容涵盖分时系统、虚拟化技术的定义、类型(全虚拟化、半虚拟化、硬件辅助完全虚拟化和操作系统级虚拟化)及其优缺点。此外,还讨论了不同类型虚拟化技术的实现方式,如Type-1和Type-2虚拟化,以及容器技术。文章强调了实时虚拟化在工业实时控制、汽车、通信等领域的应用,并预告后续将重点讨论实时虚拟化技术。
916 0
虚拟化技术及实时虚拟化概述
|
网络协议 算法 网络性能优化
计算机网络 第五章 网络层(习题)
计算机网络 第五章 网络层(习题)
509 1