计算机网络实验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
安装好之后,打开该软件:
计算机网络实验Wireshark ------>IP学习_第1张图片
我们向www.baidu.com发送ICMP报文,
计算机网络实验Wireshark ------>IP学习_第2张图片
等到count为 3的时候右键点击 Pause
计算机网络实验Wireshark ------>IP学习_第3张图片
这就是一次完整的使用示例。

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

计算机网络实验Wireshark ------>IP学习_第4张图片

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

你可能感兴趣的:(tcp/ip,wireshark,网络)