以太网(802.3)帧结构 (转)

在这里插入图片描述
FR(前导码):包括了7 个字节的二进制“1”、“0”间隔的代码,即1010…10
共56 位。当帧在链路上传输时,接收方就能建立起同步,因为这种“1”、“0”间
隔的传输波形为一个周期性方波。同时也指明了传输的速率(10M 和100M 的方
波频率不一样,所以100M 网卡可以兼容10M 网卡)。
SD(帧数据定界符):它是长度为1 个字节的10101011 二进制序列,此码
表示表示下面跟着的是真正的数据。
DA(目的地址):目的以太网的物理地址,由48 位二进制组成(6 个字节),
说明该帧传输给哪个网卡。如果地址为FFFFFFFFFFFF(广播地址),则该网络
上的所有网卡都能接收到本帧数据。这个地址和下面的SA 就是我们常说的网卡
的MAC 地址。具体信息我们待会介绍。
SA(源地址):48 位,说明该帧的数据是哪个网卡发的,即发送端的网卡物
理地址(MAC)。
LENGTH/TYPE(长度/数据类型):指示后面的数据属于什么类型。如0800H
表示数据为IP 包,0806H 表示数据为ARP 包。这样,交给网络层后就可以由相
应的协议对后面的数据解析。如果这个字段小于0600H 的值,则表示数据包的
长度,在单片机的网络编程中不考虑这种用法。
DATA(数据段):由网络层负责发送和解析的数据,因为以太网帧传输的数
据包最小不能小于64 字节,最大不能超过1518 字节。除去14 字节为DA、SA、
TYPE 以及4 字节的FCS,DATA 不能超过1500 字节。如果不够46(64-18)
字节,余下的由PAD 填充。
PAD(填充位):当DATA 的数据不足46 字节时,缺少的字节需要补上(可
补任意值)。
FCS(帧校验序列):由32 位(4 字节)循环冗余校检码(CRC)组成,其
校验范围不包括前导码FR 及帧数据定界符SD。此序列由发送端网卡自动生成,
自动填充到帧的最后。一般情况下,接收端网卡对收到的数据校验后也不会将
FCS 放到数据中上报。
**由于网卡的自动管理,并且前导码FR 和帧数据定界符SD 的值是固定的,
也由网卡自动生成和插入。**所以,网络层向网卡发送的数据或者网络层接收到的
数据一般是由DA、SA、TYPE 和DATA 组成(DATA 不足46 字节需要用PAD
补齐)。如表二。假如网络层的一个IP 包要发送出去,首先要填充接收网卡的地
址和本网卡的地址(MAC 地址),同时将TYPE 填充成0800H,紧跟着就是发送
的数据。网卡获取到这些数据后会组成物理传输帧发送出去。

当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交“设备驱动程序”做进一步处理。这时我们的抓包软件才能抓到数据,因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、FCS之外的数据。
以太网规定,以太网帧数据域部分最小为46字节,也就是以太网帧最小是6+6+2+46+4=64。除去4个字节的FCS,因此,抓包时就是60字节。当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面填充以满足数据帧长不小于64字节。由于填充数据是由MAC子层负责,也就是设备驱动程序

3)帧间间隔与前导符的概念:
  MAC子层的标准还规定了帧间最小的间隔是9.6us,相当于96bit的发送时间,就是说一个主机在检测到总路线开始空闲后,还要等待9.6us才能发送数据.这样做是为了使刚刚收到的数据帧的主机的接收缓存来得及清理,做好接收下一帧的准备。这便是12个字节的帧间隔的由来(Inter frame gap)。

还有8个字节的preamble是什么呢?好吧,preamble是8字节的前导符,作用在于告诉监听设备数据将要到来。

发布了2 篇原创文章 · 获赞 0 · 访问量 1402
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览