第1关:抓取Ping命令中的ICMP包
任务描述
本关任务:捕获 Ping 程序生成的数据包。
相关知识
为了完成本关任务,你需要掌握:
- 指定 ping 命令;
- 分析过滤出的 ICMP 数据包。
ping命令
Ping 程序是一个简单的工具,允许任何人(例如:网络管理员)验证主机是否存在。源主机中的 Ping 程序将数据包发送到目标 IP 地址; 如果目标是在线的,则目标主机中的 Ping 程序将会发送响应 Ping 数据包证明他在线,这两个 Ping 数据包都是 ICMP 数据包。
-
在 Unix/Linux,序列号从 0 开始计数,依次递增。而 Windows 中 ping 程序的 ICMP 序列号是没有规律;
-
ICMP 协议在实际传输中的数据包结构:
20 字节 IP 首部 + 8 字节 ICMP 首部 + 1472 字节<数据大小> 38 字节
; -
ICMP报文格式:
IP 首部(20 字节) + 8 位类型 + 8 位代码 + 16 位校验和 + (不同的类型和代码,格式也有所不同)
。 -
ping命令用法:
-
ping命令选项:
ICMP的应用--ping
ping 是 ICMP 最常见的应用,当我们某一个网站上不去的时候。通常会 ping 一下。ping 会回显出一些有用的信息。 ping 程序利用 ICMP 协议包来侦测另一个主机是否可达。原理是用类型码为 0 的 ICMP 发请求,受到请求的主机则用类型码为 8 的 ICMP 回应。ping 程序来计算间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。我们可以看到,ping 给出来了传送的时间和 TTL 的数据。
指定ping命令
-
打开 Wireshark,开始抓包,在 Linux 系统中,打开虚拟终端执行 ping 命令:
ping -n 10 www.baidu.com
,我们看到源 ping 程序发送了 10 个查询包。