计算机网络协议仿真实验
(c) 为什么产生这样的报文?
4、在命令提示符下运行arp –a命令,检查ARP高速缓存中的内容是否发生变化,分析原因。
5、比较练习二和练习三两实验中得到的ARP报文,有何不同? 分析产生二者区别的原因是什么?
【思考问题】
结合实验过程中的实验结果,回答下列问题
1、观察实验过程中捕获网络上的多个ARP请求帧,观察这些帧的以太网目的地址是否相同,分析其原因。
2、观察实验过程中捕获网络上的多个ARP应答帧,观察这些帧的以太网目的地址是否相同,分析其原因。
【实验结论】
实验四 IP控制管理协议:ICMP
【实验目的】
1、了解ICMP的格式和响应方式及作用 2、了解常见的网络故障 【实验学时】 4学时
【实验类型】 综合型
【实验要求】
1、理解和掌握ICMP协议的基本作用 2、知道ICMP报文的格式
3、理解ICMP协议与IP协议的封装关系
4、学会根据各种响应信息进行出错分析的方法 5、学会使用ping命令 【实验原理】 请参考教材:
第三章 IP网络协议及技术 包括:
ICMP协议;报文格式;报文类型;时间戳请求和应答报文格式;不可达报文格式;ICMP回显请求和应答报文格式等
计算机网络协议仿真实验
【实验步骤】
练习一:仿真发送各种ICMP报文
1、从地址本中选择一台主机,向该主机仿真发送ICMP回显请求报文。 (a) 打开协议仿真编辑器。
(b) 填写该帧的以太网协议首部:
①“源MAC地址”和“目的MAC地址”字段:注意:当选择的目的主机与本机不在同一子网的情况,目的MAC地址该怎样填写
②注意填写“类型或长度”字段值为:0800(即IP协议的类型值) (c) 填写IP协议头信息:
注意协议字段,即上层协议类型应为1(ICMP协议的类型为1),可手工填写也可选择下拉菜单中的“ICMP”协议; 2、填写ICMP协议头信息: (a) 类型字段值为:8; (b) 代码字段值为:0;
(c) 标识符:任选16位二进制数(如0x1234); (d) 序列号:任选16位二进制数(如0x5677); (e) 数据字段:任选;
(f) 校验和:首先把该字段置为0,接下来计算ICMP首部的校验和。ICMP协议校验和字段覆盖整个ICMP报文,包括数据部分。 3、击工具栏或菜单栏中的“发送”,在弹出菜单上选择“发送”按钮,发送ICMP报文; 4、在监控机一端截获相应的请求报文及应答报文并分析,注意当源MAC与源IP属于另一台主机的时候,响应报文的情况。
5、从地址本中选择一台主机,向该主机仿真发送ICMP时间戳请求报文。
(a) 步骤同上。注意对于ICMP时间戳请求报文,类型字段值为13,代码字段值为0。 (b) 在监控机一端截获相应的请求报文及应答报文并分析。 6、编辑IP数据包并主动引入一些错误:
(a) 向目标主机发送一个只有IP头的IP数据包;
(b) 向目标主机发送一个数据包,版本号字段填入7; (c) 向目标主机发送一个数据包,协议类型字段填入120; (d) 向目标主机发送一个数据包,填写不正确的IP报头长度; 向另一台主机发送上述数据包; 在监控机一端捕获响应报文并分析。
练习二:运行ping命令 选择菜单栏中的“工具”,运行下拉菜单中的ping命令
1、从地址本中选择与本机属于同一子网的一主机的主机名或IP地址,作为ping命令的参数;
2、从地址本中选择与本机属于不同子网的一主机的主机名或IP地址,作为ping命令的参数;
计算机网络协议仿真实验
对于上述两种情况,在仿真机和监控机端分别进行观察和分析: 在仿真机端观察:
(a) 是否收到响应包?
(b) 如果收到,观察响应包的个数,并对每个响应包的各信息字段进行分析。 (c) 比较两种次实验中TTL字段值是否相同,为什么? 监控机一端捕获数据并分析: (a) 是否捕获到响应包?
(b) 如果捕获到,观察并分析每个响应包的ICMP协议头部分。
(c) 比较两次实验中监控机一端捕获到的响应包的个数是否相同,为什么? 3、同时打开多个DOS命令提示符窗口,在每个窗口中运行一个ping程序 在监控机一端捕获数据,分析各程序如何识别属于自己的返回信息?
练习三:运行netstat命令
在Dos环境下运行netstat–s,观察ICMP协议部分,查看本机已经接收和发送的ICMP报文类型及报文个数。
练习四:运行tracert命令
在命令提示符下运行类似以下的命令: tracert oa.jlu.edu.cn tracert yahoo.com.cn 观察运行结果并分析。
【思考问题】
结合实验过程中的实验结果,回答下列问题:
1、根据练习一的实验结果说明:
实验室环境所使用操作系统默认的TTL最大值是多少?
2、运行ping 127.0.0.1,再运行ping 本机名(或本机IP地址)。在监控机端是否捕获到相应的ICMP回显请求报文?为什么?
【实验结论】
实验五 UDP数据报的传送
【实验目的】
1、理解UDP协议的工作原理及工作过程 2、了解基本的端口分配
计算机网络协议仿真实验
3、理解DNS的工作原理 【实验学时】 4学时
【实验类型】 综合型
【实验要求】
1、理解UDP协议的通信过程 2、学会手工计算UDP校验和 3、理解DNS的作用及原理
4、初步学会应用C语言与WinSock2进行网络程序设计 【实验原理】
请参考教材第三章 IP网络协议及技术。主要包括
UDP的封装,UDP首部格式,以及UDP校验和的计算方法。
尽管UDP校验和的基本计算方法与IP首部校验和的计算方法类似(16bit字的二进制反码和),但是它们之间存在不同的地方。
首先,UDP数据报长度可以为奇数字节,但是校验和的算法是把若干个16bit字相加。解决方法是必要时在最后增加填充字节0,这只是为了校验和的计算(也就是说,可能增加的填充字节不被传送)。
其次,UDP数据报和TCP段都包含一个12字节长的伪首部,它是为了计算校验和而设置的。伪首部包含IP首部一些字段。其目的是让UDP两次检查数据是否已经正确到达目的地(例如,IP有没有接受地址不是本主机的数据报,以及IP有没有把应传给另一高层的数据报传送给UDP)。
UDP数据报中的伪首部格式如图:
0 15 16 32位源IP地址 32位目的IP地址 0
UDP伪16位UDP长度 16位目的端口号 16UDP检查和 UDP伪8位协议16位源端口号 16位UDP长度 数据 数据 填充字节计算机网络协议仿真实验
【实验步骤】
练习一:编辑并发送UDP数据包 1、打开协议仿真编辑器。
2、填写该帧的以太网协议首部:
(a) 源MAC地址”和“目的MAC地址”字段,注意:当选择的目的主机与本机不在同一子网的情况,目的MAC地址该怎样填写
(b) “类型或长度”字段值应为:0800(即IP协议的类型值) 3、填写IP协议头信息:
注意协议字段,即上层协议类型应为17(UDP协议的类型为17); 4、填写UDP协议信息: (a) 16位源端口号:自选 (b) 16位目的端口号:自选 (c) 数据字段:可有可无
(d) 16位UDP长度:UDP报头长度与UDP数据长度之和
(e) 校验和:覆盖UDP首部(含伪首部)和数据两部分。请先根据参考原理的内容进行手工计算,然后利用协议仿真编辑器来计算(方法二),比较二者的结果,检验手工计算结果的正确性。
方法一:手工计算。
按照参考原理(3)中介绍的内容,计算好UDP伪首部和首部中的各项值,然后按16bit进行反码求和(方法同计算IP校验和),将结果填入相应字段。
方法二:利用协议仿真编辑器来计算。步骤为:
①将UDP长度填写到16位UDP校验和字段中作为伪首部中UDP长度字段值; ②选中IP首部中的32位源IP地址和32位目的IP地址作为UDP伪首部中的32位源IP地址和32位目的IP地址;
③选中IP首部中8位的协议字段作为UDP伪首部中的8位的协议字段; ④在8位的协议字段之前选择一个8位的0作为UDP伪首部中的8位0; ⑤再选中UDP首部的及数据各字段; ⑥点击鼠标右键,选择“计算校验和”;
⑦将得到的校验和值填写到16位UDP校验和字段。
下面是一个计算UDP校验和的一个例子:
一个不含数据部分的UDP数据报的十六进制对照表如下: 00 01 02 03 04 05 06 07 08 09 0A 0B 08 00 45 00 00 4F 94 48 40 00 80 11 E4 9D C0 A8 00 20 C0 A8 00 52 00 00 00 00 00 08 00 08 其中黑体部分为用来计算校验和的UDP伪首部和UDP首部,其中: 00 11(十进制的17):为UDP伪首部中8位的0和8位的协议字段; C0 A8 00 20:为UDP伪首部中32位源IP地址; C0 A8 00 52:为UDP伪首部中32位目的IP地址;