计网实验报告(三) (4500字)

合集下载

计网实验总结[5篇范文]

计网实验总结[5篇范文]

计网实验总结[5篇范文]第一篇:计网实验总结计算机网络实验总结计网的六次实验就这样度过了,在我看来这六次实验通过自己动手的得到的知识要比我们坐在教室听着老师的知识得到的要多。

实践是检验真理的标准,如果知识简单的了解理论,而不亲手尝试一下就只是知识,并不能成为自己以后真正能用到的,所以我很感谢有这次实验课。

通过这次实验课,我初步了解了计算机网络的构架,了解了怎样建立路由器连接,如何通过交换机建立内网。

在这两个基础实验的铺垫下逐步模拟一个完整的企业网络,这对以后从事网络构建有很大的帮助。

不仅在实验课上学到了东西,也在之前的预习环节通过查找资料了解了很多知识。

若是平时我们肯定不会自己去了解这些有关本专业的知识,但通过这次试验我学到了很多关于网络的知识,比如VLAN、DNS、ACL,这些名词可能在生活中经常听到,但具体的工作原理和用途却了解的少之又少,这次试验中出现了这些名词,通过了解反而对这些方面更有兴趣,我觉得这是很重要的。

而对于这次实验课我印象最深的就要数第一个实验——双绞线的制作了,日常生活中上网时常常会用到网线,这次自己亲手制作了一次网线感觉很有意思也了解了如何制作,希望这些知识以后能运用到生活中,这样就更使生活变得更加有趣。

第二篇:计控实验三实验三PID数字控制器设计实验目的1、掌握利用Simulink建立离散控制系统结构模型和进行仿真的方法;2、掌握利用扩充临界比例度法选择PID数字控制器参数的方法。

实验内容1、系统的对象模型用二阶惯性环节表示,即传递函数为G(s) K(T1s+1)(T2s+1), 其中各参数分别为:K=5,T1=0.5,T2=0.1。

2、用Matlab中SIMULINK工具箱,组成一个离散控制系统,如下图所示。

3、采用扩充临界比例度法, 整定数字控制器的参数T、Kp、TI、KI。

a)选择一个合适的采样周期T(参考值T=0.05),控制器作纯比例Kp 控制;b)调整Kp的值,使系统出现临界振荡,记下相应的临界振荡周期Tu和临界振荡增益Ku;c)选择合适的控制度(控制度分别选1.05和1.5)。

计算机网络课程实验报告

计算机网络课程实验报告

计算机网络课程实验报告计算机网络课程实验报告引言:计算机网络课程实验是培养学生对计算机网络原理和技术的理解和应用能力的重要环节。

通过实验,我们可以巩固课堂所学的理论知识,掌握网络设备的配置和管理技巧,提高网络故障排查和解决问题的能力。

本文将结合实际实验过程,总结并分析我们在计算机网络课程实验中的收获和体会。

实验一:网络拓扑搭建与配置在实验一中,我们需要搭建一个简单的局域网,通过交换机连接多台计算机,并进行网络设备的基本配置。

通过实验,我们学会了如何正确连接和配置交换机、路由器和计算机,了解了网络拓扑的概念和组网原理。

同时,在实验过程中,我们也遇到了一些问题,如网络设备的IP地址冲突、网络延迟等,通过分析和解决这些问题,我们加深了对网络故障排查和解决问题的理解。

实验二:网络通信与数据传输实验二主要是通过Wireshark等工具来抓包分析网络数据传输过程。

我们学会了如何使用Wireshark捕获网络数据包,并分析数据包的结构和内容。

通过实验,我们了解了网络通信的基本原理,如TCP/IP协议栈、数据包的封装和解封装过程等。

同时,我们也发现了一些网络通信中的问题,如丢包、重传等,通过对数据包的分析和解读,我们可以更好地理解和解决这些问题。

实验三:网络安全与防护实验三主要是学习和实践网络安全相关的知识和技术。

我们了解了网络攻击的常见手段和防御方法,如防火墙、入侵检测系统等。

