实验二数据链路层实验
数据链路层实验.

数据链路层实验三层交换机实现VLAN 间通信一、实验设备2 台 3560 三层交换机,3 台电脑。
二、实验要求使在同一VLAN里的计算机系统能跨交换机进行相互通信,而在不同VLAN里的计算机系统也能进行相互通信。
三、实验步骤第一步:在交换机 SwitchA 上创建 Vlan 10 ,并将 0/5 端口划分到 Vlan 10中。
Switch>enSwitch#conf t!进入全局配置模式。
Enter configuration commands, one per line.End with CNTL/Z.Switch(config)#hostname SwitchA!修改 Switch 名字为 SwitchASwitchA(config)# vlan 10!创建 Vlan 10 。
SwitchA(config-vlan)# name sales!将 Vlan 10 命名为 sales。
SwitchA(config-vlan)#exitSwitchA(config)#interface fastethernet 0/5!进入接口配置模式。
SwitchA(config-if)#switchport access vlan 10!将 0/5 端口划分到 Vlan 10 。
SwitchA(config-if)#exit第二步:在交换机 SwitchA 上创建 Vlan 20 ,并将 0/8 端口划分到 Vlan 20中。
SwitchA(config)# vlan 20!创建 Vlan 20 。
SwitchA(config-vlan)# name technical!将 Vlan 20 命名为 technical 。
SwitchA(config-vlan)#exitSwitchA(config)#interface fastethernet 0/8!进入接口配置模式。
SwitchA(config-if)#switchport access vlan 20!将 0/8 端口划分到 Vlan 20 。
数据链路层实验报告

2、教师批改学生实验报告时间应在学生提交实验报告时间后 10 日内。
教务处制
实验目的与要求:
一、 实验目的
1、理解各种不同数据链路层协议的原理 2、熟悉并掌握各种不同数据链路层协议的性能
二、 实验要求
1. 根据所给各种协议的源代码,分析与理解各种协议的原理与算法思想。 2. 相同参数情况下,运行各种协议,得到各种协议的性能。 3. 对于协议 5,6,分别给定不同的负载、丢包率及校验和失败情况,对比两种协议的性能。
数据处理分析:
实验结论: 1. 当所有数据相同时,协议 6 的传输相率是最好的 2. 当协议 5 和协议 6 的丢包率都较低时,俩者的传输效率相差不大 3. 当协议 5 和协议 6 的负载都很大时,协议 6 的传输效率明显较高。
指导教师批阅意见:
成绩评定:
指导教师签字: 年 月 日 备注:
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
./protocol5 100000 40 2 10 7 0 ./protocol5 100000 40 20 10 7 0 6 ./protocol6 100000 40 0.2 10 7 0 ./protocol6 100000 40 2 10 7 0 ./protocol6 100000 40 20 10 7 0 5 ./protocol5 100000 40 20 0.2 7 0 ./protocol5 100000 40 20 2 7 0 ./protocol5 100000 40 20 20 7 0 6 ./protocol6 100000 40 20 0.2 7 0 ./protocol6 100000 40 20 2 7 0 ./protocol6 100000 40 20 20 7 0
计算机网络数据链路层实验报告

计算机⽹络数据链路层实验报告计算机⽹络数据链路层实验报告⽬录⼀、实验内容和实验环境描述(1)实验内容和⽬的(2)实验环境⼆、软件设计(1)数据结构(2)模块结构(3)算法流程三、实验理论分析四、实验结果:(1)性能测试记录表(2)截图(由于截图近200张,这⾥只列出最优参数的情况,其余参数对⽐图及其log⽂件在“参数对⽐“⽂件夹⾥)五、源程序清单六、实验结果分析七、研究和探索的问题⼋、实验总结和⼼得体会⼀、实验内容和实验环境描述(1)实验内容和⽬的利⽤所学数据链路层原理,⾃⼰设计⼀个滑动窗⼝协议,在仿真环境下编程实现有⾳信道环境下两站点之间⽆差错双⼯通信。
信道模型为8000bps 全双⼯卫星信道,信道传播时延270毫秒,信道误码率为10-5,信道提供字节流传输服务,⽹络层分组长度固定为256字节。
通过该实验,进⼀步巩固和深刻理解数据链路层误码检测的CRC 校验技术,以及滑动窗⼝的⼯作机理。
滑动窗⼝机制的两个主要⽬标:(1) 实现有噪⾳信道环境下的⽆差错传输; (2)充分利⽤传输信道的带宽。
在程序能够稳定运⾏并成功实现第⼀个⽬标之后,运⾏程序并检查在信道没有误码和存在误码两种情况下的信道利⽤率。
为实现第⼆个⽬标,提⾼滑动窗⼝协议信道利⽤率,需要根据信道实际情况合理地为协议配置⼯作参数,包括滑动窗⼝的⼤⼩和重传定时器时限以及ACK 搭载定时器的时限。
这些参数的设计,需要充分理解滑动窗⼝协议的⼯作原理并利⽤所学的理论知识,经过认真的推算,计算出最优取值,并通过程序的运⾏进⾏验证。
通过该实验提⾼同学的编程能⼒和实践动⼿能⼒,体验协议软件在设计上各种问题和调试难度,设计在运⾏期可跟踪分析协议⼯作过程的协议软件,巩固和深刻理解理论知识并利⽤这些知识对系统进⾏优化,对实际系统中的协议分层和协议软件的设计与实现有基本的认识。
(2)实验环境WindowsXP环境PC机,Microsoft Visual C++ 6.0 集成化开发环境。
数据链路层抓包实训报告

一、实训背景数据链路层是OSI七层模型中的第二层,主要负责在相邻节点之间可靠地传输数据帧。
为了更好地理解数据链路层的工作原理,我们进行了数据链路层抓包实训,通过Wireshark工具捕获和分析网络数据包,以了解数据链路层协议的工作过程。
二、实训目标1. 熟悉Wireshark工具的使用方法;2. 理解数据链路层协议的工作原理;3. 捕获和分析网络数据包,验证数据链路层协议的正确性;4. 掌握数据链路层抓包实训的步骤和方法。
三、实训工具1. Wireshark抓包工具;2. 电脑一台;3. 网络设备(如路由器、交换机等);4. 网络连接。
四、实训步骤1. 准备工作(1)确保电脑已接入网络,并安装Wireshark工具;(2)了解实验环境,包括网络拓扑结构、网络设备配置等。
2. 捕获数据包(1)打开Wireshark工具,选择合适的网络接口进行抓包;(2)设置抓包过滤器,例如只捕获特定协议的数据包;(3)启动抓包,观察网络数据包的传输过程。
3. 分析数据包(1)观察数据包的源MAC地址和目的MAC地址,了解数据包的传输路径;(2)分析数据包的帧头信息,包括帧类型、帧控制字段等;(3)查看数据包的数据部分,了解传输的数据内容;(4)根据数据包内容,分析数据链路层协议的工作过程。
4. 验证数据链路层协议(1)根据捕获到的数据包,分析数据链路层协议的帧结构;(2)验证数据链路层协议的工作过程,如数据帧的封装、校验和等;(3)对比协议规范,确认数据链路层协议的正确性。
5. 实验总结(1)整理实验过程中捕获到的数据包,分析数据链路层协议的工作原理;(2)总结实验过程中的经验和教训,提高网络抓包和分析能力。
五、实训结果通过本次实训,我们成功捕获并分析了数据链路层的数据包,了解了数据链路层协议的工作原理。
以下是实验过程中捕获到的部分数据包:图1:以太网帧结构图2:数据链路层协议帧结构通过分析数据包,我们发现数据链路层协议在数据传输过程中,确实按照规范进行了帧的封装、校验和等操作。
实验二 数据链路层实验

