当前位置:网站首页>ping数据包中的进程号
ping数据包中的进程号
2022-08-03 23:50:00 【书唐瑞】
当同一台机器A上执行相同的两个ping命令, 例如 ping 114.114.114.114, 那么机器A的内核收到对方机器的响应之后,如何把响应结果向上投递给应用层的对应的ping进程呢?
【1】查看网络接口
只有一个对外的网络接口eth0, 接下来执行的ping命令, 会通过eth0接口进行收发数据
【2】开启抓包
sudo tcpdump -i eth0 -c 1 -X icmp

监听eth0接口上的icmp数据包
【3】执行ping命令
ping 114.114.114.114

ping命令的底层会发送icmp数据包
【4】查看ping命令的进程号

执行ping命令的进程号是156
【5】
执行ping命令之后, tcpdump会抓取到icmp网络包
红色框圈中的是IP+ICMP协议的数据包, 其中绿色部分是ICMP协议的包, 共计64字节, 如下图是ICMP协议包格式

在icmp协议中, 对于ping命令来说, Identifier中存储着ping命令的进程号. Identifier偏移起始位置4字节, 占2字节.
如下图, 是通过wireshark抓取到的icmp网络包, 与通过tcpdump抓取的网络包一样
如下图, 根据Identifier偏移起始位置4字节, 占2字节. 于是0800e0369c00…数据包中的9c00就是进程号, 这里又涉及到网络字节序问题, 实际的数值应该是009c, 转成十进制就是156, 即Identifier位置存储着进程号156

通过这样就可以区别出来, 同一台机器执行的两个ping命令进程, 内核收到ping的响应之后, 就可以知道该把接收到的网络包给哪个ping进程了. 这个Identifier类似TCP的端口号.
边栏推荐
- 【每日一题】899. 有序队列
- Fluorescein-PEG-CLS, cholesterol-polyethylene glycol-fluorescein scientific research reagent
- 七夕?new一个对象
- 逆波兰表达式求值
- Kotlin - extension functions and operator overloading
- RSS订阅微信公众号初探-feed43
- Internship: Upload method for writing excel sheet (import)
- The Chinese Valentine's Day event is romantically launched, don't let the Internet slow down and miss the dark time
- 2022-08-03:以下go语言代码输出什么?A:2;B:3;C:1;D:0。 package main import “fmt“ func main() { slice := []i
- Redis persistence method
猜你喜欢
随机推荐
牛客2022 暑期多校3 H Hacker(SAM + 线段树查询区间内部最大子段和)
Jmeter-断言
Prometheus监控Harbor(二进制版)
Free自由协议系统开发
A simple understanding of TCP, learn how to shake hands, wave hands and various states
Creo 9.0创建几何点
响应式织梦模板除尘器类网站
Unity 截取3D图像 与 画中画PIP的实现
做项目一定用得到的NLP资源【分类版】
The longest substring that cannot have repeating characters in a leetcode/substring
MCS-51单片机,定时1分钟,汇编程序
SPOJ 2774 Longest Common Substring(两串求公共子串 SAM)
curl使用指南
图论-虚拟节点分层建图
The principle and use of AOSP CameraLatencyHistogram
vscode插件设置——Golang开发环境配置
逆波兰表达式求值
Software testing is seriously involution, how to improve your competitiveness?
3D Semantic Segmentation - 2DPASS
JS获得URL超链接的参数值









