计算机网络原理实验6
计算机网络原理实验六1
![计算机网络原理实验六1](https://img.taocdn.com/s3/m/670ef7d684254b35eefd3402.png)
实验六、UDP 协议分析实验报告1.实验目的:分析UDP 协议报文格式.2.实验环境:局域网环境,或者是联网的单机。
3.实验步骤:(1)启动ethereal 软件,开始报文捕获。
(2)捕获UDP 的数据包(3)停止捕获报文。
4.实验分析,回答下列问题(1)请说明你是如何获得UDP 的捕获文件,并附上捕获的截图。
步骤如捕获TCP 的报文一样。
(2)通过捕获的数据包分析UDP 的报文结构,将UDP 协议树中各名字字段,字段长度,字段信息填入下表。
字段名 字段长度 字段值 字段表达信息Source port 16 bytes 57949 源端口号的值Destination port 16 bytes 5355 目的端口号的值Length 16 bytes 32 长度Checksum 16 bytes 0x8f85 总和检查码Data 24 bytes 数据(3)通过和实验五的结果比较,UDP 报文和TCP 报文结构有何区别?UDP 报头由4个域组成,其中每个域各占用2个字节,具体如下:源端口号,目标端口号,数据报长度,校验值。
UDP 协议使用端口号为不同的应用保留其各自的数据传输通道。
通信中的发送方只负责将数据标好目的地址发送出去,所以udp 报头中只有源ip 和目的ip 信息,而没有其它连接的字段。
每个tcp 都包含源端口号和目标端口号,加上ip 头中的源ip 和目的ip ,唯一确定一个tcp 连接。
序号用来标识从tcp 发端向tcp 收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。
序号字段包含由这个主机选择的该连接的初始序号isn 。
该主机要发送数据的第一个字节,序号为isn+1,因为syn 占用了一个序号。
tcp 工作的时候必须用源和目的ip 及端口建立一个逻辑连接,所以在tcp 报头中不但有源和目的ip 地址,而且有通信双方的端口号。
tcp 是安全的传输,所以在tcp 报头中有三个用于保证数据传输连续性的字段:序列编号,确认编号,数据偏移。
计算机网络实验报告(6篇)
![计算机网络实验报告(6篇)](https://img.taocdn.com/s3/m/1e3f62e15122aaea998fcc22bcd126fff7055d9d.png)
计算机网络实验报告(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操作系统。
计算机网络实验指导书(6个实验)
![计算机网络实验指导书(6个实验)](https://img.taocdn.com/s3/m/777b948f5a8102d276a22fdc.png)
实验一交换机的基本配置一.实验原理1.1以太网交换机基础以太网的最初形态就是在一段同轴电缆上连接多台计算机,所有计算机都共享这段电缆。
所以每当某台计算机占有电缆时,其他计算机都只能等待。
这种传统的共享以太网极大的受到计算机数量的影响。
为了解决上述问题,我们可以做到的是减少冲突域类的主机数量,这就是以太网交换机采用的有效措施。
以太网交换机在数据链路层进行数据转发时需要确认数据帧应该发送到哪一端口,而不是简单的向所有端口转发,这就是交换机MAC地址表的功能。
以太网交换机包含很多重要的硬件组成部分:业务接口、主板、CPU内存、Flash、电源系统。
以太网交换机的软件主要包括引导程序和核心操作系统两部分。
1.2以太网交换机配置方式以太网交换机的配置方式很多,如本地Console 口配置,Telnet远程登陆配置,FTP TFTP配置和哑终端方式配置。
其中最为常用的配置方式就是Console 口配置和Telnet远程配置。
1.3以太网交换机基本配置方法1.3.1交换机的用户界面交换机有以下几个常见命令视图:(1)用户视图:交换机开机直接进入用户视图,此时交换机在超级终端的标识符为。
(2)系统视图:在用户视图下输入实system-view命令后回车,即进入系统视图。
在此视图下交换机的标识符为:。
](3)以太网端口视图:在系统视图下输入interface命令即可进入以太网端口视图。
在此视图下交换机的标识符为:。
(4)VLAN配置视图:在系统视图下输入vlan vlan —number即可进入VLAN配置视图。
在此视图下交换机的标识符为:。
(5)VTY用户界面视图:在系统视图下输入user-interface vty number 即可进入VTY用户界面视图。
在此视图下交换机的标识符为:。
进行配置时,需要注意配置视图的变化,特定的命令只能在特定的配置视图下进行。
1.3.2交换机的常用帮助在使用命令进行配置的时候,可以借助交换机提供的帮助功能快速完成命令的查找和配置。
计算机网络实验利用wireshark分析ARP协议—实验六实验报告
![计算机网络实验利用wireshark分析ARP协议—实验六实验报告](https://img.taocdn.com/s3/m/cb1ec55e0b4e767f5acfce99.png)
信息网络技术实验报告实验名称利用wireshark分析ARP协议实验编号 6.1姓名学号成绩2.6常见网络协议分析实验一、实验室名称:电子政务可视化再现实验室二、实验项目名称:利用wireshark分析ARP协议三、实验原理:Wireshark:Wireshark 是网络包分析工具。
网络包分析工具的主要作用是尝试获取网络包,并尝试显示包的尽可能详细的情况。
网络包分析工具是一种用来测量有什么东西从网线上进出的测量工具,Wireshark 是最好的开源网络分析软件。
当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit 的以太网地址来确定目的接口的.设备驱动程序从不检查IP数据报中的目的IP地址。
地址解析为这两种不同的地址形式提供映射:32bit的IP地址和数据链路层使用的任何类型的地址。
ARP根据IP地址获取物理地址的一个TCP/IP协议。
ARP为IP地址到对应的硬件地址之间提供动态映射。
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存。
四、实验目的:目的是通过实验加深对数据包的认识,网络信息传输过程的理解,加深对协议的理解,并了解协议的结构与区别。
利用wireshark捕获发生在ping过程中的ARP报文,加强对ARP协议的理解,掌握ARP报文格式,掌握ARP请求报文和应答报文的区别。
五、实验内容:利用wireshark分析ARP协议六、实验器材(设备、元器件)运行Windows的计算机,带有并正确安装网卡;wireshark软件;具备路由器、交换机等网络设备的网络连接。
国家开放大学《计算机网络》课程实验报告(实验六 计算机网络综合性实验)
![国家开放大学《计算机网络》课程实验报告(实验六 计算机网络综合性实验)](https://img.taocdn.com/s3/m/61bd78486529647d2628527d.png)
计算机网络实验报告实验时间:参加人员:一、实验名称:实验六计算机网络综合性实验;二、实验内容1. 任意捕获一个数据包,分析其数据链路层格式、网络层格式和传输层格式,加深学生对计算机网络分层概念的理解。
2. 地址解析协议(ARP)是LAN 环境中最重要的协议之一。
ARP 允许你的网络上使用的设备自动将物理(MAC)地址映射为IP 地址,因此需要对ARP 有很详细的了解,并清楚它是怎样工作的。
3. 传输控制协议(TCP)是互联网上最常用的协议,TCP 可以保证数据传输的可靠性。
很多互联网服务,比如HTTP、FTP、SMTP 和Telnet,都要依靠TCP 来传输数据。
另外,很多传统的LAN 程序,比如文件传输和SQL 也都要使用TCP 协议。
三、实验步骤1.捕获报文基本分析实验(1)打开SnifferPro程序后,选择Capture(捕获)→Start(开始),或者使用F10键,或者是工具栏上的开始箭头。
图1 SnifferPro软件界面(2)一小段时间过后,再次进入Capture(捕获)菜单,然后选择Stop(停止)或者按下F10键,还可以使用工具栏。
(3)按F9键来执行“停止并显示”的功能,或者可以进入Capture(捕获)菜单,选择“停止并显示”。
(4)停止捕获后,在对话框最下角增加了一组窗口卷标,包括高级、解码、矩阵、主机表单、协议分布和统计信息。
(5)选择解码卷标,可以看到SnifferPro缓冲器中的所有实际“数据”。
分析该卷标结构及其内容。
2.捕获并分析地址解析协议(ARP)(1)选择“捕获”→“定义过滤器”。
(2)在“定义过滤器”中,选择“文件”→“新建”。
(3)将这个文件命名为ARP,单击OK,然后单击“完成”。
(4)现在选择“高级”,从协议列表中选择ARP。
(5)单击OK,关闭定义过滤器窗口。
已经定义了过滤器,可以按F10来捕获流量。
(6)输入arp-dIP来清除默认网关上的ap,这个命令中的IP是你的默认网关IP地址,然后Ping你的默认网关。
计算机网络原理实验六
![计算机网络原理实验六](https://img.taocdn.com/s3/m/876493f0910ef12d2af9e7f0.png)
云南大学软件学院实验报告课程:计算机网络原理实验任课教师:刘春花,刘宇姓名:学号:专业:成绩:实验六、TCP 协议分析实验报告序号:姓名:学号:成绩1.实验目的:理解TCP报文首部格式和字段的作用,TCP连接的建立和释放过程,TCP数据传输过程中编号与确认的过程。
2.实验环境:连网环境,可以是局域网,也可以是连入Internet的单机。
3.实验步骤:(1)启动Etherel协议分析软件,并开始抓包。
(2)启动某个基于TCP的应用程序,例如连接某个FTP站点,或通过浏览器访问某个网页。
(3)等出现浏览的网页后停止数据包的捕获。
(4)出现协议分析界面,将filter 一栏填入tcp,则只显示TCP协议信息,通过此信息,可以看到TCP连接的三次握手过程和协商的初始的序列号,数据传输过程以及拆除连接的相应信息。
4.实验分析,回答下列问题打开捕获文件tcp-ethereal-trace-1,通过捕获的数据包分析TCP建立连接的三次握手的过程,并将TCP建立连接过程中的三个报文填写下来。
(1)TCP建立连接时的三个报文,其报文首部与其他TCP报文有什么不同?答:会有SYN信息和OPTION字段(2)报文首部的OPTION字段的作用是什么?值为多少?答:作用为:表明本端所能接收的最大长度的报文段。
值为 8byte(3)分析TCP数据传输阶段的前8个报文,将报文信息填入到表中数据传送阶段第一个报文的序号字段值是否等于连接建立时第三个报文的序号?答:数据传送阶段第一个报文的序号字段值等于连接建立时第三个报文的序号,都为1(4)捕获一个拆除TCP连接的数据包,附上捕获截图,主要要包含拆除连接的数据包部分,分析TCP释放连接的过程,选择TCP释放连接过程当中的四个报文,将报文信息填在下表。
用IE浏览器浏览时,丢包情况严重,最好使用ftp。
计算机网络课程实验6
![计算机网络课程实验6](https://img.taocdn.com/s3/m/d01e7024cfc789eb172dc828.png)
计算机网络课程实验报告《用户数据报协议(UDP)》一、实验内容IPV4协议实验六:用户数据报协议UDP二、实验原理一. 进程到进程的通信在学习UDP协议之前,首先应该了解主机到主机的通信和进程到进程的通信,以及这两种通信之间的区别。
IP协议负责主机到主机的通信。
作为一个网络层协议,IP协议只能把报文交付给目的主机。
这是一种不完整的交付,因为这个报文还没有送交到正确的进程。
像UDP这样的传输层协议负责进程到进程的通信。
UDP协议负责把报文交付到正确的进程。
下图描绘了IP协议和UDP协议的作用范围。
图6-1 UDP与IP的区别1. 端口号在网络中,主机是用IP地址来标识的。
而要标识主机中的进程,就需要第二个标识符,这就是端口号。
在TCP/IP协议族中,端口号是在0~65535之间的整数。
在客户/服务器模型中,客户程序使用端口号标识自己,这种端口号叫做短暂端口号,短暂的意思是生存时间比较短。
一般把短暂端口取为大于1023的数,这样可以保证客户程序工作得比较正常。
服务器进程也必须用一个端口号标识自己。
但是这个端口号不能随机选取。
如果服务器随机选取端口号,那么客户端在想连接到这个服务器并使用其服务的时候就会因为不知道这个端口号而无法连接。
TCP/IP协议族采用熟知端口号的办法解决这个问题。
每一个客户进程都必须知道相应的服务器进程熟知端口号。
UDP的熟知端口号如下表所示:表6-1 UDP的熟知端口号在一个IP数据包中,目的IP地址和端口号起着不同的寻址作用。
目的IP地址定义了在世界范围内惟一的一台主机。
当主机被选定后,端口号定义了在这台主机上运行的多个进程中的一个。
2. 套接字地址一个IP地址与一个端口号结合起来就叫做一个套接字地址。
客户套接字地址惟一地定义了客户进程,而服务器套接字地址惟一地定义了服务器进程。
要使用UDP的服务,就需要一对套接字地址:客户套接字地址和服务器套接字地址。
客户套接字地址指定了客户端的IP地址和客户进程,服务器套接字地址指定了服务器的IP地址和服务器进程。
计算机网络原理实验报告
![计算机网络原理实验报告](https://img.taocdn.com/s3/m/05a30803777f5acfa1c7aa00b52acfc788eb9f53.png)
计算机网络原理实验报告一、实验目的1.了解计算机网络的基本概念和原理;2.掌握计算机网络的基本组成部分及其功能;3.学习使用网络配置工具进行网络的配置和管理;4.掌握网络通信的基本步骤和网络协议的作用;5.通过实验,加深对计算机网络的理论知识的理解和应用。
二、实验环境1. 操作系统:Windows 10;2. 软件工具:Packet Tracer;3.实验设备:计算机、路由器、交换机。
三、实验内容1.网络配置实验通过使用Packet Tracer软件,建立一个简单的局域网,包括一台计算机、一台路由器和一台交换机。
使用网络配置工具进行网络的配置和管理,实现计算机与路由器之间的通信以及计算机与交换机之间的通信。
2.网络通信实验通过Ping命令测试计算机与路由器之间的连通性,并观察分组的传输过程。
同时,使用Wireshark抓包工具,捕获网络数据包,并分析数据包的结构和内容。
可以观察到IP地址、MAC地址以及各类协议的使用情况。
四、实验步骤1. 打开Packet Tracer软件,创建一个场景,包括一台计算机、一台路由器和一台交换机。
2.使用网络配置工具,给计算机、路由器和交换机分配IP地址,并设置子网掩码。
3.配置路由器的路由表,将计算机所在的网段加入到路由器的路由表中。
4. 在计算机上通过命令行窗口,使用Ping命令测试与路由器的连通性。
5. 同时,启动Wireshark抓包工具,并对网络通信进行抓包。
6. 观察Ping命令的结果,判断是否与路由器连通。
7. 分析Wireshark抓包结果,观察数据包的结构和内容,了解网络通信的基本原理和过程。
五、实验结果与分析1.网络配置实验通过网络配置工具,成功配置了计算机、路由器和交换机的IP地址,并设置了子网掩码。
通过配置路由器的路由表,实现了计算机与路由器之间的通信以及计算机与交换机之间的通信。
2.网络通信实验Ping命令的结果显示,计算机与路由器之间连通正常。
计算机网络原理实验六
![计算机网络原理实验六](https://img.taocdn.com/s3/m/f0c59faa0029bd64783e2c25.png)
云南大学软件学院实验报告课程:计算机网络原理实验任课教师:刘春花,刘宇姓名:学号:专业:成绩:实验六、TCP 协议分析实验报告序号:姓名:学号:成绩1.实验目的:理解TCP报文首部格式和字段的作用,TCP连接的建立和释放过程,TCP数据传输过程中编号与确认的过程。
2.实验环境:连网环境,可以是局域网,也可以是连入Internet的单机。
3.实验步骤:(1)启动Etherel协议分析软件,并开始抓包。
(2)启动某个基于TCP的应用程序,例如连接某个FTP站点,或通过浏览器访问某个网页。
(3)等出现浏览的网页后停止数据包的捕获。
(4)出现协议分析界面,将filter 一栏填入tcp,则只显示TCP协议信息,通过此信息,可以看到TCP连接的三次握手过程和协商的初始的序列号,数据传输过程以及拆除连接的相应信息。
4.实验分析,回答下列问题打开捕获文件tcp-ethereal-trace-1,通过捕获的数据包分析TCP建立连接的三次握手的过程,并将TCP建立连接过程中的三个报文填写下来。
字段名称第一条报文第二条报文第三条报文报文序号27 28 29Sequence Number 0 0 1 Acknowedgement Numbber 无 1 1ACK 0 1 1SYN 1 1 0(1)TCP建立连接时的三个报文,其报文首部与其他TCP报文有什么不同?答:TCP建立连接时的三个报文时,在报文首部比别的报文多了OPTION字段。
(2)报文首部的OPTION字段的作用是什么?值为多少?答:TCP Header中有一些options字段,最常用的是MSS字段,通常是SYN报文中携带这个字段,表明本端所能接收的最大长度的报文段。
值为至少一个字节的可变长字段的长度。
(3)分析TCP数据传输阶段的前8个报文,将报文信息填入到表中数据传送阶段第一个报文的序号字段值是否等于连接建立时第三个报文的序号?答:不等于,确认号是下一个将要被确认的字段值。
《计算机网络》实验六 静态路由配置 实验报告
![《计算机网络》实验六 静态路由配置 实验报告](https://img.taocdn.com/s3/m/692d68aeafaad1f34693daef5ef7ba0d4b736d6f.png)
实验报告六班级:07东方信息姓名:学号:实验时间:10年5月17日机房:9#205 组号:机号:A一、实验题目静态路由配置二、实验设备CISCO路由器、专用电缆、网线、CONSOLE线、PC机三、实验内容1了解路由器的功能2在CISCO路由器上设置和验证静态路由3配置缺省路由四、原理实现网络的互连互通,从而实现信息的共享和传输。
静态路由实验网络拓扑结构图:五、实际步骤步骤1:初始化设置(1)按照图4-1的网络拓扑结构,连接好PC与路由器的网线、PC与路由器Console端口的调试电缆、路由器与路由器之间的V.35电缆。
(2)按照图4-1要求,在PC1、PC2计算机中设置好IP地址、子网掩码、默认网关。
然后利用Ping命令测试两台PC机之间的连通性。
模拟器也按以上配置。
(3)在PC机上启动“超级终端”。
步骤2:路由器 Route A 的基础配置7-A#show runBuilding configuration...Current configuration : 826 bytes!version 12.3service timestamps debug datetime msecservice timestamps log datetime msecno service password-encryption!hostname 7-A!boot-start-markerboot-end-marker!enable password cisco!no network-clock-participate aim 0no network-clock-participate aim 1no aaa new-modelip subnet-zero!!ip cef!!no ftp-server write-enable!!!!interface FastEthernet0/0ip address 10.7.3.1 255.255.255.0duplex autospeed auto!interface FastEthernet0/1ip address 10.7.1.1 255.255.255.0 duplex autospeed auto!interface Serial0/3/0ip address 172.17.200.5 255.255.255.252 no fair-queue!interface Serial0/3/1no ip addressshutdownclockrate 2000000!ip classlessip http server!!!control-plane!!line con 0line aux 0line vty 0 4password ciscologin!scheduler allocate 20000 1000!End步骤3:路由器Route B 的基础配置7-B#show runBuilding configuration...Current configuration : 868 bytes!version 12.3service timestamps debug datetime msec service timestamps log datetime msecno service password-encryption!hostname 7-B!boot-start-markerboot-end-marker!enable password cisco!no network-clock-participate aim 0no network-clock-participate aim 1no aaa new-modelip subnet-zero!!ip cef!!no ftp-server write-enable!!!!interface FastEthernet0/0ip address 10.7.3.1 255.255.255.0 shutdownduplex autospeed auto!interface FastEthernet0/1ip address 10.7.2.1 255.255.255.0 duplex autospeed auto!interface Serial0/3/0ip address 172.17.200.6 255.255.255.252 no fair-queueclockrate 128000!interface Serial0/3/1bandwidth 64no ip addressshutdownclockrate 2000000!ip classlessip http server!!!control-plane!!line con 0line aux 0line vty 0 4password ciscologin!scheduler allocate 20000 1000!end步骤4:在 Route A 上配置静态路由7-A(config)#ip route 10.7.2.0 255.255.255.0 172.17.200.67-A(config)#10.7.4.0 255.255.255.0 172.17.200.6步骤5:检查9-A上的路由表7-A#show ip routeCodes: C - connected, S - static, R - RIP, M - mobile, B - BGPD - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter areaN1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2E1 - OSPF external type 1, E2 - OSPF external type 2i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2ia - IS-IS inter area, * - candidate default, U - per-user static routeo - ODR, P - periodic downloaded static routeGateway of last resort is not set172.17.0.0/30 is subnetted, 1 subnetsC 172.17.200.4 is directly connected, Serial0/3/010.0.0.0/24 is subnetted, 4 subnetsS 10.7.4.0 [1/0] via 172.17.200.6C 10.7.1.0 is directly connected, FastEthernet0/1C 10.7.3.0 is directly connected, FastEthernet0/0S 10.7.2.0 [1/0] via 172.17.200.6步骤6:Ping 7-B的FastEthernet端口的地址。
北航计算机网络实验实验6应用层实验2024秋
![北航计算机网络实验实验6应用层实验2024秋](https://img.taocdn.com/s3/m/a4dca748591b6bd97f192279168884868762b829.png)
北航计算机网络实验实验6应用层实验2024秋实验名称:应用层实验实验时间:2024秋实验目的:通过实验了解应用层的工作原理和常见应用协议的使用一、实验背景应用层是TCP/IP协议栈中的最高层,负责为用户提供各种应用服务。
应用层协议有很多种,如HTTP、DNS、FTP等。
本实验将重点学习HTTP协议和DNS协议。
二、实验原理1.HTTP协议HTTP协议是用于Web网络应用的协议,通过在客户端和服务器之间传输超文本数据来进行通信。
HTTP协议的数据传输是基于TCP的,它使用80端口进行通信。
HTTP协议的请求和响应由头部和主体组成,头部包含请求或响应的信息,主体包含实际的数据内容。
2.DNS协议DNS协议用于将域名解析为IP地址,以实现互联网上各个服务器之间的通信。
DNS协议使用53端口进行通信,是一个分布式数据库系统。
DNS协议包含两种类型的消息:查询消息和响应消息,其中查询消息用于向DNS服务器发出查询请求,响应消息用于回答查询请求。
三、实验过程1.HTTP实验在该实验中,首先需要在本地搭建一个简单的HTTP服务器,可以使用Python的SimpleHTTPServer模块来实现。
具体步骤如下:- 在终端中输入命令`python -m SimpleHTTPServer 8000`来启动HTTP服务器,服务器将监听8000端口并提供文件服务。
2.DNS实验在该实验中,需要使用Python的socket模块来实现DNS查询功能。
具体步骤如下:-构造DNS查询消息,包含查询的域名。
- 使用socket模块发送DNS查询消息到指定的DNS服务器。
-接收DNS服务器返回的响应消息,提取出查询结果并显示。
四、实验结果1.HTTP实验结果通过对HTTP服务器的搭建和访问,成功在浏览器中显示了服务器上的文件列表,并且可以通过指定文件名来访问文件。
2.DNS实验结果构造了DNS查询消息,并通过Python的socket模块成功发送到了指定的DNS服务器。
电大实验六计算机网络综合性实验
![电大实验六计算机网络综合性实验](https://img.taocdn.com/s3/m/3d33605558eef8c75fbfc77da26925c52cc591cb.png)
电大实验六计算机网络综合性实验计算机网络是信息时代的重要基础设施之一,其在数据通信、互联网、网络应用等方面发挥着重要作用。
电大实验六,计算机网络综合性实验,通过设计和实现一个简单的网络应用,加深对计算机网络原理和技术的理解。
本次实验采用Python编程语言和TCP/IP协议进行设计和实现。
实验目的:1.理解计算机网络的基本原理和TCP/IP协议;2. 熟悉Python编程语言的网络编程;3. 掌握socket编程接口和TCP客户端/服务器编程实现。
实验内容:1.基于TCP实现一个简单的聊天室程序。
2.聊天室程序包括一个服务器端和多个客户端,客户端间通过服务器进行通信。
实验步骤:1.设计服务器端的功能,并实现相应的代码。
服务器端主要包括以下功能:-启动服务器,接受客户端的连接请求;-接收客户端发送的消息,并将消息转发给所有连接的客户端;-处理客户端的退出请求。
2.设计客户端的功能,并实现相应的代码。
客户端主要包括以下功能:-连接服务器,发送连接请求;-发送消息给服务器;-接收服务器发送的消息;-处理客户端的退出请求。
3.实现服务器端和客户端的代码,并进行相应的调试和测试。
4.编写实验报告,总结实验过程、实验结果和实验心得。
实验步骤详解:1.设计服务器端的功能,并实现相应的代码。
1.创建一个TCP服务器套接字,并绑定到一个地址和端口;2.启动服务器,开始监听客户端的连接请求;3.接受客户端的连接请求,并保存客户端的套接字;4.创建一个新的线程,处理客户端的消息处理和转发;5.在主线程中,接收服务器的消息,并将消息转发给所有连接的客户端;6.处理客户端的退出请求,关闭客户端的套接字。
2.设计客户端的功能,并实现相应的代码。
1.创建一个TCP客户端套接字,并连接到服务器的地址和端口;2.发送连接请求给服务器;3.接收服务器发送的消息,并显示在客户端上;4.发送消息给服务器;5.处理客户端的退出请求,关闭客户端的套接字。
山东大学计算机网络-实验六
![山东大学计算机网络-实验六](https://img.taocdn.com/s3/m/9db197c7240c844769eaeeec.png)
实验6 路由信息协议RIP【实验目的】1、掌握路由协议的分类,理解静态路由和动态路由2、掌握路由协议RIP的报文格式、工作原理及工作过程3、掌握RIP计时器的作用4、理解RIP的稳定性【实验步骤】练习一:静态路由与路由表各主机打开协议分析器,进入相应的网络结构并验证网络拓扑的正确性,如果通过拓扑验证,关闭协议分析器继续进行实验,如果没有通过拓扑验证,请检查网络连接。
本练习将主机A、B、C、D、E、F作为一组进行实验。
1. 主机A、B、C、D、E、F在命令行下运行“route print”命令,察看路由表,并回答以下问题:●路由表由哪几项组成?答:路由表主要由网络目标、网络掩码、网关地址、接口、跃点数五项组成。
2. 从主机A依次ping 主机B(192.168.0.2)、主机C、主机E (192.168.0.1)、主机E(172.16.1.1),观察现象,记录结果。
通过在命令行下运行route print命令,察看主机B和主机E路由表,结合路由信息回答问题:●主机A的默认网关在本次练习中起到什么作用?答:本地主机用于向其他 IP 网络转发 IP 数据报的 IP 地址。
●记录并分析实验结果,简述为什么会产生这样的结果?3. 主机B和主机E启动静态路由。
(1)主机B与主机E在命令行下使用“staticroute_config”命令来启动静态路由。
(2)在主机B上,通过在命令行下运行route add命令手工添加静态路由(“route add 172.16.1.0 mask 255.255.255.0 192.168.0.1 metric 2”)。
(3)在主机E上,也添加一条静态路由(“route add 172.16.0.0 mask 255.255.255.0 192.168.0.2 metric 2”)。
(4)从主机A依次ping主机B(192.168.0.2)、主机E (192.168.0.1)、主机E(172.16.1.1),观察现象,记录结果。
国家开放大学《计算机网络》课程实验报告(实验六 计算机网络综合性实
![国家开放大学《计算机网络》课程实验报告(实验六 计算机网络综合性实](https://img.taocdn.com/s3/m/8664de4f6d85ec3a87c24028915f804d2b1687c9.png)
国家开放大学计算机网络》课程实验报告(实验六计算机网络综合性实国家开放大学计算机网络》课程实验报告实验六计算机网络综合性实一、实验目的本实验旨在通过综合性实验,对学生在计算机网络课程中所学到的知识进行综合运用和巩固,提高学生的实际操作能力和问题解决能力。
通过实验,学生能够加深对计算机网络原理、协议和技术的理解,以及掌握相关实验工具和方法。
二、实验内容本次实验的主要内容是完成一个简单的计算机网络配置与通信实验。
具体实验步骤如下:1. 在计算机上安装并配置虚拟机软件,创建两个虚拟机实例。
2. 对虚拟机进行网络配置,使它们能够相互通信。
3. 使用ping命令测试两个虚拟机之间的连通性。
4. 使用telnet命令进行远程登录测试。
5. 进行文件传输测试,验证网络通信的可靠性。
第1页/共4页三、实验步骤1. 安装虚拟机软件首先,在计算机上安装并配置虚拟机软件。
可以选择较为常用的 VMware Workstation 或者 VirtualBox。
安装完成后,双击软件图标,打开虚拟机控制面板。
2. 创建虚拟机实例在虚拟机控制面板中,点击“新建虚拟机”,进入虚拟机配置向导。
根据需要指定虚拟机的名称、存储路径和虚拟机的操作系统类型。
完成虚拟机创建后,重复该步骤创建第二个虚拟机实例。
3. 网络配置进入虚拟机控制面板,选择虚拟机实例,在菜单栏选择“编辑虚拟机设置”,进入虚拟机设置页面。
选择“网络适配器”,在右侧选择“桥接模式”,点击“确定”保存设置。
在两个虚拟机实例上都进行相同的网络配置,并确保虚拟机能够连通网络并能够获取到 IP 地址。
4. 测试连通性打开命令行界面,使用ping命令测试两个虚拟机之间的连通性。
在命令行中输入“ping [虚拟机 IP 地址]”,若出现类似于“64 字节的数据包, 来自192.168.1.100: 字节=64 时间<1ms TTL=128”的信息,说明虚拟机之间可以正常通信。
5. 远程登录测试在命令行界面中使用telnet命令进行远程登录测试。
计算机网络原理实验报告
![计算机网络原理实验报告](https://img.taocdn.com/s3/m/92aa856ca4e9856a561252d380eb6294dd8822b0.png)
计算机网络原理实验报告一、实验目的1.理解计算机网络基本原理2.掌握计算机数据传输的过程3.了解计算机网络的基本组成二、实验器材1.计算机2.网线3.路由器三、实验过程1.实验一:理解网络分层结构-计算机网络采用分层结构,分为物理层、数据链路层、网络层、传输层、应用层。
-物理层负责传输比特流,主要是光纤、双绞线等物理媒介。
-数据链路层负责将比特流转化为帧,并进行传输以保证数据的可靠性。
-网络层负责寻路和分组转发,将数据包从源节点传输到目标节点。
-传输层负责端到端连接的可靠性和流量控制。
-应用层为用户提供服务,负责通信协议的选择和具体的应用功能。
2.实验二:数据传输过程-数据从源主机通过物理媒介传输到目标主机的过程可以分为三个阶段:发送、传输和接受。
-发送端将数据按照层级结构封装,并通过物理媒介传输到接收端。
-接收端根据层级结构进行解封装和处理,最终将数据交给应用层使用。
3.实验三:计算机网络的基本组成-计算机网络由主机和链路两部分组成。
-主机包括终端设备和网络结点,终端设备有桌面电脑、笔记本电脑、智能手机等,网络结点有路由器、交换机等。
-链路是连接主机之间和主机与网络结点之间的通信路径。
四、实验结果在实验过程中,我成功地理解了计算机网络的基本原理,掌握了计算机数据传输的过程,并了解了计算机网络的基本组成。
实验结果表明,计算机网络是一个复杂的系统,需要多个层级结构相互配合才能实现数据的传输和通信。
五、实验总结通过本次实验,我深入理解了计算机网络的基本原理,掌握了计算机数据传输的过程,并了解了计算机网络的基本组成。
实验过程中,我遇到了一些问题,但通过与同学们的讨论和老师的指导,我成功地解决了这些问题,并达到了实验的目标。
六、总结和建议总的来说,本次实验对我来说是一次很好的学习机会,通过实践操作,我深入理解了计算机网络的基本原理。
然而,实验时间比较紧张,希望老师能够给予更多的实验训练的时间,让我们有更多的机会去实践和探索。
计算机网络原理实验报告
![计算机网络原理实验报告](https://img.taocdn.com/s3/m/a14b3e612e60ddccda38376baf1ffc4ffe47e20d.png)
计算机网络原理实验报告计算机网络原理实验报告一、引言计算机网络是当今社会中不可或缺的一部分,它连接了世界各地的计算机,使得信息的传输和共享变得更加便捷。
本篇实验报告将介绍计算机网络的基本原理以及我们在实验中所学到的知识和经验。
二、实验目的本次实验的目的是通过搭建一个简单的局域网,理解计算机网络的基本原理,并掌握网络的搭建和配置方法。
三、实验环境我们使用了两台计算机和一台路由器来搭建局域网。
其中,计算机A和计算机B分别连接到路由器的两个端口上,路由器通过交换机将两台计算机连接起来。
四、实验步骤1. 首先,我们将路由器和计算机A、计算机B连接起来,确保物理连接正常。
2. 在路由器上进行基本配置,包括设置IP地址、子网掩码和默认网关。
这些配置将决定计算机A和计算机B之间的通信。
3. 在计算机A和计算机B上配置IP地址和子网掩码,确保它们与路由器的配置相匹配。
4. 进行网络连通性测试,确保计算机A和计算机B之间可以相互通信。
五、实验结果经过以上步骤的操作,我们成功地搭建了一个局域网,并实现了计算机A和计算机B之间的通信。
我们进行了一系列的网络连通性测试,包括ping命令和文件传输等,结果均显示两台计算机之间的通信正常。
六、实验总结通过本次实验,我们深入了解了计算机网络的基本原理,并通过实际操作掌握了网络的搭建和配置方法。
我们了解了IP地址、子网掩码和默认网关的作用,以及它们在网络通信中的重要性。
同时,我们也学会了如何进行网络连通性测试,以确保网络的正常运行。
在实验过程中,我们遇到了一些问题,如配置错误导致网络无法通信等。
通过仔细排查和调试,我们最终找到了问题的所在并解决了它们。
这些问题的出现使我们更加深入地理解了网络配置的重要性,并提醒我们在实际应用中要注意细节和正确性。
总的来说,本次实验使我们对计算机网络有了更深入的理解,并提高了我们的实际操作能力。
我们将继续学习和探索计算机网络的更多知识,为今后的工作和学习打下坚实的基础。
计算机网络技术实验6
![计算机网络技术实验6](https://img.taocdn.com/s3/m/82813246580102020740be1e650e52ea5518cef7.png)
课程名称 计算机网络技术实验序号 实验六实验项目 ping程序的设计与实现实训实验地点实验学时 实验类型指导教师 实 验 员专 业 ________ 班 级学 号 姓 名年 月 日成绩:教师评语一、实验目的及要求1、加深对ICMP协议的理解2、熟悉原始套接字的使用方法3、掌握PING程序的实现流程二、实验原理与内容1、Ping,因特网包探索器,用于测试网络连接量的程序。
1)一种网络诊断工具2)发送ICMP回送请求报文3)接收 ICMP回送应答报文Ping命令执行后显示出被测试系统主机名和相应IP地址、返回给当前主机的ICMP报文顺序号、ttl 生存时间和往返时间rtt(单位是毫秒,即千分之一秒)。
2、Winsock 原始套接字的使用方法与API函数(1)初始化套接字函数(WSAStartup)格式:int WSAStartup( WORD wVersionRequested,LPWSADATA lpWSAData )参数:wVersionRequested 表明欲使用的 Windows Sockets API 版本,lpWSAData 指向 WSADA TA 资料的指针, 记录Winsock 实现的细节信息。
若返回值为0,则初始化成功,若不为0则失败。
(2)创建套接字函数(socket或WSASocket)1)、Socket函数格式:SOCKET socket( int af, int type, int protocol )参数:第一个参数为int af,代表网络地址族,目前只有一种取值是有效的,即AF_INET,代表internet地址族;第二个参数为int type,代表网络协议类型,SOCK_DGRAM代表UDP协议,SOCK_STREAM代表TCP协议;,指定网络地址族的特殊协议,目前无用,赋值0即可。
第三个参数为int protocol返回值为SOCKET,若返回INV ALID_SOCKET则失败。
云南大学软件学院计算机网络原理实验六实验报告3
![云南大学软件学院计算机网络原理实验六实验报告3](https://img.taocdn.com/s3/m/390856acf605cc1755270722192e453611665b7d.png)
实验六、传输层可靠传输协议GBN编程实验报告序号:姓名:学号:成绩指导老师:一、实验目的:1、通过编写实现一个简单可靠的数据传输协议GBN的发送和接收代码,模拟可靠数据传输2、理解TCP协议可靠传输的差错检测、重传、累计确认、定时器的可靠传输策略。
二、实验指导:参考教材。
动画演示:三、实验要求:编程实现一个GBN传输协议的发送方和接收方两程序,采用编程语言不限,要求能将发送――接收流程以及处理方法表现出来.1.实验流程图如下:N2.实验截图与代码如下: 截图: 传送下一个数据包结束代码及注释:一、GBN.h#pragma once#include <stdio.h>//基础功能模块的数据结构声明#define BIDIRECTIONAL 1 /* change to 1 if you're doing extra credit andwrite a routine called B_output *//* a "msg" is the data unit passed from layer 5 (teachers code) to layer4 (students' code). It contains the data (characters) to be delivered tolayer 5 via the students transport level protocol entities. */struct msg{ char data[20];};/* a packet is the data unit passed from layer 4 (students code) to layer3 (teachers code). Note the pre-defined packet structure, which allstudents 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层发送信息二、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 co rrupted by media*/被媒介毁坏的数据static int expectedseqnum = 0; /* expected se quence number at receiver side */在接收者这边接收到预期的序列数据static int nextseqnum; /* next sequence number to use in sender side */下一个序列数据使用在发送者这边static int base; /* t he head of sender window */发送者的头窗口struct pkt winbuf[WINDOWSIZE]; /* window packets buffer */数据包缓冲区窗口static int winfront,winrear; /* front and rear points of wind ow 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;}//检查是否出错int CheckCorrupted(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]);if ( (packet.checksum+checksum) == 0 )return (FALSE);elsereturn (TRUE);}//A端向外发送数据/* called from layer 5, passed the data to be sent to other side */ void A_output(struct msg message){int i;struct pkt sendpkt;/* if window is not full */if ( nextseqnum < base+WINDOWSIZE ){printf("----A: New message arrives, send window is not full, send new messge to layer3!\n");/* create packet */sendpkt.seqnum = nextseqnum;sendpkt.acknum = NOTUSED;for ( i=0; i<20 ; i++ )sendpkt.payload[i] = message.data[i];/* computer checksum */ComputeChecksum (&sendpkt);/* send out packet */tolayer3 (A, sendpkt);/* copy the packet to window packet buffer */winrear = (winrear+1)%WINDOWSIZE;pktnum ++;winbuf[winrear] = sendpkt;for (i=0; i<20; i++)winbuf[winrear].payload[i]= sendpkt.payload[i];/* update state variables */nextseqnum = nextseqnum+1;starttimer(A,RTT);B_input(sendpkt);A_input(sendpkt);}/* if window is full */else{printf("----A: New message arrives, send window is full,");/* if buffer full, give up and exit*/if ( msgnum == MAXBUFSIZE){printf (" Error: Sender buffer is full! \n");exit (1);}/* otherwise, buffer the message */else{printf("buffer new message!\n");bufrear = (bufrear+1) % MAXBUFSIZE;for (i=0; i<20; i++)buffer[bufrear].data[i] = message.data[i];msgnum ++;}}}//B端向外发送数据/* called from layer 5, passed the data to be sent to other side */ void B_output(struct msg message){int i;struct pkt sendpkt;/* if window is not full */if ( nextseqnum < base+WINDOWSIZE ){printf("----A: New message arrives, send window is not full, send new messge to layer3!\n");/* create packet */sendpkt.seqnum = nextseqnum;sendpkt.acknum = NOTUSED;for ( i=0; i<20 ; i++ )sendpkt.payload[i] = message.data[i];/* computer checksum */ComputeChecksum (&sendpkt);/* send out packet */tolayer3 (A, sendpkt);A_input(sendpkt);/* copy the packet to window packet buffer */winrear = (winrear+1)%WINDOWSIZE;pktnum ++;winbuf[winrear] = sendpkt;for (i=0; i<20; i++)winbuf[winrear].payload[i]= sendpkt.payload[i];/* if it is the first packet in window, start timeout */ //if ( base == nextseqnum )//{//starttimer(A,RTT);//printf("----A: start a new timer!\n");// }/* update state variables */nextseqnum = nextseqnum+1;}/* if window is full */else{printf("----A: New message arrives, send window is full,");/* if buffer full, give up and exit*/if ( msgnum == MAXBUFSIZE){printf (" Error: Sender buffer is full! \n");exit (1);}/* otherwise, buffer the message */else{printf("buffer new message!\n");bufrear = (bufrear+1) % MAXBUFSIZE;for (i=0; i<20; i++)buffer[bufrear].data[i] = message.data[i];msgnum ++;}}}//A端接收数据void A_input(struct pkt packet){struct pkt sendpkt;int i;/* if received packet is not corrupted and ACK is received */if ( (CheckCorrupted(packet) == FALSE) && (packet.acknum != NACK) ) {printf("----A: ACK %d is correctly received,",packet.acknum);packet_correct++;/* delete the acked packets from window buffer */winfront = (winfront+(packet.acknum+1-base)) % WINDOWSIZE; pktnum = pktnum - (packet.acknum+1-base);/* move window base */base = packet.acknum+1;stoptimer(A);if ( base < nextseqnum){//starttimer(A,RTT);printf ("\n\n\nsend new packets!");}/* if buffer is not empty, send new packets */while ( (msgnum!=0) && (nextseqnum<base+WINDOWSIZE) ) {/* create packet */sendpkt.seqnum = nextseqnum;sendpkt.acknum = NOTUSED;buffront = (buffront+1) % MAXBUFSIZE;for ( i=0; i<20 ; i++ )sendpkt.payload[i] = buffer[buffront].data[i];/* computer checksum */ComputeChecksum (&sendpkt);/* if it is the first packet in window, start timeout */if ( base == nextseqnum ){//starttimer(A,RTT);printf ("send new packets!\n");}/* send out packet */tolayer3 (A, sendpkt);/* copy the packet to window packet buffer */winrear = (winrear+1)%WINDOWSIZE;winbuf[winrear] = sendpkt;pktnum ++;/* update state variables */nextseqnum = nextseqnum+1;/* delete message from buffer */msgnum --;}}elseprintf ("----A: NACK is received, do nothing!\n");}//B端接收数据*****************************************************一定要调用这个/* Note that with simplex transfer from a-to-B, there is no B_output() */ /* called from layer 3, when a packet arrives for layer 4 at B*/void B_input(struct pkt packet){struct pkt sendpkt;int i;/* if not corrupted and received packet is in order */if ( (CheckCorrupted(packet) == FALSE) && (packet.seqnum == expectedseqnum)){printf("\n----B: packet %d is correctly received, send ACK!\n",packet.seqnum);/* send an ACK for the received packet *//* create packet */sendpkt.seqnum = NOTUSED;sendpkt.acknum = expectedseqnum;for ( i=0; i<20 ; i++ )sendpkt.payload[i] = '0';/* computer checksum */ComputeChecksum (&sendpkt);/* send out packet *///tolayer3 (B, sendpkt);/* update state variables */expectedseqnum = expectedseqnum+1;printf("----B:expectedseqnum = %d\n",expectedseqnum);/* deliver received packet to layer 5 *///tolayer5(B,packet.payload);}/* otherwise, discard the packet and send a NACK */else{printf("----B: packet %d is corrupted or not I expects, send NACK!\n",packet.seqnum);/* create packet */sendpkt.seqnum = NOTUSED;sendpkt.acknum = NACK;for ( i=0; i<20 ; i++ )sendpkt.payload[i] = '0';/* computer checksum */ComputeChecksum (&sendpkt);/* send out packet */tolayer3 (B, sendpkt);}}//A计时器超时/* called when A's timer goes off */void A_timerinterrupt(){int i;printf("----A: time out,resend packets!\n");/* start timer */starttimer(A,RTT);/* resend all packets not acked */for ( i=1; i<=pktnum; i++ ){packet_resent++;tolayer3(A,winbuf[(winfront+i)%WINDOWSIZE]);}}//B计时器超时/* called when B's timer goes off */void B_timerinterrupt(){int i;printf("----B: time out,resend packets!\n");/* start timer */starttimer(B,RTT);/* resend all packets not acked */for ( i=1; i<=pktnum; i++ ){packet_resent++;tolayer3(B,winbuf[(winfront+i)%WINDOWSIZE]);}}//A端初始化/* entity A routines are called. You can use it to do any initialization */void A_init()base = 0;nextseqnum = 0;buffront = 0;bufrear = 0;msgnum = 0;winfront = 0;winrear = 0;pktnum = 0;}//B端初始化/* entity B routines are called. You can use it to do any initialization */void B_init(){expectedseqnum = 0;}//初始化仿真器void init() /* initialize the simulator */{int i;float sum, avg;float jimsrand();FILE *fp;fp = fopen ("parameter.txt","r");printf("----- Stop and Wait Network Simulator Version 1.1 -------- \n\n");printf("Enter the number of messages to simulate: ");//fscanf(fp,"%d",&nsimmax);scanf("%d",&nsimmax);printf("\nEnter packet loss probability [enter 0.0 for no loss]: "); //fscanf(fp, "%f",&lossprob);scanf("%f",&lossprob);printf("\nEnter packet corruption probability [0.0 for no corruption]: "); //fscanf(fp,"%f",&corruptprob);scanf("%f",&corruptprob);printf("\nEnter average time between messages from sender's layer5 [ > 0.0]: ");//fscanf(fp,"%f",&lambda);scanf("%f",&lambda);printf("\nEnter TRACE: ");//fscanf(fp,"%d",&TRACE);scanf("%d",&TRACE);printf("\n\n");srand(9999); /* init random number generator */sum = 0.0; /* test random number generator for students */for (i=0; i<1000; i++)sum=sum+jimsrand(); /* jimsrand() should be uniform in [0,1] */avg = sum/1000.0;/*if(avg < 0.25 || avg > 0.75){printf("It is likely that random number generation on your machine\n" ); printf("is different from what this emulator expects. Please take\n"); printf("a look at the routine jimsrand() in the emulator code. Sorry. \n");exit(0);}*/printf("%f",avg);ntolayer3 = 0;nlost = 0;ncorrupt = 0;time=0.0; /* initialize time to 0.0 */generate_next_arrival(); /* initialize event list */}//随机数发生器float jimsrand(){double mmm = 2147483647; /* largest int - MACHINE DEPENDENT */float x; /* individual students may need to change mmm */x = rand()/mmm; /* x should be uniform in [0,1] */return(x);}//**************************************************************************************//*******************************事件处理部分*******************************************void generate_next_arrival(){double x,log(),ceil();struct event *evptr;float ttime;int tempint;//if (TRACE>2)//printf("-----------------GENERATE NEXT ARRIVAL: creating new arrival\n");x = lambda*jimsrand()*2; /* x is uniform on [0,2*lambda] *//* having mean of lambda */evptr = (struct event *)malloc(sizeof(struct event));evptr->evtime = time + x;evptr->evtype = FROM_LAYER5;if (jimsrand()<0.5){evptr->eventity = A;}evptr->eventity = B;insertevent(evptr);}//向事件列表中插入一条新的事件void insertevent(struct event *p){struct event *q,*qold;if (TRACE>2){//printf(" INSERTEVENT: time is %lf\n",time);//printf(" INSERTEVENT: future time will be %lf\n",p->evtime);}q = evlist; /* q points to front of list in which p struct inserted */if (q==NULL)/* list is empty */{evlist=p;p->next=NULL;p->prev=NULL;}else{for (qold = q; q !=NULL && p->evtime > q->evtime; q=q->next) qold=q;if (q==NULL)/* end of list */{qold->next = p;p->prev = qold;p->next = NULL;}else if (q==evlist)/* front of list */p->next=evlist;p->prev=NULL;p->next->prev=p;evlist = p;}else /* middle of list */{p->next=q;p->prev=q->prev;q->prev->next=p;q->prev=p;}}}//打印事件列表void printevlist(){struct event *q;int i;printf("--------------\nEvent List Follows:\n");for(q = evlist; q!=NULL; q=q->next){printf("Event time: %f, type: %d entity: %d\n",q->evtime,q->evtype,q->eventity);}printf("--------------\n");}//启动计时器void starttimer(int AorB,float increment){struct event *q;struct event *evptr;if (TRACE>2)printf("\n----A: START TIMER: starting timer at %f\n",time);/* be nice: check to see if timer is already started, if so, then warn *//* for (q=evlist; q!=NULL && q->next!=NULL; q = q->next) */for (q=evlist; q!=NULL ; q = q->next)if ( (q->evtype==TIMER_INTERRUPT && q->eventity==AorB) ){//printf("Warning: attempt to start a timer that is already started\n");return;}/* create future event for when timer goes off */evptr = (struct event *)malloc(sizeof(struct event));evptr->evtime = time + increment;evptr->evtype = TIMER_INTERRUPT;evptr->eventity = AorB;insertevent(evptr);}//停止计时器/* called by students routine to cancel a previously-started timer */ void stoptimer(int AorB) /* A or B is trying to stop timer */{struct event *q,*qold;if (TRACE>2)printf("\n----A: STOP TIMER: stopping timer\n");/* for (q=evlist; q!=NULL && q->next!=NULL; q = q->next) */for (q=evlist; q!=NULL ; q = q->next)if ( (q->evtype==TIMER_INTERRUPT && q->eventity==AorB) )/* remove this event */{if (q->next==NULL && q->prev==NULL)evlist=NULL; /* remove first and only event on listelse if (q->next==NULL) /* end of list - there is one in front */ q->prev->next = NULL;else if (q==evlist) /* front of list - there must be event after */{q->next->prev=NULL;evlist = q->next;}else /* middle of list */{q->next->prev = q->prev;q->prev->next = q->next;}free(q);return;}//printf("Warning: unable to cancel your timer. It wasn't running.\n");}//向第三层发送信息/************************** TOLAYER3 ***************/void tolayer3(int AorB,struct pkt packet){struct pkt *mypktptr;struct event *evptr,*q;float lastime, x, jimsrand();int i;ntolayer3++;/* simulate losses: */if (jimsrand() < lossprob){nlost++;if (TRACE>0)printf(" TOLAYER3: packet being lost\n");return;}/* make a copy of the packet student just gave me since he/she may decide *//* to do something with the packet after we return back to him/her */ mypktptr = (struct pkt *)malloc(sizeof(struct pkt));mypktptr->seqnum = packet.seqnum;mypktptr->acknum = packet.acknum;mypktptr->checksum = packet.checksum;for (i=0; i<20; i++)mypktptr->payload[i] = packet.payload[i];if (TRACE>2){printf(" TOLAYER3: seq: %d, ack %d, check: %d ", mypktptr->seqnum,mypktptr->acknum, mypktptr->checksum);for (i=0; i<20; i++)printf("%c",mypktptr->payload[i]);printf("");}/* create future event for arrival of packet at the other side */evptr = (struct event *)malloc(sizeof(struct event));evptr->evtype = FROM_LAYER3; /* packet will pop out from layer3 */ evptr->eventity = (AorB) % 2; /* event occurs at other entity */evptr->pktptr = mypktptr; /* save ptr to my copy of packet *//* finally, compute the arrival time of packet at the other end. medium can not reorder, so make sure packet arrives between 1 and 10 time units after the latest arrival time of packetscurrently in the medium on their way to the destination */lastime = time;/* for (q=evlist; q!=NULL && q->next!=NULL; q = q->next) */for (q=evlist; q!=NULL ; q = q->next)if ( (q->evtype==FROM_LAYER3 && q->eventity==evptr->eventity) ) lastime = q->evtime;evptr->evtime = lastime + 1 + 9*jimsrand();/* simulate corruption: */if (jimsrand() < corruptprob){ncorrupt++;if ( (x = jimsrand()) < .75)mypktptr->payload[0]='Z'; /* corrupt payload */else if (x < .875)mypktptr->seqnum = 999999;elsemypktptr->acknum = 999999;if (TRACE>0)printf(" TOLAYER3: packet being corrupted\n");}//if (TRACE>2)//printf(" TOLAYER3: scheduling arrival on other side\n");insertevent(evptr);}//向第五层发送信息/************************** TOLAYER5 ***************/void tolayer5(int AorB,char datasent[20]){int i;if (TRACE>2){printf(" TOLAYER5: data received: ");for (i=0; i<20; i++)printf("%c",datasent[i]);printf("\n");}}三、GBN-CS.c#include "GBN.h"#include <stdio.h>#include <string.h>#include <stdlib.h>extern int TRACE ; /* for my debugging */extern int nsim ; /* number of messages from 5 to 4 so far */extern int nsimmax; /* number of msgs to generate, then stop */extern float time;extern int packet_correct;extern int packet_resent;extern struct event *evlist;int main(){struct event *eventptr;struct msg msg2give;struct pkt pkt2give;int i,j;char c;init();A_init();B_init();while (1){eventptr = evlist; /* get next event to simulate */ if (eventptr==NULL)goto terminate;evlist = evlist->next; /* remove this event from event list */if (evlist!=NULL)evlist->prev=NULL;if (TRACE >= 2){printf("\nEVENT time: %f,",eventptr->evtime);printf(" type: %d",eventptr->evtype);if (eventptr->evtype==0)printf(", timerinterrupt ");else if (eventptr->evtype==1)printf(", fromlayer5 ");elseprintf(", fromlayer3 ");printf(" entity: %d\n",eventptr->eventity);}time = eventptr->evtime; /* update time to next event time*/if (nsim==nsimmax)break; /* all done with simulation */if (eventptr->evtype == FROM_LAYER5 ){generate_next_arrival(); /* set up future arrival *//* fill in msg to give with string of same letter */j = nsim % 26;for (i=0; i<20; i++)msg2give.data[i] = 97 + j;if (TRACE>2){printf(" MAINLOOP: data given to student: ");for (i=0; i<20; i++)printf("%c", msg2give.data[i]);printf("\n");}nsim++;if (eventptr->eventity == A){A_output(msg2give);}else{B_output(msg2give);}}else if (eventptr->evtype == FROM_LAYER3){pkt2give.seqnum = eventptr->pktptr->seqnum;pkt2give.acknum = eventptr->pktptr->acknum;pkt2give.checksum = eventptr->pktptr->checksum;for (i=0; i<20; i++)pkt2give.payload[i] = eventptr->pktptr->payload[i];if (eventptr->eventity == A) /* deliver packet by calling */ A_input(pkt2give); /* appropriate entity */elseB_input(pkt2give);free(eventptr->pktptr); /* free the memory for packet */ }else if (eventptr->evtype == TIMER_INTERRUPT){if (eventptr->eventity == A)A_timerinterrupt();elseB_timerinterrupt();}else{printf("INTERNAL PANIC: unknown event type \n");}free(eventptr);}terminate:printf(" Simulator terminated at time %f\n after sending %d msgs from layer5\n",time,nsim);printf(" correctly sent pkts: %d \n", packet_correct);printf(" resent pkts: %d \n", packet_resent);system("pause");}附源代码及注释四. 实验小结通过本次试验了解了编程实现简单可靠的数据传输GBN协议,模拟了可靠数据传输理解了TCP协议可靠传输的差错检测、重传、累计确认、定时器的可靠传输策略。
计算机网络实验报告实验6
![计算机网络实验报告实验6](https://img.taocdn.com/s3/m/73cacd7653d380eb6294dd88d0d233d4b04e3f54.png)
计算机网络实验报告实验6一、实验目的本次计算机网络实验 6 的主要目的是深入理解和掌握计算机网络中特定的概念、技术和应用,通过实际操作和观察,增强对计算机网络原理的直观认识,提高解决实际网络问题的能力。
二、实验环境本次实验在学校的计算机网络实验室进行,实验室配备了若干台计算机,安装了最新的操作系统和网络模拟软件。
每台计算机通过交换机连接,形成一个小型的局域网环境。
三、实验内容与步骤(一)网络拓扑结构的构建首先,我们使用网络模拟软件构建了一个简单的星型网络拓扑结构。
在这个结构中,中心节点是一台交换机,周边节点是若干台计算机。
通过配置交换机和计算机的网络参数,如IP 地址、子网掩码和网关等,实现了网络的互联互通。
(二)数据包的捕获与分析接下来,我们使用网络分析工具捕获了网络中的数据包。
通过对捕获到的数据包进行详细分析,了解了数据包的结构、源地址、目的地址、协议类型等关键信息。
这让我们对网络中的数据传输有了更直观的认识。
(三)网络服务的配置与测试然后,我们配置了一些常见的网络服务,如 DHCP 服务和 DNS 服务。
在配置 DHCP 服务时,设置了 IP 地址池、子网掩码、网关和 DNS 服务器等参数,使得计算机能够自动获取 IP 地址等网络配置信息。
在配置 DNS 服务时,创建了域名和 IP 地址的映射关系,以便实现通过域名访问网络资源。
配置完成后,进行了测试,确保这些服务能够正常工作。
(四)网络故障的模拟与排除为了提高我们解决网络故障的能力,我们模拟了一些常见的网络故障,如网络线缆断开、IP 地址冲突等。
然后,通过使用网络诊断工具和排查方法,逐步定位和解决了这些故障。
四、实验结果与分析(一)网络拓扑结构构建结果成功构建了星型网络拓扑结构,计算机之间能够相互通信,ping 测试结果显示网络连接正常,数据包传输延迟在合理范围内。
(二)数据包捕获与分析结果通过分析捕获到的数据包,我们发现网络中的数据传输遵循了特定的协议规则,如 TCP、UDP 等。
矿产
![矿产](https://img.taocdn.com/s3/m/829bb502a4e9856a561252d380eb6294dd88229b.png)
矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。
如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。
㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。
(2 列出开发利用方案编制所依据的主要基础性资料的名称。
如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。
对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。
二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。
2、国内近、远期的需求量及主要销向预测。
㈡产品价格分析
1、国内矿产品价格现状。
2、矿产品价格稳定性及变化趋势。
三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。
2、矿区矿产资源概况。
3、该设计与矿区总体开发的关系。
㈡该设计项目的资源概况
1、矿床地质及构造特征。
2、矿床开采技术条件及水文地质条件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。
如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。
㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。
(2 列出开发利用方案编制所依据的主要基础性资料的名称。
如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。
对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。
二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。
2、国内近、远期的需求量及主要销向预测。
㈡产品价格分析
1、国内矿产品价格现状。
2、矿产品价格稳定性及变化趋势。
三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。
2、矿区矿产资源概况。
3、该设计与矿区总体开发的关系。
㈡该设计项目的资源概况
1、矿床地质及构造特征。
2、矿床开采技术条件及水文地质条件。