Ethernet帧结构解析程序C++
第02章 Ethernet帧结构解析-2
8 字节
7 字节 10101010101010 1 字节
MAC 帧
物理层
… 10101010101010101011
帧开始 定界符
计算机硬件基础教学中心
前同步码
Copyright © by LIPENG All rights reserved.
帧结构解析
1、以太网的MAC层
以太网 V2 的格式
局域网介绍
2、局域网概述
局域网技术发展的过程
Copyright © by LIPENG All rights reserved.
计算机硬件基础教学中心
局域网介绍
2、局域网概述
最早的Ethernet原理设计图
Copyright © by LIPENG All rights reserved.
计算机硬件基础教学中心
局域网介绍
1、IEEE 802 标准
ISO/OSI-RM
7 6 5 4 3 2 1 应用层 表示层 会话层 传输层 网络层 数据 链路层 物理层
UTP 同轴电缆 光缆
Copyright © by LIPENG All rights reserved.
802.10 网络安全
802.1 802.2
帧开始 定界符
计算机硬件基础教学中心
前同步码
Copyright © by LIPENG All rights reserved.
帧结构解析
1、以太网的MAC层
以太网 V2 的格式
IP 数据报 字节 以太网 V2 MAC 帧 插入 6 目的地址 6 源地址 2 类型 数 46 ~ 1500 据 4 FCS MAC 层 IP 层
• 随机接入:所有的用户可随机地发送信息。 • 受控接入:如多点线路探询(polling),或轮询。
以太网的帧结构
以太网的帧结构要讲帧结构,就要说一说OSI七层参考模型。
一个是访问服务点,每一层都对上层提供访问服务点(SAP),或者我们可以说,每一层的头里面都有一个字段来区分上层协议。
比如说传输层对应上层的访问服务点就是端口号,比如说23端口是telnet,80端口是http。
IP层的SAP是什么?其实就是protocol字段,17表示上层是UDP,6是TCP,89是OSPF,88是EGIRP,1是ICMP 等等。
以太网对应上层的SAP是什么呢?就是这个type或length。
比如 0800表示上层是IP,0806表示上层是ARP。
我第二个要了解的就是对等层通讯,对等层通讯比较好理解,发送端某一层的封装,接收端要同一层才能解封装。
我们再来看看帧结构,以太网发送方式是一个帧一个帧发送的,帧与帧之间需要间隙。
这个叫帧间隙IFG—InterFrame GapIFG长度是96bit。
当然还可能有Idle时间。
以太网的帧是从目的MAC地址到FCS,事实上以太网帧的前面还有preamble,我们把它叫做先导字段。
作用是用来同步的,当接受端收到 preamble,就知道以太网帧就要来了。
preamble 有8个字节前面7个字节是10101010也就是16进制的AA,最后一个字节是 10101011,也就是AB,当接受端接受到连续的两个高电平,就知道接着来的就是D_mac。
所以最后一个字节AB我们也叫他SFD(帧开始标示符)。
所以在以太网传输过程中,即使没有idle,也就是连续传输,也有20个字节的间隔。
对于大量64字节数据来说,效率也就显得不1s = 1,000ms=1,000,000us以太网帧最小为64byte(512bit)10M以太网的slot time =512×0.1 = 51.2us100M以太网的slot time = 512×0.01 = 5.12us以太网的理论帧速率:Packet/second=1second/(IFG+PreambleTime+FrameTime)10M以太网:IFG time=96x0.1=9.6us100M以太网:IFG time=96x0.01=0.96us以太网发送方式是一个帧一个帧发送的,帧与帧之间需要间隙。
以太网(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_II 的帧中各字段说明如下:DMAC(Destination MAC)是⽬的MAC地址。
DMAC字段长度为6个字节,标识帧的接收者。
SMAC(Source MAC)是源MAC地址。
SMAC字段长度为6个字节,标识帧的发送者。
类型字段(Type)⽤于标识我上⼀层所使⽤的协议类型(即⽹络层,⽤的什么协议,IPv4还是IPv6),该字段长度为2个字节。
数据字段(Data)是⽹络层数据,上⾯⼀层⼀层封装下来的数据,到了我们的数据链路层循环冗余校验字段(FCS)提供了⼀种错误检测机制。
该字段长度为4个字节。
data前⾯的我们称之为头部,后⾯的称之为尾部,再往前是前导符意味着开始,后导符意味着结束以太⽹Ⅰ帧IEEE802.3帧格式类似于Ethernet_II帧,只是Ethernet_II帧的Type域被802.3帧的Length域取代,并且占⽤了Data字段的8个字节作为LLC和SNAP字段。
Length字段定义了Data字段包含的字节数。
逻辑链路控制LLC(Logical Link Control)由⽬的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成。
SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型(Type)字段组成。
Org Code三个字节都为0。
Type字段的含义与Ethernet_II帧中的Type字段相同。
以太网帧结构详解
以太⽹帧结构详解⽹络通信协议⼀般地,关注于逻辑数据关系的协议通常被称为上层协议,⽽关注于物理数据流的协议通常被称为低层协议。
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 思路结合给定的模拟帧结构定义相应得数据结构(帧类),并定义一个帧装载类。
Ethernet帧详解
Ethernet帧详解一、Ethernet帧发展史:1.1980年DEC、Inter、Xerox制订了Ethernet I标准;2.1982年DEC、Inter、Xerox又制订了Ethernet II标准,即DIX 2.0,Cisco称为ARPA;3.1982年IEEE开始研究Ethernet的国际标准802.3;4.1983年Noverll公布了专用以太网标准帧格式,Cisco称为Novell-Ether;5.1985年IEEE公布Ethernet 802.3的SAP版本以太网帧格式,Cisco称为:SAP;6.1985年IEEE公布Ethernet 802.3的SNAP版本以太网帧格式,Cisco称为:SNAP;二、Ethernet四种帧格式:目前,Ethernet有四种不同格式的以太网帧在使用,它们分别是:1.Ethernet IIEthernet II即DIX2.0,由DEC、Inter和Xerox在1982年公布的标准。
主要更改了Ethernet I的电气特性和物理接口,在帧格式上并无变化。
Ethernet II出现后迅速取代Ethernet I成为以太网标准。
Cisco名称为ARPA。
帧格式:报头8+目标地址6+源地址6+类型2+数据46-1500+帧检验序列4(1)报头:8个字节,前7个为0、1交替的字节(10101010)用来同步接收站,一个10101011字节指出帧的开始位置。
报头提供接收器同步和帧定界服务。
(2)目标地址:6个字节,单播、多播或者广播。
广播地址全为(0xffffffffffff)。
(3)源地址:6个字节,指出发送节点的单点广播地址。
(4)类型:2个字节,用来指出以太网帧所携带的上层数据类型。
即帧格式的协议标识符(0x0800代表IP报文,0x0806代表ARP)。
(5)数据:由一个上层协议的协议数据单元PDU构成。
可以发送的最大有效负载是1500字节。
由于以太网的冲突检测特性,有效负载至少是46个字节。
第二次作业Ethernet帧结构解析
.说明文档中应该包括:背景知识(在补充本文上文未列出的相关背景知识的基础上),程序的执行环境、编译环境、运行方式,主要流程的说明,代码中核心算法的设计解释,参考资料等。
.将源码、可执行程序、说明文档打包提交,打包后的文件名参考第一次作业,以类似姓名的形式命名。
6)重复步骤到,每输入一个就做一次移位操作,直到输入了所有要计算的数据为止。这时这个寄存器组中的数据就是的结果。
注:校验算法可参考《计算机网络课程设计》第章“帧封装”中相关内容。
2.
编写程序,解读已封装好的模拟格式的帧的封包文件(封包文件是二进制文件,文件名为,文件中包含若干个帧,其中有正确的帧,也有错误的帧),列出每个帧的各个字段的值,并判断帧的正确性。具体要求如下:
第二次作业
1.
帧是网络通信的基本传输单元,熟悉帧结构对于理解网络协议的概念、协议执行过程以及网络层次结构具有重要的意义。本次作业的目的是应用数据链路层与介质访问控制子层的知识,根据数据链路层的基本原理,通过解读已封装好的帧,了解帧结构的各个字段的含义,从而深入理解协议族中的最底层协议——数据链路层协议。
年,、与等三家公司合作,第一次公布了的物理层、数据链路层规范;年规范公布;标准是在规范的基础上制定的,针对整个网络,它的制定推动了技术的发展和广泛应用。规范和标准中的帧结构有一些差别,这里我们按标准的帧结构进行讨论。图给出了帧结构图。
前导码
帧前定界符
目的地址
源地址
长度字段
数据
帧校验字段
()
()
()
()
()
()
()
图帧结构
如上图所示,标准的帧结构由部分组成。
1)前导码和帧前定界符字段
Ethernet 帧格式分析文档及结果报告
数据域:到此为止,以太网帧的头就完了,之后为数据域。
0000 01 00 5e 7f ff fa 00 1a 80 ef c7 2d 08 00 45 00 ..^..... ...-..E.
在不定长的数据字段后是4个字节的帧校验序列(Frame. Check Sequence,FCS),采用32位CRC循环冗余校验对从"目标MAC地址"字段到"数据"字段的数据进行校验。
在包分析的时候并没有先导域和校验码,是由于在物理层向数据链路层递交数据时会将FCS和先导域抛弃导致的。
五、帧格式分析
A.
20 a9 00 3d c8 51 88 de 45 d7 ad 00 50 c0 5e 9c 90 ..=.Q..E ...P.^..
0030 bf 53 7c 67 39 c8 80 10 0c 18 70 4e 00 00 01 01 .S|g9... ..pN....
0040 08 0a b1 bd cf f2 00 03 20 5c a9 61 87 11 4d ce ........ \.a..M.
|前序|帧起始定界符|目的地址|源地址|长度|数据| FCS |
------------------------------------------------------------------------------------------------------------
| 7 byte | 1 byte | 2/6 byte | 2/6 byte | 2 byte | 46~1500 byte | 4 byte |
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帧中各个字段的含义与用途。
首先介绍本题目的相关知识,有帧的结构及和CRC冗余校验算法。
其次是程序设计分析,主要包括填充帧头部字段、填充数据字段和CRC 校验,并根据算法给出了程序流程图。
最后,是程序运行结果及实现代码,运行结果符合设计要求。
本程序主要关键词有:帧,CRC冗余校验,封装,填充等。
目录1.课程设计目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 2.课程设计要求. . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 3.相关知识. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 4.课程设计分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 5.相关扩展. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 6.程序代码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 7.运行结果与分析. . . . . . . . . . . . . . . . . . . . . . . . . . . .16 8.参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171课程设计目的帧是在数据链路层中进行数据传输的基本单位。
Ethernet协议解析局域网通信协议的工作原理与性能优化
Ethernet协议解析局域网通信协议的工作原理与性能优化Ethernet协议是目前最常用的局域网通信协议之一,其工作原理和性能优化对于提高网络传输速度和稳定性至关重要。
本文将介绍Ethernet协议的基本原理、通信流程以及如何优化其性能。
一、Ethernet协议的基本原理Ethernet协议是一种基于MAC地址的数据链路层协议,用于在局域网内实现主机之间的通信。
它采用的是CSMA/CD(Carrier Sense Multiple Access with Collision Detection)的访问控制方式,即当多个主机同时发送数据时,只有一个主机能成功发送,其他主机需要等待。
Ethernet协议的基本工作原理如下:1. 媒体接入控制(MAC)子层:负责将数据封装成帧并添加MAC 地址及其他必要的控制信息。
2. 物理层:负责以比特流的形式传输数据,包括电缆、收发器等物理介质。
3. CSMA/CD:在发送数据之前,检测是否有其他主机正在发送数据,如果有,则等待一段时间后再发送。
二、Ethernet协议的通信流程Ethernet协议使用帧作为数据传输的单位,其中包含了源MAC地址、目的MAC地址、数据区域等信息。
通信过程可以分为发送和接收两个阶段。
发送端的流程如下:1. 数据封装:将要发送的数据封装成帧,并添加目的MAC地址和源MAC地址。
2. 媒体访问控制:通过CSMA/CD机制,监听信道是否空闲,如果空闲则发送数据,否则等待一段时间后重试。
3. 数据传输:将数据以比特流的形式通过物理介质发送出去。
接收端的流程如下:1. 数据接收:监听物理介质上的比特流,根据帧中的MAC地址信息判断是否为本机发送的数据。
2. 帧解封装:将接收到的帧解封装,提取出数据部分,并检查是否出错。
3. 向上层传递数据:将解封装后的数据交给上层协议进行处理。
三、Ethernet协议性能优化为了提高Ethernet协议的性能,需要考虑以下几个方面:1. 改善传输效率:通过增加帧的最大长度(最大传输单元,MTU)来减少帧的数量,从而降低传输开销。
封装Ethernet帧课程设计CSDN
封装Ethernet帧课程设计CSDN一、课程目标知识目标:1. 学生理解以太网帧的结构和封装过程,掌握相关概念,如MAC地址、帧类型、校验等。
2. 学生能够描述不同类型的以太网帧,并了解其在计算机网络中的应用和作用。
3. 学生掌握以太网帧的传输过程,了解数据在局域网中的传输机制。
技能目标:1. 学生能够利用相关工具或软件手动封装以太网帧,实践帧的构造和解析过程。
2. 学生通过实际操作,学会使用网络抓包工具分析以太网帧,培养实际网络问题排查能力。
情感态度价值观目标:1. 学生培养对计算机网络知识的好奇心和探究精神,提高对网络技术学习的兴趣。
2. 学生通过学习,认识到网络技术在现代社会中的重要性,增强信息安全意识。
3. 学生在学习过程中,培养团队合作精神,提高沟通与协作能力。
课程性质分析:本课程为计算机网络基础知识课程,旨在帮助学生建立扎实的网络基础,为后续学习更高级的网络知识奠定基础。
学生特点分析:本课程针对的对象为高中信息技术课程的学生,他们对计算机和网络有一定的了解,但可能对具体的技术细节掌握不足。
教学要求:1. 理论与实践相结合,注重培养学生的实际操作能力。
2. 采用案例教学,使学生能够更好地理解以太网帧在实际应用中的作用。
3. 鼓励学生提问和分享,激发学生的学习兴趣和思考。
二、教学内容1. 以太网帧基本概念:介绍以太网帧的定义、结构和组成,包括MAC地址、帧类型、帧校验序列等。
- 教材章节:第二章第二节“以太网帧结构”2. 以太网帧类型:讲解不同类型的以太网帧,如IPv4帧、ARP帧、VLAN帧等。
- 教材章节:第二章第三节“以太网帧类型”3. 封装与解封过程:阐述以太网帧的封装过程,包括帧头、帧尾的添加,以及数据封装;解封过程则相反。
- 教材章节:第二章第四节“以太网帧的封装与解封”4. 数据传输机制:介绍以太网帧在局域网中的传输过程,如CSMA/CD协议、全双工和半双工模式等。
- 教材章节:第三章第一节“局域网技术基础”5. 实践操作:利用网络抓包工具(如Wireshark)进行以太网帧的抓取、分析和封装实践。
以太网帧结构分析
实验报告实验名称以太网帧分层结构分析队别姓名学号实验日期2015.3.15实验报告要求:1.实验目的 2.实验要求 3.实验环境 4.实验作业5.问题及解决6.思考问题7.实验体会【实验目的】1.复习Wireshark抓包工具的使用及数据包分析方法。
2.通过分析以太网帧了解以太网数据包传输原理。
【实验要求】用Wireshark1.4.9截包,分析数据包。
观察以太网帧,Ping同学的IP地址,得到自己和同学的mac地址。
观察以太网广播地址,观察ARP请求的帧中目标mac地址的格式。
用ping-l指定数据包长度,观察最小帧长和最大帧长。
观察封装IP和ARP的帧中的类型字段。
【实验环境】用以太网交换机连接起来的windows 7操作系统的计算机,通过802.1x方式接入Internet。
【实验中出现问题及解决方法】1.在使用命令行“ping -l 0 IP”观察最小帧长时抓到了长度为42字节的帧,与理论上最小帧长64字节相差甚远。
通过询问教员和简单的分析,知道了缺少字节的原因是当Wireshark抓到这个ping请求包时,物理层还没有将填充(Trailer)字符加到数据段后面,也没有算出最后4字节的校验和序列,导致出现最小42字节的“半成品”帧。
可以通过网卡的设置将这个过程提前。
2.在做ping同学主机的实验中,发现抓到的所有ping请求帧中IP数据部分的头校验和都是错误的。
原本以为错误的原因与上一个问题有关,即校验和错误是因为物理层还没有将填充字符加到数据段后面。
但是这个想法很快被证明是错误的,因为在观察最大帧长时,不需要填充字符的帧也有同样的错误。
一个有趣的现象是,封装在更里层的ICMP数据包的校验和都是正确的。
这就表明IP层的头校验和错误并没有影响正常通信。
进一步观察发现,这些出错的头校验和的值都是0x0000,这显然不是偶然的错误。
虽然目前还没有得到权威的答案,但是可以推测,可能是这一项校验实际上并没有被启用。
Ethernet网卡的结构及传输原理
Ethernet网卡的结构及传输原理Ethernet网板的构成根据对CSMA/CD访问方法的描述,节点网板要执行多种任务,因此,每个网板要有自己的控制器,用以确定何时发送,何时从网络上接受数据,并负责执行802.3所规定的规程,如构成帧,计算帧检验序列、执行编码译码转换等。
N管理部分和微处理器网络电路板(也称网板,网卡或网络适配器)由几部分组成,如图6所示。
图6LAN的管理部分是网板的核心,负责执行所有规程和数据处理。
微处理器部分包括微处理器芯片,RAM芯片和ROM芯片。
这一部分在PC机和LAN管理部分间提供链接。
当PC机有数据要发送时,便中断微处理器部分,并将数据存储在微处理器部分的RAM芯片中,命令它发送数据。
微处理器还将来自PC机的信号转换为LAN管理部分可接受的格式,随后命令LAN管理部分将数据发送到网络上。
微处理监视发送过程,经常访问LAN管理部分,以检查发送是否成功。
一旦PC机准备好从网络上接收帧,它便中断微处理器,并通知它能进行帧的接收。
微处理器通过命令LAN管理部分开始接收帧来响应。
微处理器对帧的接收过程进行监视。
一旦接收的帧由LAN管理部分处理结束,微自理器便中断PC,将接收的数据传给PC机。
应该指出,有些网板不含有微处理器部分,在这种情况下,PC机直接控制和监视LAN管理部分的工作。
2.曼彻斯特编译码器IEEE802.3或Ethernet规定数据的传输必须用曼彻斯特编码进行。
当PC机希望将数据发送到网络上时,总是以并行方式逐字节地传给LAN管理部分,LAN管理部分串行传给“不归零(NRZ)曼彻斯特编码器”,在这里进行曼彻斯特编码。
曼彻斯特的编码过程如图7所示。
NRZ曼彻斯特编码器收到NRZ信号后,将其进行编码进而传给发送器发送。
当从网络上接收到曼彻斯特编码时,接收器将其传给曼彻斯NRZ特转换器,反转换为NRZ信号这种过程也称为时钟恢复。
因此要求很高的精确度。
LAN的质量高低就取决于时钟恢复的精确度。
网络练习以太网帧结构详解
/ 26
IEEE802.3实现解码
/ 27
主要内容
以太网背景 Ethernet帧格式的发展 关于CSMA/CD EThernetII帧结构及实际解码 IEEE802.3帧结构及实际解码 Ethernet II帧与IEEE802.3帧比较
/ 6
主要内容
以太网背景 Ethernet帧格式的发展 关于CSMA/CD EThernetII帧结构及实际解码 IEEE802.3帧结构及实际解码 Ethernet II帧与IEEE802.3帧比较
/ 7
冲突域
广播域
以太网帧结构
研发中心测试部第2组 - 汤晓艳、张宣亮、龙会钦、彭磊
/
主要内容
以太网背景 Ethernet帧格式的发展 关于CSMA/CD EThernetII帧结构及实际解码 IEEE802.3帧结构及实际解码 Ethernet II帧与IEEE802.3帧比较
/ 11
关于EThernetII协议
Etherent II主要更改了Ethernet I的电气特性和 物理接口,在帧格式上并无变化。Etherent II 采用CSMA/CD的媒体接入和广播机制。
/ 12
主要内容
以太网背景 Ethernet帧格式的发展 关于CSMA/CD EThernetII帧结构及实际解码 IEEE802.3帧结构及实际解码 Ethernet II帧与IEEE802.3帧比较
源 SAP
Ctrl
AA
AA
03
OUI 类型 ID
数据
OR
1
802.2 (SAP)
1 1 or 2 可变长
目标 SAP
源 SAP
Ctrl
数据
基于C++的Ethernet帧结构解析程序开发111111
CHANGSHA UNIVERSITY OF SCIENCE & TECHNOLOGY《网络管理与安全》课程设计论文学 院 计算机与通信工程 专 业 网络工程 班 级 网络班 学 号 学生姓名 指导教师 课程成绩 完成日期 2012年6月8日课程设计成绩评定学院计算机与通信工程专业网络工程班级网络班学号学生姓名指导教师完成日期2012年6月8日指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计中的创造性成果学生掌握课程内容的程度课程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质量指导教师对课程设计的评定意见综合成绩指导教师签字2012年6月12日课程设计任务书计算机与通信工程学院网络工程专业课程名称网络管理与安全课程设计时间2011~2012学年第2学期15~16周学生姓名指导老师题目基于C++的Ethernet帧结构解析程序开发主要内容:(1)了解wireshark捕包软件的基本应用(2)编写基于C++的Ethernet帧结构解析程序(3)用所写的程序对所捕的包进行解析要求:(1)综合运用计算机网络基本理论和网络工程设计的方法设计本系统。
(2)学会文献检索的基本方法和综合运用文献的能力。
(3)通过课程设计培养严谨的科学态度,认真的工作作风和团队协作精神。
应当提交的文件:(1)课程设计学年论文。
(2)课程设计附件(相关图纸、设备配置清单、报告等)。
基于C++的Ethernet帧结构解析程序开发学生姓名:xx 指导教师:xx摘要:C++语言是现在比较流行的高级编程语言,本次课程设计主要是用C++语言来编写一个可以对Ethernet帧结构进行解析的程序,就是将帧结构中的二进制比特流数据解析出我们很容易就看得懂的字节,在本次课程中还会用到一个抓包软件Wireshark。
Wireshark (前称Ethereal)是一个网络分组分析软件,是目前最流行的网络分组分析软件之一,它主要的功能是截取网络分组,并尽可能显示出最为详细的网络分组数据。
用协议分析器分析以太帧结构
计算机科学与技术系实验报告课程名称:计算机网络实验名称:用协议分析器分析以太帧结构班级:xxx学号:xx姓名:xxx2011年12 月30日实验二用协议分析器分析以太帧结构一实验目的1.熟悉网络协议分析的原理。
2.熟悉网络协议分析软件Ethereal的使用。
3.掌握Ethernet帧的构成二实验内容1.学习使用网络协议分析软件Ethereal。
2.捕捉任何主机发出的DIX Ethernet V2(即Ethernet Ⅱ)格式的帧并进行分析。
3.捕捉并分析局域网上的所有Ethernet broadcast帧进行分析。
4.捕捉局域网上的所有Ethernet multicast帧进行分析。
三实验步骤1.学习使用Ethereal软件。
2.捕捉任何主机发出的Ethernet 802.3格式的帧和DIX Ethernet V2(即Ethernet II)格式的帧并进行分析。
捕捉任何主机发出的Ethernet 802.3格式的帧(帧的长度字段<=1500),Ethereal的capture filter 的filter string设置为:ether[12:2] <= 1500。
捕捉任何主机发出的DIX Ethernet V2(即Ethernet II)格式的帧(帧的长度字段>1500, 帧的长度字段实际上是类型字段),Ethereal的capture filter 的filter string设置为:ether[12:2] > 1500。
①观察并分析帧结构,802.3格式的帧的上一层主要是哪些PDU(协议数据单元)?是IP、LLC还是其它哪种?(学校里可能没有,如果没有,注明没有就可以了)捕获的数据包如下图:从图中可以看出802.3格式的帧的上一层主要是STP②观察并分析帧结构,Ethernet II的帧的上一层主要是哪些PDU?是IP、LLC还是其它哪种?捕获的数据包如下图:从图中可以看出Ethernet II格式的帧的上一层主要是UDP3.捕捉并分析局域网上的所有Ethernet broadcast帧,Ethereal的capture filter 的filter string设置为:ether broadcast。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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; }
divideStr = leftStr.substr(0, MAXLENGTH); outfile.put(char(MAXLENGTH / 256)); //写入2字节的长 度字段 outfile.put(char(MAXLENGTH % 256)); outfile << divideStr << endl; //写入数据字段 cout << "长度字段:" << hex << MAXLENGTH << dec << "(" << MAXLENGTH<< ")" << endl;
data += '0'; //cout << data << endl; length++; //cout << data.length() << endl; } frameTotal = 1; cout << "数据字段小于46B,将封装成1个帧……" << endl; } else if (length == MINLENGTH) { frameTotal = 1; cout << "数据字段等于46B,将封装成1个帧……" << endl; } else if (length>MINLENGTH&&length<MAXLENGTH) { frameTotal = 1; cout << "数据字段介于46B和1500B之间,将封装成1个帧……" << endl; } else { frameTotal = 1; cout << "数据字段等于1500B,将封装成1个帧……" << endl; } cout << endl; //cout << truelen << endl; //cout << length << endl;
if (length%MAXLENGTH) frameTotal++;
cout << "数据字段大于1500B,将封装成" << frameTotal << "个帧……" << endl;
} else if (length<MINLENGTH) {
while (length<MINLENGTH) {
unsigned char crc = 0; //初始化CRC余数为0 while (total--) {
char temp; outfil1)
for (unsigned char i = (unsigned char)0x80; i>0; i
{ if (crc & 0x80) { crc <<= 1; if (temp) crc ^= 0x01;
crc ^= 0x70; } else {
crc <<= 1; if (temp&i)
crc ^= 0x01; } } } outfile.seekp(nCrc, ios::beg); //将文件写指针移到数据字 段后 outfile << crc << endl; //将CRC余数写入帧校验字段 cout << "帧校验字段:" << hex << (int)crc << dec << "(" << (int)crc << ")" << endl;
for (int j = 0; j<7; j++) //写入7字节的前导码 outfile.put((char)0xaa);
outfile << endl;
outfile.put((char)0xab); //写入1字节的帧前定界符 outfile << endl;
streampos nCrcs = outfile.tellp(); //获得开始CRC校验的 位置
string divideStr; //本次拆分好的数据 string leftStr = data; //剩余未封装的数据 for (int i = 1; i <= frameTotal; i++) {
fstream outfile; char filename[10]; sprintf_s(filename,"%d.txt",i); outfile.open(filename, ios::out | ios::binary | ios::trunc); outfile.seekg(0, ios::end); //将文件指针移到文件末尾
outfile.write(destination, sizeof(destination)); //写入 6字节的目的地址
outfile << endl;
outfile.write(source, sizeof(source)); //写入6字节的源 地址
outfile << endl;
if (truelen >= MAXLENGTH) {
char(0xFF), char(0xFF), char(0xFF), char(0xFF), char(0xFF), char(0xFF) }; const char source[] = { char(0x00), char(0x16), char(0x76), char(0xB4), char(0xE4), char(0x77) };
int main() {
fstream infile; //fstream outfile; string data; //outfile.open("FrameParse.txt", ios::out|ios::binary|ios::trunc); infile.open("南开简介.txt"); getline(infile, data);
#include "stdafx.h" #include <iostream> #include <fstream> #include <string>
using namespace std;
const int MAXLENGTH = 1500; const int MINLENGTH = 46; const char destination[] = {
cout << "第" << i << "个帧封装完毕!" << endl; cout << endl; outfile.close(); }
infile.close(); return 0; }