通过实验,我们学会了如何配置和管理防火墙,设置访问控制列表,提高网络的安全性。

同时,我们也体验了一些网络攻击的模拟实验,如DDoS攻击、ARP欺骗等,通过对攻击过程的模拟和分析,我们更深入地了解了网络安全的重要性和挑战。

实验四:网络性能测试与优化实验四主要是通过网络性能测试工具来评估和优化网络的性能。

我们学会了如何使用Ping、Traceroute等工具来测试网络的连通性和延迟,通过分析测试结果,我们可以找出网络中的瓶颈和问题,并采取相应的优化措施。

计算机网络技术实验报告

计算机网络技术实验报告

计算机网络技术实验报告一、实验目的本次计算机网络技术实验的主要目的是深入了解和掌握计算机网络的基本原理、协议和技术,通过实际操作和实验,提高对网络体系结构、网络设备配置、网络服务搭建以及网络安全等方面的认识和实践能力。

二、实验环境1、硬件环境计算机若干台,具备以太网卡。

交换机、路由器等网络设备。

网线、跳线等连接线缆。

2、软件环境Windows 操作系统。

网络模拟软件,如 Packet Tracer。

命令行工具,如 CMD 终端。

三、实验内容与步骤(一)网络拓扑结构的搭建1、设计简单的网络拓扑结构,包括多个计算机节点、交换机和路由器的连接。

2、使用网线将各个设备按照设计的拓扑结构进行物理连接。

(二)IP 地址规划与配置1、为网络中的每个节点分配合理的 IP 地址、子网掩码、网关等参数。

2、在计算机系统中通过网络设置界面或命令行工具进行 IP 地址的配置。

(三)网络设备的基本配置1、登录交换机和路由器,设置设备名称、管理密码等基本信息。

2、配置交换机的 VLAN 划分,实现不同网段之间的隔离。

3、配置路由器的静态路由和动态路由协议,实现网络之间的互联互通。

(四)网络服务的搭建与测试1、在一台计算机上搭建 Web 服务器,安装 IIS 或 Apache 等服务软件,并配置网站内容。

2、从其他计算机上访问搭建的 Web 服务器,测试网络服务的可用性和性能。

(五)网络安全设置1、配置防火墙规则,限制网络访问权限,防止非法入侵。

2、启用网络访问控制列表(ACL),对特定的 IP 地址或端口进行访问控制。

四、实验结果与分析(一)网络拓扑结构搭建结果成功搭建了设计的网络拓扑结构,各设备之间物理连接正常,指示灯显示工作状态正常。

(二)IP 地址配置结果通过查看计算机的网络设置和使用命令行工具进行IP 地址的验证,确认各节点的 IP 地址、子网掩码和网关配置正确,网络内的计算机能够相互通信。

(三)网络设备配置结果交换机的 VLAN 划分成功,不同 VLAN 之间的计算机无法直接通信,实现了网段隔离的目的。

计算机网络实验报告(6篇)

计算机网络实验报告(6篇)

计算机网络实验报告(6篇)计算机网络实验报告(通用6篇)计算机网络实验报告篇1一、实验目的1、熟悉微机的各个部件;2、掌握将各个部件组装成一台主机的方法和步骤;3、掌握每个部件的安装方法;4、了解微型计算机系统的基本配置;5、熟悉并掌握DOS操作系统的使用;6、掌握文件、目录、路径等概念;7、掌握常用虚拟机软件的安装和使用;8、熟悉并掌握虚拟机上WINDOWS操作系统的安装方法及使用;9、掌握使用启动U盘的制作和U盘安装windows操作系统的方法;10、了解WINDOWS操作系统的基本配置和优化方法。

二、实验内容1.将微机的各个部件组装成一台主机;2.调试机器,使其正常工作;3.了解计算机系统的基本配置。

4.安装及使用虚拟机软件;5.安装WINDOWS7操作系统;6.常用DOS命令的使用;7.学会制作启动U盘和使用方法;8.WINDOWS7的基本操作;9.操作系统的基本设置和优化。

