链路层:帧格式

1、以太帧的工作机制

当以太网软件从网络层接收到数据报之后,需要完成如下操作:

  • 将网络层发过来的数据按帧数据段要求分解成较小的块。以太网帧的整体大小必须在 64(6+6+2+46+4)~1518 (6+6+2+1500+4)字节之间(不包含前导码)。
  • 把数据块打包成帧,每一帧都包含数据及其他信息。
  • 将数据帧传递给物理层,后者把帧转换为比特流,通过传输介质发出去。
  • 以太网上的其他设备收到这个帧,检查其中的目的MAC地址。如果目的MAC地址与设备的MAC地址相匹配,就会处理接收到的帧,把数据传递给协议栈中较高的层。

2、以太帧的结构

组成:前同步码和帧开始定界符(7B+1B)+目的MAC地址(6B),源MAC地址(6B)+IP数据报(46B-1500B)+FCS(4B)

以太帧结构(格式)

前同步码:用来使接收端的适配器在接收 MAC 帧时能够迅速调整时钟频率,使它和发送端的频率相同。前同步码为 7 个字节,1 和 0 交替。

帧开始定界符:帧的起始符,为 1 个字节。前 6 位 1 和 0 交替,最后的两个连续的 1 表示告诉接收端适配器:“帧信息要来了,准备接收”。

目的地址:MAC 地址,为 6 个字节(48 比特)。作用是当网卡接收到一个数据帧时,首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同,就会进一步处理;如果不同,则直接丢弃。

源地址:发送帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。

类型:上层协议的类型。由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。例如,字段为 0x0800 时,表示将数据交付给 IP 协议。

段,标识数据交付哪个协议处理。例如,字段为 0x0800 时,表示将数据交付给 IP 协议。
数据:也称为效载荷,表示交付给上层的数据。以太网帧数据长度最小为 46 字节,最大为 1500 字节。如果不足 46 字节时,会填充到最小长度。最大值也叫最大传输单元(MTU)。

帧检验序列 FCS:检测该帧是否出现差错,占 4 个字节(32 比特)。发送方计算帧的循环冗余码校验(CRC)值,把这个值写到帧里。接收方计算机重新计算 CRC,与 FCS 字段的值进行比较。如果两个值不相同,则表示传输过程中发生了数据丢失或改变。这时,就需要重新传输这一帧。

3、最短64字节的由来

碰撞:指两台机器同时监听到网络是空闲的,同时发送数据,就会发生碰撞,碰撞对于以太网来说是正常的。

重传机制:以太网不想采用连接机制,因为会降低效率,但他又想有一定的重传机制,因为以太网的重传是微秒级,而传输层的重传,如TCP的重传达到毫秒级,应用层的重传更达到秒级,我们可以看到越底层的重传,速度越快,所以对于以太网错误,以太网必须有重传机制。

碰撞检测流程:假设A检测到网络是空闲的,开始发数据包,尽力传输,当数据包还没有到达B时,B也监测到网络是空闲的,开始发数据包,这时就会发生碰撞,B首先发现发生碰撞,开始发送碰撞信号,所谓碰撞信号,就是连续的01010101或者10101010,十六进制就是55或AA。这个碰撞信号会返回到A,如果碰撞信号到达A时,A还没有发完这个数据包,A就知道这个数据包发生了错误,就会重传这个数据包。但如果碰撞信号会返回到A时,数据包已经发完,则A不会重传这个数据包。

碰撞季重传关键:要保证以太网的重传,必须保证A收到碰撞信号的时候,数据包没有传完,要实现这一要求,A和B之间的距离很关键,也就是说信号在A和B之间传输的来回时间必须控制在一定范围之内。

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

最小帧长度计算公式:

Lmin/R = 2*S/(0.7*C) + 2*Tphy + 2*n*Tr
Lmin:最小帧长
R:网络速率(10M等),10Mbps以太网
S:碰撞域(10Mbps以太网采用中继器时,连接最大长度为2500米,最多经过4个中继器)
C:标准光速(*0.7表示在双绞线中,用光纤的话别论)
Tphy:物理层延时(*2 是因为要经过一收一发两个主机的物理层)
Tr:中继器延时(一般来说,相当于两个物理层的延时)

R = 10Mbps Tphy = 15us S=2500 Tr = 0 C=3*100000000

Lmin = (2*2500/(0.7*300000000)+2*15us+2*0)*10*1000000
=(5000/210000000+2*15us)*10000000
=230+300

Lmin约等于512比特位,即64B

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

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

4、最长1500字节的由来

由于信道是所有主机共享的,为避免单一主机占用信道时间过长,规定了以太网帧的最大帧长为1500。

发表回复