搞懂CSMA/CD,你就明白为什么以太网最小帧是64字节。

本文深入探讨了CSMA/CD(载波监听多点接入/冲突检测)机制的工作原理,包括多点接入、载波监听及碰撞检测三个核心方面,并详细解释了退避算法如何减少碰撞概率。

【原创作品,未经授权禁止转载,否则将追究法律责任】

出现一个新的东西,新的技术,

小编就经常反问自己的一句话就是:为什么会诞生它(CSMA/CD)呢?why?


每个东西的产生或发明都是有它的存在的原因或背景的。


我们先来看看最初的以太网的构思吧!


把相距有一定距离的一些电脑连接起来,实现计算机之间互相通信就可以了。


最初都是把这些计算机连接在一根网线上,这种方式实现起来简单又可靠。



总线的特点是:当一台计算机发送数据时,总线上的所有计算机都能监听到这个数据。这也是我们常说的:广播通信。但现实中,我们并不总是需要一对多通信。所以为了实现一对一通信,专家们就使用了一个叫做适配器的东西,也是我们说的网卡,在上面进行烧录不同的MAC地址进行区分。计算机在发送时,就在数据帧中的“目的Mac”字段填上接收站的地址即可。好比,现实中,我们寄快递一样,写上收件人的地址一样。


通信世界中里的“收件人地址(目的MAC地址):



网卡:




规则:仅当数据帧中的目的MAC地址与接收站的网卡烧录的mac地址一致时,才会接收。否则就丢弃。


总线工作有一个特点:总线上只要有一个台计算机在发送数据,总线的传输资源就被占用了。所以,在同一个时间内,只能允许一台计算机来发送数据,否则各个计算机之间就会互相干扰,导致数据不可用。

阿龙给大家举个场景吧!这样,更容易理解:

好比一条宽度有限、并且同一时间内只允许一个方向行驶的公路,但又好多个入口或出口,在每个入口有汽车想驶入。


同一时间内,一个方向上只能行驶通行一辆车,多了吧!就会发生碰撞事故啦!


那么这时,就需要一种机制来进行协调通信。就像,路上我们经常看到的红绿灯啊、警察叔叔在指挥交通一样,大家都遵循这个规则、手势,这样交通才能有序通行。通信的世界里,也是一样的,以太网的专业术语叫做:CSMA/CD

(Carrier Sense Multiple Access/Collision Detect),即载波监听多点接入访问/冲突检测机制。


理解CSMA/CD,主要有三个方面:

1、多点接入:

2、载波监听

3、碰撞检测。


这里值得一提的是,CSMA/CD 使用场景是在一个站不能同时发送数据和接收数据,即适用场景为 半双工通信。


多点接入:就是说这是总线型网络,许多计算机接在总线上。


载波监听:发送前先监听。就是每个计算机在发送数据前,先要检测一下总线上是否有其他站在发送数据。如果有,则暂时不发送数据,等待信道变为空闲时在发送。你可以理解为,汽车要驶入路口时,先按一下喇叭,看看道路内有没有其他车辆。如果有人回应了,那表明狭窄道路上有车辆,暂时不用驶入。


碰撞检测:边发送边监听。网卡边发送数据边监听信道上的信号电压的变化情况,以此来判断自己在发送数据时是否有其人正好也在发送数据。如果确实发送了,总线上的信号电压变化幅度是会增加的(互相叠加),这是总线就认为产生了碰撞。传输的信号会严重失真,失真就是数字信号无法还原成模拟信号(语音、视频)。网卡监听到碰撞了,就会立即停止发送,这样可以节省网络资源的浪费,然后等一会儿(等一个随机时间)再发送。



这时,你可能会有疑问,为什么发送前都已经载波监听了,空闲时才发送,怎么会出现碰撞呢?


这是因为电磁波在总线传播是以有限的速率传播的。可能A机现在检测是空闲的,B机也同时检测是空闲的,于是他们同时发送数据,然后的然后就发送碰撞了。

