计算机网络协议仿真实验.docx
- 文档编号:30571944
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:97
- 大小:304.03KB
计算机网络协议仿真实验.docx
《计算机网络协议仿真实验.docx》由会员分享,可在线阅读,更多相关《计算机网络协议仿真实验.docx(97页珍藏版)》请在冰豆网上搜索。
计算机网络协议仿真实验
【实验六TCP传输控制协议】
【实验目的】
1、掌握TCP协议的工作原理;
2、理解TCP协议的通信过程。
【实验学时】
4学时
【实验类型】
综合型
【实验内容】
1、理解TCP首部中各字段的含义及作用;
2、理解三次握手的过程;
3、能够分析TCP协议的建立连接、会话和断开连接的全过程;
4、学会计算TCP校验和的方法;
5、了解TCP的标志字段的作用。
【实验原理】
TCP协议是面向连接的、端到端的可靠传输协议,它支持多种网络应用程序。
TCP必须解决可靠性,流量控制的问题,能够为上层应用程序提供多个接口,同时为多个应用程序提供数据,TCP也必须能够解决通信安全性的问题。
1、TCP的封装
图6-1TCP的封装
2、TCP首部格式:
各字段含义:
16位源端口号和16位目的端口号:
端口号通常也称为进程地址。
32位序号:
序号用来标识从TCP发送端向TCP接收端发送的数据字节流。
32位确认序列号:
表示一个准备接收包的序列号。
4位首部长度:
首部长度指出了首部中32bit字的数目。
正常的TCP首部长度是20字节。
6个标志字段:
URG紧急指针;ACK确认序号;PSH推标志;RST重建连接;SYN同步序号;FIN结束标志。
16位窗口:
TCP的流量控制由连接的每一端通过声明的滑动窗口大小来提供,窗口大小为字
16位检验和:
检验和字段覆盖了TCP首部和TCP数据。
TCP检验和的计算方法和UDP检验和的计算方法一样,计算时需要考虑伪报头。
16位紧急指针:
URG标志置1时紧急指针才有效。
图6-2TCP分组格式示意图
【实验步骤】
注意:
本实验要求服务器端启动TELNET服务。
练习一:
运行netstat命令
1、在浏览器的地址栏输入:
,在命令行下输入:
netstat-n回车。
2、观察TCP状态,记录LocalAddress、ForeignAddress和State。
3、在浏览器的地址栏输入:
,在命令行下输入:
netstat-n回车。
4、观察TCP状态,记录LocalAddress、ForeignAddress和State。
5、再开一个命令行窗口,输入:
telnet,
6、观察TCP状态,记录LocalAddress、ForeignAddress和State。
7、三次记录有什么不同,为什么?
8、使用带其他参数的netstat命令,查看网络状态。
例如:
netstat–a
netstat–b
练习二:
利用仿真编辑器编辑并发送TCP数据包
说明:
●在本实验中由于TCP连接有超时时间的限制,故仿真编辑器端和协议分析器端的两位同学要默契配合,某些步骤(如计算TCP校验和)要求熟练、迅速。
●为了实现TCP三次握手过程的仿真,发送第一个连接请求帧之前,应该暂停仿真编辑器端的TCP/IP协议,否则计算机系统的网络会对该请求帧的应答帧发出拒绝响应。
具体操作为在仿真端主机上运行“开始/程序/网络协议仿真教学系统基本版/TCP过滤/启动过滤”。
●通过手工编辑TCP数据包实验,要求理解实现TCP连接建立、数据传输以及断开连接的全过程。
在编辑的过程中注意体会TCP首部中的序列号和标志位的作用。
首先选择服务器主机上的一个进程作服务器进程,并向该服务器进程发送一个建立连接请求报文,对应答的确认报文和断开连接的报文也编辑发送。
其步骤如下:
1、打开协议仿真编辑器,单击工具栏中的TCP协议选项
2、填写该帧的以太网协议首部:
⑴源MAC地址:
本机MAC地址;
⑵目的MAC地址:
服务器的MAC地址;
3、填写IP协议头信息:
⑴协议字段:
协议类型值为6,即上层协议类型应为TCP;
⑵总长度:
IP头部+TCP头部+数据长度
⑶首部校验和:
应用前面学到的知识进行计算;
⑷源IP地址:
本机IP地址;
⑸目的IP地址:
服务器的IP地址
⑹其它字段默认
4、填写TCP协议信息:
⑴源端口:
任意大于1024的数,不要用下拉选择;
⑵目的端口:
可以设80(HTTP协议);
⑶序号:
选择一个序号ISN(假设1942589885),以后的数据都按照这个来填写;
⑸首部长度和标志位:
首部长度和标志位设为5002(即长度20字节,标志SYN=1);
⑹窗口大小:
任意;
⑻校验和:
覆盖TCP首部(包含伪首部)和TCP数据两部分,计算方法同UDP协议一样。
值得注意的是伪首部中的协议号是0006,而不是UDP时的0011;
⑼将设置完成的数据帧复制3份;修改第二帧的TCP首部长度和标志位为5010(即标志位ACK=1),TCP层序号为1942589885+1。
修改第三帧的TCP首部长度和标志位为5011(即标志位ACK=1、FIN=1),TCP层序号为1942589885+1。
5、在发送该TCP连接请求之前,先运行一次ping目标服务器,目的是让目标服务器知道自己的MAC;
6在工具菜单栏中选择TCP三次握手下的启动过滤,以暂停TCP/IP协议。
7、点击菜单栏中的“发送”,在弹出对话框中选择发送第一个帧;
8、在协议分析器一端截获相应的应答报文,可以设置协议端口(80)过滤。
这里要求协议分析器一端的同学及时准确地捕获应答报文并迅速从中获得应答报文的接收字节序号,并告之仿真编辑器一端的同学;
9、我们假设接收字节序号为:
3246281765,修改第二帧和第三帧的TCP应答序号中的值:
3246281766;
10、计算第二帧的TCP校验和,发送。
对服务器的应答报文进行确认;
11、计算第三帧的TCP校验和,发送。
断开连接,完成TCP连接的全过程;
12、协议分析器一端截获相应的请求及应答报文并分析,注意观察“会话分析”中的会话过程。
注意:
实验结束后启动仿真编辑器端的TCP/IP协议。
具体步骤是:
工具—>TCP三次握手暂停过滤。
练习三:
使用TCP连接客户端工具测试各种TCP连接建立和断开的过程
1、首先选择一个TELNET服务器,并建立一个TCP连接,步骤如下:
⑴选择一个TELNET服务器,比如服务器IP为172.16.1.177,启动协议分析器的捕获功能;
⑵在仿真编辑器的TCP连接试图中,填写所选择服务器的IP地址及服务器进程的端口号,选择23端口,点击“连接”,建立本机与TELNET服务器的TCP连接;在TCP连接客户端程序的返回窗口中会有返回信息;
图6-3TCP连接视图界面
2、断开连接:
⑴点击“断开”按扭,即可断开与服务器端的连接。
⑵在协议分析器一端刷新截获报文,从“会话分析”中找出此连接的三次握手、服务器返回的信息、拆除连接的几个数据包;
3、由1步和2步,画出TELNET连接建立、拆除连接的会话过程,标记出每步的序号、确认序号、SYN、ACK、FIN等标志位。
4、选择一个WWW服务器,并建立一个TCP连接,步骤如下:
⑴在地址本中选择扫描到的服务器,点击端口扫描按钮,开始扫描该服务器开放的端口。
⑵双击该主机IP,将其IP填加到服务器信息IP地址中,比如:
服务器(IP=10.100.66.92);
⑶双击端口号80,也会自动填加到服务器信息端口中。
(也可以手动输入)
⑷单击“连接”按钮,建立连接。
图6-4TCP连接视图界面
5、断开连接
⑴单击“断开”按扭,即可断开与服务器端的连接。
⑵在协议分析器一端截获报文,从HTTP会话中找出此连接的三次握手、拆除连接的几个数据包;
6、由4和5步,画出HTTP连接建立、拆除连接的过程,标记出每步的序号、确认序号、SYN、ACK、FIN等标志位。
7、首先选择一个FTP服务器,并建立一个TCP连接,步骤如下:
⑴选择一个FTP服务器,比如:
实验室的FTP服务器(IP=172.16.1.177);
⑵填写所选择服务器的IP地址及服务器进程的端口号21,点击“连接”,建立本机与FTP服务器的TCP连接;
图6-5TCP连接视图界面
8、断开连接:
⑴点击“断开”按扭,即可断开与服务器端的连接。
⑵在协议分析器一端截获报文,从“会话分析”中找出此连接的三次握手、服务器返回的信息、拆除连接的几个数据包;
9、由7和8步,总结FTP连接建立的过程和拆除连接的过程。
记录序号、确认序号、SYN、ACK、FIN、PSH等标志位。
10、上述3个TCP连接操作的过程可以用下图描述,写出每一步的序号和确认序号及标志位变化情况。
图6-6TCP连接过程的示意图
练习四:
多TELNET客户端同时运行
1、在仿真编辑器端同时打开两个或更多命令提示符窗口,在这些窗口上同时运行:
C:
>telnet服务器IP地址
2、在协议分析器一端捕获数据,分析仿真编辑器发送和接收的TCP数据包。
说明哪些包是属于同一TCP连接上的,你是根据什么进行区分的?
练习五:
察看会话状况
1、在协议分析器的“会话分析”视图窗口中,查看多个TCP连接,并与自己的分析结果进行比较,注意观察标志位。
2、捕获大量数据包,分析其中完整的TCP会话。
【思考问题】
结合实验过程中的实验结果,回答下列问题
1、如果在练习二发送建立连接请求帧之前,仿真编辑器端不运行“PING服务器”命令,而又停止了仿真编辑器端的TCP/IP协议,可能出现什么情况?
通过实验来验证你的答案。
2、根据练习五说明:
在仿真编辑器端,系统是如何把接收到的数据显示到相应的窗口的。
3、根据实验中窗口的变化和确认序号,分析TCP协议所使用的滑动窗口协议机制。
【实验报告要求】
1、说明TCP协议三次握手的工作过程和拆除连接的过程。
2、回答练习中提出的问题。
3、提出新的TCP协议仿真实验的方法。
【实验七TCP与UDP端口扫描】
【实验目的】
1.了解常用的TCP、UDP端口扫描的原理及其各种手段
2.增强网络安全意识
【实验学时】
建议4学时
【实验类型】
综合型
【实验内容】
1、学习TCPConnect端口扫描方法;
2、学习TCPSYN端口扫描方法;
3、学习TCPFIN端口扫描方法;
4、学习UDP端口扫描方法;
【实验原理】
一.TCP/UDP报文头格式
UDP报文格式见实验六(用户数据报协议UDP);TCP报文格式见实验七(传输控制协议TCP)实验原理。
在TCP首部中6个标志位的用法依次为:
URG紧急指针(urgentpointer)有效。
ACK确认序号有效。
PSH接收方应该尽快将这个报文段交给应用层。
RST重建连接。
SYN同步序号用来发起一个连接。
FIN发端完成发送任务
二.ICMP端口不可达报文
ICMP端口不可达报文格式见实验四(Internet控制报文协议ICMP)实验原理。
类型域为3,代码域为3表示该ICMP报文为端口不可达报文,它是ICMP目的不可达报文的一种。
三.TCPconnect()扫描
这种方法最简单,直接连到目标端口并完成一个完整的三次握手过程(SYN,SYN/ACK,和ACK)。
操作系统提供的“connect()”函数完成系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。
如果端口处于侦听状态,那么“connect()”函数就能成功。
否则,这个端口是不能用的,即没有提供服务。
这个技术的一个最大的优点是不需要任何权限,系统中的任何用户都有权利使用这个调用。
另一个好处是速度。
如果对每个目标端口以线性的方式,使用单独的“connect()”函数调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。
使用非阻塞I/O允许你设置一个低的时间用尽周期,同时观察多个套接字。
但这种方法的缺点是很容易被发觉,并且很容易被过滤掉。
目标计算机的日志文件会显示一连串的连接和连接是出错的服务消息,目标计算机用户发现后就能很快使它关闭。
四.TCPSYN扫描
这种技术也叫“半开式扫描”(half-openscanning),因为它没有完成一个完整的TCP协议连接。
这种方法向目标端口发送一个SYN分组(packet),如果目标端口返回SYN/ACK标志,那么可以肯定该端口处于检听状态;否则,返回的是RST/ACK标志。
这种方法比第一种更具隐蔽性,可能不会在目标系统中留下扫描痕迹。
但这种方法的一个缺点是,必须要有root权限才能建立自己的SYN数据包。
五.UDP端口扫描
这种方法向目标端口发送一个UDP协议分组。
如果目标端口以“ICMPportunreachable”消息响应,那么说明该端口是关闭的;反之,如果没有收到“ICMPportunreachable”响应消息,则可以肯定该端口是打开的。
由于UDP协议是面向无连接的协议,这种扫描技术的精确性高度依赖于网络性能和系统资源。
另外,如果目标系统采用了大量分组过滤技术,那么UDP协议扫描过程会变得非常慢。
如果你想对Internet进行UDP协议扫描,那么你不能指望得到可靠的结果。
【实验步骤】
练习一:
TCPConnect扫描
1.在分析端上启动协议分析器进行数据捕获并设置过滤条件(提取TCP协议)。
2.在分析端上使用命令“netstat-a”,显示本机可用的TCP、UDP端口。
3.在仿真端上使用TCP连接工具,扫描分析端的某一端口:
a.分析端将在步骤2得到的某一TCP端口告知仿真端。
b.仿真端上填入分析端的IP、被告知的端口号,点击“连接”按钮进行连接。
c.观察提示信息,是否连接上。
d.分析端将在步骤2没有得到的某一TCP端口告知仿真端。
e.重复b、c。
4.察看分析端捕获的数据,分析连接成功与失败的数据包差别。
●结合捕获数据的差别,说明TCPConnet扫描的实现原理。
练习二:
TCPSYN扫描
1.在分析端上启动协议分析器进行数据捕获并设置过滤条件(提取TCP协议)。
2.在分析端上使用命令“netstat-a”,显示本机可用的TCP、UDP端口。
3.仿真端编辑TCP数据包:
a.源MAC、IP地址为本机MAC、IP。
b.目的MAC、IP地址为分析端的MAC(172.16.1.2对应的MAC)、IP(172.16.1.2)。
c.源端口为本机可用端口。
d.目的端口为分析端在步骤2得到的TCP可用端口。
e.标志SYN置为1,其他标志置为0。
4.发送仿真端编辑好的数据包。
5.修改仿真端编辑的数据包(将目的端口置为分析端上非可用的TCP端口),将其发送。
6.察看分析端捕获的数据,找到仿真端发送的两个数据包对应的应答包。
●分析两个应答包的不同之处,说明TCPSYN扫描的实现原理。
练习三:
UDP端口扫描
1.在分析端上启动协议分析器进行数据捕获并设置过滤条件(提取仿真端的IP>分析端的IP。
2.在分析端上使用命令“netstat-a”,显示本机可用的TCP、UDP端口。
3.仿真端编辑UDP数据包:
a.源MAC、IP地址为本机MAC、IP。
b.目的MAC、IP地址为分析端的MAC、IP。
c.源端口为本机可用端口。
d.目的端口为分析端在步骤2得到的UDP可用端口。
4.发送仿真端编辑好的数据包。
5.修改仿真端编辑的数据包(将目的端口置为分析端上非可用的UDP端口),将其发送。
6.察看分析端捕获的数据。
●仿真端发送的数据包,哪个收到目的端口不可达的ICMP数据报。
●说明这种端口扫描的原理。
●使用这种端口扫描得到的结果准确吗?
说明理由。
【思考问题】
根据各种端口扫描的原理,设计出不同端口扫描的预防措施。
【实验八TELNET和FTP协议】
【实验目的】
1、理解TELNET、FTP协议;
2、了解应用层协议与传输层协议的关系。
【实验学时】
4学时
【实验类型】
综合型
【实验内容】
1、学习TELNET协议及作用;
2、学习TELNET的使用方法;
3、学习FTP工作原理和使用方法。
【实验原理】
1、TELNET协议
TELNET是一个简单的远程终端协议。
用户可以通过TCP连接登录到远程的一个主机上,好象使用远程主机一样。
TELNET采用客户机/服务器计算模式。
在本地系统上运行TELNET客户机进程,在远程主机上运行TELNET服务器进程。
TELNET一般用于远程管理一台主机,例如:
服务器、路由器和交换机等。
2、FTP协议
FTP文件传输协议是Internet网络上传输文件的通用方法。
FTP位于TCP/IP模型的应用层。
FTP的下层使用TCP服务。
FTP是一个客户机/服务器系统。
用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。
用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。
当FTP客户端与服务器建立FTP连接时,将与服务器上的两个端口建立联系:
端口20和21。
FTP使用不同的端口号传输不同的内容,见下面的流程:
[ftpClient][ftpServer]
Portxxxx-----|SYN|----------------->Port21[TCP]
Portxxxx<-----|SYN+ACK|------------Port21
Portxxxx-----|ACK|----------------->Port21[TCP]
……控制操作:
用户列目录或传输文件……
Portxxxx-----|ACK+PORT命令|-------->Port21[TCP]
Portyyyy<-----|SYN|------------------Port20
Portyyyy----|SYN+ACK|------------->Port20
Portyyyy<---|ACK|---------------Port20
具体的FTP工作流程请在实验中仔细的记录。
FTP的命令可以在命令提示符下键入:
ftp10.60.48.200(实验室FTP服务器的IP地址)
用户被提示输入用户名和口令(用匿名登入),确认口令输入正确后,用户将获得FTP提示符“ftp>”。
FTP常用的命令:
Binary;将文件传输模式设为二进制方式
Bye;退出,结束远程连接
Case;打开case功能
Close;关闭远程连接
cd
cdup;进入父目录
debug
dir;打印路径名
delete
get
glob;在文件传输时使用通配符
hash;每传输1024字节打印一个“#”
help;打印帮助文件
lcd
ls;打印远程主机目录
lpwd;打印本地主机工作路径
mget
mkdir
mput
prompt;交互式提示
put
pwd;显示当前工作路径
user;登录到远程计算机系统
【实验步骤】
本实验要求:
1、服务器端已经启动telnet服务,并且提供一个公共账号:
guest,口令:
guest;
2、也可以利用校园网的BBS作为服务主机。
练习一:
运行TELNET命令,捕获数据并分析
1、实验环境中的服务器(假设IP地址:
172.16.1.177)上的telnet服务已经启动,并且提供一个公共帐号,其用户名:
guest;口令:
无;
在命令行提示符下运行:
⑴telnet服务器IP(例如:
telnet172.16.1.177);
⑵在“Login:
”提示符后输入用户名(guest),然后在“Password:
”提示符后输入口令(无);
⑶在虚拟终端上进行一些简单的操作(可不作);
⑷按“CTRL+]”回到telnet提示符下;
⑸输入“quit”退出telnet。
2、在协议分析器端捕获数据,从协议的角度分析该次telnet操作的完整过程。
⑴在协议分析器端捕获数据,查找用户名和密码。
是否可以捕获到其它网段上的信息?
⑵仿真编辑器端在TELNET状态下,运行各种操作,在协议分析器端上是否可以捕获到数据,理解TELNET明文传输的不安全性,了解网络监听的可能。
练习二:
FTP工作流程
1、设置协议分析器端过滤器,按TCP协议和MAC地址过滤。
源MAC是本机,目的MAC是FTP服务器,即本实验室的FTP服务器(172.16.1.177)。
启动协议分析器捕获;
2、登录FTP服务器:
在实验环境中的FTP服务器(172.16.1.177)已经启动,并提供一个公共帐号,用户名是:
anonymous,口令:
无。
或用户名:
demo,口令:
demo。
在命令行提示符下运行:
⑴C:
>ftp172.16.1.177
⑵在“LOGIN:
”提示符后输入用户名:
Anonymous;
⑶在“PASS”提示符后输入密码:
无;
⑷在客户端上运行一个简单的操作,如:
ftp>dir
⑸在FTP提示符下输入“quit”退出FTP。
2、暂停协议分析器的捕获,刷新显示,在协议分析器端已捕获的数据中,对该过程中仿真编辑器发送和接收的全部TCP数据包记录:
客户端FTP服务器
Port()SYN=(),ACK=(),PSH=(),FIN=()Port()
SYN=(),ACK=(),PSH=(),FIN=()TCP连接建立阶段
SYN=(),ACK=(),PSH=(),FIN=()
Port()SYN=(),ACK=(),PSH=(),FIN=()Port()
DATA()
SYN=(),ACK=(),PSH=(),FIN=()
Port()SYN=(),ACK=(),PSH=(),FIN=()Port()
DATA()
SYN=(),ACK=(),PSH=(),FIN=()
DATA()
SYN=(),ACK=(),PSH=(),FIN=()
Port()SYN=(),ACK=(),PSH=(),FIN=()Port()
DATA()
SYN=(),ACK=(),PSH=(),FIN=()
DATA()
SYN=(),ACK=(),PSH=(),FIN=()
Port()SYN=(),ACK=(),PSH=(),FIN=()Port()
DATA()
Port()SYN=(),ACK=(),PSH=(),FIN=()Port()
DATA()
Port()SYN=(),ACK=(),PSH=(),FIN=()Port()
DATA()
Port()SYN=(),ACK=(),PSH=(),FIN=()Po
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 协议 仿真 实验