实验2 数据链路层实验学号:_______ ______专业:________________姓名:________ _《计算机网络原理》实验2.1 VLAN 配置一、实验目的掌握交换机上创建VLAN 、分配静态VLAN 成员、删除VLAN 的方法。
二、实验内容1.产生两个VLAN ,并验证配置结果;2.为每个VLAN 命名,并分配交换机成员端口给他们;3.进行删除VLAN 的操作;4.理解VLAN1为什么不能被删除。
三、实验环境以太网交换机1台,PC 机5台,标准网线5 根;console 线1根 四、实验组网图五、实验步骤1.准备工作(1)在关机状态下用控制台电缆连接交换机和计算机。
(2)配置各PC :停用组网实验不相关网卡(一般为Realtek 网卡),启用实验组网用(一般为Dlink )网卡,关闭其防火墙,配置IP 、子网掩码。
2.系统视图下输入sysname 命令给交换机重命名。
(1)[Quidway]sysname switchA (2)创建VLAN 2和VLAN 3Ip:192.168.2.14/24Ip:192.168.2.10/2444 Ip:192.168.2.11/24Ip:192.168.2.13/24PAPBPCPDIp:192.168.2.12/24 PC[switchA]vlan 2[switchA]vlan 3(3)查看当前交换机上有几个VLAN.[switchA]display vlan(disp vlan)(4)把端口1、2、3指定给VLAN 2[switchA] VLAN 2 ‘转入VLAN视图[switchA -VLAN 2]port e1/0/1 e1/0/2 e1/0/3 ‘指定该VLAN内包含哪些端口如果VLAN包含多个连续的端口时也可以通过如下命令实现[switchA -VLAN 2]port e1/0/1 to e1/0/3(5)把端口23指定给VLAN 3[switchA]inter e1/0/23 ‘进入接口视图[switchA-interface e1/0/23]port access vlan 3 ‘指定该端口属于VLAN 3(6)用上步的方法把端口24指定给VLAN3(7)查看VLAN 2的信息[switchA]disp vlan 2(8)用ping命令测试网络连通性(9)用display mac-address命令查看mac地址表(10)删除VLAN 2删除该VLAN 2包含的端口,两种方法:一种在接口视图下,一种在VLAN视图下。
计算机与网络物理层和数据链路层相关实验

实验2 物理层和数据链路层相关实验一、实验目的1.了解并掌握在Packet Tracer中使用集线器组建局域网,理解集线器的工作方式,理解碰撞域。
2.理解二层交换机交换表的自学习功能。
二、实验要求1.认真阅读实验内容;2.上机调试,根据命令参数实现相应功能。
3.截图保存运行结果,并结合命令参数进行分析。
三、实验内容和基本原理1.在Packet Tracer中使用集线器组建局域网最初的以太网是共享总线型的拓扑结构,后来发展为以集线器(Hub)为中心的星型拓扑结构,可以将集线器想象成总线缩短为一点时的设备,内部用集成电路代替总线,所以说使用集线器的星型以太网逻辑上仍然是一个总线网。
集线器通常用来连接主机,从一个端口接收信号,并对信号进行整形放大后将其从所有其他端口转发出去,是一个有源的设备。
集线器工作在物理层,并不识别比特流里面的帧,也不进行碰撞检测,只做简单的物理层的转发,如果信号发生碰撞,主机将无法收到正确的数据。
、集线器及其所连接的所有主机都属于同一个碰撞域,不同于广播域,碰撞域是指物理层信号的碰撞,是物理层的概念。
通过将1台集线器与多个主机相连来组建局域网,使用1台主机去ping另1台主机,并在模拟状态下观察ICMP分组的轨迹,理解碰撞域。
然后进一步使用集多台集线器扩展以太网,同样使用1台主机去ping另1台主机,在模拟状态下观察ICMP分组的轨迹。
2. 交换机中交换表的自学习功能交换机是目前局域网中最常使用的组网设备之一,它工作在数据链路层。
数据链路层传输的PDU为帧,不同于工作在物理层的集线器,交换机可以根据帧中的目的MAC地址进行有选择的转发,而不是向所有端口进行广播。
此过程依赖于交换机中的交换表,当交换机收到一个帧时,会根据帧首部中的目的MAC 地址去查找交换表,根据结果将其从相应的端口进行转发,从而可以大大提升网络的性能。
交换机支持即插即用,无需人工配置交换表,交换表的建立是通过交换机自学习得到的。
计算机网络实验 第2章 数据链路层实验

采用总线型或星形拓扑。由于以太网是基于共享总线的广播类型的网络,
所以当网络中有两个或两个以上站点同时发送数据时将引起冲突,因此以 太网使用CSMA/CD协议作为媒体控制协议解决冲突问题。
CSMA/CD协议的基本原理是:站点发送数据前先监听信道,信道 空闲时发送数据;在发送数据过程中持续监听信道,如果监听到冲 突信号则立即停止发送数据;同时发送强化冲突信号,以使网络中 正在发送数据的其它站点能够监听到冲突。
PPP帧格式如图所示
2.PPPoE
PPP协议不适于广播类型的以太网和另外一些多点访问类型的网络,于是 产生了PPPoE(Point-to-Point Protocol over Ethernet)。它为使用桥接以太 网的用户提供了一种宽带接入手段,同时还能提供方便的接入控制和计费。 每个接入用户均建立一个独一无二的PPP会话。会话建立前PPPoE必须通过 发现协议获取远端访问集中器的MAC地址。
第2章 数据链路层实验
实验三: 集线器与交换机的对比试验
3.1
背景知识
1.冲突域与广播域 冲突域:共享信道的传输机制决定了在网络中只能有一个站点发送数据 。如果两个或两个以上站点同时发送数据将发生冲突。虽然以太网在 MAC层采用CSMA/CD协议有效地降低了冲突的可能性,但是由于传播时 延的存在以及多个站点同时监听到信道空闲等情况的存在,冲突仍会发生 。所谓冲突域是指在该域内某一时刻只能有一个站点发送数据,如果两个 站点同时发送数据会引起冲突,则这两个站点处于同一个冲突域内。 广播域:以太网是广播网络,采用共享信道的传输机制来传输数据。在 以太网中,一个站点向所有站点发送数据的传输过程称为广播,这一过程 中传输的数据帧称为广播帧。在以太网中,能够接收到任意站点发送的广 播帧的所有站点的集合称为一个广播域。
数据链路层实验报告

