Yuhang Zheng

IEEE802.3和Ethernet II帧的区别

N 人看过

一、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地址信息。

  1. 请求包
    在这里插入图片描述
    解析:
    链路层解析:
    主机(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地址,则丢弃。
  2. 响应包
    在这里插入图片描述
    解析:
    链路层解析:
    主机(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在实际环境中的一些应用:

  1. 免费ARP主要用于检测IP地址冲突

当一台主机发送了免费ARP请求报文后,如果收到了ARP响应报文,则说明网络内已经存在使用该IP 的主机。

  1. 利用免费ARP确认设备接口地址

一般的设备在网卡地址加载阶段都会向网络中发送免费的ARP报文(也有些安全设备为了安全起见,让设备在加载地址期间不向外发送免费ARP报文),当我们想知道某些设备的接口地址但又没有相应记录可查时,我们就可以利用设备的这种特性,抓取其免费ARP报文,从而分析出其接口使用的IP地址。

  1. 使用免费ARP报文,更新某些设备的ARP表项
  2. 利用免费ARP的攻击
  3. 网关设备利用免费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格式的以太网帧:

image-20230224083731467

以下是一个典型的IEEE802.3格式的以太网帧:

image-20230224083742661

两种格式的区别有以下几点:

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

https://blog.csdn.net/yetugeng/article/details/100516431

https://blog.csdn.net/m0_51381079/article/details/120517066