Ethernet帧结构解析..

合集下载

以太网帧格式

以太网帧格式

以太网帧格式详解:Etherne II报头8 目标地址6 源地址6 以太类型2 有效负载46-1500 帧检验序列4 报头:8个字节,前7个0,1交替的字节(10101010)用来同步接收站,一个1010101011字节指出帧的开始位置。

报头提供接收器同步和帧定界服务。

目标地址:6个字节,单播、多播或者广播。

单播地址也叫个人、物理、硬件或MAC地址。

广播地址全为1,0xFF FF FF FF。

源地址:6个字节。

指出发送节点的单点广播地址。

以太网类型:2个字节,用来指出以太网帧内所含的上层协议。

即帧格式的协议标识符。

对于IP报文来说,该字段值是0x0800。

对于ARP信息来说,以太类型字段的值是0x0806。

有效负载:由一个上层协议的协议数据单元PDU构成。

可以发送的最大有效负载是1500字节。

由于以太网的冲突检测特性,有效负载至少是46个字节。

如果上层协议数据单元长度少于46个字节,必须增补到46个字节。

帧检验序列:4个字节。

验证比特完整性。

IEEE 802.3根据IEEE802.2 和802.3标准创建的,由一个IEEE802.3报头和报尾以及一个802.2LLC报头组成。

报头7 起始限定符1 目标地址6(2)源地址6(2)长度2 DSAP1 SSAP1 控件2 有效负载3 帧检验序列4-----------802.3报头--------------§---802.2报头----§ §-802.3报尾-§IEEE802.3报头和报尾报头:7个字节,同步接收站。

位序列10101010起始限定符:1个字节,帧开始位置的位序列10101011。

报头+起始限定符=Ethernet II的报头目标地址:同Ethernet II。

也可以为2个字节,很少用。

源地址:同Ethernet II。

也可以为2个字节,很少用。

长度:2个字节。

帧检验序列:4个字节。

IEEE802.2 LLC报头DSAP:1个字节,指出帧的目标节点的上层协议。

以太网(Ethernet)的帧结构

以太网(Ethernet)的帧结构
以太网( 以太网(Ethernet)的帧结构 )
以太网(Ethernet)的帧结构
1.Ethernet V2.0帧结构 2. IEEE802.3帧结构 3. Ethernet V2.0帧结构组成详解
Ethernet V2.0帧结构
帧前 帧校 前导 目的 源地 数据 定界 验字 类型 码 地址 址 字段 符 段 46~1 7B 1B 6B 6B 2B 4B 500B 注:Ethernet帧的最小长度为64B,最大长 度为1518B。(前导码与帧前定界符不计入 帧头长度中)
前导码与帧前定界符字段
前导码的组成: 前导码的组成:56位(7B)10101010…10 1010比特序列。 作用: 作用:提醒接收系统有帧的到来,以及使到来的 帧与计时器进行同步。 帧前定界符的组成: 帧前定界符的组成:8位(1B)10101011比特 序列。 作用: 作用:表示下面的字段是目的地址。
数据字段
数据字段的组成: 数据字段的组成:长度在46~1500B之间的比 特序列。 特点: 特点:如果数据的长度少于46B,需要加填充 字节,补充到46B。填充字节是任意的,不计 入长度字段中。
帧校验字段
帧校验字段的组成: 32位 4B)比特序列。 帧校验字段的组成: 32位(4B)比特序列。 特点: 特点:采用CRC校验。校验的范围包括目的地 址字段,源地址字段,类型字段,数据字段。 在接收端进行校验,如果发生错误,帧将被丢 弃。 32位CRC校验的生成多项式为: G(x) =x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4 +x2+x1+1
பைடு நூலகம்

列出ethernet v2标准的数据帧的5个字段

列出ethernet v2标准的数据帧的5个字段

列出ethernet v2标准的数据帧的5个字段Ethernet V2标准是以太网传输技术的第二个版本,它在网络通信中广泛应用。

Ethernet V2数据帧是实现数据传输的基本单位,具有特定的结构。

本文将介绍Ethernet V2数据帧的5个字段,并阐述它们的作用和意义。

1.目的地址(Destination MAC Address):目的地址字段用于标识数据帧的接收方。

它位于数据帧的开头,长度为6字节。

发送方通过目的地址字段将数据帧发送到接收方。

接收方在接收到数据帧后,根据目的地址字段判断是否需要处理这个数据帧。

如果目的地址与接收方的MAC地址匹配,则接收方会处理这个数据帧;如果不匹配,则数据帧会被丢弃。

2.源地址(Source MAC Address):源地址字段用于标识数据帧的发送方。

它位于数据帧的目的地址之后,长度也为6字节。

发送方通过源地址字段将自己的MAC地址附加到数据帧中,以便接收方能够识别发送方。

同时,源地址字段有助于实现数据帧的追踪和路由。

3.类型(Type):类型字段用于指示数据帧中所携带的数据类型。

它位于源地址字段之后,长度为2字节。

类型字段的值表示数据帧中数据部分的字节顺序,常用的值为0x0806(IPV4)和0x0815(ARP)。

接收方根据类型字段值判断数据帧中携带的数据是否为己知类型,从而决定如何处理数据帧。

4.数据(Data):数据字段是数据帧的核心部分,用于承载实际传输的数据。

数据字段的长度可变,根据数据类型和实际需求而定。

在数据传输过程中,发送方将数据加载到数据字段中,接收方收到数据帧后,根据数据字段中的数据进行处理。

数据字段长度的不固定性使得Ethernet V2标准具有较高的灵活性。

5.校验和(FCS):校验和字段用于检测数据帧在传输过程中的错误。

它位于数据字段之后,长度为4字节。