数据链路层实验报告数据链路层实验报告引言:数据链路层是计算机网络中的一个重要组成部分,负责将网络层传递下来的数据分割成帧,并通过物理介质进行传输。
在本次实验中,我们通过搭建实验环境,深入了解和学习了数据链路层的相关知识,并进行了一系列实验。
实验一:帧的构造和解析在这个实验中,我们学习了帧的构造和解析过程。
通过使用C语言编写程序,我们能够手动构造和解析帧。
首先,我们学习了帧的基本结构,包括帧起始标志、目的地址、源地址、数据和帧检验序列等字段。
然后,我们通过实际操作,将这些字段按照规定的格式组装成一个完整的帧,并通过解析程序将其还原。
这个实验帮助我们深入理解了帧的构造和解析过程,为后续实验奠定了基础。
实验二:差错检测在数据链路层中,差错检测是非常重要的一项功能。
在这个实验中,我们学习了差错检测的原理和方法,并通过实验验证了其可靠性。
我们使用C语言编写了差错检测程序,通过给定的数据帧计算CRC校验码,并将其附加到帧的末尾。
然后,我们通过修改帧中的某一位,引入差错,并再次计算CRC校验码。
实验结果表明,差错检测程序能够准确地检测出帧中的差错,并帮助我们进一步理解差错检测的原理。
实验三:流量控制在数据链路层中,流量控制是保证数据传输可靠性的一项重要技术。
在这个实验中,我们学习了流量控制的原理和方法,并通过模拟实验验证了其有效性。
我们使用C语言编写了发送端和接收端的程序,并通过模拟发送端发送数据,接收端接收数据的过程。
实验结果表明,当发送端发送的数据速度超过接收端处理的速度时,接收端能够通过发送ACK帧来控制发送端的数据流量,保证数据传输的可靠性。
实验四:链路管理在数据链路层中,链路管理是保证网络正常运行的重要环节。
在这个实验中,我们学习了链路管理的原理和方法,并通过实际操作验证了其可行性。
我们使用C语言编写了链路管理程序,实现了链路的建立、维护和释放过程。
实验结果表明,链路管理程序能够准确地建立和释放链路,并保证链路的正常运行。
实验2_北航研究生计算机网络实验

实验2_北航研究⽣计算机⽹络实验实验⼆数据链路层在线实验1.在⽹络课程学习中,802.3和ETHERNETII规定了以太⽹MAC层的报⽂格式分为7字节的前导符、1字节的起始符、6字节的⽬的MAC地址、6字节的源MAC地址、2字节的类型、数据字段和4字节的数据校验字段。
对于选中的报⽂,缺少哪些字段,为什么?答:缺少前导符和起始符,和数据校验字段,这两个字段和校验字段在⽹卡接收MAC帧时被去掉了,因此实验抓包软件的报⽂中没有这些字段。
2.查看交换机的MAC地址表,结果为:答:MAC ADDR VLAN ID STATE PORT INDEX AGING TIME000c-2919-8388 1 Learned Ethernet0/1 99B499-bab9-1336 1 Learned Ethernet0/1 292000c-2940-2cbe 1 Learned Ethernet0/2 281B499-bab9-1338 1 Learned Ethernet0/2 301)、解释MAC地址表中各字段的含义?答:MAC ADDR为设备的MAC 地址VLAN ID为端⼝所在的VLAN编号PORT INDEXT 表⽰源MAC地址为由该端⼝号学习来的STATE 表⽰该记录怎么得来的(学习/配置)AGING TIME 表⽰该记录的⽣命时间2)、这个实验能够说明MAC地址表的学习是来源于数据帧的源MAC地址⽽⾮⽬的MAC地址吗?如果能,为什么?如果不能,试给出⼀个验证⽅法。
答:不能。
⽅法:清空交换机的MAC地址表,断开交换机与PCB的连线,然后ping PCB,查看交换机的MAC地址表,这时MAC 中只有PCA的MAC地址学习记录。
3.在VLAN实验中,实验中的计算机能否通讯,请将结果填⼊下表:4.交换机在没有配置VLAN时,冲突域和⼴播域各有哪些端⼝?配置了VLAN以后呢?答:没有配置VLAN时⼴播域:交换机所有的端⼝是⼀个⼴播域冲突域:每个端⼝是⼀个冲突域配置VLAN:⼴播域:同⼀个VLAN属于⼀个⼴播域冲突域:每个端⼝是⼀个冲突域【本⽂档内容可以⾃由复制内容或⾃由编辑修改内容期待你的好评和关注,我们将会做得更好】。
实验二 数据链路层协议分析

实验二以太网链路层帧格式分析一实验目的1、分析EthernetV2标准规定的MAC层帧结构,了解IEEE802.3 标准规定的MAC层帧结构和TCP/IP的主要协议和协议的层次结构。
2、掌握网络协议分析软件的基本使用方法。
3、掌握网络协议编辑软件的基本使用方法。
二实验内容1、学习网络协议编辑软件的各组成部分及其功能;2、学习网络协议分析软件的各组成部分及其功能;3、学会使用网络协议编辑软件编辑以太网数据包;4、理解 MAC 地址的作用;5、理解 MAC 首部中的 LLC—PDU 长度/类型字段的功能;6、学会观察并分析地址本中的 MAC 地址。
三实验环境四实验流程五实验原理在物理媒体上传输的数据难免受到各种不可靠因素的影响而产生差错,为了弥补物理层上的不足,为上层提供无差错的数据传输,就要能对数据进行检错和纠错。
数据链路的建立、拆除、对数据的检错,纠错是数据链路层的基本任务。
局域网(LAN)是在一个小的范围内,将分散的独立计算机系统互联起来,实现资源的共享和数据通信。
局域网的技术要素包括了体系结构和标准、传输媒体、拓扑结构、数据编码、媒体访问控制和逻辑链路控制等,其中主要的技术是传输媒体、拓扑结构和媒体访问控制方法。
局域网的主要的特点是:地理分布范围小、数据传输速率高、误码率低和协议简单等。
1、三个主要技术1) 传输媒体:双绞线、同轴电缆、光缆、无线。
2) 拓扑结构:总线型拓扑、星型拓扑和环型拓扑。
3) 媒体访问控制方法:载波监听多路访问/冲突检测(CSMA/CD)技术。
2、IEEE 802 标准的局域网参考模型IEEE 802 参考模型包括了 OSI/RM 最低两层(物理层和数据链路层)的功能,OSI/RM 的数据链路层功能,在局域网参考模型中被分成媒体访问控制MAC(Medium Access Control) 和逻辑链路控制LLC(Logical Link Control)两个子层。
由于局域网采用的媒体有多种,对应的媒体访问控制方法也有多种,为了使数据帧的传送独立于所采用的物理媒体和媒体访问控制方法,IEEE 802 标准特意把 LLC 独立出来形成单独子层,使 LLC 子层与媒体无关,仅让 MAC 子层依赖于物理媒体和媒体访问控制方法。
实验指导书-实验二:交换机配置与观察