三、实验步骤(参照实验指导书上的内容,结合实验过程中做的具体内容,完成此项内容的撰写)四、思考与总结(写实验的心得体会等)计算机网络实验报告篇2windows平台逻辑层数据恢复一、实验目的:通过运用软件R-Studio_5.0和winhe_对误格式化的硬盘或者其他设备进行数据恢复,通过实验了解windows平台逻辑层误格式化数据恢复原理,能够深入理解并掌握数据恢复软件的使用方法,并能熟练运用这些软件对存储设备设备进行数据恢复。

二、实验要求:运用软件R-Studio_5.0和winhe_对电脑磁盘或者自己的U盘中的删除的数据文件进行恢复,对各种文件进行多次尝试,音频文件、系统文件、文档文件等,对简单删除和格式化的磁盘文件分别恢复,并检查和验证恢复结果,分析两个软件的数据恢复功能差异与优势,进一步熟悉存储介质数据修复和恢复方法及过程,提高自身的对存储介质逻辑层恢复技能。

三、实验环境和设备:(1)Windows _P 或Windows 20__ Professional操作系统。

《计算机网络实验》实验报告

《计算机网络实验》实验报告

《计算机网络实验》实验报告一、实验目的计算机网络实验是计算机相关专业学习中的重要实践环节,通过实验操作,旨在深入理解计算机网络的基本原理、协议和技术,提高我们的动手能力和解决实际问题的能力。

具体目的包括:1、熟悉计算机网络的体系结构和各层协议的工作原理。

2、掌握网络设备的配置和管理方法,如交换机、路由器等。

3、学会使用网络工具进行网络性能测试和故障诊断。

4、培养团队合作精神和沟通能力,提高解决复杂问题的综合素养。

二、实验环境本次实验在学校的计算机网络实验室进行,实验室配备了以下设备和软件:1、计算机若干台,安装了 Windows 操作系统和相关网络工具软件。

2、交换机、路由器等网络设备。

3、网络线缆、跳线等连接设备。

三、实验内容及步骤实验一:以太网帧的捕获与分析1、打开网络协议分析软件 Wireshark。

2、将计算机连接到以太网中,启动捕获功能。

3、在网络中进行一些数据传输操作,如访问网站、发送文件等。

4、停止捕获,对捕获到的以太网帧进行分析,包括帧的格式、源地址、目的地址、类型字段等。

实验二:交换机的基本配置1、连接交换机和计算机,通过控制台端口进行配置。

2、设置交换机的主机名、管理密码。

3、划分 VLAN,并将端口分配到不同的 VLAN 中。

4、测试不同 VLAN 之间的通信情况。

实验三:路由器的基本配置1、连接路由器和计算机,通过控制台端口或Telnet 方式进行配置。

2、设置路由器的接口 IP 地址、子网掩码。

3、配置静态路由和动态路由协议(如 RIP 或 OSPF)。

4、测试网络的连通性。

实验四:网络性能测试1、使用 Ping 命令测试网络的延迟和丢包率。

2、利用 Tracert 命令跟踪数据包的传输路径。

3、使用网络带宽测试工具测试网络的带宽。

四、实验结果与分析实验一结果与分析通过对捕获到的以太网帧的分析,我们清楚地看到了帧的结构,包括前导码、目的地址、源地址、类型字段、数据字段和帧校验序列等。

计算机网络综合实验报告参考5篇

计算机网络综合实验报告参考5篇

计算机网络综合实验报告参考5篇计算机网络综合实验报告参考 (1) ××大学校园网解决方案一、需求分析建设一个以办公自动化、计算机辅助教学、现代计算机校园文化为核心,以现代网络技术为依托,技术先进、扩展性强、能覆盖全校主要楼宇的校园主干网络,将学校的各种pc机、工作站、终端设备和局域网连接起来,并与有关广域网相连,在网上宣传自己和获取Internet网上的教育资源。