这里需要先记住的是:电磁波在1km电缆的传播时延约为5us。


在局域网分析时,我们经常把单程端到端的传播时间记为 τ



A发送数据,须经过多久才能检测到发送了碰撞了?


从图中,不难看出,最坏的情况,最多需要经历两倍的“单程端到端的传播时延(时间)=2τ”即,传播端到端的往返时延。



T=0时,A发送数据。B检测到信道为空闲。


T=τ时(这里τ>δ>0),A发送数据还没到达B时,由于B检测到信道是空闲的(为什么B检测是空闲的?前面我们说了,电磁波1km的传播时延是5us,换言之就是5us后B才能检测到信道是忙的,5us之前,B认为是空闲的,于是开始发送数据)。因此B发送数据。


经过时间δ/2后,即在T=τ-δ时,A发送的数据和B发送的数据发生了碰撞。这时,A和B都不知道发送了碰撞。


T=τ时,只有B先检测到了发生碰撞,于是停止发送数据。


在T=2τ- δ时,A才检测到发生了碰撞,也停止发送数据。


然后A和B就随时选择一个时间,推迟,再重新发送。


由此可知,每一个站,在发送数据时,在一定时间内,都存在碰撞的可能性。


发送数据帧的A站,最多经历2τ时间就可以知道是否遭受碰撞了。我们把这2τ

称为争用期,也叫碰撞窗口。

经过这个争用期时间,检测没有发生碰撞,就能肯定这次发送的数据不会发生碰撞。


至此,碰撞问题还是没有解决。专家们就发明了一种算法,来减小发生碰撞的概率,这个算法就是:退避算法


退避,意思就是推迟,发送碰撞了,利用一种算法,来选择推迟多久才发送数据。



退避算法的思想如下:

1、确定基本退避时间。就是争用期2τ。以太网把争用期2τ定为51.2us 。(至于为什么是这个值,就没必要去纠结了,反正当时专家这么定,你就这么记咯!)

对于10Mb/s以太网,在争用期内可发送512bit,即64字节


512bit怎么来的? 就是速率乘以时间,就等于数据量。 

10Mb/s*51.2us=[10*10^6b/s] * [51.2^(-6)s]=512bit 


2、从离散的整数集合随机取出一个数[0,1,2,3……,(2^k-1)]  ,取出来的数,记为r。重传推迟的时间就是r倍的争用期。T=r*2τ

上面k的参数,按照这个计算k=Min[重传次数,10]。  可见,当重传次数不超过10时,参数k=重传次数。如果重传次数超过10时,k就不再增加了,一直等于10。


3、当重传达16次,仍然会不能成功时,就丢弃该帧,向高层报告。说明发送的人太多了,导致连续发送碰撞。


举例:

在第一次重传时,k=1,随机数r从整数{0,1}中选一个数,  可得重传的推迟时间要么为0,要么为1*2τ, 这两个选择一个。


如果再次发送,即第二次重传,k=2,代入[0,1,2,3……,(2^k-1)] ,随机数r从整数{0,1,2,3}选一个数,可得重传推迟时间是0,2τ,4τ,6τ 这4个值随机选择一个。


同理,再次发送碰撞,以此类推。


结论

到这里,我们就可以看出,以太网在发送数据时,如果帧的前64字节没有发送冲突,那么后续的数据就不会发送冲突。换句话说,就是如果发送冲突,就一定是在发送的前64字节之内。因为检测到冲突就停止发送,这时已经发送出去的数据一定小于64字节。

因此以太网规定了最短有效帧长为64字节,只要长度小于64字节的帧都是由于冲突而异常中止的无效帧。收到这种无效帧就立即丢弃。