计算机网络实验实验指导书实验名称交换机配置与观察- 1 -一、实验目的1.掌握数据链路层(L2)的基本原理2.掌握观察和配置主机、交换机3.掌握网络协议分析仪的基本使用方法4.观察接口与转发表二、实验背景(一)分组交换机(Packet switch)交换网有很多种类型,电路交换(circuit switched)和分组交换(packet switched)是其中最为常见的两种。
前者主要用于电话系统,而后者用于绝大多数的计算机网络。
如图1-1所示,一个交换网络由节点和链路组成,每个节点都连到一条或多条点到点链路上。
那些连着至少两条链路的节点运行软件,用于将一条链路收到的数据转发到另一条链路上,也就是分组交换机。
计算机通过连接到分组交换机上,可以将分组从一台主机传输到另外一台主机。
分组交换机采用存储转发(store-and-forward)将分组从输入端口交换到正确的输出端口。
并且网络中的链路不是单独占用,而是统计复用。
图1-1 交换网络分组交换网络采用的是星形拓扑结构,利于构建网络链接大量主机,覆盖大片地理区域。
并且增加新主机不会影响现有主机的性能,当网络是基于交换机构建时,交换机到每个节点的链路速度互不影响。
交换网络比媒介共享网络有更好的扩展性,可以增大网络规模,连接更多节点而性能并不明显下降。
根据交换机转发的地址,可以划分其所属的层次。
2层交换机是以太网交换机,基于MAC地址。
3层交换机是IP交换机,基于的是IP地址。
三、实验原理(一)MAC地址与IP地址的关系MAC地址的长度为48位(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如:08:00:20:0A:8C:6D就是一个MAC地址,其中前6位16进制数08:00:20代表网络硬件制造商的编号,它由IEEE分配,而后3位16进制数0A:8C:6D代表该制造商所制造的某个网络产品(如网卡)的系列号。
每个网络制造商必须确保它所制造的每个以太网设备都具有相同的前三字节以及不同的后三个字节。
数据链路层模拟实验报告

数据链路层模拟实验报告1. 协议2模拟实验1.1模拟可靠信道上的传输执行以下命令:./protocol2 50 10 0 0 7得到如下运行结果(包括分析):Tick 10. Proc 1 got good frame: type=Data seq=0 ack=0 payload=1/*进程1收到一个正确帧,类型是Data;分组序列号为0;确认号为0;目前成功接收到1帧*/ Tick 10. Proc 1 sent frame: type=Ack seq=0 ack=0 payload=0/*进程1发送一个帧,类型是Ack;分组序列号为0;确认号为0 */Tick 13. Proc 0 got good frame: type=Ack seq=0 ack=0 payload=0/*进程0收到一个正确帧,类型是Ack;分组序列号为0;确认号为0 */Tick 13. Proc 0 sent frame: type=Data seq=0 ack=0 payload=2/*进程0发送一个帧,类型是Data;分组序列号为0;确认号为0;目前成功发送2帧*/Tick 15. Proc 1 got good frame: type=Data seq=0 ack=0 payload=2/*进程1收到一个正确帧,类型是Data;分组序列号为0;确认号为0;目前成功接收到2帧*/ Tick 15. Proc 1 sent frame: type=Ack seq=0 ack=0 payload=0/*进程1发送一个帧,类型是Ack;分组序列号为0;确认号为0;成功接收到0帧*/Tick 19. Proc 0 got good frame: type=Ack seq=0 ack=0 payload=0/*进程0收到一个正确帧,类型是Ack;分组序列号为0;确认号为0 */Tick 19. Proc 0 sent frame: type=Data seq=0 ack=0 payload=3/*进程0发送一个帧,类型是Data;分组序列号为0;确认号为0;目前成功发送3帧*/Tick 21. Proc 1 got good frame: type=Data seq=0 ack=0 payload=3/*进程1收到一个正确帧,类型是Data;分组序列号为0;确认号为0;目前成功接收到3帧*/ Tick 21. Proc 1 sent frame: type=Ack seq=0 ack=0 payload=0/*进程1发送一个帧,类型是Ack;分组序列号为0;确认号为0 */得出的结论:从实验的数据来看在协议2的模拟过程中Process0模拟的发送端,Process1模拟接收端.在Process0发送一个数据帧(Data)后,Process1接受到以后就立即发送一个确认帧(Ack),Process0接受到Process1的确认帧(Ack)后再接着发送下数据帧(Data),这样就完成了一个传输接收的周期,而payload则记录了成功接收到的帧的(Data)个数,可以将其理解为一个计数器,这个计数器只记录成功接收到的帧(Data)的个数,而不记录成功接收到确认帧(Ack)的个数,当Process0接收到Process1的确认帧后,Process0的payload就自动加1,表示成功发送了一帧(Data),对于Process1,每成功接收到一个数据帧(Data),其payload就自动加1,表示成功接收到了一帧(Data).通过模拟可以看出协议2是一个单工的停-等协议,接收端在接收到发送端发来的一个数据帧之后,发送一个确认帧,等待下一帧.而发送方在发送了一个数据帧之后就不再发送,等待接收方的接收确认帧,待接收到接收方发来的确认帧之后,确认发送成功才发送下一帧.这样的发送方式较无限制的单工协议要稳定,安全,可以保证接收的数据的正确性,同时又可以避免接收方被发送方发送的数据湮没的危险2.协议3模拟实验2.1模拟协议3在不可靠信道上的正常传输请执行以下命令:./protocol3 50 15 0 0 7得到如下运行结果(包括分析):(请在这里记录下运行的结果,并插入类似程序注释的形式对运行结果进行解说)……得出的结论:(请在这里概要性的说明你运行结果总的理解,以及自己得出的结论和感想)……2.2模拟不可靠信道传输中的超时错误请执行以下命令:./protocol3 50 5 0 0 7得到如下运行结果(包括分析):(请在这里记录下运行的结果,并插入类似程序注释的形式对运行结果进行解说)……得出的结论:(请在这里概要性的说明你运行结果总的理解,以及自己得出的结论和感想)……2.3模拟不可靠信道传输中的丢包错误请执行以下命令:./protocol3 100 10 10 0 7得到如下运行结果(包括分析):(请在这里记录下运行的结果,并插入类似程序注释的形式对运行结果进行解说)……得出的结论:(请在这里概要性的说明你运行结果总的理解,以及自己得出的结论和感想)……2.4模拟不可靠信道传输中的校验和错误请执行以下命令:./protocol3 100 10 0 10 7得到如下运行结果(包括分析):(请在这里记录下运行的结果,并插入类似程序注释的形式对运行结果进行解说)……得出的结论:(请在这里概要性的说明你运行结果总的理解,以及自己得出的结论和感想)……3.协议4模拟实验3.1模拟1位滑动窗口协议中的正常传输请执行以下命令:./protocol4 50 10 0 0 7得到如下运行结果(包括分析):(请在这里记录下运行的结果,并插入类似程序注释的形式对运行结果进行解说)……得出的结论:(请在这里概要性的说明你运行结果总的理解,以及自己得出的结论和感想)……3.2模拟1位滑动窗口协议中的超时错误请执行以下命令:./protocol4 50 8 0 0 7得到如下运行结果(包括分析):(请在这里记录下运行的结果,并插入类似程序注释的形式对运行结果进行解说)……得出的结论:(请在这里概要性的说明你运行结果总的理解,以及自己得出的结论和感想)……3.3模拟1位滑动窗口协议中的丢包错误请执行以下命令:./protocol4 50 10 10 0 7得到如下运行结果(包括分析):Tick 5. Proc 0 got good frame: type=Data seq=0 ack=0 payload=0/*进程0成功接收到一帧,类型为Data;序列号为0,确认号为0,目前成功发送0帧*/Tick 5. Proc 0 sent frame: type=Data seq=1 ack=0 payload=1/*进程0成功发送一帧,类型为Data;序列号为1,确认号为0,目前成功发送1帧*/Tick 10. Proc 1 got good frame: type=Data seq=1 ack=0 payload=1/*进程1成功接收到一帧,类型为Data;序列号为1,确认号为0,目前成功发送1帧*/Tick 10. Proc 1 sent frame: type=Data seq=1 ack=1 payload=1/*进程1成功发送一帧,类型为Data;序列号为0,确认号为0,目前成功发送1帧*/Tick 13. Proc 0 got good frame: type=Data seq=1 ack=1 payload=1/*进程0成功接收到一帧,类型为Data;序列号为1,确认号为1,目前成功发送1帧*/Tick 13. Proc 0 sent frame that got lost: type=Data seq=0 ack=1 payload=2/*进程0成功发送一帧,类型为Data;序列号为0,确认号为1,目前成功发送2帧*/Tick 21. Proc 1 got timeout for frame 1/*进程1得到一个超时帧(帧1)*/Tick 21. Proc 1 sent frame that got lost: type=Data seq=1 ack=1 payload=1/*进程0成功接收到一帧,类型为Data;序列号为1,确认号为1,目前成功发送1帧*/Tick 25. Proc 0 got timeout for frame 0/*进程0得到一个超时帧(帧0)*/Tick 25. Proc 0 sent frame: type=Data seq=0 ack=1 payload=2/*进程0成功发送一帧,类型为Data;序列号为0,确认号为1,目前成功发送2帧*/得出的结论:从实验的数据来看,协议4的模拟过程中,Process0,和Process1既是接收端也是发送端,两个进程同时可以接收和发送帧,协议4的一个接收和发送周期大概是这样的:Process0首先发送一个数据帧,Process1成功接收到以后,立即发送一个数据帧给Process0,Process0在接收到Process1发送的数据帧后又立即发送下一数据帧.payload是记录本机成功发送数据帧数的计数器,当收到一个数据帧是计数器就会自动加1.当传输发生超时错误时,发送数据的两端都会收到超时错误的提示,根据提示中的序列号进行数据帧的重传.通过模拟可以看出,协议4是一个双工协议,传输的两端都可以进行数据的传送和接收,一端在接收到对方的数据帧后就接着发送数据帧给对方.可见协议4的传输效率比较高,而且在出错时,可以根据错误提示中的信息将丢失的数据进行重传,保证了传输的数据的完整性,及正确性.3.4模拟1位滑动窗口协议中的校验和错误请执行以下命令:./protocol4 50 10 0 10 7得到如下运行结果(包括分析):(请在这里记录下运行的结果,并插入类似程序注释的形式对运行结果进行解说)……得出的结论:(请在这里概要性的说明你运行结果总的理解,以及自己得出的结论和感想)……下面是古文鉴赏,不需要的朋友可以下载后编辑删除!!谢谢!!九歌·湘君屈原朗诵:路英君不行兮夷犹,蹇谁留兮中洲。
数据链路层实验

实验三协议分析软件使用及数据链路层协议分析一、 实验目的TCP/IP 协议栈分为四层,从下往上依次为网络接口层、网络层、传输层和应用层,而 网络接口层没有专门的协议,而是使用连接在In ternet 网上的各通信子网本身所固有的协 议。
如以太网(Ethernet )的802.3协议、令牌环网(TokenRing )的802.5协议、分组交换网的X.25协议等。
目前Ethernet 网得到了广泛的应用,它几乎成为局域网代名词。
因此,对以太网链路 层的帧格式进行分析验证, 使学生初步了解 TCP/IP 链路层的主要协议以及这些协议的主要用途和帧结构。
(1) 掌握协议分析软件 sniffer 的使用; (2) 熟悉以太网链路层帧格式构成; 二、 实验要求能运用sniffer 工具进行以太网链路层帧格式协议分析。
三、 实验原理以太网简介IEEE 802参考模型把数据链路层分为逻辑链路控制子层(LLC, Logical Link Control )和介质访问控制子层 (MAC Media Access Control )。
与各种传输介质有关的控制问题都放在MAC 层中,而与传输介质无关的问题都放在LLC 层。
因此,局域网对 LLC 子层是透明的,只有具体到 MAC 子层才能发现所连接的是什么标准的局域网。
IEEE 802.3是一种基带总线局域网,最初是由美国施乐(Xerox )于1975年研制成功的,并以曾经在历史上表示传播电磁波的以太 (Ether )来命名。
1981年,施乐公司、数字设备公司(Digital )和英特尔(In tel )联合提出了以太网的规约。
1982年修改为第二版,即DIX Ethernet V2 ,成为世界上第一个局域网产品的规范。
这个标准后来成为IEEE802.3标准的基础。
在 802.3 中使用 1 坚持的 CSMA/Ct X Carrier Sense Multiple Access with CollisionDetection )协议。
《计算机网络基础及应用》 实训文档 第4章 数据链路层抓包实践