形成结构合理,内外沟通的校园计算机系统,在此基础上建立满足教学、研究和管理工作需要的软硬件环境,开发各类信息库和应用系统,为学校各类人员提供充分的网络信息服务。

系统总体设计将本着总体规划、分步实施的原则,充分体现系统的技术先进性、高度的安全可靠性,同时具有良好的开放性、可扩展性、冗余性。

本着为学校着想,合理使用建设资金,使系统经济可行。

具体包括下以几个方面:1、内网络能够高速访问FTP服务器现在或上传文件实现资源共享功能,实现对不同类型的用户划分不同的权限,限制不同类型的用户只能访问特定的服务资源。

可以下载和上传资料文件,访问速度可以对指定的用户进行级别的划分。

2、建设Web服务器对外实现信息发布,对内实现教学教务管理。

网站发布学校新闻、通知、学校的活动等相关内容。

实现学生能够在网上进行成绩查询、网上报名、网上评教等功能;以及教师的信息查询、教学数据上传等。

3、建设邮件服务器以满足校园内部之间和内、外网这间的大量邮件传输的需求。

4、实现内网划分多个VLAN,实现校园内不同校区,不同楼宇,不同楼层的多客户接入。

5、内部实现PC间实现高速互访,同时可以访问互联网。

网络内同一IP段内的PC机可以通过网上邻居实现高速互访,传送资料文件等,解决不同楼宇,不同楼层之间通过移动存储设备传送数据费时、费力的问题。

6、内部用户的QoS管理,实现用户的分级管理功能,对用户下载和上传做相应的带宽限制。

对校园网络中的流量实现有效控制,对校园内的重要数据量可靠、稳定的传输如:语音、视频会议等的延迟和阻塞的敏感。

计算机网络实验报告实验3

计算机网络实验报告实验3

计算机网络实验报告实验3一、实验目的本次计算机网络实验 3 的主要目的是深入理解和掌握计算机网络中的相关技术和概念,通过实际操作和观察,增强对网络通信原理、协议分析以及网络配置的实际应用能力。

二、实验环境本次实验在计算机网络实验室进行,使用的设备包括计算机、网络交换机、路由器等。

操作系统为 Windows 10,实验中使用的软件工具包括 Wireshark 网络协议分析工具、Cisco Packet Tracer 网络模拟软件等。

三、实验内容与步骤(一)网络拓扑结构的搭建使用 Cisco Packet Tracer 软件,构建一个包含多个子网的复杂网络拓扑结构。

在这个拓扑结构中,包括了不同类型的网络设备,如交换机、路由器等,并配置了相应的 IP 地址和子网掩码。

(二)网络协议分析启动 Wireshark 工具,捕获网络中的数据包。

通过对捕获到的数据包进行分析,了解常见的网络协议,如 TCP、IP、UDP 等的格式和工作原理。

观察数据包中的源地址、目的地址、协议类型、端口号等关键信息,并分析它们在网络通信中的作用。

(三)网络配置与管理在实际的网络环境中,对计算机的网络参数进行配置,包括 IP 地址、子网掩码、网关、DNS 服务器等。

通过命令行工具(如 Windows 中的 ipconfig 命令)查看和验证配置的正确性。

(四)网络故障排查与解决设置一些网络故障,如 IP 地址冲突、网络连接中断等,然后通过相关的工具和技术手段进行故障排查和解决。

学习使用 ping 命令、tracert 命令等网络诊断工具,分析故障产生的原因,并采取相应的解决措施。

四、实验结果与分析(一)网络拓扑结构搭建结果成功构建了包含多个子网的网络拓扑结构,各个设备之间能够正常通信。

通过查看设备的状态指示灯和配置信息,验证了网络连接的正确性。

(二)网络协议分析结果通过 Wireshark 捕获到的数据包,清晰地看到了 TCP 三次握手的过程,以及 IP 数据包的分片和重组。

计网实验报告(三) (4500字)

计网实验报告(三) (4500字)