发送方在发送数据帧前,根据数据帧的各个字段(不包括校验和字段)计算出一个校验和值,并将其附加到数据帧的末尾。

Ethernet帧结构解析程序C++

Ethernet帧结构解析程序C++
//计算封帧个数 int truelen = data.length(); //数据的真实长度 int length = data.length(); int frameTotal = 0; //总的帧的个数 if (length>MAXLENGTH) {
frameTotal = length / MAXLENGTH;
streampos nCrc = outfile.tellp(); //获得帧校验字段的位 置
outfile.put(char(0x00)); //数据后补1字节的0,用于CRC计 算
int total = nCrc - nCrcs; //获得需要进行CRC计算的数据长 度
outfile.seekg(nCrcs, ios::beg); //将文件指针指向目的地 址
cout << "数据字段:" << divideStr << endl; leftStr = leftStr.substr(MAXLENGTH, length); truelen = leftStr.length(); } else { outfile.put(char(truelen / 256)); //写入2字节的长度 字段 outfile.put(char(truelen % 256)); outfile << leftStr << endl; //写入数据字段 cout << "长度字段:" << hex << truelen << dec << " (" << truelen << ")" << endl; cout << "数据字段:" << leftStr << endl; }

以太帧及IP相关报文分析

以太帧及IP相关报文分析

以太帧及IP相关报文分析以太帧(Ethernet Frame)和IP(Internet Protocol)相关报文是计算机网络中最基础且重要的数据传输单位。

本文将从以下几个方面对以太帧和IP报文进行分析。

一、以太帧以太帧是以太网中数据传输的基本单位,由目的MAC地址、源MAC地址、以太类型/长度、数据字段和帧校验序列构成。

1.目的MAC地址和源MAC地址:2.以太类型/长度:以太类型字段用于指示以太帧中封装的数据的协议类型,例如IP协议、ARP协议等。

当以太类型字段的值为小于或等于1500时,这个值表示数据字段的长度,即以太帧中封装的数据长度;当以太类型字段的值大于1500时,这个字段被称为以太类型,表示封装的数据是什么类型的协议。

3.数据字段:数据字段是以太帧中封装的实际数据,如IP报文、ARP报文等。

数据字段的长度可变,具体长度由以太类型字段指示。

4.帧校验序列:帧校验序列用于检验以太帧在传输过程中是否出现错误。

发送端在发送数据前会计算校验和,并将校验和值附加到帧的最后。

接收端在接收到数据后也会进行计算,如果计算结果与接收到的校验和不一致,则表明数据在传输过程中发生了错误。

二、IP报文IP报文是基于IP协议进行数据传输的基本单位,由IP头部和数据部分构成。

1.IP头部:IP头部包含了多个字段,用于指示数据传输的相关信息。

-版本:指示IP协议的版本,通常为IPv4或IPv6-首部长度:指示IP头部的长度,以32位字长为单位。

-区分服务:指示数据传输的优先级和服务质量要求。

-总长度:指示IP报文的总长度,包括IP头部和数据部分的长度。

-标识、标记和片偏移:用于支持IP分片,当数据包过大时,可以进行分片以适应网络传输。

-生存时间(TTL):表示IP报文在网络中可以经过的最大路由器跳数。

-协议:指示IP报文的上层协议类型,如TCP、UDP等。

-校验和:用于检验IP头部在传输过程中是否出现错误。

-源IP地址和目的IP地址:指示IP报文的源地址和目的地址。

以太数据帧结构

以太数据帧结构
G(2)二进制值
二进制 模二除法
二进制 余数
余数不够 高位 0 凑
Data
CRC
对方使用相同G(x) 一定能够整除
三、随堂练习
一、判断题
1、以太数据帧中,类型字段代表该数据帧是802.3帧还是Ethernet II帧 ( )
2、每个以太数据帧能够封装的最大网络层报文大小为1500字节
()
二、选择题
二、以太数据帧字段
前导码:用于接收方与发送方的同步,7个字节,每个字节的值固定为0xAA。 帧起始定界符:用于标识一个以太网帧的开始,值固定为0xAB。 目的地址:存放48bit的目标MAC地址,用于局域网中交换机寻址转发。 源地址:存放48bit的源MAC地址,用于局域网中交换机学习和目标主机回复。 类型 :用于指定报文头后所接的数据类型。包括:IPv4(0x0800), IPv6(0x86DD), ARP(0x0806),802.1q数据帧(0x8100) 。 数据:用于存放网络层封装的报文内容(比如:IPv4数据包、IPv6数据包、ARP报文)。 FCS(Frame Check Sequence):通过CRC(Cyclic Redundancy Check)算法计算出 来的序列号,用来确定接收到的帧比特是否正确。
1
0
1
1
1
1x25-1 +0x24-1+1x23-1+1x22-1+1x21-1
CRC校验码位数 = 二进制值位数 - 1 二进制值( 10111 )与数据流做模二除法,余数即为CRC校验码
二、模二除法
使用G(x)的二进制值10111对目标数据流1010110做模二除法,求余数值
1001001
10111 1 0 1 0 1 1 0 0 0 0 0

ethernet的拓扑结构

ethernet的拓扑结构

ethernet的拓扑结构
以太网的拓扑结构是指网络中设备之间物理连接的布局方式。

常见的以太网拓扑结构包括总线型、星型、环型和树型四种。

首先是总线型拓扑结构,它是最早的以太网拓扑结构之一。


总线型拓扑结构中,所有设备都连接到同一条主干电缆上。

设备通
过特定的协议来竞争总线上的访问权。

总线型拓扑结构简单、成本低,但是一旦主干电缆出现故障,整个网络将会受到影响。

其次是星型拓扑结构,这是目前应用最为广泛的以太网拓扑结构。

在星型拓扑结构中,所有设备都连接到一个集线器或交换机上。

这种拓扑结构易于安装和维护,同时也减少了单点故障对整个网络
的影响。

然而,星型拓扑结构的缺点是集线器或交换机成为了单点
故障的可能性。

第三种是环型拓扑结构,设备通过一条环形的电缆连接在一起。

在环型拓扑结构中,数据以一个固定的方向在环上传输,因此具有
较高的稳定性。

然而,一旦环中的某个设备出现故障,整个网络将
会受到影响。

最后是树型拓扑结构,它是星型和总线型拓扑结构的结合。

树型拓扑结构通过集线器或交换机将多个星型拓扑结构连接在一起,形成一个树状结构。

这种拓扑结构可以灵活地扩展,并且具有较好的容错性。

综上所述,以太网的拓扑结构有总线型、星型、环型和树型四种,每种拓扑结构都有其特点和适用场景,选择合适的拓扑结构取决于具体的网络需求和条件。

以太网帧结构详解

以太网帧结构详解

以太⽹帧结构详解⽹络通信协议⼀般地,关注于逻辑数据关系的协议通常被称为上层协议,⽽关注于物理数据流的协议通常被称为低层协议。

IEEE802就是⼀套⽤来管理物理数据流在局域⽹中传输的标准,包括在局域⽹中传输物理数据的802.3以太⽹标准。

还有⼀些⽤来管理物理数据流在使⽤串⾏介质的⼴域⽹中传输的标准,如帧中继FR(FrameRelay),⾼级数据链路控制HDLC(High-LevelDataLinkControl),异步传输模式ATM(AsynchronousTransferMode)。

分层模型0OSI国际标准化组织ISO于1984年提出了OSIRM(OpenSystemInterconnectionReferenceModel,开放系统互连参考模型)。

OSI参考模型很快成为了计算机⽹络通信的基础模型。

OSI参考模型具有以下优点:简化了相关的⽹络操作;提供了不同⼚商之间的兼容性;促进了标准化⼯作;结构上进⾏了分层;易于学习和操作。

OSI参考模型各个层次的基本功能如下:物理层:在设备之间传输⽐特流,规定了电平、速度和电缆针脚。

数据链路层:将⽐特组合成字节,再将字节组合成帧,使⽤链路层地址(以太⽹使⽤MAC地址)来访问介质,并进⾏差错检测。

⽹络层:提供逻辑地址,供路由器确定路径。

传输层:提供⾯向连接或⾮⾯向连接的数据传递以及进⾏重传前的差错检测。

会话层:负责建⽴、管理和终⽌表⽰层实体之间的通信会话。

该层的通信由不同设备中的应⽤程序之间的服务请求和响应组成。

表⽰层:提供各种⽤于应⽤层数据的编码和转换功能,确保⼀个系统的应⽤层发送的数据能被另⼀个系统的应⽤层识别。

应⽤层:OSI参考模型中最靠近⽤户的⼀层,为应⽤程序提供⽹络服务。

分层模型-TCP/IPTCP/IP模型同样采⽤了分层结构,层与层相对独⽴但是相互之间也具备⾮常密切的协作关系。

TCP/IP模型将⽹络分为四层。

TCP/IP模型不关注底层物理介质,主要关注终端之间的逻辑数据流转发。

数据链路层帧结构解析(精品)

数据链路层帧结构解析(精品)

对模拟帧结构的解析一、编制程序的目的目的是应用数据链路层与介质访问控制子层的知识,根据数据链路层的基本原理,通过解析已封装好的Ethernet 帧,了解Ethernet 帧结构的各个字段的含义,从而深入理解Internet 协议族中的最底层协议——数据链路层协议。

也为后续的实验积累编程经验。

1.1前期准备:1.1.1 CRC-8按字节查表检验算法将字节序列按字节可写成:∑=ni i B D 082,按照CRC 原理,对D 左移8位,然后用生成多项式G 除,G 是16位的。

∑=n i GB GD i 0822288 (1),令GR n GB n n Q +=82,代入(1)式得∑--+++=-2082)1(8228222)(288188n i GB n GB GR n n G D i n n Q (2),令GR GR GR nL nH n +=8228,其中,nH R ,nL R 分别是n R 的高8位,低8位,代入(2)式,得:∑--++++=-208)1(8228222)(28188n i GB n GB R GR nn GD in nH nL Q (3)此时,可令GR n GB R GR n n nH nL Q 1818122--+=+-+ (4)则(3)式为:∑----+++=-208)2(82)1(81822222818n i GB n GR n n n n G D in Q Q (5)类推,将得到:GR n n n n nn G D Q Q Q Q 080)2(82)1(8182 (222)+++++=---- (6)由(6)式知,即第n-1字节的CRC 余码 = 第n 字节CRC 余码低8位 + 第n 字节CRC 余码高8位与第n-1字节和的CRC 余码。

这个结论正是参考文献3告诉我们的方法推出的结论。

二、程序说明 2.1 思路结合给定的模拟帧结构定义相应得数据结构(帧类),并定义一个帧装载类。

以太网帧结构-华为-HCIA

以太网帧结构-华为-HCIA

IEEE:电气与电子工程师协会ISO:国际标准化组织协议栈:OSI :ISO国际标准组织制定TCP/IP:美国国防部制定IPX/SPXSNA局域网: IEEE802 以太网广域网: PPP HDLC分层模型-OSI应用层 ------- 直接面向用户,为应用程序提供网络服务(APDU)表示层 ------- 对应用层产生的数据进行格式化,加密,解密之类的操作(PPDU)会话层 ------- 建立,维护,删除,管理会话连接(SPDU)传输层 ------- 建立一个面向连接(TCP)或非面向连接(UDP)的端到端的连接,该连接是逻辑存在的(数据段)网络层 -------- IP路由寻址,报文重组(数据包)数据链路层 ------- 控制网络层和物理层之间通讯。

打上帧头帧尾,将数据包封装成数据帧。

(数据通过链路层承载)物理层 ------- 比特流传输,将数据帧以比特流的形式在物理介质中进行传输分层模型-TCP/IP数据封装 (从上往下) 解封(从下往上)应用层 ----- 对应OSI七层模型上三层PDU(数据单元)传输层 ----- 对应OSI七层模型传输层Segmet(数据段)网络层 ----- 对应OSI七层模型网络层Packet(数据包)网络接口层 ----- 对应OSI七层模型数据链路层与物理层Frame(数据帧)bit(比特流)数据封装过程:数据是由应用层产生,经过表示层对数据进行格式化,加密等处理后形成PDU,交由会话层,会话层建立一个不同设备间应用程序的会话,再交给传输层,传输层打上传输层头部(源目端口号),建立一个端到端的连接,形成数据段,交给网络层处理,网络层打上IP头部,形成数据包,将数据包交给数据链路层打上帧头和帧尾,将数据包封装成数据帧,再将数据帧以比特流的形式在物理层中进行传输。

数据解封装过程:将比特流转化成字节形式的数据帧,先拆帧头查看数据帧的MAC地址,若不是自己就丢弃,若是则继续拆帧尾查看数据帧的完整性,不完整就丢弃,若完整则交由网络层,网络层拆IP头,查看目的IP是否为自己,若不是自己就进行路由寻址,将数据包进行重封装并转发,若是则交由传输层,传输层拆传输层头部,查看数据帧的目的端口号,将数据段交由对应的应用程序提供对应的服务。

数字传输系统帧结构

数字传输系统帧结构

数字传输系统帧结构数字传输系统的帧结构可以根据不同的协议和应用而有所不同。

以下是一般数字传输系统的常见帧结构:1. SDH(同步数字系列层次结构)帧结构:SDH是一种同步光纤传输技术,它的帧结构包括多个层次。

其中,最常见的SDH帧结构是STM-1(Synchronous Transport Module level-1),它的帧周期是125微秒。

STM-1帧结构如下:```- 9行270 列的容器(Container)- 3行90 列的终端传输容器(Tributary Unit)```2. SONET(同步光网络)帧结构:SONET是SDH的北美版本,其帧结构也有多个层次。

最常见的SONET帧结构是STS-1(Synchronous Transport Signal level-1),它的帧周期是125微秒。

STS-1帧结构如下:```- 3个12行90 列的VT(Virtual Tributary)容器- 1个9行90 列的STU(Synchronous Transport Unit)容器```3. Ethernet 帧结构:在以太网中,数据帧的结构是最为常见的。

一个标准的以太网帧结构如下:```-前导码:标志着数据帧的开始-目的MAC地址:接收数据的设备MAC地址-源MAC地址:发送数据的设备MAC地址-长度/类型字段:指示数据字段长度或指明上层协议类型-数据字段:携带传输的数据-帧校验序列:用于检测数据传输过程中的错误```需要注意的是,不同的数字传输系统和网络协议会有不同的帧结构,而且不同的帧结构适用于不同的数据传输需求。

上述提到的帧结构仅仅是其中的一部分,具体的帧结构会根据传输系统的要求和协议规范来设计。

Ethernet帧结构解析

Ethernet帧结构解析

Ethernet帧结构解析计算机网络实验学院:计算机科学与信息工程学院班级:学号:2姓名:实验1 Ethernet帧结构解析1. 需求分析实验目的:掌握Ethernet帧各个字段的含义与帧接收过程;掌握Ethernet帧解析软件设计与编程方法;掌握Ethernet帧CRC校验算法原理与软件实现方法。

实验任务:实现帧解析的软件编程实验环境:1台PC机操作系统:Windows 7开发环境:Visual Studio 2010。

1.1问题重述根据给出的IEEE802.3格式的Ethernet帧结构,编写程序来解析并显示帧的各个字段值,并将得到的数据字段值组合写入输出文件。

Ethernet帧数据从输入文件获得,默认文件为二进制数据文件。

2概要设计2.1原理概述TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如Ethernet,令牌环网,FDDI(Fiber Distributed Data Interface,光纤分布式数据接口)等。

基于不同的硬件的网络使用不同形式的帧结构,Ethernet是当今应用最广泛的局域网技术。

Ethernet V2.0的帧结构:前导码帧前定界符目的地址DA 源地址SA 类型字段数据字段帧校验字段7B 1B 6B 6B 2B 46~1500B 4B1.前导码和帧前定界符。

字段前导码由56位(7B)的101010...1010比特序列组成,帧前定界符由一个8位的字节组成,其比特序列为10101011。

如果将前导码与帧前定界符一起看,那么在62位101010...1010比特序列之后出现11。

在这个11之后便是Ethernet帧的目的地址字段。

从Ethernet物理层角度看,接收电路从开始接收比特到进入稳定状态,需要一定的时间。

设计前62位1和0的交替比特序列的目的是保证接收电路在帧的目的地址到来之前到达正常状态。

接收端在收到最后两位11时,标志在他之后应该是帧的目的地址。

ethernet工作原理

ethernet工作原理

ethernet工作原理Ethernet是一种局域网传输技术,它使用电缆或光纤连接网络设备,以实现数据的传输和通信。

以下是Ethernet的工作原理:1. 使用CSMA/CD协议:Ethernet采用载波侦听多路访问/冲突检测(CSMA/CD)协议,即在发送数据之前会先监听媒介上是否有其他设备发送数据。

如果检测到冲突,则会暂停发送并随机等待一段时间,然后再次发送。

2. 数据帧的传输:数据在Ethernet网络中以数据帧的形式传输。

一个数据帧通常包括源和目标设备的物理地址(MAC地址),以及数据的实际内容。

数据帧会沿着网络传输,并在接收端被解析和处理。

3. 分组交换:当两台设备之间进行通信时,数据被分割为较小的数据包,称为分组。

这些分组通过Ethernet网络中的交换机进行路由,以最高效和快速地到达目标设备。

交换机会根据目标设备的MAC地址将数据包转发到相应的端口。

4. 信号传输和解析:Ethernet使用Baseband信号传输,即以数字形式表示数据。

发送设备将数字数据转换为电信号,并通过电缆或光纤传输。

接收设备接收信号,并将其重新转换为数字数据。

这种数字到模拟的转换过程在发送设备和接收设备之间实现。

5. 网络拓扑:Ethernet可以以多种拓扑结构部署,如总线型、星型、环形或混合型拓扑。

拓扑结构定义了网络中设备之间的连接方式,并影响数据的传输效率和可靠性。

总的来说,Ethernet通过使用CSMA/CD协议、数据帧传输、分组交换、信号传输和解析等机制实现数据的高效传输和通信。

这种技术广泛应用于现代计算机网络中,提供了可靠和快速的数据传输方式。

以太网帧格式分析

以太网帧格式分析

的IP,而MAC地址是伪造的,则当A接收到伪造的ARP应答后,就会更新本地的ARP缓存,这样在A 看来B的IP地址没有变,而它的MAC地址已经不是原来那个了。

由于局域网的网络流通不是根据IP地址进行,而是按照MAC地址进行传输。

所以,那个伪造出来的MAC地址在A上被改变成一个不存在的MAC地址,这样就会造成网络不通,导致A不能Ping通B!这就是一个简单的ARP欺骗。

【实验体会】这次实验最大的感触是体会到了网络通信过程的趣味性。

在做ping同学IP的实验时,我发现抓到的包之间有紧密的联系,相互的应答过程很像实际生活中人们之间的对话。

尤其是ARP帧,为了获得对方的MAC地址,乐此不疲地在网络中广播“谁有IP为XXX的主机?”,如果运气好,会收到网桥中某个路由器发来的回复“我知道,XXX的MAC地址是YYY!”。

另外,通过ping同学主机的实验,以及对实验过程中问题的分析,使我对之前模糊不清的一些概念有了全面的认识,如交换机、路由器的区别与功能,局域网各层次的传输顺序与规则等。

还有一点就是,Wireshark不是万能的,也会有错误、不全面的地方,这时更考验我们的理论分析与实践论证能力。

成绩优良中及格不及格教师签名:日期:【实验作业】1 观察并分析通常的以太网帧1.1 以太网帧格式目前主要有两种格式的以太网帧:Ethernet II(DIX 2.0)和IEEE 802.3。

我们接触过的IP、ARP、EAP和QICQ协议使用Ethernet II帧结构,而STP协议则使用IEEE 802.3帧结构。

Ethernet II是由Xerox与DEC、Intel(DIX)在1982年制定的以太网标准帧格式,后来被定义在RFC894中。

IEEE 802.3是IEEE 802委员会在1985年公布的以太网标准封装结构(可以看出二者时间相差不多,竞争激烈),RFC1042规定了该标准(但终究二者都写进了IAB管理的RFC文档中)。

常见以太网错误帧的解释

常见以太网错误帧的解释

常见以太网错误帧的解释1 引言我们在测试中经常会听到各种以太网帧术语,比如说CRC,Alignment,Fragment,超小帧(Runt),超长帧(oversize),Jabber帧, Jumbo帧等。

很多初学者对这些概念不清楚,我在此想对这些术语做些总结。

首先介绍一些基本的概念然后再做关于错误的介绍。

2 以太网帧基本概念以太网主要有两种帧结构Ethernet II帧和IEEE 802.3帧:Preamble : 称前导符, 由0,1 交替组成的7字节, 通知目的地准备接收SOF: 帧首定界字符, 由两个连续的代码1结尾, 标识一帧的开始Destination Adress & Source Adress:目的MAC地址\源MAC地址,可以是单播,组播或广播地址;Type\Length:type表明数据域类型长度;Length表明紧随其后数据段的字节数。

该值的大小区分Ethernet II帧和IEEE 802.3帧大于1500:类型域中数值大于1500的帧是Ethernet II帧,该域中的值最小为1536 (600 hex)。

小于等于1500:长度域中数值小于等于1500的帧是IEEE 802.3帧, 该域中的值最大为1500。

DATA: 数据段, 以太网的字节传输最大值是1518 bytes(未启用Jumbo),最小值是64 bytes,数据包中的字节数必须要能被8整除。

FCS : 帧校验,该序列为4个字节的循环冗余校验CRC, 发送方按一定计算方式产生,接收方对接收到的数据用同样的方式计算并将得到的校验码和接收到的校验码比较,如果一致认为传输正确.。

Jumbo帧:伴随着以太网速率的提高,千兆以太网的产生而提出了Jumbo帧.也称巨型帧即字节数大于1518字节的帧. 现在的单板TGE,SEC,RSEB\RSEA, MSEB\MSEA都有支持Jumbo帧的配置选项. MSEB单板最大支持的帧长可以达到64kbyte(需求只要求9600byte).3 以太网CRC实现在传输系统中,为了保证数据传输的正确性, 对传输过程进行差错控制, 循环冗余校验(CRC)就是一种差错控制机制.循环冗余码是建立在近世代数基础上的,编解码电路简单,检错能力强。

以太网之帧结构

以太网之帧结构

以太网的帧结构分两种:第一种是Ethernet_II的帧结构,如下图所示:| DMAC(6byte) | SMAC(6byte) | Type(2byte) | Data(46~1500byte) | CRC(4byte) |DMAC:指(destination mac)目的地址,即是接收信息设备的物理地址。

SMAC:指(source MAC)源地址,即是发送信息设备的物理地址。

Type:用来标识data字段中包含的高层协议,即是通告接收信息的设备如何解释该数据字段(数据的封装都是从应用层到低层逐渐添加的,在数据链路层以上的数据都封装在了data字段中)。

其中:(1)IP协议帧该字段为0800(2)ARP协议帧该字段为0806(3)RARP协议帧该字段为0835(4)IPX和SPX协议帧该字段为8137。

Data:数据字段,上层下到本层的数据都被包含到了这里面。

前面讲到,它必须大于46字节,但必须小于1500字节。

CRC:(Cyclic Redundancy CHeck)即是循环冗余校验字段。

发送数据的设备会提供一个包含MAC字段、Type字段、Data字段的CRC码,然后计算出CRC 码填入到该处,起到错误检测控制的功能。

第二种是IEEE802.3的帧结构,如下如所示:| DMAC(6byte) | SMAC(6byte) | Length(2byte)|llC(3byte) |Data(43~1497byte) | CRC(4byte) |DMAC、SMAC、Data和CRC字段不再赘述。

这种帧结构用length字段替代了type字段,并从Data字段中划出了3byte 作为LLC字段,作为服务访问点(SAP)的新区域来解决识别上层协议的问题。

Length:即是长度字段,记录Data字段的长度。

LLC:由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成,分别占有1byte。

以太网帧格式

以太网帧格式

以太网帧格式详解Etherne II报头8 目标地址6 源地址6 以太类型2 有效负载46-1500 帧检验序列4 报头:8个字节,前7个0,1交替的字节(10101010)用来同步接收站,一个1010101011字节指出帧的开始位置。

报头提供接收器同步和帧定界服务。

目标地址:6个字节,单播、多播或者广播。

单播地址也叫个人、物理、硬件或MAC地址。

广播地址全为1,0xFF FF FF FF。

源地址:6个字节。

指出发送节点的单点广播地址。

以太网类型:2个字节,用来指出以太网帧内所含的上层协议。

即帧格式的协议标识符。

对于IP报文来说,该字段值是0x0800。

对于ARP信息来说,以太类型字段的值是0x0806。

有效负载:由一个上层协议的协议数据单元PDU构成。

可以发送的最大有效负载是1500字节。

由于以太网的冲突检测特性,有效负载至少是46个字节。

如果上层协议数据单元长度少于46个字节,必须增补到46个字节。

帧检验序列:4个字节。

验证比特完整性。

IEEE 802.3根据IEEE802.2 和802.3标准创建的,由一个IEEE802.3报头和报尾以及一个802.2LLC报头组成。

报头7 起始限定符1 目标地址6(2)源地址6(2)长度2 DSAP1 SSAP1 控件2 有效负载3 帧检验序列4-----------802.3报头--------------§---802.2报头----§ §-802.3报尾-§IEEE802.3报头和报尾报头:7个字节,同步接收站。

位序列10101010起始限定符:1个字节,帧开始位置的位序列10101011。

报头+起始限定符=Ethernet II的报头目标地址:同Ethernet II。

也可以为2个字节,很少用。

源地址:同Ethernet II。

也可以为2个字节,很少用。

长度:2个字节。

帧检验序列:4个字节。

IEEE802.2 LLC报头DSAP:1个字节,指出帧的目标节点的上层协议。

实验3 分析Ethernet II帧

实验3  分析Ethernet II帧

实验3 分析Ethernet II帧1.实验目的:1)掌握使用Wireshark分析俘获的踪迹文件的基本技能;2)深刻理解Ethernet II帧结构。