实验4-2 数据链路层抓包实践一、实验目的(1)理解数据链路层帧格式(2)掌握抓包软件的使用(3)掌握通过抓包软件抓取帧并进行分析的办法。
二、相关理论数据链路层的传输单位为帧(Frame或称分组),在发送端数据链路层将网络层的数据按照一定格式打包为帧并发送给物理层,在接收端数据链路层将物理层的数据按照一定格式解包为帧并发送给网络层。
目前,在数据链路层使用比较多的是以太网(Ethernet)协议。
以太网帧格式如下:目的Mac地址源Mac地址类型数据校验码6字节6字节2字节46-1500字节4字节目的Mac地址:下一跳的Mac地址,帧每经过一跳(即每经过一台网络设备如交换机)该地址会被替换,直到最后一跳被替换为接收端的Mac地址。
源Mac地址:发送端Mac地址。
类型:用来指出以太网帧内所含的上层协议。
对于IP报文来说,该字段值是0x0800。
对于ARP信息来说,以太类型字段的值是0x0806。
数据:从上层或下层传来的有效数据,如果少于46个字节,必须增补到46个字节。
校验码:CRC校验码,校验数据在传输过程中是否出错。
三、实验内容(1)掌握抓包软件的使用(2)掌握通过抓包软件抓取帧并进行分析的办法四、实验步骤(1)打开Wireshark,其主界面如下:(2)在“抓包”菜单中选中options,可以设置抓包选项,如下图所示,这里我们需要选择要对其进行抓包的网卡。
选择完成后按“start”开始抓包。
过几秒钟后选择菜单capture->stop停止抓包。
显示抓包结果:任意选中一帧,可以看到该帧所在的各层分组的头部如下:通过头部信息可以看出,该帧在数据链路层使用的是Ethernet II协议,到网络层被封装为IP 数据包,到传输层被封装为UDP数据包,没有应用层协议。
点开Ethernet II前的+号,可以看到该帧在数据链路层的详细信息:可以看出该帧的源Mac地址为00:30:18:a9:c5:aa,目的Mac地址为:94:0C:6d:66:00:8a, 类型特征码为0800(即表示IP封装),在数据区可以看到该帧的完整数据(16进制表示,可以在数据区右键选择2进制表示)。
计算机网络原理实验报告