计算机网络实验报告(三)——编程实现可靠数据传输原理 go-back-n(一)实验目的:运用各种编程语言实现基于go-back-n 的可靠数据传输软件。

通过本实验,使学生能够对可靠数据传输原理有进一步的理解和掌握。

(二)实验内容:(1).选择合适的编程语言编程实现基于go-back-n 的可靠数据传输软件。

(2).在实际网络环境或模拟不可靠网络环境中测试和验证自己的可靠数据传输软件。

(三)实验原理:1.gbn协议含义:go-back-n arq中文翻译为后退n式arq、回退n式arq。

该协议对传统的自动重传请求(arq,automatic repeat reques)进行了改进,从而实现了在接收到ack之前能够连续发送多个数据包。

在go-back-n arq中,发送端不需要在接收到上一个数据包的ack后才发送下一个数据包,而是可以连续发送数据包。

在发送端发送数据包的过程中,如果接收到对应已发送的某个数据包的nack,则发送端将nack对应的某个数据包进行重发,然后再将该数据包之后的数据包依次进行重发。

后退n帧arq的图例:后退n帧arq就是从出错处重发已发出过的n个帧。

2.go-back-n 的有限状态机模型表示如图所示:(a)(b)图3.1 go-back-n 的有限状态机模型(a)发送端 (b)接受端(四)实验步骤:在eclipse平台编写并调试gbn模拟java程序,观察三组以上实验结果,验证程序可以正确模拟gbn的发送规则。

(五)实验结果:以下为随机数模拟的某次发送情况:接收方开始接收分组数据!发送方开始发送分组数据!发送方现在开始第一次发送序号为0的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为1的马上待发送的数据分组!第1号窗口里面存放的是序号为2的马上待发送的数据分组!第2号窗口里面存放的是序号为3的马上待发送的数据分组!接收方收到了序号为0的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为0并且开始加以确认!发送方现在开始第一次发送序号为1的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为2的马上待发送的数据分组!第1号窗口里面存放的是序号为3的马上待发送的数据分组!第2号窗口里面存放的是序号为4的马上待发送的数据分组!发送数据分组时发生延迟:1200毫秒!接收方收到了序号为1的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为1并且开始加以确认!发送方现在开始第一次发送序号为2的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为3的马上待发送的数据分组!第1号窗口里面存放的是序号为4的马上待发送的数据分组!第2号窗口里面存放的是序号为5的马上待发送的数据分组!发送数据分组时发生延迟:750毫秒!序号为2的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为 2的数据分组发送数据分组时发生延迟:750毫秒!接收方收到了序号为2的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为2并且开始加以确认!发送方现在开始第一次发送序号为3的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为4的马上待发送的数据分组!第1号窗口里面存放的是序号为5的马上待发送的数据分组!第2号窗口里面存放的是序号为6的马上待发送的数据分组!发送数据分组时发生延迟:300毫秒!接收方收到了序号为3的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为3并且开始加以确认!发送方现在开始第一次发送序号为4的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为5的马上待发送的数据分组!第1号窗口里面存放的是序号为6的马上待发送的数据分组!第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!发送数据分组时发生延迟:750毫秒!接收方收到了序号为4的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为4并且开始加以确认!发送方现在开始第一次发送序号为5的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为6的马上待发送的数据分组!第1号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!发送数据分组时发生延迟:1200毫秒!序号为5的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为 5的数据分组序号为5的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为 5的数据分组发送数据分组时发生延迟:1200毫秒!接收方收到了序号为5的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为5并且开始加以确认!发送方现在开始第一次发送序号为6的数据分组当前窗口内的分组情况为:第0号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第1号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!发送数据分组时发生延迟:750毫秒!序号为6的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为 6的数据分组发送数据分组时发生延迟:3000毫秒!序号为6的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为 6的数据分组发送数据分组时发生延迟:3000毫秒!接收方收到了序号为6的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!计时超时!!(未丢包但是时间超过2秒)发送方准备重发序号为6的数据分组!发送方开始重新发送序号为 6的数据分组发送数据分组时发生延迟:750毫秒!接收方收到了序号为6的分组!该数据分组不是接收方所期待的,该分组将被丢弃,接收方准备回送最后接受的数据分组对应的ack!发送方收到了ack,序号为6并且开始加以确认!当前窗口内的分组情况为:第0号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第1号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!发送数据分组时发生延迟:300毫秒!序号为7的分组在传给接收方途中发生了丢包!以下是每个数据分组被发送过的次数的统计结果序号为0的数据分组被发送过的次数为: 1序号为1的数据分组被发送过的次数为: 1序号为2的数据分组被发送过的次数为: 2序号为3的数据分组被发送过的次数为: 1序号为4的数据分组被发送过的次数为: 1序号为5的数据分组被发送过的次数为: 3序号为6的数据分组被发送过的次数为: 4(六)问题总结:1. 编写gbn算法,要注意的是在模拟丢包的情况下,要在接收端阻止ack的回传和在发送端发现ack超时的情况下进行该包的重发,要注意整个7个包的传送组织结构和顺序;2. 进行模拟时,注意标注丢包及正确收到的flag值;3. 测试时应多运行几次,观察在各种随机传送情况下的总体的发送情况,来验证是否能满足gbn协议。

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

