以太网帧格式解析

        以太网的正式标准是IEEE802.3,它规定了以太网传输的帧结构。

        以太网帧格式如下图所示:

        以太网传输数据时,是按照上图的格式,自左到右依次传输的。需要注意的是前导码和SFD不属于以太网协议的内容,应该是属于物理层数据同步相关的内容。 具体解析如下:

 名称字节数数值含义
前导码7字节0x55_5555_5555_5555同步码,通过串行数据的“01”交替,实现数据的同步。
帧起始界定符1字节0xD5表示一帧的开始。后面紧跟以太网的帧头
目的MAC地址6字节/以太网协议的第一个字段。指示目标设备(接收端)的MAC地址。分为广播地址、单播地址和多播地址。广播地址的数值为0xFFFF_FFFF_FFFF,用于和所有设备进行通信。
源MAC地址6字节/发送端的MAC地址。
长度/类型2字节/

当该字段的数值小于1536个字节时,表示的是数据的长度。

当为0x0800时,表示该数据包是IPv4协议包。

当为0x08DD时,表示该数据包是IPv6协议包。

当为0x0806时,表示该数据包是ARP协议包。

数据46~1500字节/

以太网中的数据长度最小是46字节,最大1500字节(正常情况下是这样的,但是存在巨帧等数据包)。最大值1500称为以太网的最大传输单元MTU。限制数据包大小的原因是担心单个数据包的发送时间太长,在计算机中排队的数据包队列太长,导致其他应用一直卡住,体验变差。

TCP、IP、UDP、ARP等协议数据,就包含在此部分里。

校验FCS4个字节/

为了确保数据的正确性,在网络包尾部增加了一个CRC32的校验结果,用来检测数据传输是否正确。CRC校验的范围:目的MAC、源MAC、长度/类型、数据。

另外关于CRC校验计算部分,可以参考文章:CRC计算流程详解和FPGA实现_crc32 fpga实现-CSDN博客

        这里需要注意的是,以太网两帧之间的时间间隔,IFG。

        不管10M/100M/1000M的网络,两帧之间最少有96bits的间隔时间。也就是说:

        10M的IFG=96*100ns=9600ns

        100M的IFG=96*10ns=96ns

        1000M的IFG=96*1ns=96ns

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值