当前位置:网站首页>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的端口号.
边栏推荐
猜你喜欢
Unity intercepts 3D images and the implementation of picture-in-picture PIP
Jmeter-断言
Pytest learn-setup/teardown
Code Casual Recording Notes_Dynamic Programming_416 Segmentation and Subsetting
V8中的快慢数组(附源码、图文更易理解)
超级完美版布局有快捷键,有背景置换
SPOJ 2774 Longest Common Substring(两串求公共子串 SAM)
代码重构:面向单元测试
Deep integration of OPC UA and IEC61499 (1)
智能座舱的「交互设计」大战
随机推荐
重新认识浏览器的渲染过程
最小化安装debian11
In V8 how arrays (with source code, picture and text easier to understand)
全球首款量产,获定点最多!这家AVP Tier1如何实现领跑?
状态机实验
孙宇晨受邀参加36氪元宇宙峰会并发表主题演讲
响应式织梦模板塑身瑜伽类网站
绕任意轴旋转矩阵推导
A simple understanding of TCP, learn how to shake hands, wave hands and various states
关于mnn模型输出的数据杂乱无章问题
用队列模拟实现栈
Creo 9.0在草图环境中创建坐标系
【MySQL —— 索引】
我的祖国
OPC UA 与IEC61499 深度融合(1)
Why Flutter Flutter of tutorials is the best choice for business?
七夕活动浪漫上线,别让网络拖慢和小姐姐的开黑时间
Creo9.0 绘制中心线
P1996 约瑟夫问题
MCS-51单片机,定时1分钟,汇编程序