2.实验内容:1)分析俘获的或踪迹文件中的Ethernet II帧结构;2)分析以太帧结构。

3.实验环境:1)Win7x86便携式笔记本;2)Realtek PCIe GBE Family Controller;3)Wireshark 1.11.2。

4.实验步骤:1)用Wireshark 俘获网络上收发分组或者打开踪迹文件,选取感兴趣的帧进行分析。

如图选取地141号帧进行分析。

在首部细节信息栏中,可以看到有关该帧到达时间、帧编号、帧长度、帧中协议和着色方案等信息。

为了进一步分析Ethernet II帧结构,点击首部细节信息栏中的“Ethernet II”行,有关信息如下图所示:其中看到源MAC地址为(f0:4d:a22:42:47:bc),目的MAC地址为(6c:e8:73:1e:37:5e);以太类型字段中值为0x0800,表示该帧封装了IP数据报;以及MAC地址分配的相关信息。

2)分析以太帧结构将计算机联入网络,打开Wireshark俘获分组,从本机向选定的Web服务器发送Ping报文。

回答下列问题:(1)本机的48比特以太网MAC地址是什么?(2)以太帧中目的MAC地址是什么?它是你选定的远地Web服务器Mac地址吗?那么,该地址是什么设备的MAC地址呢?(3)给出2字节以太类型字段的十六进制的值。

