您现在的位置是:首页 >其他 >gmac和tcpdump的抓包位置,tcpdump的抓包原理网站首页其他

gmac和tcpdump的抓包位置,tcpdump的抓包原理

码流一叶舟 2025-04-22 00:01:03
简介gmac和tcpdump的抓包位置,tcpdump的抓包原理
套接字udp/tcp/arp
协议栈tcpdump所在层次,抓的是协议层的包
gmac信令层
光网口物理层

tcpdump是Linux里的字符界面的数据抓包分析软件。tcpdump是一个用于截取网络分组,并输出分组内容的工具。

tcpdump:其中tcp:传输控制协议,位于传输层transmission control protocol。dump:导出。

-iinterface指定抓哪个接口的数据包。
-vv显示更加详细的信息。
-e显示mac地址。
-wwrite 写入保存到文件中。导入的文件可以使用wireshark打开。
-rread 读取文件中的数据。
-c在收到指定包数目之后,tcpdump就会停止。

抓固定端口的包     port   xxx

抓固定目标ip的包     dst host   192.254.2.16

1. tcpdump抓包架构

2. 从内核层面看tcpdump抓包流程
众所周知,应用在接收报文的时候,硬件的硬中断首先触发内核的 软中断 ,通过 内核驱动程序 进入 网络设备层 进行数据包的处理,然后数据包进入 协议栈 的网络层和传输层,最后被用户进程接收。

而应用在发送报文时,首先经过内核的 协议层 ,由邻居子系统实现L3层ip地址转化为L2层mac地址,然后进入 网络设备层 ,数据包处理完成后,经 驱动程序 流转,最后由 硬件 将报文发出。

tcpdump为了能抓取数据包,首先需要创建socket套接字,用于在应用系统接收和发送报文时获取抓取的数据包,然后将过滤条件也就是对应的BPF程序注入到内核网络设备层,获取过滤后的数据包后再进行格式化处理。


说明
在生产中常见的,如果单个cpu核心被持续打满,会影响内核将网络包从队列中取出,并存放到协议栈,从而导致机器响应包延迟

在硬件接收到网络包,触发硬中断后,将相关网络包存放到内部队列,队列满后出发软中断通知内核接受相关的流量包,内核接收流量包后,对应的队列清空以继续接收后续的流量包,这个过程占用的cpu很少。

内核接收到软中断信号后,会调用cpu资源以接收相关的流量包,放到协议栈并进行后续的处理。如果软中断很频繁,内核就需要频繁的调用cpu响应,会很需要消耗cpu资源。特别是如果内核响应软中断的cpu绑定到固定某个cpu核时,表现更为明显

原文链接:https://blog.csdn.net/weixin_43845924/article/details/138294080

二、tcpdump 表达式

主要有 3 种类型的表达式:

  • Type(类型)选项包括 host 、net和 port
  • Direction(方向)选项包括 src 和 dst 以及它们的组合
  • Proto(协议)包括 tcp 、udp 、ICMP 和 ah 等

tcpdump抓包原理

Linux网络抓包工具tcpdump是如何实现抓包的,在哪个位置抓包的?_tcpdump抓包位置-CSDN博客tcpdump获取的数据包实际上是在 网卡和内核之间 获取的,它通过libpcap库利用操作系统提供的网络抓包机制来实现。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。