计算机网络课程设计报告 帧封装
计算机网络课程设计之协议编程
�
CRC校验 帧封装的最后一步就是对数据进行校 验,并将校验结果记入帧校验字段.
实验二 解析IP数据包 解析IP数据包
实验目的
设计一个解析IP数据包的程序,并根据这个 程序,说明IP数据包的结构及IP协议的相关 问题,从而对IP层的工作原理有更好的理解 和认识.
实验要求
本实验的目标是捕获网络中的IP数据包, 解析数据包的内容,见个结果显示在标准输出 上,并同时写入日志文件. 程序的具体要求如下: 以命令行形式运行:ipparse logfile,其中 ipparse是程序名,而logfile则代表记录结果 的日志文件.
实验分析
填充帧头部字段 要完成一次帧封装的过程,首先要完成 的就是帧头部的装入ห้องสมุดไป่ตู้这一过程只要将签到 吗,定界符,目的地址,源地址,长度字段 的相应数值按顺序写入就可以了.其中,长 度字段的值即为要发送的数据的实际长度.
填充数据字段 在填充数据字段的过程中要注意的主 要问题是数据字段的长度.802.3标准中 规定了帧数据字段的最小长度为46B,最 大长度为1500B.如果数据不足46B,则 需要通过填充0来补足;若数据长度超过 1500B,则的大奖超过部分封装入下一个 帧进行发送.
在标准输出,和日志文件中写入捕获的IP包 的版本,头长度,服务类型,数据包总长度 ,数据包标识,分段标志,分段偏移值,生 存时间,上层协议类型,头校验和,源IP地 址和目的IP地址等内容. 当程序接收到键盘输入Ctrl+C时退出.
实验设计分析
为了获取网络中的IP数据包,必须对网卡进 行编程,我们使用套接字进行编程. 使用套接字 接收数据包 定义IP头部的数据结构 IP包的解析
实验三 发送TCP数据包 发送TCP数据包
以太网帧的封装实验
计算机科学与技术学院计算机网络实验实验报告实验项目以太网帧的封装实验实验日期2016/4/15一实验目的1.1观察以太网帧的封装格式。
1.2对比单播以太网帧和广播以太网帧的目标MAC地址。
二实验原理2.1以太网帧的格式(Ethernet V2)2.2以太网中目标MAC地址的三种类型单播地址:拥有单播地址的数据帧发送给唯一一个站点,该站点的MAC地址与帧中的目标MAC地址相同。
拥有单播地址的数据帧称为单播帧。
多播地址:拥有多播地址的帧将发送给网络中由组播地址指定的组站点。
拥有多播地址的数据帧称为多播帧。
广播地址:拥有广播地址的帧将发送给网络中所有的站点。
拥有广播地址的数据帧称为广播帧。
三实验要求3.1拓扑图3.2IP地址配置3.3对比单播以太网帧和广播以太网帧的目标MAC地址四实验步骤、结果(程序+注释+截图)及分析4.1观察单播以太网帧的封装4.1.1步骤一:准备工作打开软件,添加设备进行连接,按照实验要求配置PC的IP地址。
若此时交换机端口指示灯呈橙色,则单击主窗口右下角Realtime(实时)Simulation(模拟)模式切换按钮数次,直至交换机指示灯呈绿色。
此步骤可加速完成交换机的初始化。
4.1.2步骤二:捕获数据包进入Simulation(模拟)模式。
设置Event List Filters(事件列表过滤器)只显示ICMP事件。
单击Add Simple PDU(添加简单PDU)按钮,在拓扑图中添加PC0向PC2发送的数据包。
单击Auto Capture/Play(自动捕获/执行)按钮,捕获数据包。
当PC2发送的响应包返回PC0后通信结束,再次单击Auto Capture/Play按钮,停止数据包的捕获。
4.1.3步骤3:观察以太网帧的封装格式选择事件列表中的第二个数据包(即PC0到Switch0的数据包),单击其右端Info项中的色块。
注意弹出窗口顶端的窗口顶端的窗口信息—PDU Information at Device:Switch0,即当前查看的是交换机Switch0上的PDU信息。
ETHERNET的帧封装课程设计
ETHERNET的帧封装课程设计一、课程目标知识目标:1. 理解ETHERNET帧封装的基本概念和原理;2. 掌握ETHERNET帧的结构,包括前导码、目的地址、源地址、类型/长度、数据和循环冗余校验(CRC);3. 了解不同类型以太网帧的封装过程及其差异。
技能目标:1. 能够独立完成ETHERNET帧的构建和解析;2. 学会使用相应工具或软件对ETHERNET帧进行抓包和分析;3. 培养学生对网络通信过程中帧封装的实际应用能力。
情感态度价值观目标:1. 培养学生对计算机网络知识的好奇心和探索精神;2. 增强学生合作学习、讨论交流的能力,提高团队意识;3. 通过学习计算机网络知识,让学生认识到科技发展对社会进步的重要性。
课程性质:本课程为计算机网络技术基础课程,以理论教学和实践操作相结合的方式进行。
学生特点:学生已具备一定的计算机网络基础知识,对ETHERNET有一定了解,但对帧封装的具体过程尚不熟悉。
教学要求:结合学生特点和课程性质,以实际操作为主,理论讲解为辅,注重培养学生的实践能力和团队协作能力。
通过本课程的学习,使学生能够掌握ETHERNET帧封装的相关知识,为后续计算机网络课程打下坚实基础。
二、教学内容1. 引言:回顾计算机网络基础知识,引导学生认识ETHERNET帧封装的重要性。
- 网络体系结构概述- 以太网发展简史- 帧封装的作用与意义2. ETHERNET帧结构解析:- 帧结构组成:前导码、目的地址、源地址、类型/长度、数据、CRC- 各字段作用及取值范围- 不同类型以太网帧结构对比3. 帧封装过程:- 数据链路层与物理层关系- 帧封装流程及关键技术- 帧封装错误处理机制4. 实践操作:- 使用Wireshark等抓包工具抓取和分析ETHERNET帧- 搭建实验环境,模拟帧封装过程- 分析实验结果,总结帧封装规律5. 教学案例分析:- 分析实际网络环境中的帧封装案例- 探讨案例中存在的问题及解决方案教学内容安排与进度:1. 引言与ETHERNET帧结构解析(1课时)2. 帧封装过程与实践操作(2课时)3. 教学案例分析(1课时)本教学内容以课本相应章节为基础,注重理论与实践相结合,旨在帮助学生系统地掌握ETHERNET帧封装的相关知识。
帧封装
目录一.设计目的和意义 (1)二.设计内容和要求 (1)三.课程设计的相关知识 (1)3.1 802.3标准的帧结构 (1)3.2 CRC的基本实现 (2)四.设计实现 (2)4.1设计思路 (2)4.2程序流程图 (4)4.3运行结果截图 (6)五.设计中遇到的问题及解决办法 (8)六.总结与体会 (9)七.参考资料 (9)附录源代码 (10)一.设计目的和意义帧是在数据链路层数据进行传输与交换的基本单位。
构造帧对于理解网络协议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。
本次课程设计的目的是应用数据链路层与介质访问控制层的知识,根据数据链路层的基本原理,通过构造一个具体的Ethernet 帧,从而深入理解网络协议的基本概念与网络问题处理的一般方法。
二.设计内容和要求编写程序,根据给出的原始数据,组装一个IEEE802.3格式的帧(题目默认的输入文件为二进制原始数据(文件名为input1和input2))。
1)要求程序为命令行程序。
比如,可执行文件名为framer.exe,则命令行形式如下:framer inputfile outputfile其中,inputfile为原始数据文件,outputfile为输出结果。
使用操作系统、语言、编程环境不限,但在报告中必须注明。
2)输出:对应input1和input2的结果分别为output1和output2。
三.课程设计的相关知识帧:来源于串行线路上的通信。
其中,发送者在发送数据的前后各添加特殊的字符,使它们成为一个帧。
Ethernet从某种程度上可以被看作是机器之间的数据链路层连接。
按802.3标准的帧结构如下表所示(802.3标准的Ethernet帧结构由7部分组成)3.1 802.3标准的帧结构充至46B。
填充字符是任意的,不计入长度字段值中。
在校验字段中,使用的是CRC校验。
校验的范围包括目的地址字段、源地址字段、长度字段、LLC数据字段。
2-2 以太网帧的封装实验
2-2 以太网帧的封装实验科目:计算机网络专业:计算机应用技术班级:K0314320 姓名:王杰学号:K031432021 日期:202105031. 实验目的:①观察以太网帧的封装格式。
②对比单播以太网帧和广播以太网帧的目标MAC地址。
2. 实验拓扑图:以太网帧实验拓扑IP地址配置表 PC PC0 PC1 PC2 PC33.主要操作步骤及实验结果记录:任务一:观察单播以太网帧的封装? 步骤1:准备工作打开对应文件,完成初始化,删除练习文件中预设场景, ? 步骤2:捕获数据包进入Simulation模式。
添加数据包,单击auto capture/play捕获数据包,再次单击停止捕获。
? 步骤3:观察以太网帧的封装格式。
观察ethernet对应的封装格式。
DEST MAC:000A.4189.ADC6 SRC MAC:0060.2F6C.C118IP地址 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4子网掩码 255.255.255.0 255.255.255.0 255.255.255.0 255.255.255.0 ? 步骤4:观察交换机是否会修改以太网帧各字段取值 DEST MAC:000A.4189.ADC6 SRCMAC:0060.2F6C.C118任务二:观察广播以太网帧的封装? 步骤1:捕获数据包Pc0数据帧被交换机转发给pc1、pc2、pc3(所有节点),pc1、pc2、pc3(所有节点)接收该广播帧。
? 步骤2:观察该广播包的以太网封装 DEST MAC:字段的取值:FFFF.FFFF.FFFF DEST MAC字段取值的含义:广播地址。
4.实验结果分析:(1)任务一中,观察到以太网帧封装格式中前导字段的取值是什么?阐述其在数据帧传输过程中的作用。
答:任务一中,前导码字段取值为10101010・・・1010;以太网使用曼彻斯特编码传输数据,其特征是每个码元中间有一次电压的跳变,用于接收方提取同步信号,前导码的作用就是接收方提取同步信号,实现与发送方的时钟同步。
计算机网络课设__封装Ethernet帧
成绩评定表课程设计任务书摘要本设计题目是封装Ethernet帧,要实现的功能是通过封装Ethernet 帧,了解Ethernet帧中各个字段的含义与用途。
首先介绍本题目的相关知识,有帧的结构及和CRC冗余校验算法。
其次是程序设计分析,主要包括填充帧头部字段、填充数据字段和CRC 校验,并根据算法给出了程序流程图。
最后,是程序运行结果及实现代码,运行结果符合设计要求。
本程序主要关键词有:帧,CRC冗余校验,封装,填充等。
目录1.课程设计目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 2.课程设计要求. . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 3.相关知识. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 4.课程设计分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 5.相关扩展. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 6.程序代码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 7.运行结果与分析. . . . . . . . . . . . . . . . . . . . . . . . . . . .16 8.参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171课程设计目的帧是在数据链路层中进行数据传输的基本单位。
帧封装
目录摘要 (2)关键字 (3)一、课程设计目的与意义 (4)二、课程设计要求 (4)三、帧结构分析 (4)3.1、比特型算法 (5)3.2、字节型算法 (5)四、帧封装的过程 (6)帧封装大致分为下面几个步骤 (6)4.1填充帧头部字段 (6)4.2、填充数据字段 (8)4.3、CRC校验 (9)五、帧封装流程图及代码 (11)六、运行结果及分析 (15)七、课程设计心得与体会 (17)参考文献 (18)帧封装摘要以太网这个术语通常是指由DEC、Intel和Xerox公司在1982年联合公布的一个标准,它是当今TCP/IP采用的主要的局域网技术,它采用一种称作CSMA/CD的媒体接入方法。
在TCP/IP世界中,以太网IP数据报文的封装在RFC 894中定义。
以太网采用广播机制,所有与网络连接的工作站都可以看到网络上传递的数据。
通过查看包含在帧中的目标地址,确定是否进行接收或放弃。
如果证明数据确实是发给自己的,工作站将会接收数据并传递给高层协议进行处理。
以太网采用CSMA/CD(Carrier Sense Multiple Access/Collision Detection)媒体访问机制,任何工作站都可以在任何时间访问网络。
在以太网中,所有的节点共享传输介质。
如何保证传输介质有序、高效地为许多节点提供传输服务,就是以太网的介质访问控制协议要解决的问题。
帧是在数据链路层数据进行传输与交换的基本单位。
构造帧对于理解网络协议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。
本次课程设计的目的是应用数据链路层与介质访问控制层的知识,根据数据链路层的基本原理,通过构造一个具体的Ethernet帧,从而深入理解网络协议的基本概念与网络问题处理的一般方法。
关键字:以太网Ethernet帧CSMA/CD一、课程设计目的与意义帧是在数据链路层数据进行传输与交换的基本单位。
构造帧对于理解网络协议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。
计算机网络课程设计报告--帧封装
计算机网络课程设计报告题目:帧封装一、问题描述帧是在数据链路层数据进行传输与交换的基本单位。
构造帧对于理解网络协议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。
本次课程设计的目的是应用数据链路层与介质访问控制层的知识,根据数据链路层的基本原理,通过构造一个具体的Ethernet帧,从而深入理解网络协议的基本概念与网络问题处理的一般方法。
二、概要设计(抽象数据类型定义)编写程序,根据给出的原始数据,组装一个IEEE802.3格式的帧(题目默认的输入文件为二进制原始数据(文件名为input1)。
D要求程序为命令行程序。
比如,可执行文件名为framer,exe,则命令行形式如下:framerinputfi1eoutputfi1e其中,inputfi1e为原始数据文件,OUtPUtfi1e为输出结果。
2)输出:对应input1的结果分别为OUtPUt1。
三、详细设计1.填充帧头部字段在这一部分需要向输出文件写入前导码、帧前定界符、目的地址、源地址和长度字段。
写入前四个部分十分简单,而写入长度字段时需要计算输入文件的长度。
所以计算输入文件长度的方法如下所示:intIength=O;infi1e.seekgOiOS::end);〃将读指针移到文件末尾。
Iength=infi1e.te11g();〃计算指针偏移量,即为输入文件的长度。
unsignedchar*data=newunsignedChar[1ength];〃创建字符指针并根据文件长度初始化。
infi1e.seekg(07ios::beg);〃将读指针移到文件开始。
infi1e.read(datajength);〃将文件数据读入到字符指针data中。
fi1e.put(char(1ength>>8));fi1e.put(char(1ength&Oxff));〃将文件长度值按照逆序写入到输出文件的长度字段中Ofi1e.write(data,1ength);〃将data内容写入到输出文件中。
计算机网络课程设计实验报告(北京科技大学--arp、ftp、ip包)
计算机网络课程设计实验报告任课教师:班级:学号:姓名:目录实验一ARP封装并发送 (3)课程设计目的: (3)课程设计要求: (3)课程设计分析: (3)程序设计分析: (4)实验结果 (5)源程序 (6)实验二解析IP数据包 (9)课程设计目的: (9)课程设计要求: (9)课程设计分析: (9)程序设计分析 (9)实验结果 (13)源代码 (13)实验三FTP客户机 (17)课程设计目的: (17)课程设计要求: (17)课程设计分析: (17)程序设计原理: (18)实验结果 (23)源代码 (24)实验心得体会 (37)实验一ARP封装并发送课程设计目的:•ARP协议用于完成IP地址与MAC地址之间的转换。
通过封装与发送ARP 数据包,加深对ARP协议的理解,掌握ARP帧结构和工作原理及其对协议栈的贡献。
课程设计要求:•编写程序,根据ARP帧的结构,封装ARP帧。
•要求程序为命令行程序,以命令行的形式运行:SENDARP S-IP S-MAC D-IP D-MAC其中:SENDARP:可执行程序名S-IP:源IP地址S-MAC:源MAC地址D-IP:目的IP地址D-MAC:目的MAC地址课程设计分析:•使用winpcap访问网卡,手动封装•定义ARP的数据结构•填充数据包•发送数据包程序设计分析:ARP 协议及工作原理ARP 协议是“Address Resolution Protocol ”(地址解析协议)的缩写。
在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC 地址的。
在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。
但这个目标MAC 地址是如何获得的呢?它就是通过地址解析协议获得的。
所谓“地址解析”就是主机在发送帧前将目标IP 地址转换成目标MAC 地址的过程。
ARP 协议的基本功能就是通过目标设备的IP 地址,查询目标设备的MAC 地址,以保证通信的顺利进行。
计算机网络课程设计_报告
实验报告实验名称:计算机网络课程设计学生姓名: xxxxxxxxxxxxxxx专业: xxxxxxxxxxxxxxx班级: xxxxxxxxxxxxxxx学号: xxxxxxxxxxxxxxx指导教师: xxxxxxxxxxxxxxx实验成绩:实验地点:实验时间: 2016 年 5 月 6 日一、实验目的与实验要求1、实验目的将书本上抽象的概念与具体实现技术结合,通过网络软件编程的实践,深入理解理论课上学习到的ARP、IP、TCP等重要网络协议的原理,通过自己动手编程封装与发送这些数据包,加深对网络协议的理解,掌握协议帧的结构和工作原理及其对协议栈的贡献。
2、实验要求网络课程设计包含两个部分的内容:题目一是数据包的封装发送和解析(ARP/IP/TCP),要求使用Winpcap技术和Socket技术,根据ARP/IP/TCP帧的结构,封装数据包发送到局域网中。
另外要捕获网络中的TCP/IP/ARP数据包,解析数据包的内容,并将结果显示,并同时写入日志文件。
题目二是从可选题目中选择一个,可选题目均是网络应用小程序,要求小组使用网络编程技术设计并实现一个网络应用程序,加深对网络协议协的理解,并锻炼网络编程能力。
二、实验设备(环境)及要求1、实验硬件设备:计算机型号:联想ThinkPad T430u处理器型号:Intel i5 主频:1.8Hz网卡型号:(1)Realtek PCIe GBE (2)Broadcom 802.11n2、实验软件要求:操作系统:Windows10应用软件:Visual Studio 2015 Pro3、小组成员及分工:三、实验内容与步骤1、实验1:数据包的封装发送和解析(ARP/IP/TCP)(1)实验内容1)程序目标:根据IP帧的结构,封装IP数据包发送到局域网中。
并捕获网络中的IP数据包,解析数据包的内容,并将结果显示,并同时写入日志文件。
2)程序功能:以命令行形式运行在标准输出中显示捕获的IP报文的首部字段的内容。
计算机网络实验1实验一: 以太网的封装实验
大学实验报告2019年4月8日课程名称:计算机网络实验名称:实验一: 以太网的封装实验班级及学号:姓名:同组人:签名:指导教师:指导教师评定:一、实验目的:1.观察以太网帧的封装格式。
2.对比单播以太网和广播以太网帧的目标MAC地址二、实验任务:1.任务一:观察单播以太网帧的封装;2.任务二:观察广播以太网帧的封装;3.实验完成,写出实验报告三、实验步骤:1. 任务一:(1)准备工作:打开对应练习文件“2-2以太网帧的封装实验.pka”。
(2)获取数据包:进入Simulation模式;再单击Add Simple PDU按钮,添加PC0向PC2发送数据包;最后单击Auto Capture/Play以获取数据包。
(3)观察以太网的封装格式:选择事件列表中PC0到Switch0的数据包,右击Info项中的色块,选择Inbound PDU Details选项卡,观察PREAMVBLE、DEST MAC和SRC MAC的取值并记入下来。
(4)观察交换机是否会修改以太网帧各字段取值:选择事件列表中Switch0到PC2的数据包,右击Info项中的色块,同步骤(3),观察哪些字段发生了变化。
2. 任务二:(1)捕获数据包:单击Delete,删除任务一的场景;单击Add ComplexPDU,单击PC0,弹出的对话框的参数设置如下图,再单击Auto Capture/Play,捕获数据包,最后观察节点的接收情况。
(2)观察该该广播包的以太网封装:选择事件列表中PC0到Switch0的数据包,右击Info项中的色块,观察其Ethernet的封装。
3. 实验截图效果:任务一最初拓扑图实验中拓补图任务二四、实验小结:本次实验为首次使用”Cisco Packet Tracer Student”这个软件,对一些新的界面各个功能的操作还非常陌生。
不过,幸运的是本次实验难度不是很大,所以顺利地完成了本次实验内容。
在以后的学习里,我会花上更多课下时间提前好好熟悉实验环境,熟悉实验内容,为正式做实验提供基础。
封装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)进行以太网帧的抓取、分析和封装实践。
计算机网络课程设计
课程设计课题名称:计算机网络课程设计设计课题:一、帧封装二、解析IP数据包三、发送TCP数据包四、UDP服务器设计专业:网络工程班级: 100461 姓名:李春燕_学号:10046102评分:指导教师(签字):帧封装1.设计目的帧是在数据链路层数据进行传输与交换的基本单位。
构造帧对于理解网络协议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。
本次课程设计的目的是应用数据链路层与介质访问控制层的知识,根据数据链路层的基本原理,通过构造一个具体的Ethernet帧,从而深入理解网络协议的基本概念与网络问题处理的一般方法。
2.设计任务内容编写程序,根据给出的原始数据,组装一个IEEE802.3格式的帧(题目默认的输入文件为二进制原始数据(文件名为input1和input2))。
1)要求程序为命令行程序。
比如,可执行文件名为framer.exe,则命令行形式如下:framer inputfile outputfile其中,inputfile为原始数据文件,outputfile为输出结果。
使用操作系统、语言、编程环境不限,但在报告中必须注明。
2)输出:对应input1和input2的结果分别为output1和output2。
3.设计思路程序共分三个部分:填充帧头部字段,填充数据字段,计算CRC校验码并填充。
1.填充帧头部字段在这一部分需要向输出文件写入前导码、帧前定界符、目的地址、源地址和长度字段。
写入前四个部分十分简单,而写入长度字段时需要计算输入文件的长度。
所以计算输入文件长度的方法如下所示:int length=0;infile.seekg(0,ios::end);//将读指针移到文件末尾。
length=infile.tellg();//计算指针偏移量,即为输入文件的长度。
unsigned char* data=new unsigned char[length];//创建字符指针并根据文件长度初始化。
以太网帧的封装实验
计算机科学与技术学院计算机网络实验实验报告实验项目以太网帧的封装实验实验日期2016/4/15一实验目的1.1观察以太网帧的封装格式。
1.2对比单播以太网帧和广播以太网帧的目标MAC地址。
二实验原理2.1以太网帧的格式(Ethernet V2)2.2以太网中目标MAC地址的三种类型单播地址:拥有单播地址的数据帧发送给唯一一个站点,该站点的MAC地址与帧中的目标MAC地址相同。
拥有单播地址的数据帧称为单播帧。
多播地址:拥有多播地址的帧将发送给网络中由组播地址指定的组站点。
拥有多播地址的数据帧称为多播帧。
广播地址:拥有广播地址的帧将发送给网络中所有的站点。
拥有广播地址的数据帧称为广播帧。
三实验要求3.1拓扑图3.2IP地址配置3.3对比单播以太网帧和广播以太网帧的目标MAC地址四实验步骤、结果(程序+注释+截图)及分析4.1观察单播以太网帧的封装4.1.1步骤一:准备工作打开软件,添加设备进行连接,按照实验要求配置PC的IP地址。
若此时交换机端口指示灯呈橙色,则单击主窗口右下角Realtime(实时)Simulation(模拟)模式切换按钮数次,直至交换机指示灯呈绿色。
此步骤可加速完成交换机的初始化。
4.1.2步骤二:捕获数据包进入Simulation(模拟)模式。
设置Event List Filters(事件列表过滤器)只显示ICMP事件。
单击Add Simple PDU(添加简单PDU)按钮,在拓扑图中添加PC0向PC2发送的数据包。
单击Auto Capture/Play(自动捕获/执行)按钮,捕获数据包。
当PC2发送的响应包返回PC0后通信结束,再次单击Auto Capture/Play按钮,停止数据包的捕获。
4.1.3步骤3:观察以太网帧的封装格式选择事件列表中的第二个数据包(即PC0到Switch0的数据包),单击其右端Info项中的色块。
注意弹出窗口顶端的窗口顶端的窗口信息—PDU Information at Device:Switch0,即当前查看的是交换机Switch0上的PDU信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程名称:计算机网络课程设计设计题目:帧封装姓名:专业:计算机科学与技术班级:计算机13-3班学号:计算机科学与技术学院2016年1 月1 日设计项目:帧封装一、选题背景以太网这个术语通常是指由DEC、Intel和Xerox公司在1982年联合公布的一个标准,它是当今TCP/IP采用的主要的局域网技术,它采用一种称作CSMA/CD的媒体接入方法。
在TCP/IP世界中,以太网IP数据报文的封装在RFC894中定义。
以太网采用广播机制,所有与网络连接的工作站都可以看到网络上传递的数据。
通过查看包含在帧中的目标地址,确定是否进行接收或放弃。
如果证明数据确实是发给自己的,工作站将会接收数据并传递给高层协议进行处理。
以太网采用CSMA/CD(Carrier Sense Multiple Access/Collision Detection)媒体访问机制,任何工作站都可以在任何时间访问网络。
在以太网中,所有的节点共享传输介质。
如何保证传输介质有序、高效地为许多节点提供传输服务,就是以太网的介质访问控制协议要解决的问题。
帧是在数据链路层数据进行传输与交换的基本单位。
构造帧对于理解网络协议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。
本次课程设计的目的是应用数据链路层与介质访问控制层的知识,根据数据链路层的基本原理,通过构造一个具体的Ethernet帧,从而深入理解网络协议的基本概念与网络问题处理的一般方法。
二.设计思路数据在网络上是以很小的称为帧(Frame)的单位传输的,帧由几部分组成,不同的部分执行不同的功能。
帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上,通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。
接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧已到达,然后对其进行存储。
“帧”数据大致由两部分组成:帧头和帧数据。
帧头包括接收方主机物理地址的定位以及其它网络信息。
帧数据区含有一个数据体。
为确保计算机能够解释数据帧中的数据,这两台计算机使用一种公用的通讯协议。
互联网使用的通讯协议简称IP,即互联网协议。
IP 数据体由两部分组成:数据体头部和数据体的数据区。
数据体头部包括IP源地址和IP目标地址,以及其它信息。
数据体的数据区包括用户数据协议(UDP),传输控制协议(TCP),还有数据包的其他信息。
这些数据包都含有附加的进程信息以及实际数据以802.3的帧结构由六部分组成:常用的以太网MAC帧格式用两种标准,一种是DIX Ethernet V2标准(即以太网V2标准),另一种是IEEE的802.3标准。
这里只介绍符合IEEE802.3标准的帧,其格式如上图所示。
它的组成比较简单,由6个字段组成。
接下来对这6个部分详细介绍一下。
(1)前导符:由7字节的前同步码和1字节的帧起始定界符构成。
前同步码:这个字段有7个字节(56位)交替出现的1和0,它的作用就是提醒接收系统有帧的到来,以及使到来的帧与计时器进行同步。
前同步码其实是在物理层添加上去的,并不是(正式的)帧的一部分。
前同步码的目标是允许物理层在接收到实际的帧起始符之前检测载波,并且与接收到的帧时序达到稳定同步。
帧起始定界符:这个字段用1字节(10101011)作为帧开始的信号,表示一帧的开始。
最后两位是11,表示下面的字段是目的地址。
(2)目的地址(DA) 48位,表示帧准备发往目的站的地址,共6个字节,可以是单址(代表单个站)、多址(代表一组站)或全地址(代表局域网上的所有站)。
当目的地址出现多址时,表示该帧被一组站同时接收,称为“组播”(Multicast)。
目的地址出现全地址时,表示该帧被局域网上所有站同时接收,称为“广播”(Broadcast),通常以DA的最高位来判断地址的类型,若第一字节最低位为“0”则表示单址,第一字节最低位为“1”则表示组播。
(3)源地址(SA)48位,表明该帧的数据是哪个网卡发的,即发送端的网卡地址。
(4)该字段是“长度/类型”。
当这个字段的值大于0X0600时(相当于十进制的1536),就表示“类型”。
这样的帧和以太网V2 MAC帧完全一样。
只有当这个字段的值小于0X0600时才表示“长度”,即MAC帧的数据部分长度。
(5)数据字段最小长度必须为46字节以保证帧长至少为64字节,这意味着传输一字节信息也必须使用46字节的数据字段:如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充。
数据字段的默认最大长度为1500字节。
(6)帧检验序列(FCS)32位冗余检验码(CRC),检验除前导、SFD和FCS以外的内容。
当发送站发出帧时,一边发送,一边逐位进行CRC检验。
最后形成一个32位CRC检验和填在帧尾FCS位置中一起在媒体上传输。
接收站接收后,从DA开始同样边接收边逐位进行CRC 检验。
最后接收站形成的检验和若与帧的检验和相同,则表示媒体上传输帧未被破坏。
反之,接收站认为帧被破坏,则会通过一定的机制要求发送站重发该帧差错检验:在校验字段中,使用的是CRC校验。
校验的范围包括目的地址字段、源地址字段、长度字段、LLC数据字段。
循环冗余编码(CRC)是一种重要的线性分组码、编码和解码方法,具有简单、检错和纠错能力强等特点,在通信领域广泛地用于实现差错控制。
CRC校验码的检错能力很强,不仅能检查出离散错误,还能检查出突发错误。
利用CRC进行检错的过程可简单描述如下:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息的后边,构成一个新的二进制码序列(共k+r位),然后发送出去。
在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。
这个规则在差错控制理论中称为“生成多项式”。
循环冗余校验码的特点:(1)CRC校验码可检测出所有单个错误。
(2)CRC校验码可检测出所有奇数位错误。
(3)CRC校验码可检测出所有双位的错误。
(4)CRC校验码可检测出所有小于、等于校验位长度的突发错误。
(5)CRC校验码可以的概率检测出长度为(K+1)位的突发错误。
三.主要问题的解决方法和关键技术1.填充帧头部字段要完成一次帧封装的过程,首先要完成的就是帧头部的装入,将前导码、定界符、目的地址、源地址、长度字段的相应数值写入。
长度字段的值即为要发送的数据的实际长度。
我们通过下面的方式获得长度字段:22 ifstream infile;23 infile.open(argv[1], ios::binary);24 infile.seekg(0, ios::end);25 short length = (short) infile.tellg();26 file.put(char(length/256));27 file.put(char(length%256));2.填充数据字段如果数据字段长度小于46B,填充0补足,超过1500B把超过的部分装入下一帧发送。
if (length < 46) for (int i = 0; i < 46-length; ++i) file.put(char(0x00));3.CRC校验(1)CRC编码的代数学原理将一个码组表示为一个多项式,码组中的各码元作为多项式的系数。
设编码前的原始信息多项式为P(x),P(x)最高次幂加1等于k;生成多项式为G(x),它的最高次幂等于r;CRC多项式为R(x);编码后的带CRC的信息多项式为T(x)。
发送方编码的方法是:P(x)乘以x^r,再除以G(x),得余式即为R(x)。
接收方得解码方法是:将T(x)除以G(x),如果余数为0,则说明传输中无错误发生,否则说明传输有错误。
(2)CRC的基本实现以CRC-8(X^8+X^2+X^1为例,它由多个移位寄存器和加法器组成。
编码、解码前将各寄存器初始化为0,输入位作为最右边异或操作的输入之一。
三个寄存器上的移位操作同时进行,均为左移一位,左边的寄存器的最左一位作为三个异或操作的输入之一。
每次移位时,最右边的寄存器内容作为中间异或操作的输入之一,中间的寄存器的内容作为最左边异或操作输入之一,各个异或操作的结果作为与它左边那个寄存器的移入位。
重复以上步骤,每输入一位就做一次移位操作,直到输入了所有要计算的数据为止。
这时,这个寄存器组中的数据就是CRC-8的结果。
(3)CRC的工作原理是CRC在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(x)来得到,K 位要发送的信息位可对应于一个(k-1)次多项式K(x),r位冗余位对应于一个(r-1)次多项式R(x),由r位冗余位组成的n=k+r位码对应于一个(n-1)次多项式T(x)=X^r*K(x)+R(x)。
(4)循环冗余校验码的特点CRC校验码的检错能力很强,不仅能检查出离散错误,还能检查出突发错误.CRC校验码具有以下的检错能力:CRC校验码可检测出所有单个错误,所有奇数位错误,所有双位的错误,所有小于、等于校验位长度的突发错误帧封装的最后一步就是对数据进行校验,并将校验结果记入帧校验字段。
CRC编码实际上就是一个循环移位的模二运算。
流程描述为:把CRC中的值置为0在原始数据input后添加8个0 while(数据未处理完)beginif(crc首位是1)crc=crc XOR 100000111把crc中的值左移一位,从input中读取一位新的数据并置于crc的0位crc中的后8位就是经过CRC-8校验的余数。
这样,我们只需要看后8位即可,因此上面流程可以简化。
构造一个8位的寄存器crc,初始值为0,数据依次移入crc的0位,同时crc 的7位移出。
当移出的数据为1时,crc才和00000111进行XOR运算;移出数据为0时,不做运算。
每次crc中数据位为1时还需要对crc0位进行处理47 while (total--)48 {49 char temp;50 file.get(temp);51 // printf("ssss");52 for (unsigned char i = (unsigned char)0x80; i > 0; i>>=1)53 {54 // printf("------nihao");55 if (crc&0x80)56 {57 crc <<= 1;58 if (temp&i) crc ^= 0x01;5960 crc ^= 0x07;61 }62 else63 {64 crc <<= 1;65 if (temp & 1 ) crc ^= 0x01;66 }67 }68 }69 //printf("\n------%x\n", crc);70 file.seekp(pCrc, ios::beg);相关扩展1.比特型运算法定义一个寄存器组,初始化为全1.依照电路图,每输入一个信息位,相当于一个时钟脉冲到来,从高到低依次移位。