IP协议是一种无连接的,不可靠的数据包协议,它并不能保证数据一定被送达,那么我们要保证数据送到就需要通过其它模块来协助实现,这里就引入的是ICMP协议。
ICMP协议字段解释
ICMP协议
- ICMP类型: ICMP报文类型
-
代码:不同的ICMP类型,可能还需要代码做进一步的区分,比如
type=3
(终点不可达),就区分网络不可达(0),主机不可达(1),协议不可达(2),端口不可达(3)等
tcpdump抓取二进制数据
[tenmao@localhost ~]$ sudo tcpdump -i ens33 icmp -xnt -vvvv
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
IP (tos 0x0, ttl 64, id 57149, offset 0, flags [DF], proto ICMP (1), length 84)
192.168.58.100 > 14.215.177.39: ICMP echo request, id 18222, seq 1, length 64
0x0000: 4500 0054 df3d 4000 4001 a060 c0a8 3a64
0x0010: 0ed7 b127 0800 cbae 472e 0001 5d71 a35c
0x0020: 0000 0000 1e81 0700 0000 0000 1011 1213
0x0030: 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223
0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233
0x0050: 3435 3637
IP (tos 0x0, ttl 128, id 125, offset 0, flags [none], proto ICMP (1), length 84)
14.215.177.39 > 192.168.58.100: ICMP echo reply, id 18222, seq 1, length 64
0x0000: 4500 0054 007d 0000 8001 7f21 0ed7 b127
0x0010: c0a8 3a64 0000 d3ae 472e 0001 5d71 a35c
0x0020: 0000 0000 1e81 0700 0000 0000 1011 1213
0x0030: 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223
0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233
0x0050: 3435 3637
ICMP协议头部对照解析
IP (tos 0x0, ttl 64, id 57149, offset 0, flags [DF], proto ICMP (1), length 84)
192.168.58.100 > 14.215.177.39: ICMP echo request, id 18222, seq 1, length 64
0x0000: 4500 0054 df3d 4000 4001 a060 c0a8 3a64
0x0010: 0ed7 b127 0800 cbae 472e 0001 5d71 a35c
前面20字节是IP协议头,之后就是ICMP协议头:是0800 cbae 472e 0001
部分
字段 | 协议 | 内容 | 对应的tcpdump文字描述 |
---|---|---|---|
0x04 | ICMP消息类型 | 回送请求 | ICMP echo request |
0x00 | ICMP代码 | ||
0xcbae | 16位校验和 | ||
0x472e | ICMP数据标志 | ICMP的ID | length 84 |
0x1f4c | 16位的标识 | 数据报标识 | id 18222 |
0x0001 | ICMP序号 | ICMP序号 | seq 1 |
网友评论