文章出处:

https://blog.csdn.net/ixidof/article/details/7799891

在传统以太网中,为什么要有最小帧长度和最大帧长度的限制?

以太网(IEEE 802.3)帧格式:

1. 前导码:7字节0x55,一串1、0间隔,用于信号同步;

2. 帧起始定界符:1字节0xD5( 10101011 ),表示一帧开始;

3. DA ( 目的MAC ) :6字节;

4. SA ( 源MAC ) :6字节;

5. 类型 / 长度:2字节,0~1500保留为长度域值,1536~65535保留为类型域值(0x0600~0xFFFF);

6. 数据:46-1500字节;

7. 帧校验序列(FCS):4字节,使用CRC计算从目的MAC到数据域这部分内容而得到的校验和。

以CSMA / CD作为MAC算法的一类LAN称为以太网

CSMA / CD冲突避免的方法:先听后发、边听边发、随机延迟后重发。一旦发生冲突,必须让每台主机都能检测到。关于最小发送间隙和最小帧长的规定也是为了避免冲突。

考虑如下的情况,主机发送的帧很小,而两台冲突主机相距很远,在主机A发送的帧传输到B的前一刻,B开始发送帧。这样,当A的帧到达B时,B检测到冲突,于是发送冲突信号。假如在B的冲突信号传输到A之前,A的帧已经发送完毕,那么A将检测不到冲突而误以为已发送成功。由于信号传播是有时延的,因此检测冲突也需要一定的时间。这也是为什么必须有个最小帧长的限制

按照标准,10Mbps以太网采用中继器时,连接的最大长度是2500米,最多经过4个中继器,因此规定对10Mbps以太网一帧的最小发送时间为51.2微秒。这段时间所能传输的数据为512位,因此也称该时间为512位时。这个时间定义为以太网时隙,或冲突时槽。512位=64字节,这就是以太网帧最小64字节的原因。

512位时是主机捕获信道的时间。如果某主机发送一个帧的64字节仍无冲突,以后就不会再发生冲突了,称此主机捕获了信道

由于信道是所有主机共享的,如果数据帧太长就会出现有的主机长时间不能发送数据,而且有的发送数据可能超出接收端的缓冲区大小,造成缓冲溢出。为避免单一主机占用信道时间过长,规定了以太网帧的最大帧长为1500。

100Mbps以太网的时隙仍为512位时,以太网规定一帧的最小发送时间必须为5.12μs。

1000Mbps的以太网的时隙增至512字节,即4096位时,4.096μs。

熟悉了最小帧长,可以说就明白了为什么基于CSMA/CD协议的以太网有网段长度限制,同时也掌握了以太网的精髓。

在这之前,我们应该先了解一下CSMA/CD协议。

什么是CSMA/CD协议(载波侦听多路访问/冲突检测协议)?一个房间有很多人,如果同时说话,就谁也听不清楚别人说什么,于是大家约定了一个机制:每个人在说话之前先听一下有没有其他人说话(载波侦听),如果有,自己就先不说话,如果没有,就说话。如果大家同时发现房间里没有人说话,则同时开口,此时就产生冲突(冲突检测),产生冲突后大家都闭嘴,每个人心里都随机的选一个时间开口说话,这样随机时间时间最短的那个人就可以说话了,而其他人听着。在这一个大房间里,大家在同一个空间(共享同一个介质)里可以彼此说话(多路访问。而不仅是只能和某个人说话)。以太网就是遵循这种方式通信,链接在同一条网线上的多个设备必须在发送数据前先侦听线上有无其他机器在传输,如果没有就发送,如果遇到冲突就等一个随机的时间再发送。

