从零开始掌握tcpdump:参数详解

Linux tcpdump命令详解

1. 语法
bash 复制代码
tcpdump [-adeflnnNOpqStvxX] [-c <数据包数目>] [-dd] [-ddd] [-F <表达文件>] [-i <网络界面>] [-r <数据包文件>] [-s <数据包大小>] [-tt] [-T <数据包类型>] [-vv] [-w <数据包文件>] [输出数据单位]
2. 参数说明
  1. -a 尝试将网络和广播地址转换成名称。

    • 示例 :

      bash 复制代码
      tcpdump -a -i eth0

      将捕获到的eth0接口的网络和广播地址转换为名称显示。

  2. -c <数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。

    • 示例 :

      bash 复制代码
      tcpdump -c 10 -i eth0

      捕获10个eth0接口上的数据包后停止。

  3. -d 把编译过的过滤包编译转换成可读的格式,并倾倒到标准输出。

    • 示例 :

      bash 复制代码
      tcpdump -d -i eth0

      显示编译过的过滤表达式。

  4. -dd 把编译过的过滤包编译转换成C语言的格式,并倾倒到标准输出。

    • 示例 :

      bash 复制代码
      tcpdump -dd -i eth0

      以C语言格式显示编译过的过滤表达式。

  5. -ddd 把编译过的过滤包编译转换成十进制数字的格式,并倾倒到标准输出。

    • 示例 :

      bash 复制代码
      tcpdump -ddd -i eth0

      以十进制格式显示编译过的过滤表达式。

  6. -e 在每列倾倒的资料上显示连线层级的文件头。

    • 示例 :

      bash 复制代码
      tcpdump -e -i eth0

      显示eth0接口上的数据包的以太网头部信息。

  7. -f 用数字显示网际网路地址。

    • 示例 :

      bash 复制代码
      tcpdump -f -i eth0

      用数字格式显示IP地址。

  8. -F <表达文件> 指定内容表达方式的文件。

    • 示例 :

      bash 复制代码
      tcpdump -F filter.txt -i eth0

      使用filter.txt中的表达方式过滤eth0接口上的数据包。

  9. -i <网络界面> 使用指定的网络接口送出数据包。

    • 示例 :

      bash 复制代码
      tcpdump -i eth0

      捕获eth0接口上的数据包。

  10. -l 使用标准输出的缓冲区。

    • 示例 :

      bash 复制代码
      tcpdump -l -i eth0

      将输出行缓冲。

  11. -n 不把主机的网络地址转换成名称。

    • 示例 :

      bash 复制代码
      tcpdump -n -i eth0

      不转换主机名。

  12. -N 不列出域名。

    • 示例 :

      bash 复制代码
      tcpdump -N -i eth0

      不解析主机名的域名部分。

  13. -O 不将数据包编码器最佳化。

    • 示例 :

      bash 复制代码
      tcpdump -O -i eth0

      禁用优化。

  14. -p 不让网络界面进入混杂模式。

    • 示例 :

      bash 复制代码
      tcpdump -p -i eth0

      使eth0接口不进入混杂模式。

  15. -q 快速输出,仅列出少数的传输协议信息。

    • 示例 :

      bash 复制代码
      tcpdump -q -i eth0

      简单快速输出数据包的信息。

  16. -r <数据包文件> 从指定的文件读取数据包数据。

    • 示例 :

      bash 复制代码
      tcpdump -r file.pcap

      从file.pcap文件读取数据包。

  17. -s <数据包大小> 设置每个数据包的大小。

    • 示例 :

      bash 复制代码
      tcpdump -s 1024 -i eth0

      捕获eth0接口上前1024字节的数据包。

  18. -S 用绝对而非相对数值列出TCP序列号。

    • 示例 :

      bash 复制代码
      tcpdump -S -i eth0

      以绝对序列号显示TCP序列号。

  19. -t 在每列倾倒资料上不要显示时间戳记。

    • 示例 :

      bash 复制代码
      tcpdump -t -i eth0

      不显示时间戳。

  20. -tt 在每列倾倒资料上显示未经过格式化的时间戳记。

    • 示例 :

      bash 复制代码
      tcpdump -tt -i eth0

      显示未经格式化的时间戳。

  21. -T <数据包类型> 强制将表达方式所指的类型的数据信息转换成该数据包类型。

    • 示例 :

      bash 复制代码
      tcpdump -T rpc -i eth0

      将捕获的eth0接口上的数据包解释为RPC数据包。

  22. -v 详细显示指令执行过程。

    • 示例 :

      bash 复制代码
      tcpdump -v -i eth0

      详细显示捕获数据包的信息。

  23. -vv 更详细显示指令执行过程。

    • 示例 :

      bash 复制代码
      tcpdump -vv -i eth0

      更详细地显示数据包信息。

  24. -x 用十六进制字码列出数据包资料。

    • 示例 :

      bash 复制代码
      tcpdump -x -i eth0

      以十六进制格式显示eth0接口上的数据包内容。

  25. -X 用十六进制和ASCII码列出数据包资料。

    • 示例 :

      bash 复制代码
      tcpdump -X -i eth0

      以十六进制和ASCII码显示eth0接口上的数据包内容。

  26. -w <数据包文件> 把数据包资料写入到指定的文件。

    • 示例 :

      bash 复制代码
      tcpdump -w file.pcap -i eth0

      将捕获的eth0接口上的数据包写入file.pcap文件。

3. 使用tcpdump的详细抓包示例

捕获eth0接口上TCP协议的HTTP请求,并保存到文件http_requests.pcap中。

  1. 运行tcpdump命令

    bash 复制代码
    tcpdump -i eth0 'tcp port 80' -w http_requests.pcap
    • 命令解释 :
      • -i eth0:指定网络接口eth0。
      • 'tcp port 80':过滤条件,捕获TCP协议的80端口数据包(HTTP请求)。
      • -w http_requests.pcap:将捕获的数据包保存到文件http_requests.pcap中。
  2. 查看保存的数据包

    bash 复制代码
    tcpdump -r http_requests.pcap
    bash 复制代码
    reading from file http_requests.pcap, link-type EN10MB (Ethernet)
    10:00:00.000000 IP 192.168.1.2.54321 > 192.168.1.1.http: Flags [S], seq 0, win 65535, options [mss 1460,sackOK,TS val 123456 ecr 0,nop,wscale 7], length 0
    10:00:01.000000 IP 192.168.1.1.http > 192.168.1.2.54321: Flags [S.], seq 0, ack 1, win 65535, options [mss 1460,sackOK,TS val 123457 ecr 123456,nop,wscale 7], length 0
    10:00:02.000000 IP 192.168.1.2.54321 > 192.168.1.1.http: Flags [.], ack 1, win 65535, options [nop,nop,TS val 123458 ecr 123457], length 0
相关推荐
小南家的青蛙14 分钟前
微服务体系下DevOps运维岗位面试方案设计
运维·面试·职场和发展·devops
知已难寻10 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
默|笙11 小时前
【Linux网络】网络层协议 IP(1)理解报头、网段划分
linux·网络·tcp/ip
修己xj13 小时前
nslookup 使用指南:两种模式与常用查询技巧
linux
唠玖馆15 小时前
文件系统详解
linux·文件系统·ext2
GeW15 小时前
当Linux内核开始“确定性”,制造高端化才有了底层语法
linux
星恒随风17 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
Alluxio17 小时前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
StarsGreen19 小时前
libva在intel平台上的前端流程简介
linux
坤坤子吖1 天前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json