它表示以太帧包含了什么样的协议?上网查找如果期中封装的IPv6协议,其值应为多少?用本机Ping报文,用CMD使用命令ping –t发送Ping报文接下来用wireshark俘获报文本机的48比特以太网MAC地址是f0:4d:a22:42:47:bc以太网帧目的地址6c:e8:73:1e:37:5e,不是选定的远地Web服务器MAC地址,是IP包下一跳所要到达的网络设备的MAC地址。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一Ethernet帧结构解析一.需求分析实验目的:(1)掌握Ethernet帧各个字段的含义与帧接收过程;(2)掌握Ethernet帧解析软件设计与编程方法;(3)掌握Ethernet帧CRC校验算法原理与软件实现方法。

实验任务:(1)捕捉任何主机发出的Ethernet 802.3格式的帧和DIX Ethernet V2(即Ethernet II)格式的帧并进行分析。

(2)捕捉并分析局域网上的所有ethernet broadcast帧进行分析。

(3)捕捉局域网上的所有ethernet multicast帧进行分析。

实验环境:安装好Windows 2000 Server操作系统+Ethereal的计算机实验时间; 2节课二.概要设计1.原理概述:以太网这个术语通常是指由DEC,Intel和Xerox公司在1982年联合公布的一个标准,它是当今TCP/IP采用的主要的局域网技术,它采用一种称作CSMA/CD的媒体接入方法。

