tcpdump分析ICMP协议
时间:2022-06-20
本文章向大家介绍tcpdump分析ICMP协议,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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 |
参考
- 当你「ping 一下」的时候,你知道它背后的逻辑吗?
- 完全理解ICMP
- https://www.ibm.com/support/knowledgecenter/ja/SS42VS_7.2.7/com.ibm.qradar.doc/c_DefAppCfg_guide_ICMP_intro.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 树莓派基础实验18:声音传感器实验
- 树莓派基础实验19:光敏传感器实验
- 逻辑式编程还有用吗?--“三维度”逻辑编程语言的设计(2)
- git 报错解决Validate branches Cannot Create: This merge request already exists
- 树莓派基础实验20:火焰报警传感器实验
- (译)SDL编程入门(8)几何图形渲染
- Java8 dubbo 调用 Collectors.toMap代码片发生的异常(IllegalStateException: Duplicate key)
- 树莓派基础实验21:烟雾报警传感器实验
- 树莓派基础实验22:红外遥控传感器实验
- Spring的BeanUtil的copyProperties方法 慎用!!
- (译)SDL编程入门(9)视口
- (译)SDL编程入门(7)纹理加载和渲染
- 三步带你开发一个短链接生成平台
- 绕安全狗的那些事
- single-spa 基础概念