计算机网络实验报告(三)——编程实现可靠数据传输原理 go-back-n(一)实验目的:运用各种编程语言实现基于go-back-n 的可靠数据传输软件。

通过本实验,使学生能够对可靠数据传输原理有进一步的理解和掌握。

(二)实验内容:(1).选择合适的编程语言编程实现基于go-back-n 的可靠数据传输软件。

(2).在实际网络环境或模拟不可靠网络环境中测试和验证自己的可靠数据传输软件。

(三)实验原理:1.gbn协议含义:go-back-n arq中文翻译为后退n式arq、回退n式arq。

该协议对传统的自动重传请求(arq,automatic repeat reques)进行了改进,从而实现了在接收到ack之前能够连续发送多个数据包。

在go-back-n arq中,发送端不需要在接收到上一个数据包的ack后才发送下一个数据包,而是可以连续发送数据包。

在发送端发送数据包的过程中,如果接收到对应已发送的某个数据包的nack,则发送端将nack对应的某个数据包进行重发,然后再将该数据包之后的数据包依次进行重发。

后退n帧arq的图例:后退n帧arq就是从出错处重发已发出过的n个帧。

2.go-back-n 的有限状态机模型表示如图所示:(a)(b)图3.1 go-back-n 的有限状态机模型(a)发送端 (b)接受端(四)实验步骤:在eclipse平台编写并调试gbn模拟java程序,观察三组以上实验结果,验证程序可以正确模拟gbn的发送规则。