关键的一点是:发送和接受端如何感知冲突?
    假设:A、B两地间通过一个传送带链起来,传送带的滚动速度是C(C代表光速),也就是20.3cm/ns(每纳秒20.3厘米),A点有个人叫A1,他要把一车苹果分成一小堆一小堆的发送给B点的那个人B1,现则A1需要抉择的是:我在传送苹果给B1的时,如果B1同时也有苹果传给我,这个时候就会产生冲突,而冲突会把传送中的苹果撞碎,破碎的苹果渣会通过传送带反送给我,我很想知道是哪一小堆苹果被撞碎了,如何实现?一个办法就是:在我收到苹果碎片的时候,我仍旧在传着这堆苹果!比如有很多堆苹果,第1堆,第2堆等,当我发送第3堆苹果的过程中,收了苹果碎片,那肯定是第3堆里先发出的苹果出现了碰撞,而不是第2堆或第1堆中的苹果发生碰撞。

为了实现这一点,假如A到B点的距离是2500米(250000厘米),传送带上的苹果每纳秒20.3厘米,那么一堆苹果中的第一个苹果到达B点的用时就是250000除以20.3=12500纳秒,在加上碎片返回的时间是12500纳秒,等于25000纳秒,这个时间就是一堆苹果必须持续的时间。
    体力稍好的人,往传送带上放苹果的时候快,体力不好的就慢。体力稍好的人每秒可以往传送带上放100Mbit个苹果,换算一下,也就是说放一个苹果用10纳秒。体力不好的人每秒钟只能往传送带上放10Mbit个,也就是说放一个苹果用100纳秒。
    因为一堆苹果必须持续的时间25000纳秒,那么对于体力不好的人,25000除以100=250个苹果,这个结果就是一堆苹果的数量。所以,理论上一个10Mbit/s的以太网,最小帧长应该是250bit。但为了确保碰撞切实的被检测到,最小帧长被定义为512bit(64字节)。
    因为一堆苹果必须持续的时间25000纳秒,对于体力好的人,25000除以10=2500个苹果,这个结果就是一堆苹果的数量。所以,理论上一个100Mbit/s的以太网,最小帧长应该是2500bit。但一个2500bit的帧又太大了,上层来的数据包不可能这么大。所以我们只能缩短A点到B点的距离为250米,一个苹果在传送带上往返的时间也变成了2500纳秒。这时用2500除以10=250个苹果,这个结果就是一堆苹果的数量。所以,理论上一个100Mbit/s的以太网,最小帧长应该是250bit,网络最大有效距离是250米。但为了确保碰撞切实的被检测到,最小帧长被定义为512bit(64字节)。

以下动画演示了发送端A在把数据传输给B时,在将要到达B点的地方出现了碰撞,于是碰撞碎片传回了A,A就知道正在传输的数据出现冲突了。

由此可见,MAC层发送的速度越快,以太网的最大有效距离就越短。但对于1000Mb/s的吉比特以太网,MAC层有两种选择,要么保留CSMA/CD,要么不用它。若保留CSMA/CD协议,必须面临碰撞检测问题,这就要再一次减小网络的最大有效传输距离到25米。当然您可以不缩短网络的距离,而是增加一个帧的程度,就如我们开始分析100Mb/s以太网那样,让一个帧持续足够长的时间。但因为上层来的数据没有这么多,所以就需要在MAC层进行一些无用数据的填充来满足这个要求。

最后,我们推导出以下比例关系:
    最小帧长/传输速率
    正比于
    网络最大传输距离/光速
    一个网络的最大传输距离也称为冲突域,传输一个最小帧所用的时间(最小帧长/传输速率)正比于1位信息穿越冲突域的时间。

