您现在的位置是:首页 >学无止境 >gmac和tcpdump的抓包位置,tcpdump的抓包原理网站首页学无止境

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

码流一叶舟 2025-06-13 00:01:04
简介gmac和tcpdump的抓包位置,tcpdump的抓包原理

用户态 tcpdump 如何实现抓到内核网络包的?_tcpdump抓包属于用户态还是内核态-CSDN博客

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

Tcpdump的命令格式
  tcpdump采用命令行方式,它的命令格式为:
  tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
          [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
          [ -T 类型 ] [ -w 文件名 ] [表达式 ]

  1. tcpdump的选项介绍
   -a    将网络地址和广播地址转变成名字;
   -d    将匹配信息包的代码以人们能够理解的汇编格式给出;
   -dd    将匹配信息包的代码以c语言程序段的格式给出;
   -ddd    将匹配信息包的代码以十进制的形式给出;
   -e    在输出行打印出数据链路层的头部信息;
   -f    将外部的Internet地址以数字的形式打印出来;
   -l    使标准输出变为缓冲行形式;
   -n    不把网络地址转换成名字;
   -t    在输出的每一行不打印时间戳;
   -v    输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
   -vv    输出详细的报文信息;
   -c    在收到指定的包的数目后,tcpdump就会停止;
   -F    从指定的文件中读取表达式,忽略其它的表达式;
   -i    指定监听的网络接口;
   -r    从指定的文件中读取包(这些包一般通过-w选项产生);
   -w    直接将包写入文件中,并不分析和打印出来;
   -T    将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程 调用)和snmp(简单       网络管理协议;)

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库利用操作系统提供的网络抓包机制来实现。

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