本文主要是介绍ICMP实例分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
发现:在承载ICMP的IP的报文中的协议字段的值是0x01
作为ping命令的原理,自己通过ping同一宿舍的电脑但是失败的报文的场景:
ICMP询问报文中的回送请求或回答报文中的回送报文:
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P |
1 | 20 | 6a | 8a | 0e | 12 | 35 | 28 | d2 | 44 | c7 | d2 | 62 | 08 | 00 | 45 | 00 |
2 | 00 | 3c | 66 | 8b | 00 | 00 | 40 | 01 | 68 | f6 | 0a | 6c | cb | 32 | 0a | 6c |
3 | cb | 35 | 08 | 00 | 4d | 5a | 00 | 01 | 00 | 01 | 61 | 62 | 63 | 64 | 65 | 66 |
4 | 67 | 68 | 69 | 6a | 6b | 6c | 6d | 6e | 6f | 70 | 71 | 72 | 73 | 74 | 75 | 76 |
5 | 77 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 |
|
直接分析ICMP报文部分:
首部8字节:3C~3J,
08 |
类型:1个字节,0x08:表示这个ICMP的回送请求报文
00 |
代码:0x00:不知道什么意思
4d | 5a |
检验和:不知道只是首部检验和还是整个ICMP报文的检验和
00 | 01 |
这个要分开说明,分别是identifierBE和Identifier LE,依然不知道是什么意思
00 | 01 |
这个也要分开说明,分别是:sequence number BE 和sequence number LE依然不知道什么意思,不过应该和这是第几个ping包有关
下面的从3K~5J共32B的数据:却是:
Abcdefghijklmnopqrstuvwabcdefghi
经自己查看发送的request和reply基本上都是这个ascii码序列,但是也有的不是这个序列
ICMP的询问报文中的回送请求或回答中的回答报文:
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P |
1 | 28 | d2 | 44 | c7 | d2 | 62 | b8 | 70 | f4 | 31 | a0 | 08 | 08 | 00 | 45 | 00 |
2 | 00 | 3c | 00 | 8b | 00 | 00 | 40 | 01 | ce | f4 | 0a | 6c | cb | 37 | 0a | 6c |
3 | cb | 32 | 00 | 00 | 55 | 47 | 00 | 01 | 00 | 14 | 61 | 62 | 63 | 64 | 65 | 66 |
4 | 67 | 68 | 69 | 6a | 6b | 6c | 6d | 6e | 6f | 70 | 71 | 72 | 73 | 74 | 75 | 76 |
5 | 77 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 |
|
直接看ICMP报文部分:
首部8字节:3C~3J
00 |
类型:0x00,表示这个是ICMP回送请求或回答报文中的回答报文
00 |
代码:code,不知道什么意思
55 | 47 |
检验和:不知道只是首部检验和还是整个ICMP报文的检验和
00 | 01 |
这个要分开说明,分别是identifierBE和Identifier LE,依然不知道是什么意思
00 | 14 |
这个也要分开说明,分别是:sequence number BE 和sequence number LE依然不知道什么意思,不过应该和这是第几个ping包有关,用于标识这是回送的第几个请求包
下面的3K~5J的数据共32B,依然是:序列!abcdefg···
ICMP的差错报告报文中的终点不可达报文,
自己意外的捕获到了这种报文:
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P |
1 | 28 | d2 | 44 | c7 | d2 | 62 | 14 | 14 | 4b | 1b | 53 | a7 | 08 | 00 | 45 | 00 |
2 | 00 | 38 | 21 | 09 | 00 | 00 | 3e | 01 | 7a | 03 | 0a | 00 | 02 | 1b | 0a | 6c |
3 | cb | 32 | 03 | 03 | c6 | 61 | 00 | 00 | 00 | 00 | 45 | 00 | 00 | 99 | 70 | 13 |
4 | 00 | 00 | 01 | 11 | 83 | a8 | 0a | 6c | cb | 32 | ef | ff | ff | fa | c9 | 52 |
5 | 07 | 6c | 00 | 85 | 65 | 57 |
|
直接分析ICMP的报文,
03 |
类型:0x03,标识这个是终点不可达报文
03 |
代码:code,根据wireshark上的提示,这个应该是表达这是端口号不可达的意思
c6 | 61 |
检验和:根据wireshark的提示这个检验和检验正确
00 | 00 | 00 | 00 |
这四个字节,wireshark上面好像把这个忘了,应该是直接填充为0吧?
下面是数据字段:3K~5F共28B字节数据,由所需要的报告的ip报文的首部和需要的报告的ip报文的数据的前8字节组成,这里就是有
45 | 00 | 00 | 99 | 70 | 13 |
| |||||||
00 | 00 | 01 | 11 | 83 | a8 | 0a | 6c | cb | 32 | ef | ff | ff | fa |
和
c9 | 52 | 07 | 6c | 00 | 85 | 65 | 57 |
组成!
这篇关于ICMP实例分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!