http://apps.hi.baidu.com/share/detail/15354889
以太网最小帧长为什么是64字节
最近由于要做一个关于以太网环境中网络设备时延方面的测试,在RFC2544 上面规定了一些测试时数据包的长度分别为64, 128, 256, 512, 1024, 1280, 1518 Byte("Frame sizes to be used on Ethernet:64, 128, 256, 512, 1024, 1280, 1518"),故重新温习了一下相关方面的知识。下面是网络上相关的一些资料!
总结一下:64字节的由来即以太网帧的18 Byte (目的MAC(6)+源MAC(6)+Type(2)+CRC(4))加上实际载荷的最小长度46 Byte(数据:46~1500字节) ,总共64字节!
以太网最小帧长为什么是64字节
文章来源:http://hi.baidu.com/yangcbo/blog/item/e43bb2ef64c0db12fcfa3cb9.html ,在此表示感谢!
文章一:
以太网(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。
文章二:
2.碰撞槽时间
假设公共总线媒体长度为S,帧在媒体上的传播速度为0.7C(光速),网络的传输率为R(bps),
帧长为L(bps),tPHY为某站的物理层时延;
则有:
碰撞槽时间=2S/0.7C+2tPHY
因为Lmin/R=碰撞槽时间
所以:Lmin =(2S/0.7C+2tPHY )×R
Lmin 称为最小帧长度。
碰撞槽时间在以太网中是一个极为重要的参数,有如下特点:
(1)它是检测一次碰撞所需的最长时间。
(2)要求帧长度有个下限。(即最短帧长)
(3)产生碰撞,就会出现帧碎片。
(4)如发生碰撞,要等待一定的时间。t=rT。(T为碰撞槽时间)
2.下面我们来估计在最坏情况下,检测到冲突所需的时间
(1)A和B是网上相距最远的两个主机,设信号在A和B之间传播时延为τ,假定A在t时
刻开始发送一帧,则这个帧在t+τ时刻到达B,若B在t+τ-ε时刻开始发送一帧,则B在t+τ时就
会检测到冲突,并发出阻塞信号。
(2)阻塞信号将在t+2τ时到达A。所以A必须在t+2τ时仍在发送才可以检测到冲突,所以一帧的
发送时间必须大于2τ。
(3)按照标准,10Mbps以太网采用中继器时,连接最大长度为2500米,最多经过4个中继器,因
此规定对于10Mbps以太网规定一帧的最小发送时间必须为51.2μs。
(3)51.2μs也就是512位数据在10Mbps以太网速率下的传播时间,常称为512位时。这个时间定
义为以太网时隙。512位时=64字节,因此以太网帧的最小长度为512位时=64字节。
2,以太网18字节,我想应该是“目的MAC(6)+源MAC(6)+Type(2)+CRC(4)
3,至于IP最大传输单元1500,只是规定
文章三:
Lmin/R = 2*S/(0.7*C) + 2*Tphy + 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。情况如下:
主机A以R的速率发送,以0.7*C的光速到达B,然后发生碰撞
返回A,一共的路程是2*S,此时对应的帧长度即为Lmin。因为
如果La
碰撞指示就失去了意义,媒体访问控制就失败了。
如果先定义了Lmin,同样可以定出S。
如 IEEE 802.3 Lmin = 64B;设R = 10M bps Tphy = 15us
Tr = 0 则可以计算出 S = 2.3km
在实际应用当中,还要考虑信号在介质上的有效距离,对于
双绞线来说,有效距离要小于S,这样就会引入中继器来延长
传输距离,但是可以看出,这又将减小S。所以这是一对矛盾,
在设计以太网时,应该加以考虑。
以太网帧为什么最小是64个字节
文章来源: http://hi.baidu.com/hltky2008/blog/item/53ae8136efca58370a55a90a.html ,致谢!
以太网帧为什么最小要64个字节,512bit(个位)
看这个理论时,希望你能静下心来,看上二到三次再画个图想一想,真正了解原理
以太网是无连接的,不可靠的服务,采用尽力传输的机制。以太网CSMA/CD我就不多讲了,我相信大家都了解这个原理。
以太网是不可靠的,这意味着它并不知道对方有没有收到自己发出的数据包,但如果他发出的数据包发生错误,他会进行重传。以太网的错误主要是发生碰撞,碰撞是指两台机器同时监听到网络是空闲的,同时发送数据,就会发生碰撞,碰撞对于以太网来说是正常的。
我们来看一下,假设A检测到网络是空闲的,开始发数据包,尽力传输,当数据包还没有到达B时,B也监测到网络是空闲的,开始发数据包,这时就会发生碰撞,B 首先发现发生碰撞,开始发送碰撞信号,所谓碰撞信号,就是连续的01010101或者10101010,十六进制就是55或AA。这个碰撞信号会返回到 A,如果碰撞信号到达A时,A还没有发完这个数据包,A就知道这个数据包发生了错误,就会重传这个数据包。但如果碰撞信号会返回到A时,数据包已经发完,则A不会重传这个数据包。
我们先看一下,以太网为什么要设计这样的重传机制。首先,以太网不想采用连接机制,因为会降低效率,但他又想有一定的重传机制,因为以太网的重传是微秒级,而传输层的重传,如TCP的重传达到毫秒级,应用层的重传更达到秒级,我们可以看到越底层的重传,速度越快,所以对于以太网错误,以太网必须有重传机制。
要保证以太网的重传,必须保证A收到碰撞信号的时候,数据包没有传完,要实现这一要求,A和B之间的距离很关键,也就是说信号在A和B之间传输的来回时间必须控制在一定范围之内。IEEE定义了这个标准,一个碰撞域内,最远的两台机器之间的round-trip time 要小于512bit time.(来回时间小于512位时,所谓位时就是传输一个比特需要的时间)。这也是我们常说的一个碰撞域的直径。
512个位时,也就是64字节的传输时间,如果以太网数据包大于或等于64个字节,就能保证碰撞信号到达A的时候,数据包还没有传完。
这就是为什么以太网要最小64个字节,同样,在正常的情况下,碰撞信号应该出现在64个字节之内,这是正常的以太网碰撞,如果碰撞信号出现在64个字节之后,叫 late collision。这是不正常的。
我们以前学习CISCO网络的时候,CISCO交换机有一种转发方式叫fragment-free,叫无碎片转发,他就是检查64个字节之内有没有错误,有的话不转发,这样就排除了正常的以太网错误包。
[求助]关于以太网的最小帧64Bytes,1518 Bytes
内容来源:http://www.netexpert.cn/thread-12833-1-1.html ,致谢!
大家好,记得以前在论坛上看到过关于以太网最小帧 64 Bytes 的由来,是一个算式,计算出来了这是CSMA/CD算法探测冲突的最小传输时间,但是刚才在论坛上翻了半天,没看到,哪位大虾能再为小弟解释一下么?谢谢了
另外,在有些资料上看到以太网的帧头开销是18字节,但是请问这是怎么得来的?因为 Dst MAC + Src MAC + Type(Length)只有12 Bytes(注意:这里应该是14字节),另外的 6 Bytes 从何而来呢?
最后一个问题,以太网为什么要规定最大传输单元 1518 Bytes?
------
问题很菜,大家不要笑我
1,关于最小字节的由来
2.碰撞槽时间
假设公共总线媒体长度为S,帧在媒体上的传播速度为0.7C(光速),网络的传输率为R(bps),
帧长为L(bps),tPHY为某站的物理层时延;
则有:
碰撞槽时间=2S/0.7C+2tPHY
因为Lmin/R=碰撞槽时间
所以:Lmin =(2S/0.7C+2tPHY )×R
Lmin 称为最小帧长度。
碰撞槽时间在以太网中是一个极为重要的参数,有如下特点:
(1)它是检测一次碰撞所需的最长时间。
(2)要求帧长度有个下限。(即最短帧长)
(3)产生碰撞,就会出现帧碎片。
(4)如发生碰撞,要等待一定的时间。t=rT。(T为碰撞槽时间)
2.下面我们来估计在最坏情况下,检测到冲突所需的时间
(1)A和B是网上相距最远的两个主机,设信号在A和B之间传播时延为τ,假定A在t时
刻开始发送一帧,则这个帧在t+τ时刻到达B,若B在t+τ-ε时刻开始发送一帧,则B在t+τ时就
会检测到冲突,并发出阻塞信号。
(2)阻塞信号将在t+2τ时到达A。所以A必须在t+2τ时仍在发送才可以检测到冲突,所以一帧的
发送时间必须大于2τ。
(3)按照标准,10Mbps以太网采用中继器时,连接最大长度为2500米,最多经过4个中继器,因
此规定对于10Mbps以太网规定一帧的最小发送时间必须为51.2μs。
(3)51.2μs也就是512位数据在10Mbps以太网速率下的传播时间,常称为512位时。这个时间定
义为以太网时隙。512位时=64字节,因此以太网帧的最小长度为512位时=64字节。
2,以太网18字节,我想应该是“目的MAC(6)+源MAC(6)+Type(2)+CRC(4)
3,至于IP最大传输单元1500,只是规定
有些把以太网帧的前导字符部分也算到帧头里面了
虽然与Ethernet II标准发布时间差不多,而且IEEE 802.3的标准级别比前者高得多,但在标准发布后的十多年,802.3标准在应用中仅仅能与Ethernet II平分秋色,其本质原因是802.3标准中的帧结构必须配合802.2标准使用,这大大减小了应用的灵活性并显著增加了协议的开销,复杂加之效率低使802.3难以占上风。
在1998年编辑中802.3工作组对802.3标准进行了重大改动,最后完成了新版标准IEEE 802.3-2002。2002版的802.3标准对MAC帧结构进行了重大改进使之具备Ethernet II封装灵活性,从而在应用中完全取代了Ethernet II,使IEEE 802.3-2002标准成为以太网的唯一标准。
2005年以来又开始制定802.3标准的新版本。
802.3-2002标准定了以太网的头结构为DA(6)+SA(6)+Len/Type(2)=14字节。
[ 本帖最后由 networker1119 于 2008-2-27 19:45 编辑 ]