《计算机网络—自顶向下方法》 第五章Wireshark实验:ICMP

实验描述:

在本实验中,我们将探讨 ICMP 协议的几个方面:

  1. Ping 程序生成的 ICMP 消息;
  2. Traceroute 程序生成的 ICMP 消息;
  3. ICMP 消息的格式和内容

实验过程:

1. ICMP 协议和 Ping 程序

让我们通过捕获 Ping 程序生成的数据包开始我们的 ICMP实验。 您可能还记得 Ping程序是一个简单的工具,允许任何人(例如:网络管理员)验证主机是否存在。 源主机中的 Ping 程序将数据包发送到目标 IP地址; 如果目标是在线的,则目标主机中的 Ping 程序将会发送响应 Ping 数据包证明他在线,这两个 Ping 数据包都 是 ICMP数据包。 因此您可能猜出我们这个实验都是关于 ICMP 的实验了。

  • 打开 windows的命令提示符

  • 启动 Wireshark数据包嗅探器,并开始 Wireshark数据包捕获

  • Ping程序在 c:\windows\system32目录中,所以您在命令提示符中输入“ping –n 10 hostname” 或 “c:\windows\system32\ping –n 10 hostname”都是正确的 (注意命令是引号里的内容)。其中 hostname是另一个大陆的主机名,我这里ping的是gaia.cs.umass.edu

在这里插入图片描述

  • 当 Ping程序终止时,停止在 Wireshark中捕获数据包
    在这里插入图片描述

我这里还是使用官方提供的数据包:icmp-ethereal-trace-1
在这里插入图片描述

回答问题:

  1. 您的主机的 IP地址是多少? 目标主机的 IP地址是多少?

答:我的主机(官方的包)的IP地址:192.168.1.101 目的主机的IP地址:143.89.14.34

  1. 为什么 ICMP数据包没有源端口号和目的端口号?

答:因为ICMP是网络层的协议,它不需要传输层TCP或者UDP的承载,直接使用IP数据报承载,因此不需要源端口号和目的端口号,只要源地址和目的地址即可。

  1. 查看任意的请求 ICMP数据包, ICMP类型和代码是什么? 该 ICMP数据包还有哪些其他字段? 校验和,序列号和标识符字段有多少字节?

答:ICMP类型:8(代表ICMP请求)
代码:0
还有Checksum、Checksum Status、Indetifier(BE),Indentifier (LE)、Sequence number(BE),Sequence number(LE)
校验和(Checksum):2个字节
序列号(Sequence):2个字节
标识符(Identifier):2个字节
在这里插入图片描述
在这里插入图片描述

  1. 查看任意的响应 ICMP数据包, ICMP类型和代码是什么? 该 ICMP数据包 还有哪些其他字段? 校验和,序列号和标识符字段有多少字节?

答:ICMP类型:0(0代表ICMP响应)
代码:0
还有Checksum、Checksum Status、Indetifier(BE),Indentifier (LE)、Sequence number(BE),Sequence number(LE)
校验和(Checksum):2个字节
序列号(Sequence):2个字节
标识符(Identifier):2个字节
在这里插入图片描述


2. ICMP 协议和 Traceroute 命令

现在让我们通过捕获 Traceroute 程序生成的数据包继续我们的 ICMP实验。 您可能 还记得 Traceroute 程序可用于确定数据包从源到目的地的路径 (路由跟踪)。 Traceroute命令可 以在课本中的 1.4节和 5.6节中找到。

