以太网数据帧结构以及大小限制

 以太网数据帧结构    

       以太网是目前最流行的一种局域网组网技术(其他常见局域网组网技术还有令牌环局域网、无线局域网、ATM局域网),以太网技术的正式标准是IEEE 802.3标准,它规定了在以太网中传输的数据帧结构,如下图所示。

              

      1、前导码/帧起始定界符:7字节0x55,一串1、0间隔,用于信号同步,1字节0xD5(10101011),表示一帧开始
  2、目的地址:6字节
  3、源地址:6字节
  4、类型/长度:2字节,0~1500保留为长度域值,1536~65535保留为类型域值(0x0600~0xFFFF)
  5、数据:46~1500字节
  6、帧校验序列(FCS):4字节,使用CRC计算从目的MAC到数据域这部分内容而得到的校验和。

        ARP报文是典型的以太网数据帧,他的结构为:

      以太网帧头部中的前两个字段是以太网的MAC地址和源MAC地址,目的地址为全1的特殊地址是以太网广播地址。在ARP表项建立前,源主机只知道目的主机的IP地址,并不知道其MAC地址,所以在数据链路上,源主机只有通过广播的方式将ARP请求数据包发送出去,同一网段上的所有以太网接口都会接收到广播的数据包。

       两个字节长的以太网帧类型表示帧中数据的类型。对于ARP包来说,该字段值为0x0806;对IP包来说,该字段的值为0x0800。接下来就是ARP数据包部分了,第一个硬件类型字段表示发送方想要知道的硬件接口类型,对于以太网MAC地址,它的值为1.协议类型字段表示要映射的协议地址类型,它的值为0x0800时,即表示要映射为IP地址,该值与以太网数据帧头中的类型字段的值使用相同的一组值。

接下来的两个单字节长度的字段,称为硬件地址长度和协议地址长度,它们分别指出硬件地址和协议地址的长度,长度单位为字节。对于以太网上ARP请求或应答来说,它们的值分别为6和4,代表MAC地址的长度和IP地址的长度。在ARP协议包中流出硬件地址长度和协议地址长度字段可以使得ARP协议在任何网络中被使用,而不仅仅只在以太网中。

      操作字段op指出ARP数据包的类型,它们可以使ARP请求(值为1)、ARP应答(值为2)。

      接下来的四个字段是发送端的以太网MAC地址、发送端的IP地址、目的端的以太网MAC地址和目的端的IP地址。


大小限制

    我们注意到上面提到数据的大小46~1500字节.46是如何算出来的呢?

    这里一句话带过,为了避免信号碰撞.也就是说信号在A和B之间传输 的来回时间必须控制在一定范围之内。IEEE定义了这个标准,一个碰撞域内,最远的两台机器之间的round-trip time 要小于512bit time.(来回时间小于512位时,所谓位时就是传输一个比特需要的时间)。这也是我们常说的一个碰撞域的直径。

  512个位时,也就是64字节的传输时间,如果以太网数据包大于或等于64个字节,就能保证碰撞信号到达A的时候,数据包还没有传完。

    前面提到,以太网首部要占14个字节,最后一个帧校验序列(FCS)占4字节.(前导码/帧起始定界符并不能算是真正意义上的以太网数据帧,它们是以太网在物理层上发送以太网数据时添加上去的),所以数据最小必须是64-14-4=46字节.对于ARP协议,数据长度只有28字节,剩余必须全部补0,为18个字节.

    最长长度1500字节也是以太网的规定,目的是避免数据太长,导致数据一直占用信道.



    参考:

    为什么以太网数据帧最小为64字节

    以太网完整协议

你可能感兴趣的:(linux网络编程)