计算机网络与通信实验指导书.docx
《计算机网络与通信实验指导书.docx》由会员分享,可在线阅读,更多相关《计算机网络与通信实验指导书.docx(20页珍藏版)》请在冰点文库上搜索。
计算机网络与通信实验指导书
《计算机网络与通信》实验指导书
通信05班
武汉理工大学教材中心
2009年7月
目录
实验一协议分析1——传输层协议3
实验二协议分析2——应用层协议9
实验三基于网络通信协议的设计(设计性)14
实验一协议分析1——传输层协议
一、实验目的
1、了解传输层协议的基本工作原理
2、了解传输层协议的分类
3、熟悉传输层协议的工作过程
二、实验原理
在
因特网上,传输层协议负责将数据从一个应用程序传递到另一个应用程序。
它即不关心所传输的具体数据,也不关心能否正确识别目标主机。
TCP(传输控制协议)和UDP(数据报协议)是目前的两个主要的传输层协议。
传输层协议指定了用于正确定位应用程序发送端和接收端的源端口号和目的端口号。
这一过程称为多路复用和多路分解。
同一因特网主机上的应用程序所产生的多个数据流复用一个输出连接。
同一因特网主机上不同应用程序的多个数据流可能也会通过一个输入连接传输,但是他们最终将会被分解并传输到各自的应用程序中去。
1、TCP
是因特网中最主要的传输层协议。
它能够在两个应用程序间提供可靠地有序数据流传输,即使这两个程序运行在不同的主机上并且被一个会丢失、重排序或者破坏分组的网络所隔开。
TCP能够检测传输过程中分组是否丢失、延迟和改变,如是则重传这些分组,从而提供了可靠地数据流传输。
实现可靠传输借助TCP报文段的首部,如图所示:
TCP报文段首部
TCP报文段首部:
源端口和目的端口:
各占2个字节,是运输层与应用层的服务接口。
序号:
占4个字节。
TCP连接传送的数据流中的每一个字节都被编上一个序号。
首部中序号字段的值指的是本报文段所发送的数据的第一个字节的序号。
确认号:
占4个字节,是期望收到对方下一个报文段的数据的第一个字节的序号。
数据偏移:
占4bit,它指出报文段的数据起始处距离TCP报文段的起始处有多远。
实际上就是TCP报文段首部的长度。
保留:
占6bit,保留为今后使用。
紧急比特URG:
当URG=1时,表明紧急指针有效。
它告诉系统报文段中有紧急数据,应尽快传送。
确认比特ACK:
ACK=1时确认号字段才有效,ACK=0时确认号字段无效。
推送比特PUSH:
接收方接收到PUSH=1的报文段时会尽快的将其交付给接收应用进程,而不再等到整个接收缓存都填满后再向上交付。
复位比特RST:
当RST=1时,表明TCP连接中出现严重差错,必须释放连接。
复位比特还用来拒绝一个非法的报文段或拒绝打开一个连接。
同步比特SYN:
在连接建立时用来同步序号。
当SYN=1而ACK=0时,表明这是一个连接请求报文段。
对方若同意建立连接,应在响应的报文段中使SYN=1和ACK=1。
因此,SYN=1就表示这是一个连接请求或连接接收报文。
终止比特FIN:
当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
窗口:
占2个字节,用来控制对方发送的数据量,单位是字节,指明对方发送窗口的上限。
校验和:
占2个字节,校验的范围包括首部和数据两个部分,计算校验和时需要在报文段前加上12字节的伪首部。
紧急指针:
占2个字节,指出本报文段中紧急数据最后一个字节的序号。
只有当紧急比特URG=1时才有效。
选项:
长度可变。
TCP只规定了一种选项,即最大报文段长度MSS(MaximumSegmentSize)。
TCP连接建立的过程如下图所示:
TCP三次握手
TCP连接释放的过程如下图所示:
TCP释放
2、UDP
UDP与TCP比较,不提供可靠的有序报文传输。
UDP首部字段由4个部分组成,其中两个是可选的。
各16-bit的源端口和目的端口用来标记发送和接受的应用进程。
因为UDP不需要应答,所以源端口是可选的,如果源端口不用,那么置为零。
在目的端口后面是长度固定的以字节为单位的长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8(octets)。
首部剩下地16-bit是用来对首部和数据部分一起做校验和的,这部分是可选的,但在实际应用中一般都使用这一功能。
由于缺乏可靠性,UDP应用一般必须允许一定量的丢包、出错和复制。
三、实验内容
1、分析TCP报文段的结构,熟悉各个字段的内容、功能、格式和取值范围;
2、TCP连接建立与释放
3、TCP与UDP的比较
四、实验说明
为方便获取实验用数据流,借助PCATTCP调试工具和数据包捕获软件。
1、PCATTCP调试工具
PCATTCP是一个简单、实用的TCP和UDP调试工具,使用这个工具产生TCP或UDP数据流进行实验,可以避免应用层协议数据的复杂性干扰传输层的协议分析,而且这个工具可以通过不同的参数组合可控制地产生各种传输层的情形。
参数说明
格式:
pcattcp–参数
参数:
-r:
接受端
-t:
发送端
-lx:
表示缓冲区大小(x设置缓冲区)
-nx:
表示一共发送x个数据包
-u:
表示UDP协议
-pport号:
设置通信端口号
2、数据包捕获软件
1)主界面
2)捕获界面
捕获界面分为:
列表框、协议框、原始框
列表框
显示的是捕获的所有分组信息。
包括分组发送的时间,源地址、目的地址、协议等信息。
协议框
显示所选分组的各层协议。
包括物理层帧、以太网帧、用户数据报协议、超文本传输协议等。
原始框
显示分组中包含的数据的每个字节。
从中可以观察最原始的传输数据。
其中方框左边显示的是十六进制的数据,右边显示的是ASCII码。
通过以上界面分析捕获的数据分组,了解传输层协议的工作过程。
3、实验方法说明
1)TCP连接建立与释放
TCP是因特网中最主要的传输层协议。
它能够在两个应用程序间提供可靠的有序数据流传输。
TCP报文段
源端口、目的端口、序号、确认号、标志位等信息。
标志位
PSH位:
表示发送端应用程序要求数据立刻发送。
SYN位:
同步序号,用来建立连接。
FIN位:
表示传送结束。
ACK位:
应答标志。
查看TCP三次握手
电脑两台分别配置IP地址;
开始—运行—cmd进入dos命令界面;
其中一台为接收端,配置命令为:
c:
\pcattcp–r
通信双方启动捕获软件;
另一台为发送端,配置配置命令为:
c:
\pcattcp–t–n1接收端电脑IP地址
通信结束后停止捕获,查看捕获信息。
2)TCP与UDP比较
UDP实验方法与TCP类似,只需要在配置命令后增加一个参数“-u”就可以了。
五、实验报告要求
1、简述实验目的、原理;
2、简述TCP连接建立与释放的过程;
3、比较TCP与UDP的特点。
实验二协议分析2——应用层协议
一、实验目的
1、了解应用层协议的基本工作原理
2、了解应用层协议的分类
3、熟悉应用层协议的工作过程
二、实验原理
在
因特网上,应用层协议直接支持网络应用软件,如Web浏览器、FTP、电子邮件等等。
应用层协议定义了一种语言,使网络应用程序能够相互“交谈”,满足用户需求。
应用程序员使用称为套接字的高级对象通过网络进行数据的读写。
套接字的行为相当于文件操作——向该文件中写的数据被发送到网络,从该文件中读的数据则来自于网络某处运行着的另一应用程序。
套接字极大地隐藏了在网络中实际发送数据的复杂性,它允许应用程序员及应用层协议编写者,集中精力去开发由应用程序功能所要求的简单且自然的数据交换的方法。
HTTP协议
超文本传输协议(HTTP-Hypertexttransferprotocol)是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
HTTP请求和响应
三、实验内容
1、HTTP请求与响应
2、网络测试工具ping
四、实验说明
为方便获取实验用数据流,借助PCATTCP调试工具和数据包捕获软件。
1、PCATTCP调试工具
PCATTCP是一个简单、实用的TCP和UDP调试工具,使用这个工具产生TCP或UDP数据流进行实验,可以避免应用层协议数据的复杂性干扰传输层的协议分析,而且这个工具可以通过不同的参数组合可控制地产生各种传输层的情形。
参数说明
格式:
pcattcp–参数
参数:
-r:
接受端
-t:
发送端
-lx:
表示缓冲区大小(x设置缓冲区)
-nx:
表示一共发送x个数据包
-u:
表示UDP协议
-pport号:
设置通信端口号
2、数据包捕获软件
1)主界面
2)捕获界面
捕获界面分为:
列表框、协议框、原始框
列表框
显示的是捕获的所有分组信息。
包括分组发送的时间,源地址、目的地址、协议等信息。
协议框
显示所选分组的各层协议。
包括物理层帧、以太网帧、用户数据报协议、超文本传输协议等。
原始框
显示分组中包含的数据的每个字节。
从中可以观察最原始的传输数据。
其中方框左边显示的是十六进制的数据,右边显示的是ASCII码。
通过以上界面分析捕获的数据分组,了解传输层协议的工作过程。
3、实验方法说明
1)简单网络环境建立
利用IIS建立一个简单的网络环境
进入IIS步骤:
首先进入控制面板;
在控制面板内选择管理工具;
在管理工具内选择Internet信息服务;
双击Internet信息服务进入到IIS的配置界面。
IIS配置主界面
选中默认网站单击右键
在右键快捷菜单中选择属性选项
主目录选项页
文档选项页
测试网络
打开网络浏览器,在地址栏输入IP地址
2)捕获HTTP请求与响应
首先在PC机上运行捕获软件,然后在地址栏输入IP地址,查看捕获的信息。
查看捕获的数据分组,分析HTTP请求与响应过程。
3)网络测试工具ping
五、实验报告要求
1、简述实验目的、原理;
2、简述HTTP协议请求与响应过程。
实验三基于网络通信协议的设计
一、实验目的
1、了解通信协议的基本工作原理
2、了解Winsock的编程方法
3、设计一个简单通信协议并实现
二、实验原理
Internet是国际性的通信网络的集合体,它集现代通信技术和现代计算机技术于一体,是计算机之间进行国际信息交流和实现资源共享的良好手段。
Internet提供各种各样的服务:
Telnet、FTP、电子邮件、网络新闻服务、文档查询索引服务及其它信息服务。
Internet上信息传递基于TCP/IP(传输控制协议/互联网协议)协议。
网络编程
Windows网络编程
UNIX网络编程
JAVA网络编程
Web客户/服务器端编程
Windows网络编程
Windows环境下的Internet编程主要是进行Sockets编程。
Winsock是MicrosoftWindows提供的网络编程接口,它提供了基于TCP/IP协议的接口实现方法。
TCP/IP的结构
通过网路进行数据通信,需要用地址来标识网路中的主机,这样才能保证数据正确的发送到主机。
TCP/IP协议使用IP地址作为网络中主机的标识,而且每台主机的IP地址是唯一的,从而实现通过IP地址建立彼此之间的联系。
通常情况下,由于每台主机上运行不止一个应用程序,所以为使应用程序间建立连接,还需要一个地址标识。
在TCP/IP协议中使用端口(Port)来作为主机上运行的应用程序的标识号。
因此,TCP/IP协议中一个有效的网络地址包括IP地址和端口地址。
TCP/IP协议提供两种同其它主机进行通信的方式:
TCP方式和UDP方式
TCP方式:
是一种面向连接的服务,它在两个主机间建立连接,提供双向、有序且无重复的数据流服务,以及流量控制、差错检测和纠错等服务,保证数据的可靠传输。
UDP方式:
是一种双向的无连接数据服务,它把数据发送出去但并不进行差错控制和检查,所以不能保证数据可靠性,因而用于少量数据的传输。
三、实验内容
利用Winsock控件编写TCP应用程序或者UDP应用程序。
Winsock简介
Winsock控件属性
Bytereceived接受到的数据字节数
LocalHostName本地主机名
LocalIP本地IP地址
LocalPort本地机器通信程序的端口
RemoteHost远程机器名
RemoteHostIP远程机器的IP地址
RemotePort远程通信端口地址
SocketHandle提供给调用WinsockAPI的句柄参数
State连接的当前状态
Protocol设置使用的协议TCP或UDP
State连接状态
State常数值描述
sckclosed0关闭状态
sckopen1打开状态
scklistening2监听状态
sckconnectionsuspending3连接挂起
sckresolvinghost4解析域名
sckconneting5正在连接
sckconnected6已建立连接
sckclosing7正在关闭
sckerror8出错
Winsock控件方法
Accept方法
用于接收一个连接请求。
在用TCP建立连接时,当有连接请求到来就用此方法接受请求以建立连接。
调用格式:
winsock对象.AcceptRequestID
Bind方法
在存在多协议接口卡的情况下,用此方法把接口卡和IP地址捆绑在一起。
调用格式:
winsock对象.Bind端口号,IP地址
Close方法
关闭一个TCP连接。
调用格式:
winsock对象.close
Connect方法
用于向远程主机发出连接请求。
调用格式:
winsock对象.connect[远程主机IP,远程端口]
GetData和PeekData方法
都是用来取得接收到的数据。
GetData取回后要清除接收缓冲区,PeekData不清除接收缓冲区。
调用格式:
winsock对象.getdata(peekdata)变量[,数据类型[,最大长度]]
Listen方法
用于服务器程序,等待客户访问。
调用格式:
winsock对象.listen
SendData方法
用于发送数据,可用在TCP和UDP两种方式下。
调用格式:
winsock对象.SendData数据
Winsock控件事件
Close事件
当远程计算机关闭连接时出现。
Connect事件
当一个Connect操作完成时发生。
使用Connect事件确认已经成功建立了一个连接。
ConncetRequest事件
当远程计算机请求连接时出现,仅适用于TCP服务器应用程序。
在请求一个新连接时激活该事件。
激活事件之后,RemoteHostIP和RemotePort属性存储有关客户的信息。
服务器可决定是否接受连接。
(参数:
repuestID为连接请求标识)
DataArrival事件
当新数据到达时出现。
Error事件
发生错误时出现。
SendProgress事件
在发送数据期间出现。
SendComple事件
在完成一个发送操作时出现。
例:
列车时刻表显示。
服务器程序负责提供列车时刻表数据,客户端程序负责显示服务器所传递的内容。
整个过程有下列步骤组成:
1)服务器工作,聆听客户请求;
2)客户请求建立连接;
3)服务器响应,建立连接;
4)客户请求时刻表数据;
5)服务器接受请求,发送数据给客户;
6)客户接受数据,进行显示并请求下一个数据。
四、实验报告要求
1、确定应用程序的内容
2、原理说明
3、详细的设计思路及工作流程
4、程序设计及程序清单
5、设计总结
6、参考文献(3—4篇参考文献)