每个系统有不同路由跟踪实现办法,在 Unix / Linux中,路由跟踪 traceroute 使用发送不可到达(无使用的)端口的 UDP包来实现,在 Windows中,路由跟踪 tracert 仅使用 ICMP数据包来实现,但是对于他们来说,都是发送 TTL 增加的数据包,例如 TTL=1,TTL=2,回想下,每经过一个路由器,TTL就会减一,当 TTL=1 的包达到路由器,该路由器会将该包丢弃,并且发送 ICMP 错误给请求的机器,在本次实验,我们使用 window自带的 tracert。有一个跨平台 Windows Traceroute程 序的是 pingplotter(www.pingplotter.com)(收费但可以试用)。 我们将在 Wireshark IP实验室中使用 pingplotter,因为它提供了我们在那里需要的其他功能。

  • 打开 windows的命令提示符

  • 启动 Wireshark数据包嗅探器,并开始 Wireshark数据包捕获

  • tracert程序在 c:\windows\system32目录中,所以您在命令提示符中输入 “tracert hostname” 或 “c:\windows\system32\ tracert hostname”都是正确的(注 意命令是引号里的内容)。其中 hostname是另一个大陆的主机名,我这里路由跟踪的是gaia.cs.umass.edu,这里有29个跃点跟踪。
    在这里插入图片描述

  • 当 Traceroute程序终止时,停止在 Wireshark中捕获数据包
    在这里插入图片描述

我这里还是使用官方提供的数据包:icmp-ethereal-trace-2
在这里插入图片描述

回答问题
5. 您的主机的 IP地址是多少? 目标目标主机的 IP地址是多少?

答:我的主机(官方的包)的IP地址:192.168.1.101 目的主机IP地址:138.96.146.2

  1. 【待理解】如果 ICMP发送了 UDP数据包(如在 Unix / Linux中),那么探测数据包的 IP协议号仍然是 01吗? 如果没有,它会是什么?

答:
我这里的包,没有显示UDP协议(如果是ICMP协议确实是01),可能是要在Linux上来
在这里插入图片描述

  1. 【待理解】检查屏幕截图中的ICMP 响应数据包(traceroute)。 这与本实验的前半部分中的 ICMP ping查询数据包不同吗? 如果不同,请解释为什么?

答:
请求数据包对比:
在这里插入图片描述
响应数据包对应:
在这里插入图片描述

  1. 【待理解】检查屏幕截图中的 ICMP错误数据包。 它具有比 ICMP响应数据包更多的 字段。 这个数据包含哪些内容?

答:
对比traceroute的请求和响应的数据包:
在这里插入图片描述在这里插入图片描述

  1. 检查源主机收到的最后三个 ICMP数据包。 这些数据包与 ICMP错误数据 包有何不同? 他们为什么不同?

答:源主机收到的最后三个ICMP数据包是目的主机发送给我的ICMP回应数据包,因为路由查询是使用逐渐递增TTL的查询数据包,最后的ICMP查询数据包的TTL已经大于到达目的主机中间路由跃点数,因此不会被目标主机丢弃来发送ICMP超时的数据包,所以只会收到ICMP响应数据包。

在这里插入图片描述

  1. 在 tracert跟踪测量中,是否有一个连接的延迟比其他连接长得多? 请参阅屏幕截图,是否有连接的延迟明显长于其他连接? 根据路由器名称,您能猜出这个连接末端的两个路由器的位置吗?

答:根据下图可以很明显的看到,在第8个请求到第11个请求一下子时间多了很多,然后使用**Best trace(可视化的路由跟踪工具)**可以看到目的IP地址为223.120.12.17的所在地已经到了美国,所以时间比较的久,起始位置在上海,终点位置是美国的圣何塞
在这里插入图片描述
在这里插入图片描述


3. 【待完成】额外问题

对于一个编程任务,您可能创建了一个 UDP 客户端 ping 程序。 与标准 ping 程序
不同,此 ping 程序发送 UDP 探测包而不是 ICMP 探测包
。 使用客户端程序将具有
异常目标端口号的 UDP 数据包发送到某个活动主机。 同时,使用 Wireshark 捕获
目标主机的任何响应。 提供响应的 Wireshark 屏幕截图以及响应分析。


参考资料:

https://github.com/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES

发布了197 篇原创文章 · 获赞 18 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41708792/article/details/103364626