《贵州大学计算机网络实验报告-实验六-分析icmp协议数据》由会员分享,可在线阅读,更多相关《贵州大学计算机网络实验报告-实验六-分析icmp协议数据(7页珍藏版)》请在金锄头文库上搜索。
1、明德至善 博学笃行0实验课程名称 计算机网络实验报告 实验项目名称 分析 ICMP 协议数据包格式 专 业 班 级 电子信息科学与技术 08 级 1 班 学 生 姓 名 学 号 指 导 教 师 理 学 院实验时间:2010 年 5 月 18 日明德至善 博学笃行1一、 实验名称实验六 分析 ICMP 协议数据包格式二、 实验目的掌握 ICMP 协议的作用和格式;理解 ICMP 数据包首部各字段的含义;理解 ICMP 协议与 IP 协议的封装关系;三、 实验器材ICMP 协议是 IP 协议的补充,用于 IP 层的差错报告、拥塞控制、路径控制以及路由器或主机信息的获取。ICMP 与 IP 协议位于
2、同一个层次(IP 层) ,但 ICMP 报文是封装在 IP数据报的数据部分进行传输的。 四、 实验内容(步骤)打开 wireshark,选择菜单命令“Capture”“Interfaces”子菜单项。弹出“Wireshark: Capture Interfaces”对话框。单击“Options”按钮,弹出“Wireshark: Capture Options”对话框。Capture filter 字段填入:“icmp” ,单击“Start”按钮开始网络数据包捕获。明德至善 博学笃行22. 打开“命令提示符”窗口,使用“Ping”命令测试本机与网关的连通性。在使用“Ping”命令测试本机与网关的
3、连通性时,本地计算机向网关发送 4 个 ICMP数据包,网关也会向本地计算机发送四个应答报文。因此,这 8 个报文将被网络协议分析软件捕获。3. 单击“Stop”按钮,中断网络协议分析软件的捕获进程,主界面显示捕获到的 ICMP数据包。观察协议树区中 ICMP 数据包结构,是否符合 ICMP 请求与应答的报文格式。明德至善 博学笃行3ICMP(Internet Control Message Protocol,因特网控制报文协议)类型(1 个字节):8,表示是一个 ICMP 回显请求报文; 代码:0,表示网络不可达; 校验和:表示 ICMP 的 0x4a5b;使用 IP 校验和的算法。 标识:
4、0x0001 序列号:768 (0x0300),每一个 ICMP 回显报文都有一个序列号且是递增的 数据:表示是一个 32 字节的数据观察协议树区中 ICMP 数据包结构,可以得知是符合 ICMP 请求与应答的报文格式。ICMP报文由首部和数据段组成。首部为定长的 8 个字节,前 4 个字节是通用部分,后 4 个字节随报文类型的不同有所差异。ICMP 报文的一般格式如图所示。校 验 和 代 码 数 据 0 8 16 31 类 型 首 部 其 他 部 分 首 部 数 据 8 字 节 ICMP报 文 格 式 4. 重新开始网络数据包捕获进程,在“命令提示符”窗口中使用“Tracert”命令,停止网
5、络数据报捕获,分析捕获的数据包。明德至善 博学笃行4网络协议分析软件将捕获“数据报超时报告” ,分析捕获的数据包时要注意 IP 首部中的 TTL 字段。捕获的数据包的 TTL 字段从 1 递增到 9,且对应每个相同的 TTL 有三个数据包,都为40 字节。第 9 个没有ICMP time exceeded消息,因为已到达目的地。ICMP time exceeded消息:5. 重新开始网络数据包捕获进程,在“命令提示符”窗口中使用“Ping 127.0.0.1”命令,停止网络数据报捕获,分析捕获的数据包。明德至善 博学笃行5未捕获任何数据包。6. 重新开始网络数据包捕获进程,在“命令提示符”窗口
6、中使用“Ping”命令,参数为本机名或本机 IP 地址,停止网络数据报捕获,分析捕获的数据包。明德至善 博学笃行6未捕获任何数据包。五、思考题:( 1 ) 运行 ping 127.0.0.1,再运行 ping 本机名(或本机 IP 地址) 。在检测机端是否捕获到相应的 ICMP 回显请求报文?没有捕获到任何数据包,这表明本地的路由和本机的网络参数设置都是正确的。( 2 ) Tracert 程序都利用了什么协议?MAC 帧协议,Eathernet V2 协议,point-to-point 协议,IP 协议,ICMP 协议。( 3 ) 根据捕获的数据包分析 Tracert 程序共发送了几个数据包,
7、每次发送的包的 TTL 值是什么?说明程序发现路由的原理。一共发送了 27 个数据包,每 tracert 一个路由就发送 3 个数据包, TTL 值从 1 到 9 依次递增。每个数据包相应的返回一个ICMP time exceeded消息,只有第 9 个不返回任何消息。Tracert 程序的设计是利用 ICMP 及 IP header 的 TTL(Time To Live)字段。首先,Tracert 送出一个 TTL 是 1 的 IP datagram(其实,每次送出的为 3 个 40 字节(我收到的是92 个字节?)的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由
8、器(router)收到这个 datagram 时,它将 TTL 减 1。此时,TTL 变为 0 了,所以该路由器会将此 datagram 丢掉,并送回一个ICMP time exceeded消息(包括发 IP 包的源地址,IP 包的所有内容及路由器的 IP 地址) ,Tracert 收到这个消息后,便知道这个路由器存在于这个路径上,接着 Tracert 再送出另一个 TTL 是 2 的 datagram,发现第 2 个路由器. Tracert 每次将送出的 datagram 的 TTL 加 1 来发现另一个路由器,这个重复的动作一直持续到某个 datagram 抵达目的地。当 datagram 到达目的地后,该主机并不会送回ICMP time exceeded 消息,因为它已是目的地了。