<think>我们正在讨论以太网最小64字节的设计原理。根据用户提供的引用,特别是引用[2]和引用[3],我们可以知道这与冲突检测(CSMA/CD机制)有关。 关键点: 1. 以太网采用CSMA/CD(载波侦听多路访问/冲突检测)机制来避免冲突,但当冲突发生时,必须能够检测到。 2. 为了保证发送方在发送完一个之前能够检测到冲突,需要的发送时间不小于信号在最远距离的往返时间(即争用期)。 3. 对于10Mbps以太网,争用期被定为51.2微秒(μs),在这个时间内,信号可以往返于最大距离的网络(2500米,经过4个中继器)。 4. 在51.2微秒内,能够发送的数据量是:10Mbps * 51.2μs = (10*10^6) bit/s * 51.2*10^(-6) s = 512 bit。 5. 512 bit 等于64字节(因为1字节=8比特,512/8=64)。 因此,最小64字节的设计是为了确保发送方在发送完之前能够检测到冲突,从而及时停止发送,并执行退避算法重传。 另外,引用[1]提到以太网最小长度为64字节,其中包括18字节开销(目的MAC+源MAC+Type+CRC),所以IP报文最小为46字节64-18=46)。如果数据部分不足46字节,则需要填充到46字节。 引用[4]则从重传效率的角度说明,链路层的重传(微秒级)比传输层(毫秒级)和应用层(秒级)快得多,因此以太网在链路层设计重传机制是高效的。 总结设计原理: 1. 冲突检测要求:确保在争用期内能够发送完最小,以便发送方能够检测到冲突。 2. 效率考虑:在链路层进行快速重传,提高网络效率。 下面我们按照要求组织回答:</think>### 以太网最小64字节的设计原理 以太网最小64字节的设计源于**冲突检测机制**和**物理介质限制**的协同作用,核心原理如下: #### 一、冲突检测机制要求(CSMA/CD以太网采用CSMA/CD(载波侦听多路访问/冲突检测)机制避免数据冲突。关键约束是: 1. **争用期(Slot Time)**:定义为信号在**最远距离网络往返的时间** $$ \text{争用期} = 2 \times \frac{\text{最大传输距离}}{\text{信号传播速度}} $$ 2. **最小发送时间 ≥ 争用期**: 确保发送方在发完前能检测到冲突(若过短,发送完毕后才检测到冲突则无法中断) 对于10Mbps以太网: - 最大传输距离:2500米(含4个中继器)[^3] - 信号传播速度:约$2 \times 10^8$ m/s(光速的2/3) - **争用期 = 51.2μs**(计算结果)[^2][^3] 在51.2μs内可传输的数据量: $$ 10\text{Mbps} \times 51.2\mu s = 512 \text{ bit} = 64 \text{ 字节} $$ ∴ 最小长定为**64字节**[^2][^3] ```mermaid graph LR A[冲突检测需求] --> B[争用期51.2μs] B --> C[10Mbps网络] C --> D[512 bit传输量] D --> E[64字节最小] ``` #### 二、结构拆分 64字节包含: 1. **开销**:固定18字节 - 目的MAC(6) + 源MAC(6) + 类型/长度(2) + FCS(4)[^1] 2. **数据载荷**:最小46字节 $$ 64 \text{字节} - 18 \text{字节} = 46 \text{字节} $$ 若实际数据不足46字节,需填充至该长度[^1] #### 三、设计优势 1. **高效重传** 链路层重传仅需微秒级,远快于传输层(毫秒级)和应用层(秒级),提升效率[^4] 2. **避免碎片** 防止过短占用信道(如仅传1字节数据需附加63字节开销) 3. **物理兼容性** 适配10BASE5/10BASE2等早期以太网介质规格 > 📊 **示例计算**: > 若最小设为32字节: > - 发送时间 = $32 \times 8 \text{bit} / 10\text{Mbps} = 25.6\mu s$ > - 但争用期51.2μs > 25.6μs → 发送完毕才检测到冲突 → **机制失效** #### 四、现代网络中的意义 虽然万兆以太网已弃用CSMA/CD,但64字节最小长仍被保留: - **兼容性**:确保传统设备正常工作 - **协议统一**:简化网络设备处理逻辑 - **安全防护**:识别并丢弃异常短(如攻击报文) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值