(五)实验结果:以下为随机数模拟的某次发送情况:接收方开始接收分组数据!发送方开始发送分组数据!发送方现在开始第一次发送序号为0的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为1的马上待发送的数据分组!第1号窗口里面存放的是序号为2的马上待发送的数据分组!第2号窗口里面存放的是序号为3的马上待发送的数据分组!接收方收到了序号为0的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为0并且开始加以确认!发送方现在开始第一次发送序号为1的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为2的马上待发送的数据分组!第1号窗口里面存放的是序号为3的马上待发送的数据分组!第2号窗口里面存放的是序号为4的马上待发送的数据分组!发送数据分组时发生延迟:1200毫秒!接收方收到了序号为1的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为1并且开始加以确认!发送方现在开始第一次发送序号为2的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为3的马上待发送的数据分组!第1号窗口里面存放的是序号为4的马上待发送的数据分组!第2号窗口里面存放的是序号为5的马上待发送的数据分组!发送数据分组时发生延迟:750毫秒!序号为2的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为 2的数据分组发送数据分组时发生延迟:750毫秒!接收方收到了序号为2的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为2并且开始加以确认!发送方现在开始第一次发送序号为3的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为4的马上待发送的数据分组!第1号窗口里面存放的是序号为5的马上待发送的数据分组!第2号窗口里面存放的是序号为6的马上待发送的数据分组!发送数据分组时发生延迟:300毫秒!接收方收到了序号为3的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为3并且开始加以确认!发送方现在开始第一次发送序号为4的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为5的马上待发送的数据分组!第1号窗口里面存放的是序号为6的马上待发送的数据分组!第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!发送数据分组时发生延迟:750毫秒!接收方收到了序号为4的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为4并且开始加以确认!发送方现在开始第一次发送序号为5的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为6的马上待发送的数据分组!第1号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!发送数据分组时发生延迟:1200毫秒!序号为5的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为 5的数据分组序号为5的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为 5的数据分组发送数据分组时发生延迟:1200毫秒!接收方收到了序号为5的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为5并且开始加以确认!发送方现在开始第一次发送序号为6的数据分组当前窗口内的分组情况为:第0号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第1号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!发送数据分组时发生延迟:750毫秒!序号为6的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为 6的数据分组发送数据分组时发生延迟:3000毫秒!序号为6的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为 6的数据分组发送数据分组时发生延迟:3000毫秒!接收方收到了序号为6的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!计时超时!!(未丢包但是时间超过2秒)发送方准备重发序号为6的数据分组!发送方开始重新发送序号为 6的数据分组发送数据分组时发生延迟:750毫秒!接收方收到了序号为6的分组!该数据分组不是接收方所期待的,该分组将被丢弃,接收方准备回送最后接受的数据分组对应的ack!发送方收到了ack,序号为6并且开始加以确认!当前窗口内的分组情况为:第0号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第1号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!发送数据分组时发生延迟:300毫秒!序号为7的分组在传给接收方途中发生了丢包!以下是每个数据分组被发送过的次数的统计结果序号为0的数据分组被发送过的次数为: 1序号为1的数据分组被发送过的次数为: 1序号为2的数据分组被发送过的次数为: 2序号为3的数据分组被发送过的次数为: 1序号为4的数据分组被发送过的次数为: 1序号为5的数据分组被发送过的次数为: 3序号为6的数据分组被发送过的次数为: 4(六)问题总结:1. 编写gbn算法,要注意的是在模拟丢包的情况下,要在接收端阻止ack的回传和在发送端发现ack超时的情况下进行该包的重发,要注意整个7个包的传送组织结构和顺序;2. 进行模拟时,注意标注丢包及正确收到的flag值;3. 测试时应多运行几次,观察在各种随机传送情况下的总体的发送情况,来验证是否能满足gbn协议。

