西安交通大学计算机-网络原理实验报告文档格式.docx
《西安交通大学计算机-网络原理实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《西安交通大学计算机-网络原理实验报告文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
![西安交通大学计算机-网络原理实验报告文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/4/61e56a65-9483-46e6-be8b-7652dfd6ce24/61e56a65-9483-46e6-be8b-7652dfd6ce241.gif)
首先连接拓扑图,两个主机通过三个路由器实现连接。
步骤二:
配置各个路由器的名称,端口IP地址,子网掩码,封装格式及时钟频率。
步骤三:
配置各个主机的IP地址,子网掩码,以及与其相连的路由器端口地址。
步骤四:
配置RIP协议,实现路由选择及IP分组转发。
四、实验过程及结果
Router1:
Router2:
Router3:
PC1
PC2
结果:
配置静态路由:
R1:
R2:
R3:
配置动态路由:
R1:
R2:
R3:
五、实验分析
(1)命令
Configureterminal:
特权模式进入全局配置模式;
Hostnamerouter:
配置路由器名称命令;
Encapsulationhdlc:
封装帧(3种串行接口帧封装格式,HDLC是默认的封装格式;
Clockrate:
设置时钟频率;
Noshutdown:
激活接口(在执行激活命令后,接口状态刚开始还是up状态,又
变成down状态了,之所以出现这种现象,是因为还没有配置另一端接口,它还处于非活动状态,还不能接收来自于现在这个接口的任何信息)
Ping:
因特网包探测器,用于测试网络连接量的程序。
(2)结果分析
Ping命令会发送一个ICMP回声请求消息给目的地并报告是否收到所希望的
ICMP回声应答;
一般的,连续发送4个32字节的ICMP请求包,而此实验中
发
送了5个,收到了5个;
根据是否收到回声应答以及回声响应时间来判断网络的连通性。
Time:
响应时间,值越小,说明连接这个地址速度越快TTL:
生存期,即路由跳数
六、实验心得
通过这次实验,我对于路由器的配置过程有了更深地了解,同时也对网络连接的基本原理有了实际化地体验,以前只是在书本上看到局域网之间,广域网之间连接通过网桥,路由器等,但具体的实施只靠图片及想象,而这次实验让我亲身实践了解,我相信会有更深地认识的。
实验二 利用分组嗅探器(ethereal)分析协议HTTP
一、 实验目的
利用ethereal软件分析HTTP及其下层协议(TCP协议、IP协议等),了解网络中数据封装的概念,并掌握HTTP及TCP协议的工作过程。
(1)掌握计算机网络中数据封装的概念;
(2)掌握HTTP协议的基本原理及数据包格式;
(3)掌握TCP协议的连接建立、数据传输、连接释放的过程;
(4)掌握IP协议的基本原理和IP分组的格式。
本实验要求学生从ethereal截获的报文中提取并分析HTTP请求报文和HTTP应答报文;
综合分析截获的报文,概括HTTP协议的工作过程;
从截获报文中选择TCP建立连接和释放连接的报文,分析各个字段的值并概括TCP协议的工作过程;
从截获报文中分析IP协议的工作过程和IP分组的格式。
三、 实验结果与分析
分析:
实验中第5行中IP为115.154.86.61的客户端向域名为发送请求建立
TCP连接,序列号为0,长度为0,最大分段大小为1460;
第6行中向115.154.86.61发送响应,序列号为0,下一个期待的号为1(表示序列号为0的序列已收到),窗口大小为5840,最大分段大小为1460;
第7行中客户端向服务端发送了一个确认,序列号为1,下一个期待的号为1,窗口大小为64240,长度为0;
此时通过三次握手协议连接已经建立。
第8行中http客户端发送http请求报文以便进入TCP连接插口,使用永久连接;
第9行中服务端向客户端发送一个确认,序列号为1,下一个期待的号为195,窗口
大小为6432,长度为0;
第10行中服务端又向客户端发送一个响应的http报文,表示收到请求报文;
第23行中客户端又向服务端发送http请求报文,分析原因是可能服务端发送的响应
http报文丢失;
第25行服务端又向客户端发送一个响应的http报文;
第26行客户端发送响应报文,序列号为393,期待下一个序列号为1225,此时窗口大小为63016,长度为0;
第5行的IP报文分析:
源地址:
115.154.86.61
目的地址(域名):
114.112.68.214()版本号:
4
报头长度:
20个字节服务类型域:
0x00
总长度:
48
标识域:
0x224f(8783)
分段标志:
DF=0x04,即不允许分段段偏移量:
生存期:
64协议域:
TCP
头校验和:
0x0000
目的地址:
114.112.68.214
TCP:
源端口——52101;
目的端口——http(80)
分析http协议工作过程:
(1)浏览器分析超链指向页面的URL。
(2)浏览器向DNS请求解析的IP地址。
(3)域名系统DNS解析出西安交通大学校园网主页服务器的IP地址。
(4)浏览器与服务器建立TCP连接(三次握手建立连接)。
(5)浏览器发出取文件命令。
(6)服务器给出响应,把文件index.htm发给浏览器。
(7)TCP连接释放。
(8)浏览器显示“”首页。
此次建立连接端口号为1252,第一行是本机向xjtu网站发送建立连接请求,第二行是xjtu网站收到请求,发送报文,并向本机发送了下一次希望接收报文的序列号是ACK+1,第三行是本机相xjtu网站发送的确认信号。
这就是建立连接的TCP“三次握手协议”。
释放连接时,需要有四次释放确认,双方各两次向彼此发送两次确认释放连接信号,图中表明首先本机向对方网站发送释放连接请求报文;
接下来对方网站接受到该请求,响应请求并通知相应的应用程序,对方要求关闭连接,然后应用程序只是TCP进程彻底关闭这个连接,于是TCP进程向本机发送第二个报文段;
接下来本机向对方网站发送最后一个确认报文段,自己最终也断开连接,自此,连接成功释放。
实验中遇到的问题及解决办法:
①实验中遇到的问题:
在实验之前一直会出现,软件安装不正确的警告。
解决办法:
安装正确版本的winpcap。
四、实验心得
通过此次实验,我明白了HTTP协议的基本原理及TCP的连接建立,数据传输,连接释放的过程,对于网络信息传输有了更深的了解。
试验中遗憾的是没有截获到释放连接的报文(开始时没有看见,等到所有的已做完时发现没有释放的报文),可能是因为发送时间超时报文出错,最终自动释放链接的原因。
实验三 基于Socket的网络编程实验
(1)了解FTP协议的工作原理,掌握基于socket的网络编程的基本原理。
(2)掌握基于socket网络编程的基本知识;
(3)掌握FTP客户端和服务器端数据交换的方式和数据包格式。
本实验要求学生基于Socket网络编程技术实现FTP客户端,能完成对FTP服务器的访问,并可执行上传和下载操作。
三、源代码分析
我是使用java语言编写的,代码的大致结构如下:
1:
字节流结构:
每次发送12+1024个字节
其中,前七个字节字节表示命令
第七到第十二个字节表示后面1024字节中的有效字节的长度
例如一帧中前12个字节的内容为"
UPFILEN00012"
表示要上传文件名,文件名的长度是12。
那么程序就在后面的1024个字节中去12个字节,在把它转换为字符串,作为要上传的文件名。
2:
命令结构Server端:
DISCONN:
断开连接LSFILES:
发送当前目录文件列表ENDFILE:
上传一个文件的结束标记
UPFILEN:
表示要上传一个新的文件,并且此包中包含了文件名UPDATAS:
表示本包是要上传的数据DNFILEN:
表示要下载的文件名,服务器要执行向客户端传输文件的操作Client端:
断开连接LSFILES:
接收服务器当前目录文件列表ENDFILE:
下载一个文件的结束标记DNDATAS:
表示本包是要下载的数据
3:
文件结构
FtpServer:
ftp软件的服务器端,目前在端口2121监听,支持多线程,文件的上传,下载,列表。
FtpClient:
ftp软件的客户端,默认连接本机的服务器端,在端口2121,支持文件的上传,下载,列表。
FtpClientUI:
ftp软件的客户端的用户界面,完全采用Swing技术,手工编写,没有用JB自动生成。
PublicFunc:
提供一些公共的静态方法例如将给定的String对象分装成要发送的帧。
将数字格式化成长度为五位的String类型对象。
packagecn.edu.bit.software.ftptrans;
四、实验结果
字符界面:
UI初始化界面:
soket实现上传功能:
Soket实现下载功能:
五、实验心得
本次实验中,我在网上查阅了很多资料,并参考了网络上的一些源码,进行了一些修改。
懂得其中的基本流程,例如建立请求连接时,首先得建立启动套接字,根据其响应开始建立连接,要发送IP地址与端口号才能建立此控制连接(socket端口号为21)。
我也掌握基于socket网络编程的基本知识,掌握FTP客户端和服务器端数据交换的方式和数据包格式。
在使用socket编程的时候,学习到了不少socekt的相关知识,特别是其中和网络相关的众多函数和结构体。
这次实验让我对socket网络编程的基本原理有了更深刻地了解,明白平时在ftp下载文件的内部过程,让我对网络原理这门课又有了进一步认识,希望以后能了解更多。
六、源代码
由于源代码比较多,我这里只给出源代码的部分截图: