IEEE802.3和Ethernet II帧的区别
一、IEEE802.3和Ethernet II帧的区别
概念:
1、以太网上使用两种标准帧格式。第一种是上世纪80年代提出的DIX v2格式,即Ethernet II格式。第二种是1983年提出的IEEE 802.3格式。
2、两种格式得区别在于Ethernet 格式种包含一个Type字段,标识以太网帧处理完之后将被发送到哪个上层协议进行处理,IEEE 802.3格式种,同样位置是长度字段。
3、Ethernet II 格式相对使用广泛。
4、从Type/Length字段值可以区分两种帧类型:当Type字段值小于等于1500(0x05DC)时,帧使用的是IEEE 802.3格式。当Type字段值大于等于1536(0x0600)时,帧使用的是Ethernet II格式
Ethernet II格式
Ethernet II格式中Data字段长度在46-1500B,故以太网数据帧的长度在64(6+6+2+46+4)—–1518(6+6+2+1500+4)字节之间;
DMAC:目的MAC地址。字段长度6个字节,标识帧的接收者;
SMAC:源MAC地址。字段长度6个字节,标识帧的发送者;
Type:类型字段,字段长度2个字节,用于标识数据字段种包含的高层协议。
0x0800 代表 IP协议帧;
0x0806 代表ARP协议帧;
Data:数据字段是网络层数据,最小长度必须为46字节;
FCS:循环冗余校验字段,提供了一种错误检测机制,字段长度为4个字节;
IEEE802.3
Length字段定于了Data字段包含的字节数;
LLC(Logical Link Control)逻辑链路控制,由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成;
SSAP(Source Service Access Point)和Control字段组成;
SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型Type字段组成。Org Code三个字节都为0。Type字段的含义与Ethernet II中Type字段相同;
IEEE802.3帧根据DSAP和SSAP字段的取值,又可以分为以下几类:
1、当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据;
2、当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。此帧可以用于传输多种协议。
3、DSAP和SSAP其他的取值均为纯IEEE802.3帧
故可以说4种以太网帧。
二、0x0806 ARP协议分析
1、基本概念
ARP(Address Resolution Protocol) 即地址解析协议,用于实现从IP地址到MAC地址映射。
2、 ARP工作流程
(1):同一网段ARP工作流程分析
(1.1) PC1 要和PC3 通行,首先查看自己的ARP表,查看其中是否包含PC3的MAC地址信息,如果找到对应关系,直接利用ARP表中的MAC地址对IP数据包进行封装。并将数据包发送给PC3。
(1.2)如果PC1在ARP表中未找到PC3对应的MAC地址,则先缓存数据报文,然后利用广播方式(目标MAC地址FF:FF:FF:FF:FF:FF)发送一个ARP报文请求,ARP请求中的发送端MAC地址分别是PC1的IP地址和MAC地址,接收端的IP地址为PC3的IP地址,MAC地址全为0,因为ARP请求报文是以广播方式发送,所以该网段上的所有主机都可以接收到该请求包,但只有其IP地址与目的IP地址一致的PC3才会对该请求进行处理。
(1.3)PC3将ARP请求报文中的发送端(即PC1)的IP地址和MAC地址存入自己的ARP表中。然后以单播方式向PC1发送一个ARP相应报文,应答报文中就包含了自己的MAC地址,也就是原来在请求报文中要请求的目的MAC地址。
(1.4) PC1收到来自PC3的ARP响应报文之后,将PC3的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将原来缓存的IP数据包再次修改(在目的MAC地址字段填上PC3的MAC地址)后发送出去。
(2): 跨网段的ARP地址解析流程
(2.1) 如果主机A不知道网关的MAC地址(也就是主机A的ARP表中没有网关对应的MAC地址表项),则主机A先在本网段中发出一个ARP请求广播,ARP请求报文中的目的IP地址为网关的IP地址,代表其目的就是想获得网关的MAC地址。如果主机A已经知道网关的MAC地址,则略过此步。
(2.2) 网关收到ARP广播包后同样会向主机A发回一个ARP应答包。当主机A收到的应答包中获得网关的MAC地址后,在主机A向主机B发送的原报文的目的MAC地址字段填上网关的MAC地址后发给网关。
(2.3) 如果网关的ARP表中已有主机B对应的MAC地址,则网关直接将在来自主机A的报文中的目的MAC地址字段填上主机B的MAC地址后转发给B。
(2.4) 如果网关ARP表中没有主机B的MAC地址,网关会再次向主机B所在的网段发送ARP广播请求,此时目的IP地址为主机B的IP地址,当网关从收到来自主机B的应答报文中获得主机B的MAC地址后,就可以将主机A发来的报文重新再目的MAC地址字段填上主机B的MAC地址后发送给主机B。
3、协议格式
以太网目的地址: 目的主机的硬件地址。目的地址全为1表示广播地址
以太网源地址:源主机的硬件地址
帧类型:ARP:0x0806、 RARP:0x8035
硬件类型:表示硬件地址类型,ARP当前可用硬件类型如下:
类型 | 含义 | 备注 | 类型 | 含义 | 备注 |
---|---|---|---|---|---|
0x001 | 以太网 | 0x0012 | 本地网 | ||
0x002 | 实验性以太网 | 0x0013 | 超链路 | ||
0x003 | 业务无线电 AX.25 | 0x0014 | SMDS | ||
0x004 | Proteon ProNet令牌环 | 0x0015 | 帧中继 | ||
0x005 | ChaosNET | 0x0016 | ATM | ||
0x006 | IEEE 802网 | 0x0017 | HDLC(高级数据链路控制) | ||
0x007 | ARCnet | 0x0018 | 未指定 | ||
0x008 | 超信道 | 0x0019 | 异步传输模式 | ||
0x009 | Lanstart | 0x0020 | 串行线路 | ||
0x0010 | Autone短地址 | 0x0021 | 异步传输模式 | ||
0x0011 | Local talks |
协议类型:IP类型:0x0800
硬件地址长度:对于以太网II来说,MAC地址作为硬件地址,因此该字段值为十六进制06
协议地址长度:对于IPv4来,IP地址长度位32个字节,因此该字段值为十六进制04
操作类型:ARP定义了两种操作:0x0001(请求)、0x0002(应答)
发送端以太网地址:对于以太网II来说,MAC地址作为硬件地址
发送端IP地址:对于IPv4来, 值为IPv4地址
目的以太网地址:对于以太网II来说,MAC地址作为硬件地址
目的IP地址:对于IPv4来, 值为IPv4地址
4、协议分析
(1) 普通ARP
即通过ip地址获得MAC地址,即网络中通过IP寻找对应MAC地址信息。
- 请求包
解析:
链路层解析:
主机(54 89 98 ec 0f 66) 向局域网内发送广播(ff ff ff ff ff ff), 使用类型类型为 ARP (0806);
网络层解析:
该数据包的硬件地址类型为以太网(00 01), 使用IPv4(08 00)协议类型, 其中硬件地址长度为6个字节(以太网MAC地址长度), 协议地址长度为4字节(IPv4地址长度);该数据包为ARP请求包(0001), 数据包内容为 宿主机MAC地址为54 89 98 ec 0f 66 ,IP地址为 192.168.1.2(c0 a8 01 02) 向网络(ff ff ff ff ff ff)中请求IP地址为192.168.1.4(c0 a8 01 04的mac地址。该网络中主机收到该数据包请求根据包中发送方地址信息,更新自己ARP表信息,若该IP地址为自己IP地址,则对请求方进行回复,若非自己IP地址,则丢弃。 - 响应包
解析:
链路层解析:
主机(54 89 98 49 3a 78) 向主机发送响应消息(54 89 98 ec 0f 66), 使用类型类型为 ARP (0806)
网络层解析:
该数据包的硬件地址类型为以太网(00 01), 使用IPv4(08 00)协议类型, 其中硬件地址长度为6个字节(以太网MAC地址长度), 协议地址长度为4字节(IPv4地址长度);该数据包为ARP响应包(0002), 数据包内容为 宿主机MAC地址为54 89 98 49 3a 78,IP地址为 192.168.1.4(c0 a8 01 04) 向主机(54 89 98 ec 0f 66)发出的ARP请求数据包进行响应,接收方收到该响应包更新系统ARP表。
(2)免费ARP
免费ARP报文与普通ARP请求报文的区别在于普通的ARP请求报文,其ARP封装内的“目的IP地址”是其他机器的IP地址,而免费ARP的请求报文,其ARP封装内的“目的IP地址”是其自己的IP地址。免费ARP的数据包格式如下图所示:
免费ARP在实际环境中的一些应用:
- 免费ARP主要用于检测IP地址冲突
当一台主机发送了免费ARP请求报文后,如果收到了ARP响应报文,则说明网络内已经存在使用该IP 的主机。
- 利用免费ARP确认设备接口地址
一般的设备在网卡地址加载阶段都会向网络中发送免费的ARP报文(也有些安全设备为了安全起见,让设备在加载地址期间不向外发送免费ARP报文),当我们想知道某些设备的接口地址但又没有相应记录可查时,我们就可以利用设备的这种特性,抓取其免费ARP报文,从而分析出其接口使用的IP地址。
- 使用免费ARP报文,更新某些设备的ARP表项
- 利用免费ARP的攻击
- 网关设备利用免费ARP防止ARP攻击
(3)代理ARP(proxy ARP)
代理ARP是ARP协议的一个变种。对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答。代理ARP就是将一个主机作为对另一个主机ARP进行应答。它能使得在不影响路由表的情况下添加一个新的Router,使得子网对该主机来说变得更透明化。同时也会带来巨大的风险,除了ARP欺骗,和某个网段内的ARP增加,最重要的就是无法对网络拓扑进行网络概括。代理ARP的使用一般是使用在没有配置默认网关和路由策略的网络上的。
1. 基本实现
2. 数据解析
在主机192.168.2.2 上ping 主机 192.168.3.2 抓取数据包如下:
解析: 主机192.168.2.2 与主机 192.168.3.2 进行通行,先向发送广播包,请求网关MAC地址,网关收到该广播后发送单播给请求方告知自己的MAC地址信息。
抓取 192.168.3.0/24 网络侧数据包如下:
解析: 网关收到192.168.2.1 发送给192.168.3.2的信息,先检查自身MAC地址表若没有192.168.3.2 的MAC地址信息,则在192.168.3.0 网段进行广播请求192.168.3.2 的MAC地址信息,192.168.3.2收到网关的ARP请求信息,向网关发送单播告知自己的MAC地址信息。
5、ARP常用命令
在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。如果校验和正确,就判断帧的目 的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交“设备驱动程序”做进一步处 理。这时我们的抓包软件才能抓到数据,因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、FCS之外的数据,
据RFC894的说明,以太网封装的数据部分(Payload)的最大长度是1500Byte【称为以太网的最大传输单元(MTU),注意,MTU这个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度】,在这个限制之下,最长的以太帧包括6字节的目的地址(DMAC)、6字节的源地址(SMAC)、2字节的以太类型(EtherType)、1500字节的数据(Payload)、4字节的校验(FCS),总共是1518字节。
但是实际上我们抓包得到的最大帧是1514字节,为什么不是1518字节呢? 原因是当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交“设备驱动程序”做进一步处理。这时我们的抓包软件才能抓到数据, 因此,抓包软件抓到的是去掉前导码、帧开始分界符、FCS之外的数据,其最大值是6+6+2+1500=1514字节。
在以太网通信中,数据通过以太网帧的形式传输。因此,了解嵌入式Linux系统的以太网帧格式是十分重要的。
以太网帧格式是一种数据结构,用于在局域网中传输数据。目前以太网上使用两种标准帧格式,分别为Ethernet II格式和IEEE802.3格式
以下是一个典型的Ethernet II格式的以太网帧:
以下是一个典型的IEEE802.3格式的以太网帧:
两种格式的区别有以下几点:
1、Ethernet II格式中包含一个**[类型]字段,标识以太网帧处理完之后将被发送到哪个上层协议进行处理,IEEE 802.3格式中,同样位置是[长度]**字段。
2、IEEE 802.3帧头除了包含7个字节的帧前导码之外,还包含了一个字节的帧起始定界符,用于指示帧正式开始的位置。帧起始定界符的值为0xAB,与帧前导码一起组成了8个字节的同步序列,以保证接收端正确地解析出帧的开始位置。而Ethernet II帧头没有前导码,Ethernet II帧的同步是通过物理层的信号线电平变化来实现的,而不是通过帧前导码。因此,在发送Ethernet II帧时,需要先进行同步以确保接收方正确解析数据帧的内容。
我们可以通过**[类型]/[长度]字段值可以区分两种帧类型:当[类型]/[长度]字段值小于等于1500(0x05DC)时,帧使用的是IEEE 802.3格式。当[类型]/[长度]**字段值大于等于1536(0x0600)时,帧使用的是Ethernet II格式。
另外需要了解的是,Ethernet II 格式相对使用广泛。
https://www.cnblogs.com/airoot/p/14338752.html
http://www.360doc.com/content/18/0508/15/11935121_752185635.shtml
https://blog.csdn.net/yetugeng/article/details/100514693