几年后,IEEE802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络;此三种帧的通用部分由802.2标准来定义,也就是我们熟悉的802网络共有的逻辑链路控制(LLC)。

以太网帧是OSI参考模型数据链路层的封装,网络层的数据包被加上帧头和帧尾,构成可由数据链路层识别的数据帧。

虽然帧头和帧尾所用的字节数是固定不变的,但根据被封装数据包大小的不同,以太网帧的长度也随之变化,变化的范围是64-1518字节(不包括8字节的前导字)。

帧格式Ethernet II和IEEE802.3的帧格式分别如下。

EthernetrII帧格式:----------------------------------------------------------------------------------------------| 前序| 目的地址| 源地址| 类型| 数据| FCS |----------------------------------------------------------------------------------------------| 8 byte | 6 byte | 6 byte | 2 byte | 46~1500 byte | 4 byte|IEEE802.3一般帧格式-----------------------------------------------------------------------------------------------------------| 前序| 帧起始定界符| 目的地址| 源地址| 长度| 数据| FCS | -----------------------------------------------------------------------------------------------------------| 7 byte | 1 byte | 2/6 byte | 2/6 byte| 2 byte| 46~1500 byte | 4 byte | Ethernet II和IEEE802.3的帧格式比较类似,主要的不同点在于前者定义的2字节的类型,而后者定义的是2字节的长度;所幸的是,后者定义的有效长度值与前者定义的有效类型值无一相同,这样就容易区分两种帧格式2程序流程图:三.详细设计:1.CRC校验部分设计:为了对以太网帧的对错进行检验,需要设计CRC校验部分。