计算机网络原理实验报告一、实验目的1.理解计算机网络基本原理2.掌握计算机数据传输的过程3.了解计算机网络的基本组成二、实验器材1.计算机2.网线3.路由器三、实验过程1.实验一:理解网络分层结构-计算机网络采用分层结构,分为物理层、数据链路层、网络层、传输层、应用层。
-物理层负责传输比特流,主要是光纤、双绞线等物理媒介。
-数据链路层负责将比特流转化为帧,并进行传输以保证数据的可靠性。
-网络层负责寻路和分组转发,将数据包从源节点传输到目标节点。
-传输层负责端到端连接的可靠性和流量控制。
-应用层为用户提供服务,负责通信协议的选择和具体的应用功能。
2.实验二:数据传输过程-数据从源主机通过物理媒介传输到目标主机的过程可以分为三个阶段:发送、传输和接受。
-发送端将数据按照层级结构封装,并通过物理媒介传输到接收端。
-接收端根据层级结构进行解封装和处理,最终将数据交给应用层使用。
3.实验三:计算机网络的基本组成-计算机网络由主机和链路两部分组成。
-主机包括终端设备和网络结点,终端设备有桌面电脑、笔记本电脑、智能手机等,网络结点有路由器、交换机等。
-链路是连接主机之间和主机与网络结点之间的通信路径。
四、实验结果在实验过程中,我成功地理解了计算机网络的基本原理,掌握了计算机数据传输的过程,并了解了计算机网络的基本组成。
实验结果表明,计算机网络是一个复杂的系统,需要多个层级结构相互配合才能实现数据的传输和通信。
五、实验总结通过本次实验,我深入理解了计算机网络的基本原理,掌握了计算机数据传输的过程,并了解了计算机网络的基本组成。
实验过程中,我遇到了一些问题,但通过与同学们的讨论和老师的指导,我成功地解决了这些问题,并达到了实验的目标。
六、总结和建议总的来说,本次实验对我来说是一次很好的学习机会,通过实践操作,我深入理解了计算机网络的基本原理。
然而,实验时间比较紧张,希望老师能够给予更多的实验训练的时间,让我们有更多的机会去实践和探索。
链路层协议实验报告

一、实验目的1. 理解链路层协议的基本概念和功能。
2. 掌握链路层协议的常见类型及其工作原理。
3. 熟悉链路层协议的实验方法,提高动手实践能力。
二、实验内容1. 以太网协议2. ARP协议3. PPP协议三、实验原理1. 以太网协议以太网是一种局域网技术,它定义了网络拓扑结构、访问控制方式和传输速率等。
以太网帧格式包括源MAC地址、目的MAC地址、类型字段和CRC校验码。
以太网使用CSMA/CD(载波侦听多路访问/碰撞检测)机制来控制访问网络。
2. ARP协议ARP(Address Resolution Protocol)协议用于将IP地址映射到MAC地址。
在网络通信中,当一台主机需要与其他主机通信时,通常只知道对方的IP地址,ARP 协议的作用就是通过IP地址来确定主机的MAC地址。
3. PPP协议PPP(Point-to-Point Protocol)是一种数据链路层协议,用于在点对点链路上传输多种协议的数据。
PPP协议包括三个组成部分:链路控制协议(LCP)、网络控制协议(NCP)和链路质量监测(LQM)。
四、实验步骤1. 以太网协议实验(1)配置两台计算机,分别设置IP地址、子网掩码和默认网关。
(2)使用ping命令测试两台计算机之间的连通性。
(3)观察并记录两台计算机发送和接收的数据包,分析以太网帧格式。
2. ARP协议实验(1)在一台计算机上运行arp命令,查看ARP缓存表。
(2)在另一台计算机上修改IP地址,然后使用arp命令查看ARP缓存表,观察ARP协议如何更新MAC地址映射。
(3)在两台计算机之间发送和接收数据包,观察ARP协议在数据传输过程中的作用。
3. PPP协议实验(1)使用PPP协议连接两台计算机,配置相应的IP地址、子网掩码和默认网关。
(2)使用ping命令测试两台计算机之间的连通性。
(3)观察并记录PPP协议的配置过程,分析PPP协议的帧格式。
五、实验结果与分析1. 以太网协议实验实验结果表明,两台计算机之间可以通过以太网协议进行通信。
实验二-IEEE802标准和以太网

实验2 IEEE802标准和以太网【实验目的】1. 掌握以太网的报文格式2. 掌握MAC地址的作用3. 掌握MAC广播地址的作用4. 掌握LLC帧报文格式【学时分配】2学时【实验环境】1.实验设备安装有Packet Tracer6的计算机一台。
2. 实验拓扑PC IP地址子网掩码PC0 192.168.1.1 255.255.255.0PC1 192.168.1.2 255.255.255.0PC2 192.168.1.3 255.255.255.0PC3 192.168.1.4 255.255.255.0【实验内容】1. 观察以太网帧的封装格式。
2.对比单播以太网帧和广播以太网帧的目标MAC地址。
【实验原理】一. OSI模型和TCP/IP协议族1. OSI简介国际标准化组织(ISO)成立于1947年,它是个多国团体,专门就一些国际标准达成世界范围的一致。
网络方面的ISO标准就是OSI(开放系统互连)模型。
它是在20世纪70年代后期问世的。
在不需要改变底层硬件或软件逻辑的情况下,OSI模型使两个不同的系统能够较容易地通信。
OSI模型并不是协议,它是个灵活的、稳健的和可互操作的模型,用来设计网络体系结构,它使得所有类型的计算机系统可以通信。
OSI模型包括7个层次,每一层都定义了通过网络传送信息的一些过程,如下图所示。
掌握了OSI模型的基本概念后,就有了学习数据通信较牢固的基础。
图1-1 OSI模型2. OSI模型中的层次(1)物理层物理层协调在物理媒体中传送比特流所需的各种功能。
物理层涉及到接口和传输媒体的机械的和电气的规约。
它还定义了这些物理设备和接口在传输过程中所必须完成的任务。
(2)数据链路层数据链路层把物理层(即原始的传输设施)转换为可靠的链路。
(3)网络层网络层负责把数据包从源点交付到终点,这可能要跨越多个网络。
数据链路层是监督在同一个链路上的两个相邻节点之间数据包的交付,而网络层则确保每一个数据包能够从它的源点到达终点。
实验二数据链路层实验

实验二数据链路层实验一、实验目的本实验旨在通过实际操作,加深对数据链路层的理解,掌握数据链路层的基本概念、协议和实现方法。
二、实验设备和工具1. 计算机:一台2. 网络摹拟器软件:如GNS3、Packet Tracer等3. 网络线:若干条4. 交换机:一台三、实验步骤1. 网络拓扑搭建a. 打开网络摹拟器软件,创建一个新项目。
b. 在项目中添加两台计算机和一台交换机,并连接它们。
c. 配置计算机的IP地址和子网掩码,确保它们在同一网段内。
2. 数据链路层基本概念实验a. 打开两台计算机的命令行界面。
b. 在计算机1上使用ping命令向计算机2发送数据包,并观察结果。
c. 分析ping命令的过程,了解数据链路层的作用和功能。
3. 数据链路层帧封装实验a. 在计算机1上创建一个文本文件,写入一段文字。
b. 使用数据链路层的帧封装方法,将文本文件封装成数据帧。
c. 将封装后的数据帧发送给计算机2,并接收并解析数据帧。
d. 比较发送前和接收后的数据是否一致,验证数据链路层帧封装的正确性。
4. 数据链路层差错检测实验a. 在计算机1上创建一个文本文件,写入一段文字。
b. 使用数据链路层的差错检测方法,对文本文件进行差错检测。
c. 将差错检测后的结果发送给计算机2,并进行差错检测验证。
d. 比较发送前和接收后的结果,验证数据链路层差错检测的准确性。
5. 数据链路层流量控制实验a. 在计算机1上创建一个较大的文件。
b. 使用数据链路层的流量控制方法,控制文件的发送速率。
c. 将文件发送给计算机2,并观察发送过程中的流量操纵情况。
d. 分析流量控制的效果,验证数据链路层流量控制的可行性。
6. 数据链路层可靠传输实验a. 在计算机1上创建一个文本文件,写入一段文字。
b. 使用数据链路层的可靠传输方法,将文本文件分割成多个数据包。
c. 将数据包发送给计算机2,并进行接收和重组。
d. 比较发送前和接收后的文本内容,验证数据链路层可靠传输的正确性。
计算机网络关于数据链路层协议的实验报告

