计算机通信网 实验报告
- 格式:docx
- 大小:1.25 MB
- 文档页数:24
大工20春《计算机网络实验》实验报告答案一、实验目的本次计算机网络实验旨在通过实际操作和观察,深入理解计算机网络的基本原理和技术,掌握网络配置、数据传输、网络协议分析等方面的知识和技能,提高解决实际网络问题的能力。
二、实验环境本次实验使用的设备包括计算机、交换机、路由器等网络设备,以及网络模拟软件和协议分析工具。
操作系统为 Windows 10,网络模拟软件为 Packet Tracer,协议分析工具为 Wireshark。
三、实验内容与步骤(一)网络拓扑结构设计根据实验要求,设计了一个包含多个子网的网络拓扑结构。
该拓扑结构包括一个核心交换机连接多个子网,每个子网通过路由器与其他子网或外网进行通信。
(二)IP 地址规划与配置为每个网络设备分配了合适的 IP 地址,并进行了子网掩码和网关的设置。
在配置过程中,注意了 IP 地址的唯一性和合法性,避免了地址冲突和网络故障。
(三)交换机配置对核心交换机进行了 VLAN 的划分和配置,将不同的端口划分到不同的 VLAN 中,实现了网络的逻辑隔离和流量控制。
同时,还配置了交换机的端口安全和 STP 协议,提高了网络的安全性和稳定性。
(四)路由器配置对路由器进行了路由协议的配置,包括静态路由和动态路由(如RIP、OSPF 等)。
通过配置路由协议,实现了不同子网之间的通信和数据转发。
(五)网络服务配置在服务器上配置了 DNS 服务、DHCP 服务和 Web 服务等。
通过DNS 服务,实现了域名到 IP 地址的解析;通过 DHCP 服务,为客户端自动分配 IP 地址等网络参数;通过 Web 服务,提供了网页浏览功能。
(六)网络性能测试使用 Ping 命令和 Tracert 命令对网络的连通性和延迟进行了测试,使用 Wireshark 工具对网络数据包进行了捕获和分析,评估了网络的性能和协议的执行情况。
四、实验结果与分析(一)网络连通性测试结果通过 Ping 命令对不同子网的设备进行了连通性测试,结果表明所有设备之间都能够正常通信,没有出现丢包和延迟过高的情况。
计算机网络与通信实验报告专业:信息安全学号:100410428姓名:谢宇奇哈尔滨工业大学(威海)图1-1图1-2图1-3 -t 不停地向目标主机发送数据图1-4 -a 以IP地址格式来显示目标主机的网络地址图1-5 指定count=6次图1-6 -l 3 指定发送到目标主机的数据包的大小。
图1-7 Tracert命令的使用图1-8 Netstat命令图1-9 -s显示每个协议的统计。
图1-10 -e 显示以太网统计。
此选项可以与 -s 选项结合使用。
图1-11 -r显示路由表。
图1-12 -e 显示以太网统计。
此选项可以与 -s 选项结合使用。
图1-13 -n 以数字形式显示地址和端口号。
图1-14 -t 显示当前连接卸载状态。
图1-15 -o显示拥有的与每个连接关联的进程 ID。
图1-16 -p proto 显示 proto 指定的协议的连接;proto 可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。
图1-17 all 显示现时所有网络连接的设置图1-18释放某一个网络上的IP位置图1-19 renew 更新某一个网络上的IP位置图1-20 flushdns 把DNS解析器的暂存内容全数删除图1-21 -a[ InetAddr] [ -N IfaceAddr] 显示所有接口的当前 ARP 缓存表。
图1-22 使用arp -s IP MAC 命令来绑定物理地址图1-23 arp指令的帮助图1-24 route –n查看路由信息图1-25 查看本机路由表信息图1-26 route 添加路由表图1-27 删除路由表图1-28 打印Windows 路由表图2-1 到根名称服务器上查找能解析.com的顶级域的域名实验结果图2-2 到顶级域名称服务器上查找能解析的顶级域的子域域名图2-3 到顶级域名称服务器查找能解析权威名称服务器的域名图2-4 到权威名称服务器上查找的A类型(对应的IP)图2-5 验证的IP映射图2-6利用TELNET进行SMTP的邮件发送。
《计算机网络实验》实验报告一、实验目的计算机网络实验是计算机相关专业学习中的重要实践环节,通过实验操作,旨在深入理解计算机网络的基本原理、协议和技术,提高我们的动手能力和解决实际问题的能力。
具体目的包括: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、使用网络带宽测试工具测试网络的带宽。
四、实验结果与分析实验一结果与分析通过对捕获到的以太网帧的分析,我们清楚地看到了帧的结构,包括前导码、目的地址、源地址、类型字段、数据字段和帧校验序列等。
通信实验报告范文实验报告:通信实验引言:通信技术在现代社会中起着至关重要的作用。
无论是人与人之间的交流,还是不同设备之间的互联,通信技术都是必不可少的。
本次实验旨在通过搭建一个简单的通信系统,探究通信原理以及了解一些常用的通信设备。
实验目的:1.了解通信的基本原理和概念。
2.学习通信设备的基本使用方法。
3.探究不同通信设备之间的数据传输速率。
实验材料和仪器:1.两台电脑2.一个路由器3.一根以太网线4.一根网线直连线实验步骤:1.首先,将一台电脑与路由器连接,通过以太网线将电脑的网卡和路由器的LAN口连接起来。
确保连接正常。
2.然后,在另一台电脑上连接路由器的WAN口,同样使用以太网线连接。
3.确认两台电脑和路由器的连接正常后,打开电脑上的网络设置,将两台电脑设置为同一局域网。
4.接下来,进行通信测试。
在一台电脑上打开终端程序,并通过ping命令向另一台电脑发送数据包。
观察数据包的传输速率和延迟情况。
5.进行下一步实验之前,先断开路由器与第二台电脑的连接,然后使用直连线将两台电脑的网卡连接起来。
6.重复第4步的测试,观察直连线下数据包的传输速率和延迟情况。
实验结果:在第4步的测试中,通过路由器连接的两台电脑之间的数据传输速率较高,延迟较低。
而在第6步的测试中,通过直连线连接的两台电脑之间的数据传输速率较低,延迟较高。
可以说明路由器在数据传输中起到了很重要的作用,它可以提高数据传输的速率和稳定性。
讨论和结论:本次实验通过搭建一个简单的通信系统,对通信原理进行了实际的验证。
路由器的加入可以提高数据传输速率和稳定性,使两台电脑之间的通信更加高效。
而直连线则不能提供相同的效果,数据传输速率较低,延迟较高。
因此,在实际网络中,人们更倾向于使用路由器进行数据传输。
实验中可能存在的误差:1.实验中使用的设备和网络环境可能会对实际结果产生一定的影响。
2.实验中的数据传输速率和延迟可能受到网络负载和其他因素的影响。
一、实验目的1. 理解计算机网络的基本概念和结构。
2. 掌握网络设备的配置方法,包括交换机、路由器等。
3. 学习网络协议的作用和配置方法,如TCP/IP、DHCP等。
4. 通过实验加深对网络故障诊断和排除能力的培养。
二、实验内容1. 实验环境实验设备:一台PC机、一台交换机、一台路由器、双绞线、网线等。
实验软件:Windows操作系统、网络管理软件等。
2. 实验步骤(1)网络设备连接首先,将PC机通过网线连接到交换机的一个端口上。
然后,将交换机的另一个端口连接到路由器的WAN口。
最后,将路由器的LAN口连接到PC机的另一台交换机上。
(2)网络设备配置①交换机配置进入交换机命令行界面,配置交换机的基本参数,如VLAN ID、IP地址、子网掩码等。
②路由器配置进入路由器命令行界面,配置路由器的接口参数,如WAN口和LAN口的IP地址、子网掩码等。
同时,配置路由协议,如静态路由、动态路由等。
③PC机配置在PC机的网络设置中,将IP地址、子网掩码、默认网关等信息设置为与路由器LAN口相同的参数。
(3)网络测试①测试PC机与交换机之间的连通性在PC机中ping交换机的IP地址,检查PC机是否能够与交换机通信。
②测试PC机与路由器之间的连通性在PC机中ping路由器的IP地址,检查PC机是否能够与路由器通信。
③测试不同VLAN之间的连通性在PC机中ping另一个VLAN中的设备,检查不同VLAN之间的设备是否能够相互通信。
三、实验结果与分析1. 实验结果(1)PC机与交换机之间连通(2)PC机与路由器之间连通(3)不同VLAN之间的设备相互通信2. 实验分析通过本次实验,我们成功搭建了一个简单的计算机网络,并掌握了网络设备的配置方法。
在实验过程中,我们遇到了一些问题,如网络设备之间的连通性、VLAN之间的通信等。
通过查阅资料和调试,我们解决了这些问题,加深了对计算机网络的理解。
四、实验总结1. 通过本次实验,我们了解了计算机网络的基本概念和结构,掌握了网络设备的配置方法。
计算机网络实验报告实验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 数据包的分片和重组。
大连理工大学实验报告学院(系):信息与通信工程专业:通信工程班级:电通1402姓名:糜智华学号:201483051 组:___实验时间:2016年11月14日18:00-21.00 实验室:C221 实验台:37号机指导教师:李小兵实验一程控交换机语音通信实验报告一、实验目的和要求通过该实验使学生理解通信网络的基本概念,了解和掌握现代通信网的网络拓扑结构、通信网使用的设备连接方法和信号传输过程。
本实验将进行基于数字程控交换机的语音通信实验。
通过对交换机的简单配置,了解电话网的基本组成和交换机构成及各部分的功能,熟悉固定电话的接续流程,以对将来通信行业的硬件和软件工作有一定的了解。
二、实验原理和内容实验内容a)熟悉实验室通信设备,了解各通信设备基本功能,能够简单配置和操作设备。
b)操作和配置程控交换机,实现电话之间通话实验实验原理电话网是传递电话信息的电信网,是可以进行交互型话音通信、开放电话业务的电信网。
电话网包括本地电话网、长途电话网、国际电话网等多种类型。
是业务量最大、服务面最广的电信网。
电话网经历了由模拟电话网向综合数字电话网的演变。
除了电话业务,还可以兼容许多非电话业务。
因此电话网可以说是电信网的基础。
最早的电话通信形式只是两部电话机中间用导线连接起来便可通话。
电话网采用电路交换方式,由发送和接收电话信号的用户终端设备(如电话机)进行电路交换的交换设备(电话交换机)、连接用户终端和交换设备的线路(用户线)和交换设备之间的链路(中继线)组成。
电话网基本结构形式分为多级汇接网和无级网两种。
端局:端局就是直接下挂用户或者直接拨入(DID局)的交换机。
在移动通信中,端局之间若没有进行直连,则通过汇接局进行连接,运营商之间的中继互联是通过关口局来进行连接的。
关口局是出网的局点。
各个端局通过中继的方式汇聚到一个局点,再上行到关口局或长途局。
汇接局:汇接局属于本地网内的一种交换局,它汇接各端局通过中继线送来的话务量,然后送至相应的端局。
udp实验报告计算机网络
《UDP实验报告-计算机网络》
一、实验目的
本实验旨在通过对UDP协议的实验,加深对计算机网络中传输层协议的理解,
掌握UDP协议的特点、优缺点以及适用场景。
二、实验环境
本次实验使用了一台服务器和一台客户端,它们通过局域网连接,并且安装了
相应的网络调试工具和UDP通信软件。
三、实验内容
1. UDP协议的特点
UDP是用户数据报协议,是一种无连接的、不可靠的传输协议。
它不需要建立
连接,也不保证数据的可靠性和顺序性,因此传输效率较高。
2. UDP协议的优缺点
优点:UDP协议的头部开销小,传输效率高;适用于实时性要求较高的应用场景,如视频会议、在线游戏等。
缺点:UDP协议不提供可靠性保证,容易丢包;不支持拥塞控制和流量控制,
对网络负载和稳定性要求较高。
3. UDP协议的适用场景
UDP适用于实时性要求高、数据量较小、对可靠性要求不高的应用场景,如音频、视频的实时传输,以及一些简单的网络通信协议。
四、实验结果
通过对UDP协议的实验,我们成功地实现了服务器和客户端之间的UDP通信,
实时传输了一些简单的文本数据,并观察到了UDP协议的特点和优缺点。
五、实验总结
本次实验使我们更深入地了解了UDP协议的特点、优缺点以及适用场景,对于今后的网络应用开发和调试工作具有重要的参考价值。
六、实验感想
通过本次实验,我们对计算机网络中的传输层协议有了更深入的理解,也增强了我们对网络通信技术的兴趣,希望能够在未来的学习和工作中更好地应用所学知识。
计算机通信与网络实验报告姓名:徐一得学号:15081525班级:通信五班上课时间:周四3—5实验名称:TCP/IP Configuration一、实验目的(1) To learn TCP/IP configuration。
(2) To learn the basic command of dos。
二、实验内容与要求1. Click Start and then click Run。
Type the command or cmd and then press Enter。
2。
At the DOS prompt,type NET HELP and press Enter。
You should see something like the screen below:The command you are interested in is the View command。
To obtain information about it, type NET HELP VIEW, and press Enter。
3. What is the purpose of NET VIEW:The NET VIEW command shows the names of the machines present on your network。
Lists the names of machines on the left,in column labelled “Server name” and another columns labelled “Remark"4. List the machines after you have typed NET VIEW from the command promptHDUSEC-01, HDUSEC-02,HDUSEC-03,……,HDUSEC-48Close the DOS window by typing EXIT on the command line and then press Enter, or by clicking the Close button in the upper right corner of the window。
实验一应用层P2P软件通信实验一、实验目的1. 用Skype实现P2P通信;2. 总结对P2P协议的理解。
二、实验内容1. 了解P2P软件和抓包软件的获取、安装和使用。
1) 下载安装P2P软件Skype;下载安装抓包软件Wireshark(即以前的Ethereal软件);2) 了解上述两种软件的基本使用方法,为后续实验操作做好准备。
2. 使用P2P软件发起点对点通信,在通信过程中使用抓包软件跟踪相关信息。
3. 分析P2P通信过程中的交互消息,总结对P2P协议的理解三、实验过程1、安装Skype软件,注册2个账号,用于手机和电脑的通信2、下载Wireshark软件并安装3、使用Skype拨打电话,并用WireShark抓取数据包4、保存抓包文件后分析数据使用Wireshark过滤器过滤IP,本机IP为223.68.77.135,手机IP为223.68.124.170过滤语句“ip.addr==223.68.77.135&&ip.addr==223.68.124.170”四、实验结果分析Skype是一种完全分布式的P2P VoIP系统,它的设计原理是一种重叠的对等网络设计。
在Skype网络中有注册服务器、普通节点和超级节点3种角色。
注册服务器是SKYPE系统中唯一的有集中控制功能的服务器。
它存储着所有SKYPE用户的用户名和密码信息。
用户通过它进行注册认证,广播它的在线状态和好友信息,并能够检测是否用户位于防火墙或NAT后,同时判断防火墙的种类。
另外,通过注册服务器SKYPE客户端软件还可以获得更新的超级节点列表,用于后续的通信。
注册之后,SKYPE客户端就不再需要注册服务器的参与,VoIP接续和用户查找功能都由SKYPE普通节点和超级节点组成的SKYPE网络完成。
普通节点就是可以进行普通的VoIP呼叫和即时消息的客户端。
超级节点除了可以进行普通节点的通话和即时消息外,还可以当作普通节点的转接点。
我们可以看到本机Skype端口为51425在打电话通讯的过程中,手机不停和51425端口交互当通话建立以后,对于媒体流的传输,将尽可能地选用UDP进行传输。
与呼叫信令的工作方式类似,如果SKYPE主叫和被叫都在公网上,则主叫和被叫之间直接通过UDP进行通信;如果主叫或被叫在NAT后面,则它们通过超级节点进行媒体转发,也使用UDP进行通信;如果主叫和被叫都在UDP被禁止的防火墙和NAT后面,那么它们将使用TCP连接到超级节点,并由超级节点进行媒体转发。
实验二多线程Web服务器的实现一、实验目的1. 了解Windows网络编程(Socket)的基本原理和方法。
2. 了解多线程机制,以及多线程在应用程序中的实现。
3. 了解TCP对等层之间的通信机制。
二、实验内容开发一个多线程Web服务器,它能并行服务多个请求。
三、实验原理www 的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信, HTTP协议的作用原理包括四个步骤:连接,请求,应答。
(1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。
(2) 请求:Web浏览器通过socket向Web服务器提交请求。
HTTP的请求一般是GET或POST命令(POST用于FORM 参数的传递)。
GET命令的格式为:GET 路径/文件名 HTTP/1.1文件名指出所访问的文件,HTTP/1.1指出Web浏览器使用的HTTP版本。
(3) 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。
Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。
为了告知 Web浏览器传送内容的类型,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。
(4) 关闭连接:当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。
四、实验过程实验采用Java语言编写,核心代码如下1、使用TCP/IP协议,开启监听端口6789ServerSocket listenSocket = new ServerSocket(6789);2、接收到握手后新建一个scoket用于连接Socket socket = listenSocket.accept();3、多线程操作构造RequestHandler类,继承Runnable接口class RequestHandler implements Runnable {Socket connectionSocket;OutputStream outToClient;BufferedReader inFormClient;String requestMessageLine;String fileName;// 构造方法public RequestHandler(Socket connectionSocket) throws Exception {this.connectionSocket = connectionSocket;}public void run(){ // 实现Runnable 接口的run()方法try { processRequest();}catch(Exception e) { System.out.println(e);}}private void processRequest() throws Exception {//读取并显示Web 浏览器提交的请求信息BufferedReader inFormClient =new BufferedReader( newInputStreamReader( connectionSocket.getInputStream() ) );DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());//读取html请求报文第一行requestMessageLine = inFormClient.readLine();//解析请求报文文件名StringTokenizer tokenizerLine = //tokenizerLine对象是最初请求行new StringTokenizer(requestMessageLine);if (tokenizerLine.nextToken().equals("GET")){fileName = tokenizerLine.nextToken();if (fileName.startsWith("/")==true) fileName = fileName.substring(1);File file = new File(fileName);int numOfBytes = (int)file.length();FileInputStream inFile = new FileInputStream(fileName);byte[] fileInBytes = new byte[numOfBytes];inFile.read(fileInBytes);//构造http响应报文outToClient.writeBytes("HTTP/1.0 200 Document Follow\r\n");if(fileName.endsWith(".jpg"))outToClient.writeBytes("Content-type:image/jpeg\r\n");if(fileName.endsWith(".gif"))outToClient.writeBytes("Content-type:image/gif\r\n");outToClient.writeBytes("Content-type:" + "numOfBytes" + "\r\n");outToClient.writeBytes("\r\n");outToClient.write(fileInBytes,0,numOfBytes);connectionSocket.close();}else System.out.println("Bed Request Message");}}4、服务器一旦监听到连接,新建一个线程Thread thread = new Thread(new RequestHandler(socket)); thread.start();五、实验结果在服务器根目录下放一个网页打开浏览器访问localhost:6789/index.html提示测试成功实验三实现一个可靠的传输协议一、实验目的1. 了解传输层的协议,模拟可靠数据传输2. 理解TCP协议可靠传输的差错检测、重传、累计确认、定时器的可靠传输策略。
二、实验内容编写运输层的发送和接收代码,已实现一个简单的可靠传输协议。
三、实验原理TCP协议在工作时,如果发送端的TCP协议软件每传输一个数据分组后,必须等待接收端的确认才能够发送下一个分组,由于网络传输的时延,将有大量时间被用于等待确认,导致传输效率低下。
为此TCP在进行数据传输时使用了滑动窗口机制。
TCP滑动窗口用来暂存两台计算机问要传送的数据分组。
每台运行TCP协议的计算机有两个滑动窗口:一个用于数据发送,另一个用于数据接收。
发送数据的滑动窗口:发送端待发数据分组在缓冲区排队等待送出。
被滑动窗口框入的分组,是可以在未收到接收确认的情况下最多送出的部分。
滑动窗口左端分组,是已经被接收端确认收到的分组。
随着新的确认到来,窗口不断向右滑动。
四、实验过程核心代码1、GBN.h#pragma once#include <stdio.h>//基础功能模块的数据结构声明#define BIDIRECTIONAL 1 /* change to 1 if you're doing extra credit and writea routine called B_output */ 如果你想做酷文解码和写一个程序叫B_output就改变值为1/* a "msg" is the data unit passed from layer 5 (teachers code) to layer 4 (students' code). It contains the data (characters) to be delivered to layer5 via the students transport level protocol entities. */一个“msg”是从第五层传送到第四层的数据单元.它包含通过传送层协议被传送到第五层的数据struct msg{ char data[20];};/* a packet is the data unit passed from layer 4 (students code) to layer 3 (teachers code). Note the pre-defined packet structure, which all students must follow. */一个数据包从第四层传送到第三层的数据单元.声明提前定义的学生必须遵守的数据包结构struct pkt{int seqnum;int acknum;int checksum;char payload[20];};#define WINDOWSIZE 8#define MAXBUFSIZE 50#define RTT 15.0#define NOTUSED 0#define NACK -1#define TRUE 1#define FALSE 0#define A 0#define B 1//网络仿真部分数据结构声明***********************************************************struct event{float evtime; /* event time */ 事件时间int evtype; /* event type code */ 事件类型代码int eventity; /* entity where event occurs */ 所在的实体事件发生时struct pkt *pktptr; /* ptr to packet (if any) assoc w/ this event */用指针来显示这个数据包struct event *prev;struct event *next;};/* possible events: */可能发生#define TIMER_INTERRUPT 0#define FROM_LAYER5 1#define FROM_LAYER3 2#define OFF 0#define ON 1//基础功能模块的函数声明*******************************************************************void ComputeChecksum(struct pkt *packet);//计算校验和int CheckCorrupted(struct pkt packet);//检查数据是否出错void A_output( struct msg message);//A端向外发送数据void A_input(struct pkt packet);//A端接收数据void A_timerinterrupt();//A计时器超时void A_init();//A端初始化void B_output(struct msg message);void B_input(struct pkt packet);void B_timerinterrupt();void B_init();//网络仿真部分的函数声明************************************************** void init(); //初始化仿真器float jimsrand();//随机数发生器[0,1]//处理事件列表部分的函数声明*********************************************void generate_next_arrival();//产生下一个到达的分组void insertevent(struct event *p);//向事件列表中插入一条新的事件void printevlist();//打印事件列表//********************************************************************//**********************计时器模块***********************************void stoptimer(int);//停止计时器void starttimer(int,float);//启动计时器//*********************************************************************//**************************网络各层之间传送模块***********************void tolayer3(int AorB,struct pkt packet);//向第3层发送信息void tolayer5(int AorB,char datasent[20]);//向第5层发送信息2、GBN.c#include "GBN.h"#include <stdio.h>#include <string.h>#include <stdlib.h>extern int TRACE = 1; /* for my debugging */ 为我的调试extern int nsim = 0; /* number of messages from 5 to 4 so far */ 目前为止信息的数字是从5到4extern int nsimmax = 0; /* number of msgs to generate, then stop */ 如果信息产生的数字为0,然后就停止extern float time = 0.000;float lossprob; /* probability that a packet is dropped */数据包可能会丢失float corruptprob; /* probability that one bit is packet is flipped */这一点的数据包可能会被弹出去float lambda; /* arrival rate of messages from layer 5 */ 从第五层到达的信息的次序int ntolayer3; /* number sent into layer 3 */被传送到第三层的数据static int nlost = 0; /* number lost in media */在媒介中数据丢失static int ncorrupt = 0; /* number corrupted by media*/被媒介毁坏的数据static int expectedseqnum = 0; /* expected sequence number at receiver side */ 在接收者这边接收到预期的序列数据static int nextseqnum; /* next sequence number to use in sender side */ 下一个序列数据使用在发送者这边static int base; /* the head of sender window */发送者的头窗口struct pkt winbuf[WINDOWSIZE]; /* window packets buffer */数据包缓冲区窗口static int winfront,winrear; /* front and rear points of window buffer */窗口缓冲区的前方点和后方点static int pktnum; /* packet number of window buffer */窗口缓冲区的数据包个数struct msg buffer[MAXBUFSIZE]; /* sender message buffer */发送消息缓冲区int buffront,bufrear; /* front and rear pointers of buffer */缓冲区的前指针与后指针static int msgnum; /* message number of buffer */信息数量的缓冲int packet_lost =0;int packet_corrupt=0;int packet_sent =0;extern int packet_correct=0;extern int packet_resent =0;int packet_timeout=0;extern struct event *evlist = NULL; /* the event list */ 事件表//计算校验和void ComputeChecksum( struct pkt *packet){int checksum;int i;checksum = packet->seqnum;checksum = checksum + packet->acknum;for ( i=0; i<20; i++ )checksum = checksum + (int)(packet->payload[i]);checksum = 0-checksum;packet->checksum = checksum;}五、实验结果通过本次实验,了解了GBN传输协议的相关知识,因为实验代码是由三部分组成,所以用Studio做实验时,要建立3个文件,一个是头文件,存放gbn.h, 另外2个是源文件,分别存放gbn.c 和 gbn-cs.c,然后再启动调试。