采用以为相与的方式对帧的首部相继作8位CRC校验输入参数:chCurrByte 低8位数据有效,记录了上一次CRC校验的余数chNextByte 低8位数据有效,记录了本次要继续校验的一个字节传出参数:chCurrByte 低8位数据有效,记录了本次CRC校验的余数void checkCRC(int &chCurrByte, int chNextByte){// CRC循环:每次调用进行8次循环,处理一个字节的数据。

for (int nMask = 0x80; nMask > 0; nMask >>= 1){if ((chCurrByte & 0x80) != 0) // 首位为1:移位,并进行异或运算{chCurrByte <<= 1; // 移一位if ( (chNextByte & nMask) != 0) // 补一位{chCurrByte |= 1;}chCurrByte ^= 7; // 首位已经移出,仅对低8位进行异或运算,7的二进制为0000,0111}else // 首位为0,只移位,不进行异或运算{chCurrByte <<= 1; // 移一位if ( (chNextByte & nMask) != 0) // 补一位{chCurrByte |= 1;}}}}2.部分变量的声明:int nSN = 1; // 帧序号int nCheck = 0; // 校验码int nCurrDataOffset = 22; // 帧头偏移量int nCurrDataLength = 0; // 数据字段长度bool bParseCont = true; // 是否继续对输入文件进行解析int nFileEnd = 0; // 输入文件的长度3.计算数据段的长度:nCurrDataLength =bParseCont ? // 是否到达文件末尾(file.tellg() - 8 - 1 - nCurrDataOffset) : // 没到文件末尾:下一帧头位置- 前导码和定界符长度- CRC校验码长度- 数据字段起始位置(file.tellg() - 1 - nCurrDataOffset); // 已到达文件末尾:文件末尾位置- CRC校验码长度- 数据字段起始位置4.主函数的设计:void main(int argc, char* argv[]){// 检测命令行参数的正确性if (argc != 2){cout << "请以帧封装包文件为参数重新执行程序" << endl;exit(0);}// 检测输入文件是否存在,并可以按所需的权限和方式打开ifstream file(argv[1], ios::in|ios::binary|ios::nocreate);if (!file.is_open()){cout << "无法打开帧封装包文件,请检查文件是否存在并且未损坏" << endl;exit(0);}// 变量声明及初始化int nSN = 1; // 帧序号int nCheck = 0; // 校验码int nCurrDataOffset = 22; // 帧头偏移量int nCurrDataLength = 0; // 数据字段长度bool bParseCont = true; // 是否继续对输入文件进行解析int nFileEnd = 0; // 输入文件的长度// 计算输入文件的长度file.seekg(0, ios::end); // 把文件指针移到文件的末尾nFileEnd = file.tellg(); // 取得输入文件的长度file.seekg(0, ios::beg); // 文件指针位置初始化cout.fill('0'); // 显示初始化cout.setf(ios::uppercase); // 以大写字母输出// 定位到输入文件中的第一个有效帧// 从文件头开始,找到第一个连续的“AA-AA-AA-AA-AA-AA-AA-AB”while ( true ){for (int j = 0; j < 7; j++) // 找7个连续的0xaa{if (file.tellg() >= nFileEnd) // 安全性检测{cout<<"没有找到合法的帧"<<endl;file.close();exit(0);}// 看当前字符是不是0xaa,如果不是,则重新寻找7个连续的0xaa if (file.get() != 0xaa){j = -1;}}if (file.tellg() >= nFileEnd) // 安全性检测{cout<<"没有找到合法的帧"<<endl;file.close();exit(0);}if (file.get() == 0xab) // 判断7个连续的0xaa之后是否为0xab {break;}}// 将数据字段偏移量定位在上述二进制串之后14字节处,并准备进入解析阶段nCurrDataOffset = file.tellg() + 14;file.seekg(-8,ios::cur);// 主控循环while ( bParseCont ) // 当仍然可以继续解析输入文件时,继续解析{// 检测剩余文件是否可能包含完整帧头if (file.tellg() + 14 > nFileEnd){cout<<endl<<"没有找到完整帧头,解析终止"<<endl;file.close();exit(0);}int c; // 读入字节int i = 0; // 循环控制变量int EtherType = 0; // 由帧中读出的类型字段bool bAccept = true; // 是否接受该帧// 输出帧的序号cout << endl << "序号:\t\t" << nSN;// 输出前导码,只输出,不校验cout << endl << "前导码:\t";for (i = 0; i < 7; i++) // 输出格式为:AA AA AA AA AA AA AA{cout.width(2);cout << hex << file.get() << dec << " ";}// 输出帧前定界符,只输出,不校验cout << endl << "帧前定界符:\t";cout.width(2); // 输出格式为:ABcout << hex << file.get();// 输出目的地址,并校验cout << endl << "目的地址:\t";for (i = 0; i < 6; i++) // 输出格式为:xx-xx-xx-xx-xx-xx{c = file.get();cout.width(2);cout<< hex << c << dec << (i==5 ? "" : "-");if (i == 0) // 第一个字节,作为“余数”等待下一个bit{nCheck = c;}else // 开始校验{checkCRC(nCheck, c);}}// 输出源地址,并校验cout << endl << "源地址:\t";for (i = 0; i < 6; i++) // 输出格式为:xx-xx-xx-xx-xx-xx{c = file.get();cout.width(2);cout<< hex << c << dec << (i==5 ? "" : "-");checkCRC(nCheck, c); // 继续校验}// 输出类型字段,并校验cout<<endl<<"类型字段:\t";cout.width(2);// 输出类型字段的高8位c = file.get();cout<< hex << c << dec << " ";checkCRC(nCheck, c); // CRC校验EtherType = c;// 输出类型字段的低8位c = file.get();cout.width(2);cout<< hex << c;checkCRC(nCheck,c); // CRC校验EtherType <<= 8; // 转换成主机格式EtherType |= c;// 定位下一个帧,以确定当前帧的结束位置while ( bParseCont ){for (int i = 0; i < 7; i++) //找下一个连续的7个0xaa{if (file.tellg() >= nFileEnd) //到文件末尾,退出循环{bParseCont = false;break;}// 看当前字符是不是0xaa,如果不是,则重新寻找7个连续的0xaa if (file.get() != 0xaa)i = -1;}}// 如果直到文件结束仍没找到上述比特串,将终止主控循环的标记bParseCont置为true bParseCont = bParseCont && (file.tellg() < nFileEnd);// 判断7个连续的0xaa之后是否为0xabif (bParseCont && file.get() == 0xab){break;}}// 计算数据字段的长度nCurrDataLength =bParseCont ? // 是否到达文件末尾(file.tellg() - 8 - 1 - nCurrDataOffset) : // 没到文件末尾:下一帧头位置- 前导码和定界符长度- CRC校验码长度- 数据字段起始位置(file.tellg() - 1 - nCurrDataOffset); // 已到达文件末尾:文件末尾位置- CRC校验码长度- 数据字段起始位置// 以文本格式数据字段,并校验cout << endl << "数据字段:\t";unsigned char* pData = new unsigned char[nCurrDataLength]; // 创建缓冲区file.seekg(bParseCont ? (-8 - 1 -nCurrDataLength) : ( -1 - nCurrDataLength), ios::cur);file.read(pData, nCurrDataLength); // 读入数据字段int nCount = 50; // 每行的基本字符数量for (i = 0; i < nCurrDataLength; i++) // 输出数据字段文本{nCount--;cout << pData[i]; // 字符输出checkCRC(nCheck, (int)pData[i]); // CRC校验if ( nCount < 0) // 换行处理{// 将行尾的单词写完整if ( pData[i] == ' ' ){cout << endl << "\t\t";nCount = 50;}// 处理过长的行尾单词:换行并使用连字符if ( nCount < -10)cout<< "-" << endl << "\t\t";nCount = 50;}}}delete[] pData; //释放缓冲区空间// 输出CRC校验码,如果CRC校验有误,则输出正确的CRC校验码cout << endl <<"CRC校验";c = file.get(); // 读入CRC校验码int nTmpCRC = nCheck;checkCRC(nCheck, c); // 最后一步校验if ((nCheck & 0xff) == 0) // CRC校验无误{cout.width(2);cout<<"(正确):\t"<< hex << c;}else // CRC校验有误{cout.width(2);cout<< "(错误):\t" << hex << c;checkCRC(nTmpCRC, 0); // 计算正确的CRC校验码cout<< "\t应为:" << hex << (nTmpCRC & 0xff);bAccept = false; // 将帧的接收标记置为false}// 如果数据字段长度不足46字节或数据字段长度超过1500字节,则将帧的接收标记置为falseif (nCurrDataLength < 46 || nCurrDataLength > 1500 ){bAccept = false;}// 输出帧的接收状态cout<< endl << "状态:\t\t" << (bAccept ? "Accept" : "Discard") << endl <<endl;nSN++; // 帧序号加1nCurrDataOffset = file.tellg() + 22; // 将数据字段偏移量更新为下一帧的帧头结束位置}// 关闭输入文件file.close();}四.运行结果:五.简明用户手册:用户需将源程序在VC++6.0下运行成功后,将实验1.EXE放在DOS下运行,运行的同时需要输入位置参数,本例用的位置参数为input,回车即可。

相关文档
最新文档