描述以太网帧的结构及各字段的作用一、
典型帧结构:Ethernet_II
Ethernet_II中所包含的字段:
前导码:
包括同步码(用来使局域网中的所有节点同步,7字节长)和侦标志(帧的起始标志7,1字节)两部分;
目的地址:
接收端的MAC地址,6字节长;
源地址:
发送端的MAC地址 , 6字节长;
类型:
数据包的类型(即上层协议的类型),2字节长;
数据:
被封装的数据包,46-1500字节长;
校验码:
错误检验 , 4字节长 。
Ethernet_II的主要特点是通过类型域标识了封装在帧里的数据包所采用的协议,类型域是一个有效的指针 , 通过它,数据链路层就可以承载多个上层(网络层)协议 。但是,Ethernet_II的缺点是没有标识帧长度的字段 。
二、
原始的802.3
原始的802.3帧是早期的Novell
NetWare网络的默认封装 。它使用802.3的帧类型,但没有LLC域 。同Ethernet_II的区别:将类型域改为长度域,解决了原先存在的问题 。但是由于缺省了类型域,因此不能区分不同的上层协议 。
三、802.2SAP/SNAP
:
为了区别802.3数据帧中所封装的数据类型 ,
IEEE引入了802.2SAP和SNAP的标准 。它们工作在数据链路层的LLC(逻辑链路控制)子层 。通过在802.3帧的数据字段中划分出被称为服务访问点(SAP)的新区域来解决识别上层协议的问题,这就是802.2SAP 。LLC标准包括两个服务访问点 , 源服务访问点(SSAP)和目标服务访问点(DSAP) 。每个SAP只有1字节长,而其中仅保留了6比特用于标识上层协议 , 所能标识的协议数有限 。因此,又开发出另外一种解决方案 , 在802.2SAP的基础上又新添加了一个2字节长的类型域(同时将SAP的值置为AA) , 使其可以标识更多的上层协议类型 , 这就是802.2SNAP 。
以太网帧格式以太网数据帧格式由于技术发展的历史原因有5种格式,归类整理 , 以便学习工作使用 。
1、Ethernet II 的以太网帧格式(RFC 8941984): 以太网Ⅱ Ethernet II RFC 8941984
帧间隙
每个以太帧之间都要有帧间隙(Interframe Gap),即每发完一个帧后要等待一段时间才能再发另外一个帧 , 以便让帧接收者对接收的帧作必要的处理(如调整缓存的指针、更新计数、通知对报文进行处理等) 。在以太网标准中规定最小帧间隙是12个字节,其数据为全1。对于个别的接口 , 可减少到64(GE)或40比特(10GE) , 其他的接口都不应该小于12字节 。
前导码 (7B)
以太网标准中规定前导码为10101010 10101010 10101010 10101010 10101010 10101010 10101010(二进制),共7字节;
帧开始定界符目 (1B)
帧开始定界符为10101011,共1字节 。
目的MAC (6B)
【以太网帧封装代码java 以太网的数据帧封装如下图所示】源MAC (6B)
协议类型
负荷
PAD
FCS
注意:
如果PIC卡实际收到的帧间隙、前导码、帧开始界定符,如果跟协议规定的不一样,是不是这个数据帧也会被丢弃?答案是,PIC卡在处理帧间隙时,帧间隙一般可以容忍跟协议规定的不一样(比如不是全1);但前导码、帧开始界定符必须符合协议规定的值,否则当做帧间隙处理,也就是帧被丢弃了 。
以太网标准中规定如下帧为无效?。?
a.帧的长度不是整数个字节;
b.用收到的帧检验序列FCS(Frame Check Sequence)查出有错误;
c.收到的帧的负荷长度不在46~1500字节之间 。
对于检查出的无效帧就简单的丢弃,以太网不负责重传丢弃的帧 。而这些检查,是在接口卡上执行的 。
- nodejs mongodb封装 mongodb封装和使用
- redis实现类 redisc封装类
- mongodb内嵌文档查询 封装mongodb查询条件
- redis single redis封装类如何使用
- mongodb容器 mongodb封装类
- redis缓存场景 redis缓存封装
- redistemplate泛型封装 redis工具类封装
- redis界面工具 redis工具封装图片
- python redis封装 redis常用封装
- mysql函数定义 mysql函数封装教程