实验报告实验名称数据链路层协议的理解与实现课程名称计算机网络姓名王颖学号16008404日期地点成绩教师王磊电气工程学院东南大学实验一数据链路层协议的理解与实现一.实验目的:1.加深对流量控制、差错处理方法的理解;2.熟悉TCP/IP编程, 将书本知识运用到实验中;3.开拓学生的创新意识,培养学生的独立动手操作的能力;二.实验内容:1.利用已有的模拟信道程序,编制发送、接收程序的部分模块,使系统具有可靠的收发功能。
具体要求1)采用无连接Socket编程2)地址与端口发送端:地址:127.0.0.1 端口:8001接收端:地址:127.0.0.1 端口:600134)需考虑的异常情况:出错、丢失、延时5)采用停等协议6)单工方式7)ACK/NAK的表示:ACK:0x06NAK:0x152.待完成模块要求1)发送程序:偶校验;编码;发送、接收;差错处理、流量控制。
2)接收程序:检查偶校验;应答;发送、接收三.实验环境(软件、硬件及条件):Microsoft visual C++ 6.0四.实验原理1、程序实现的原理Windows Sockets(套接字) 是在Windows下一套开放的、支持多种协议的网络编程接口规范。
为Windows下网络异步通信提供了一种方便的开发和运行环境。
Windows Sockets规范建立在BSD UNIX 中实现的Berkeley 套接字模型上,现已是TCP/IP网络的标准。
它独立于底层的协议。
其原理示意图如下1)数据链路层数据链路层目的是建立在物理层基础上,通过一些数据链路层协议,在不太可靠的物理链路上实现可靠的数据传输。
即数据链路层提供网络中相邻节点之间可靠的数据通信。
数据链路层的主要功能是为网络层提供连接服务,并在数据链路连接上传送帧。
依据功能可以分为有连接和无连接两种。
本实验采用的是有应答,无连接服务。
无连接服务时,发送方的数据链路层要发送数据时,就直接发送数据帧。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二数据链路层实验实验项目性质:设计性计划学时:4实验环境:实验日期:2015年10月14日一、实验目的1、理解并掌握数据链路层协议的功能。
2、进一步理解停止等待协议和滑动窗口协议的基本工作原理。
3、掌握计算机网络协议的基本实现技术。
4、利用RS 232C通信接口实现两台PC间传输文件。
二、实验内容与要求1、设计完成数据链路层相关类;2、开发一个使用RS232C接口在两台计算机之间采用停止等待协议传输信息(文件)的程序;3、开发一个使用RS232C接口在两台计算机之间采用滑动窗口协议传输文件的程序。
完成实验内容中的第1、2部分,有能力的同学完成全部内容。
三、实验(设计)仪器设备和材料清单计算机两台,串行电缆一根。
四.相关知识1 数据路层概述数据链路层协议应提供的基本功能有:(1) 数据在数据链路上的正常传输(建立、维护和释放)。
(2) 帧定界与同步,以实现透明传输。
(3) 差错控制和流量控制。
(4) 透明传输。
2 数据成帧方法在数据链路层,为实现透明传输及进行差错控制和流量控制,在把数据送到物理层之前,需将若干个数据组成一帧,并在其中加上其他必要的控制信息。
控制信息形成(数据成帧)的方法有以下几种:字符计数法、带字符填充的首尾界符法、带填充位的首尾标志法、物理层编码违例法。
3 差错控制与流量控制为确保帧可靠地交付接收方,接收方在收到帧后,应向发送方应答,告知是否正确收到帧,因此在数据链路层要建立差错控制机制:差错控制方法、CRC循环冗余校验、流量控制。
4 数据链路层协议(1)停止等待协议停止等待协议的基本原理是:发送方在数据帧中加入校验码(CRC),由接收方检查;若出错,返回NAK帧(否认帧),否则发送ACK帧(确认帧);发送方收到NAK帧后重发数据帧,若收到ACK帧可发送下一帧。
当超时计时事件发生时,重发丢失的帧,这样可通过等待发送来实现流量控制,如图3-2所示。
停止等待协议发送方的算法如下:(1) 从主机取一个数据帧。
(2) V(s) <--0,发送方状态变量初始化。
(3) N(s)<-- V(s)(置发送序号),将数据帧送发送缓冲区。
(4) 将发送缓冲的数据发送。
(5) 置超时定时器。
(6) 等待(下列三种情况)。
(7) 收到回答ACK ,从主机取一个新数据帧,V(s) <--[1-V(s)],转(3)。
图3-2停止等待协议工作原理示意图(8) 收到回答NAK ,转(4)。
(9) 超时,转(4)。
接收方的算法如下:(1) V(r) <--0, 接收方状态变量初始化。
(2) 等待。
(3) 收到一个数据帧后,测试正确继续;否则传输出错,转(8)。
(4) 如果接收到的帧序号等于期待的帧序号( N(s) = V(r)) ,继续;否则丢弃该数据,转(7)。
(5) 将接收帧的数据部分上交主机。
(6) V(r) <--[1- V(r)]。
(7) 向发方发ACK ,转(2)。
(8) 向发方发NAK ,转(2)。
停止等待协议的算法流程如图3-3所示,其中V(s) 和V(r)分别是发送方和接收方维护的状态变量,N(s)是发送序号。
图3-3停止等待协议的算法停止等待协议算法简单,只适合传送少量的大的帧的情况。
但大的数据块要分成许多帧传送,此时停止等待协议不适用,原因是本协议只允许同时只有一帧在链路上传送,链路利用率低。
(2)连续重传ARQ协议为了提高信道利用率,发送方发完一帧后,不必停下来等待对方的应答,可以连续发送若干帧;如果在发送过程中收到接收方的肯定应答,可以继续发送;若收到对其中某一帧的否认帧,则从该帧开始的后续帧全部重发,如图3-4。
由于减少了等待时间,整个通信的吞吐量就提高了,提高了信道利用率。
但回退重传(Go-back-N)会导致某些已正确接收的帧的重传,因此降低了发送效率。
当误码率较低时,连续重传ARQ优于停止等待协议;反之则不一定。
图3-4连续重传ARQ协议工作原理示意图(3)滑动窗口协议(Sliding Window Protocol)在使用连续重传ARQ协议时,如果发送端一直没有收到对方的确认信息,那么实际上发送端并不能无限制地发送其数据帧。
这是因为:(1) 当未被确认的数据帧的数目太多时,只要有一帧出了差错,就可能要有很多的数据帧需要重传,这必然要白白花费较多的时间,因而增大开销。
(2) 为了对所发送出去的大量数据帧进行编号,每个数据帧的发送序号也要占用较多的比特数,这样又增加了一些不必要开销。
连续ARQ协议中,每一个要发出的帧都包含一个序列号,范围从0到最大(0 ~ 2n– 1,一般用n个二进制位表示),使得序列号能恰好放入n位的字段中,n同时表示缓存器的大小。
滑动窗口协议的工作原理如下:(1) 任何时刻,发送端始终保持一个已发送但尚未确认的帧的序号表,称为发送窗口。
发送窗口的上界表示要发送的下一个帧的序号,下界表示未得到确认的帧的最小编号。
发送窗口= 上界-下界,大小可变;窗口内的序列号代表已发送了的但尚未确认的帧。
(2) 发送端每发送一个帧,序号取上界值,上界加1;每接收到一个正确响应帧,下界加1;(3) 接收端有一个接收窗口,大小固定,但不一定与发送窗口相同。
接收窗口的上界表示允许接收的序号最大的帧,下界表示希望接收的帧;(4) 接收窗口表示允许接收的信息帧,落在窗口外的帧均被丢弃。
序号等于下界的帧被正确接收,并产生一个响应帧,下界加1。
接收窗口大小不变。
正因为收发两端的窗口按照以上的规律不断地向前滑动,因此这种协议又称为滑动窗口协议。
当发送窗口和接收窗口的大小都等于1时,就是最初讨论的停止等待协议。
下图3-5为滑动窗口的原理,它采用三位编码,顺序号为0-7,图中方框内表示发送方可以发送7帧,序号从6开始,每发送一帧,窗口左边界向里收缩,每收到一个确认,窗口向右滑动。
接收方每一帧,窗口左边向右收缩,每发送相应后窗口向右扩展。
图3-5滑动窗口协议中的发送窗口和接收窗口假设窗口为7帧,最上面的A发送7帧,但发送后3帧未收到确认,于是A把窗口收缩到4帧F3-F7。
但此时B发送确认RR3表明已经收到0-2帧,并准备接收3-7帧。
A 收到确认RR3,窗口向外滑动3帧,表示A可以从F3开始发送7帧。
接着发送F3-F6。
若B返回确认RR4,表示已经接收这些帧,并允许A发送F7开始的7帧。
图3-6滑动窗口协议工作原理示意图。
AB图3-6滑动窗口协议工作原理示意图可以证明,当用n个比特进行编号时,若发送窗口的大小为W T,接收窗口的大小为W R,则只有W T≤2n-1 和W T+W R≤2n成立时,滑动窗口协议才能正常工作。
(4)选择重传ARQ协议为了进一步提高信道的利用率,可设法只重传出现差错的数据帧或者是定时器超时的数据帧。
但这时必须加大接收窗口,以便先收下发送序号不连续但仍处在接收窗口中的那些数据帧,等到所缺序号的数据帧收到后再一并送交主机。
这就是选择重传ARQ协议。
使用选择重传ARQ协议可以避免重复传送那些本来已经正确到达接收端的数据帧。
但付出的代价是在接收端要设置具有相当容量的缓存空间,这在许多情况下是不够经济的。
因此选择重传ARQ协议在目前就远没有连续重传ARQ协议使用得那么广泛。
5 面向比特的链路控制规程HDLC高级数据链路控制HDLC(High-level Data Link Control)是在IBM公司著名的体系结构SNA上的数据链路层的面向比特的规程SDLC(Synchronous Data Link Control)基础上发展起来的,由ISO把SDLC修改后称为国际标准ISO 3309。
从网络层交下来的分组,变成为数据链路层的数据。
数据链路层的数据传送是以帧为单位的。
也就是说,数据链路层的PDU是帧。
帧是一个具有固定的格式数据块。
一个HDLC 帧由标志、地址、控制、信息及帧校验等5个字段组成。
如图3-7所示。
HDLC有三种帧类型,由控制字段加以区分。
HDLC帧中各字段的作用及含义如下:标志F 地址A 控制C 信息Infor 帧校验序列FCS标志F帧校验区间透明传输区间图3-7HDLC帧结构(1) 标志字段F(Flag)帧的边界,标识一个帧的开始与结束;当连续传输两个帧时,前一个帧的结束标志字段F可以兼作后一帧的起始标志字段。
其内容为:01111110。
在两个标志字段之间的比特串中,如果碰巧出现了和标志字段F一样的比特组合,那么就会误认为是帧的边界。
为了避免出现这种错误,HDLC采用零比特填充法使一帧中两个F字段之间不会出现6个连续1。
(2) 地址字段A(Address)基本单位为8比特,需要时可以8比特为单位扩展。
这时用地址字段的第1位表示扩展位,其余7位为地址位。
当某个地址字段的第1位为0时,则表示下一个地址字段的后7位也是地址位。
当这个地址字段的第1位为1时,即表示这已是最后一个地址字段了。
(3) 控制字段C(Control)控制字段占8比特,其定义如图3-8所示。
HDLC用其将帧划分为信息帧(Information)、监督帧(Supervisory)和无编号帧(Unnumbered)等三大类。
它们的简称分别是I帧,S帧和U 帧。
图3-8控制字段(4) 信息字段I(Information)信息字段可以任意长,只有信息帧才有该字段。
(5) 帧校验序列FCS(Frame Check Sequence)字段本字段共占16bit,校验的范围是从地址字段的第1个比特起,到信息字段的最末1个比特为止。
它采用的生成多项式是x16十x12+x5十1,即CRC—CCITT。
HDLC的通信过程要经过建立数据链路、数据传输、数据链路拆除三个阶段。
五、结果分析(可根据需要附加页)六、主要源代码using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Threading;using System.Runtime.InteropServices;using NetProject;namespace DataLink_Exp{public partial class MainForm : Form{static MainForm mHANDLE=null; //主窗体名柄,在线程中访问static Thread Mon_Thread=null; //监视线程private ChildForm sendForm = null; //发送子窗口对象private ChildForm rcvForm = null; //接收子窗口对象static Physical PHL = null; //物理层实体static DataLink DLL = null; //数据链路层实体delegate void SetTextCallback(byte[] buffer);public MainForm(){InitializeComponent();mHANDLE = this;}private void MainForm_Load(object sender, EventArgs e){//初始化,创建子窗体,启动监视线程sendForm = new ChildForm();sendForm.MdiParent = this;sendForm.Text = "发送窗口";//this.MdiChildren.Length.ToString(); = "SendWindow";sendForm.Show();rcvForm = new ChildForm();rcvForm.MdiParent = this;rcvForm.Text = "接收窗口"; = "ReceiveWindow";rcvForm.rtxBox.ReadOnly = true;rcvForm.Show();youtMdi(System.Windows.Forms.MdiLayout.TileVertical);//其他排列方法:Cascade、TileHorizontalPHL = new Physical("COM3");DLL = new DataLink(); //创建数据链路层对象DLL.setPHL(PHL); //连接物理层sendForm.Enabled = false; //发送窗口禁止编辑//创建并启动监视线程Mon_Thread = new Thread(newThreadStart(this.MonitorThread));Mon_Thread.Start();}private void disconnect_Click(object sender, EventArgs e){ //关闭串行口PHL.Close();connect.Enabled = true;sendForm.Enabled = false;}private void connect_Click(object sender, EventArgs e){ //打开串行口// port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);PHL.Open();sendForm.Enabled = true;connect.Enabled = false;disconnect.Enabled = true;}private void Receive(byte [] buffer) //接收数据并显示{ //写实际接收代码if (this.rcvForm.rtxBox.InvokeRequired) {SetTextCallback d = new SetTextCallback(Receive);this.Invoke(d, new object[] {buffer });}else {string Msg = Encoding.Unicode.GetString(buffer, 0, buffer.Length); //编码格式转换this.rcvForm.rtxBox.Text += Msg;//收到的信息显示} }public static void Send(string Msg){ //发送子窗体高层向低层发送数据(使用<Ctrl>+<T>) byte[] buffer = Encoding.Unicode.GetBytes(Msg); //发送前进行编码格式转换DLL.Send(buffer);// PHL.Send(buf); //数据送物理层SAP下行队列,发送数据(物理层实验用)}//监视线程函数,运行协议处理方法,接收传输给当前应用的数据。