(七)附录:java源代码:【gbn.java】import .*;import java.util.random;import java.io.*;public class gbn extends thread{static void senddelay(int x) throws interruptedexception{if(x==1) {sleep(300); system.out.println(发送数据分组时发生延迟:300毫秒!); } else if(x==2) {sleep(750); system.out.println(发送数据分组时发生延迟:750毫秒!);}else if(x==3) {sleep(1200); system.out.println(发送数据分组时发生延迟:1200毫秒!); }else if(x==4) {sleep(3000); system.out.println(发送数据分组时发生延迟:3000毫秒!); }else;}public static void main(string[] args) throws ioexception, interruptedexception{sender s=new sender();receiver re=new receiver();s.start();re.run(s); //发送端启动 //接收端启动 //延迟处理sleep(1000);int[] retimes=new int[7];//计算每个分组被发送的次数for(int i=0;i<7;i++)retimes[i]=0;for(int i=0;i<=s.sign.length;i++){数据分组);retimes[s.localack+1]++;int ran=new random().nextint(3);int randelay=new random().nextint(5);s.time();senddelay(randelay); //设置随机值,模拟数据传输延迟if(ran!=1)re.receive(s.localack+1,s); //设置随机值,模拟数据丢包过程while(i>s.localack+1){ //数据包顺次发送//尚有未确认的数据包,重发!system.out.println(发送方开始重新发送序号为 +(s.localack+1)+的 elsesystem.out.println(序号为+(s.localack+1)+的分组在传给接收方途中发生了丢包!); }if(i!=s.sign.length){system.out.println();system.out.println(发送方现在开始第一次发送序号为+i+的数据分组); retimes[i]++;for(int k=0;k<3;k++){s.windowsign[k]++;}}system.out.println();system.out.println(当前窗口内的分组情况为:);for(int p=0;p<3;p++){if(s.windowsign[p]<=6)system.out.println(第+p+号窗口里面存放的是序号为+s.windowsign[p]+的马上待发送的数据分组!);elsesystem.out.println(第+p+号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!);}system.out.println();int ran=new random().nextint(3);int randelay=new random().nextint(5);s.time(); //计时开始(2秒时间)senddelay(randelay);if(ran!=1)re.receive(s.sign[i],s);else包!);} system.out.println(序号为+i+的分组在传给接收方途中发生了丢system.out.println();system.out.println(以下是每个数据分组被发送过的次数的统计结果);for(int i=0;i<7;i++) //显示关于每个数据包发送次数的统计表system.out.println(序号为+i+的数据分组被发送过的次数为: +retimes[i]);system.exit(0);}}【receiver.java】public class receiver extends thread{public int lastdata;public sender sender;public void run(sender s){}void receive(int data, sender s){sender=s; //发送方的参数传递 system.out.println(接收方收到了序号为+data+的分组!); if(data!=0){ if(data==lastdata+1){//数据包序号校验,若连续则是正确/所期待的 sender=s; system.out.println(接收方开始接收分组数据!);system.out.println(该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!);lastdata=data; //更新本地保存的数据包序号变量} respond(lastdata); //回送该正确接收的数据包对应的ackelse{system.out.println(该数据分组不是接收方所期待的,该分组将被丢弃,接收方准备回送最后接受的数据分组对应的ack!);respond(lastdata); //若不是所期待的数据包则丢弃并且重发上一次的ack} else{ }system.out.println(该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!);lastdata=data;respond(lastdata); //首次接收数据包并且回送ack} }void respond(int ack){if(sender.litime.limit<20){ ack=lastdata; sender.getack(ack); } else{system.out.println(计时超时!!(未丢包但是时间超过2秒)发送方准备重发序号为+ack+的数据分组!);sender.switches=1; //如果超时,设置超时状态并显示警告 }}}【sender.java】import java.util.timer;import java.util.timertask;public class sender extends thread{public int windowsize=3; //发送方窗口长度设为3public string[]data={data1,data2,data3,data4,data5,data6,data7}; //模拟七个数据包 public int sign[]={0,1,2,3,4,5,6}; //为7个数据包标号public int localack=-1;public timers litime=null;public int switches=0;public int windowsign[];//当前窗口内待发的数据分组的序号public int acksign = 0; //为0表示收到正确ack,为1表示收到错误的ack,必须重发! public sender(){windowsign = new int[windowsize]; //给窗口分配指定大小的空间for(int i=0;i<3;i++)}public void run(){}public void getack(int ack){system.out.println(发送方收到了ack,序号为+ack+并且开始加以确认!); if(ack!=localack+1){system.out.println(经验证,这不是发送方正期待的ack,立刻重发序号为+(localack+1)+的数据分组!);acksign=1;}else{localack=ack; //表示正确确认了ackacksign=0; } system.out.println(发送方开始发送分组数据!); windowsign[i]=sign[i]; //窗口初始化时存放前3个序号}public void time(){}【timers.java】import java.util.timertask;public class timers extends timertask {public int switches;public int limit;public void run(){if(limit<20)limit++; switches=0; //标志初始化为0 litime=new timers(); timer limit=new timer(); limit.schedule(litime, 0,100); }else {}}public timers(){}} switches=0; limit=0; //启动计时器时全部初始化 switches=-1; this.cancel(); //开关为-1表示超时,并且停止计时器。

相关文档
最新文档