分析 ping 包

工具是 wireshark,window平台

我的过滤条件,接收 icmp 或者 arp包,并且MAC地址为我的网卡地址,这就只显示我需要看的数据了
(icmp or arp) and eth.addr==78:45:c4:2c:62:d9

本机的ARP缓存的基本操作命令
arp -a
arp -d *
arp -s

例如
本机IP 192.168.0.162   MAC 78 45 C4 2C 62 D9
目标IP 192.168.0.161   MAC 60 EB 69 F6 9D F2

先情况ARP 缓存 arp -d *
然后 ping 192.168.0.161

这时因为没有了ARP缓存,所以先发一个ARP请求包

ff ff ff ff ff ff       广播地址
78 45  c4 2c 62 d9      本机MAC
08 06                   0x0806 表示 ARP 请求  (以上14byte为以太网头部)

00 01                   表示 Eth  硬件类型
08 00                   表示 IP   协议类型,属于IP包
06                      6字节MAC
04                      IPV4
00 01                   1 请求, 2 应答
78 45  c4 2c 62 d9      本地MAC
c0 a8 00 a2             本地 IP
00 00 00 00 00 00       目标MAC,因为请求,所以全0
c0 a8  00 a1            目标IP

收到了一帧回应,各个位的含义和上面相同,除了OP
78 45 c4 2c 62 d9
60 eb 69 f6 9d f2
08 06
00 01
08 00
06
04
00 02                   OP 2表示应答
60 eb 69 f6 9d f2
c0 a8 00 a1
78 45 c4 2c 62 d9
c0 a8 00 a2
00 00 00 00 00 00        PAD,够60byte一帧
00 00 00 00 00 00
00 00 00 00 00 00

从上面可以看出,这样一来,ARP请求之后就得到了MAC地址和IP地址的对应关系了。

接着封装 ICMP报文,PING说白了就是发ICMP报文。ICMP包的封装为
以太网包(14byte)+ IP包头(20byte)+ ICMP包

60 eb 69 f6 9d f2  以太网包,目标MAC
78 45 c4 2c 62 d9  源 MAC
08 00              IP 包类型

45         4表示版本4,5表示头长度 4*5 = 20字节
00         TOS服务类型,默认为0
00 3c      总长度 60byte
5a 19      标示
00 00      位置,片位移都是0,默认
40         生存时间 64MS
01         协议 ICMP
9e 14      头部 checksum
c0 a8 00 a2 源 IP
c0 a8 00 a1  目标IP,结束了,可选数据没有,所以一共20字节的IP头

接着就是ICMP头了
08          类型  类型8,代码0表示 PING请求,类型0表示ping应答
00          代码
33 5c       校验和
02 00       标识
18 00       序号
61 62 63 64 65 6667 68 69 6a 6b 6c 6d 6e   以下为数据
6f 70 71 72 73 74 75 76
77 61 62 63 64 65 66 67  68 69  


 

你可能感兴趣的:(分析 ping 包)