一、实验目的

IP 和 ICMP 协议是 TCP/IP 协议簇中的网络层协议,在网络寻址定位、数据分组转发和路由选择等任务中发挥了重要作用。本实验要求熟练使用 Wireshark 软件,观察 IP数据报的基本结构,分析数据报的分片;掌握基于 ICMP 协议的 ping 和 traceroute 命令其工作原理ࣿ

实验内容

启动 Wireshark,捕捉网络命令执行过程中本机接受和发送的数据报。

  1. 执行 ping 命令,观察 IP 数据报和 ICMP 询问报文的结构:通过 Wireshark 监视器观察捕获流量中的 ICMP 询问报文和 IP 数据报的结构。注意比较 ICMP 请求帧与回应帧,ࣿ其 IP 头部数据字段的异同。
  2. 改变 ping 命令的参数,观察 IP 数据报分片:更改 ping 命令参数 MTU,使其发出长报文以触发 IP 数据报分片,再观察 IP 数据报的结构变化。
  3. 执行 Traceroute 命令(Windows 系统 tracert),观察 ICMP 差错报文的结构,并分析其工作原理:使用Linux 操作系统提供的 traceroute 命令(或者 Windows 系统提供的 tracert 命令),捕获和分析该命令所产生的 IP 数据报,特别注意相关的 ICMP 差错报文。结合捕获的具体数据,画出命令执行过程中数据交互的示意图,掌握 traceroute 的工作原理。

实验命令

在这里插入图片描述在这里插入图片描述

实验的手段和方法

  1. 使用 Wireshark 软件,捕获本机在 ping 和 traceroute 网络命令执行过程中接收和
    发出的全部数据流量。
  2. 合理设置过滤条件,观察 IP 数据报和 ICMP 报文,着重分析报文首部和内容变
    化,从而掌握协议的工作原理。
  3. 调整 ping 命令的参数,观察并分析 IP 数据报分片情况。
  4. 结合所捕获的数据报,画出 traceroute 命令过程中数据交互示意图。

实验步骤

1、启动 Wireshark 软件,终端 ping IP 地址/域名(win + R-> cmd, ping sina.com.cn为例)。 Wireshark 监视器中设置过滤条件。例下图设置过滤条件为 icmp,则显示出所捕获的 ICMP

在这里插入图片描述点击 Internet Protocol Version 4 展开,查看 IP 数据报:

在这里插入图片描述在这里插入图片描述

点击 Internet Control Message Protocol 展开,查看 ICMP 报文:

在这里插入图片描述2、清空 Wireshark 监控器,终端 再 ping IP 地址/域名 –l #length,并解释对比前后两次执行 ping 命令的结果。其中,-l #length 确定 echo 数据报的长度为 #length,其默认值为 32 字节,且小于 65,527 字节。可以多次改变 #length 的大小(例如 1000 字节、2000 字节和 4000 字节),观察IP 数据报何时会分片?请解释 IP 数据报分片的原因和具体情况。

在这里插入图片描述
先解释为什么最后一个分片到4007,因为片位移8字节倍数,4000相当于第4001字节,所以最后一片4007才能分片;
分片原因,以太网的 最大传送单元 MTU 是 1500 字节 ;超过则自动分片,减去IP首部20字节,所以IP数据部 能发1480字节;
片位移计算=起点位置/8

2、在终端中使用 traceroute (windows tracert)命令,目的主机是外网的一台设备,点击 Internet Control Message Protocol 展开,查看 ICMP 差错报文,观察并解释ICMP 报文结构和字段内容。在这里插入图片描述

在这里插入图片描述 终点不可达的数据报文的类型标号为3,表示这是终点不可达错误类型,代码标号是0 - 15,表示引发终点不可达错误类型的具体错误原因有16种可能,其中标识符和序列号全都用0来填充。
tracert工作原理:首先源主机发起一个 TTL=1 的 ICMP 报文。第一个路由器收到该报文后,TTL减 1 变为 0 并丢弃此报文,返回一个 [ICMP time exceeded] 的消息。源主机通过这个消息获知 IP 数据报转发路径上的第一个路由器信息。然后,依次增加发送ICMP 报文的 TTL 值,可以获取路径上的后续路由器的信息。当到达目的地时,目标主机返回一个 [ICMP port unreachable] 的消息,使发起者确认 IP 数据报已经正常到达。

3、在实际操作中,Traceroute 命令返回的某些条目以“*”号表示。请思考有哪些原
因可能导致这样的情况。
1)可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
2)中间任何一个router上如果封了ICMP Echo Request , traceroute就不能工作 ;中间的router看不到 ,但能看到packet 到达了最后的destination;如果封了ICMP Echo Reply,中间的全能看到,最后的destination看不到。

4、发送方要怎样决定 IP 数据报分组大小,才能避免因为不同网络 MTU 不一致而引起分片呢?
探测路径最小MTU,发送探测IP包,在包头中设置不可分片,然后通过是否受到ICMP消息即可确定路径MTU。限制最长数据报,一般不要超过1480字节,即以太网MTU(1500)——IP首部(20)。

5、心得
………………

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