当前位置:网站首页>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的端口号.
边栏推荐
- Internship: Upload method for writing excel sheet (import)
- Code Casual Recording Notes_Dynamic Programming_416 Segmentation and Subsetting
- Create function report error, prompting DECLARE definition syntax problem
- leetcode/子串中不能有重复字符的最长子串
- 超级完美版布局有快捷键,有背景置换
- Three.js入门详解
- 1067 Sort with Swap(0, i)
- POE交换机全方位解读(上)
- 苹果对高通说:我4.45亿美元买下一个新园区,可能计划加快基带芯片自研
- 软测人每个阶段的薪资待遇,快来康康你能拿多少?
猜你喜欢
随机推荐
curl使用指南
OPC UA 与IEC61499 深度融合(1)
超级完美版布局有快捷键,有背景置换
[2022强网杯] polydiv和gamemaster
rsync 基础用法
Unity intercepts 3D images and the implementation of picture-in-picture PIP
P1996 约瑟夫问题
代码重构:面向单元测试
RSS订阅微信公众号初探-feed43
689. 三个无重叠子数组的最大和
A simple understanding of TCP, learn how to shake hands, wave hands and various states
FastDFS 一文读懂
密码学基础以及完整加密通讯过程解析
牛客2022 暑期多校3 H Hacker(SAM + 线段树查询区间内部最大子段和)
现货白银需要注意八大事项
Pytest学习-skip/skipif
用两个栈模拟队列
Jmeter-断言
七夕?new一个对象
【论文阅读】TRO 2021: Fail-Safe Motion Planning for Online Verification of Autonomous Vehicles Using Conve









