已复制
全屏展示
复制代码

计算机网络数据链路层数据报总结

· 4 min read

常用的以太网MAC帧格式有两种标准,一种是DIX Ethernet V2标准(以太网V2标准),另一种是IEEE的802.3标准。这里介绍的是使用的最多的以太网V2的MAC帧格式。

以太网mac帧
以太网mac帧
  • 在以太网上传输的数据是以帧为单位传送,以太网在传送帧时,个帧之间还必须有一定的间隙,因此,接收端只要找到帧开始定界符,其后面的连续到达的比特流就都属于同一个MAC帧。可见以太网不需要使用帧结束定界符。
  • 一个MAC帧的大小最小为64字节。详细原因参考 为什么最小帧长度是64字节
  • 注意:在抓包工具wireshark中,是无法看到最前面的前同步码和帧定界符的。在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件,如果符合,就将帧交"设备驱动程序"做进一步处理。这时我们的抓包软件才能抓到数据,因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、FCS以后的数据的。
  • 前导同步码:用来使接收端的适配器在接收MAC帧时能够迅速调整时钟频率,使它和发送端的频率相同,前同步码为7个字节,1和0交替。
  • 帧定界符:帧的起始,为1个字节(10101011),前6个bit位0和1交替,最后两个bit位两个连续的两个1。需要注意的是如果数据部分的内容和帧定界符相同了,则数据需要进行转义才能传输,在接收端需要取消转义后转交给IP层。
  • 第一个和第二个字段分别为6个字节的目的地址和源地址。
  • 类型字段为2字节,用来标识上一层使用的是什么协议,比如IPv4(0x0800)或者Novell IPX(0x8137)
  • 数据帧中的数据字段的最大长度成为最大传送单元MTU(Maximum Transfer Unit)。
  • 数据字段的大小最小为46字节(46=64-6-6-2-4),当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面加入一个整数字节的填充字段,以保证以太网MAC帧的长不小于64字节。
  • 最后一个字段是4字节的帧检验序列FCS(使用CRC检验)。

问题:在MAC帧的首部中并没有一个帧长度字段,那么MAC层如何知道从接收到的以太网帧中取出多少的数据呢?

答案:我们传输的数据采用曼切斯特编码,它有一个特点:在传输的每一个码元(不管码元是0还是1)的正中间一定有一次电压的转换(从高到低或从低到高),当发送方吧一个以太网帧发送完毕以后,就不再发送其他码元了。这样接收方就可以很容易地找到以太网帧的结束为止。在这个位置上往前数4个字节,就能确定数据字段的结束位置了。

🔗

文章推荐