最大帧长和最小帧长详解相关推荐

  1. matlab梯形弦长公式,弦长公式证明及应用详解

    弦长公式证明及应用详解 公式为: |AB| 和:|AB|= 作用:应用弦长公式很方便,它所解决的问题是求直线与所有圆锥曲线所交弦的弦长,因为直线的斜率往往是已知的,这样再知道两个交点的横坐标或者纵坐标 ...

  2. 泰坦钩长还是机器人钩长_机器人钩子更远更长!最全教学详解助你上分

    原标题:机器人钩子更远更长!最全教学详解助你上分 9.19机器人得到了一个史诗级的加强,Q技能机械飞爪由之前的1050距离增长到了1150.乍一看,这个加强其实感觉并不是非常强,毕竟靠走位该躲掉的还是 ...

  3. 单片机最小系统 原理图详解 PCB操作 个人备忘

    印象笔记链接: 单片机最小系统 原理图详解 PCB操作 总结(图解) - CSDN资源下载 -  点击打开链接

  4. (八)深入浅出TCPIP之TCP长连接与短连接详解

    目录 通信方式 连接方式 1.长连接 1.1服务器中的长连接 1.2 长连接的维护

  5. 【十五】 VVC/H.266 | 帧内帧间联合预测技术CIIP详解

    文章目录 一.基本原理 二.具体技术细节 一.基本原理 CIIP是帧内帧间联合技术,这属于Merge系列技术的一个分支.该技术需要计算当前预测块的帧内预测值,即用传统的帧内预测模式去预测当前块的像素值 ...

  6. HTTP请求头中的长连接和短连接详解

    目录 顺子 长连接的作用 长连接的体现 TCP长连接流程 TCP短连接流程 长连接的使用场景 短连接的使用场景 如何判断长连接和短连接 Transfer-Encoding 顺子 项目中,发现一个问题, ...

  7. 堆树(最大堆、最小堆)详解

    https://blog.csdn.net/guoweimelon/article/details/50904346 一.堆树的定义 堆树的定义如下: (1)堆树是一颗完全二叉树: (2)堆树中某个节 ...

  8. 为什么事件的最早发生时间是源点到顶点的最长路径长度?(关键路径详解)

    在学习数据结构的过程中,我发现关键路径的中的概念取名使得第一印象让人容易产生误解,所以我用最通俗易懂的例子来解释解释这些概念的实际含义. 基本概念--AOE网 有几个最基本的概念我们要先了解,在带权有 ...

  9. 文字识别(六)--不定长文字识别CRNN算法详解

    转自:https://www.cnblogs.com/skyfsm/p/10335717.html 在以前的OCR任务中,识别过程分为两步:单字切割和分类任务.我们一般都会讲一连串文字的文本文件先利用 ...

最新文章

  1. Java程序执行过程
  2. 第十五届全国大学生智能汽车竞赛 人工智能创意组总决赛
  3. 斯坦福大学公开课:iPhone开发教程2010年冬
  4. 从浏览器地址栏输入url到显示页面的步骤
  5. .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法
  6. ios中amplify配置configure_Nginx源码编译安装及配置文件初步学习
  7. 哲学家就餐问题(如何避免死锁)(多线程版)
  8. 快速解决 Android SDK Manager 无法下载或者下载速度慢
  9. oracle修改字符集
  10. CISA提醒:UPS联网设备正遭攻击
  11. java8 Lambda表达式的应用(函数式接口、lambda表达式,方法引用及Stream API)
  12. 自学python到什么程度就可以工作-Python学到什么程度可以面试工作?
  13. python中random库
  14. [JLOI2014]松鼠的新家【树上差分】
  15. js同步-异步-回调
  16. jTessBoxEditor训练3500常用汉字
  17. dcs world f15c教学_视频教学知识归纳 | 广东中考必备英语:中考语法知识 冠词
  18. 总结:如何使用ClearCase进行开发工作
  19. WPF界面美化(整体作用到控件),一步步教你使用FirstFloor.ModernUI
  20. CSS:纯CSS3全屏背景图片幻灯片轮播

热门文章

  1. 数据分析八大模型:详解PEST模型
  2. 金蝶BOS8.2 EAS客户端一直初始化解决方案
  3. 华为的笔试好难...
  4. JZOJ-senior-5952. 【NOIP2018模拟11.5A组】凯旋而归
  5. python有趣的库_python的一些比较冷门、但是有趣的库 - 标签 - 古明地盆 - 博客园...
  6. 前端/后端(FE / BE)
  7. 把图片修改为单色图片
  8. Linux shell编程自动化运维,三剑客之awk原理,语法,内部变量,格式化输出,模式和动作 详细解析
  9. excel常用函数(二)
  10. CAD/CASS批量坐标标注插件(可自动避让、可输出图面坐标标注)