计算机网络实验Wireshark ------>IP学习

我们将研究 IP 协议,重点关注 IP 数据报(IP datagram)。我们将通过分析在执行 traceroute 程序发送和接收的一系列 IP 数据报的过程来完成这个实验

traceroute 通过
首先发送一个或多个带有生存时间(TTL: Time-to-Live)字段设置为 1 的数据报到目的地;
然后发送一个或多个带有生存时间(TTL: Time-to-Live)字段设置为 2 的数据报到同一个目的地;
然后发送一个或多个带有生存时间(TTL: Time-to-Live)字段设置为 3 的数据报到同一个目的地,
以此类推,直到目的地真正收到此数据报为止。
路由器必须将每个接收到的数据报中的 TTL 减 1。如果 TTL 达到 0,路由器会向来源主机发送 ICMP 消息。由于这种行为,TTL 为 1 的数据报(由执行 traceroute 的主机发送)将导致距发送方一次跳跃的路由器,将 ICMP TTL 超出的消息发送回发送方主机;
以TTL 为 2 发送的数据报将导致距离为两次跳跃的路由器,将 ICMP 消息发送回发送方主机;
以 TTL 为 3 发送的数据报将导致距离为两次跳跃的路由器,将 ICMP 消息发送回发送方主机,等等。
以这种方式,执行 traceroute 的主机可通过查看包含ICMP TTL 超出消息的数据报中的来源 IP 地址来获知其自身与目的地 X 之间的路由器的身份。

如果我们使用命令行的方式发送ICMP请求,我们将不能控制ICMP 消息的数据大小,那么就可以使用下面这个软件: pingplotter
安装好之后,打开该软件:
在这里插入图片描述
我们向www.baidu.com发送ICMP报文,
在这里插入图片描述
等到count为 3的时候右键点击 Pause
在这里插入图片描述
这就是一次完整的使用示例。

然后我们将WireShark启动再向www.baidu.com发送ICMP报文,在过滤器上输入 ICMP,表示我们只查看捕获的ICMP数据包。

在这里插入图片描述

如图,我们发现,每一次的ICMP请求的TTL都加了1,和ICMP定义是一样的。第一个数据包的详细情况如下:
在这里插入图片描述
可以看到,IP的总长度为56字节(Total Length) ,这是因为我们发送的ICMP包默认就是56个字节,现在去修改一下:
在这里插入图片描述
在这里插入图片描述
我们将这里的56字节改成 2000字节,再观察一下ICMP数据包的IP情况。
在这里插入图片描述
可以看到,这里一个ICMP包就变成了两个IP数据报,一个负载了1480字节,一个负载500字节。这就是IP的分片机制。
为什么是1980而不是2000,这是因为我们发送的ICMP数据包本身就是 IP首部加负载数据,第一次的56个字节,一个IP分片能装得下所以就可以直接装,那时的总大小是56个字节,说明负载的数据是36个字节,所以这里也应该是 2000-20=1980字节的负载数据。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值