tcpdump抓取流量包详解

news/2024/11/26 1:53:51/

tcpdump 是 Linux 下强大的网络抓包工具,广泛用于网络诊断和分析。以下是对 tcpdump 的详细讲解,包括安装、使用方法和常见示例。


1. 基本概念

tcpdump 用于捕获和分析网络数据包,可以过滤并显示传输中的数据,支持协议、端口等多种筛选条件。


2. 安装

大多数 Linux 发行版都自带 tcpdump,如未安装可以用以下命令:

# Ubuntu/Debian
sudo apt update && sudo apt install tcpdump# CentOS/RHEL
sudo yum install tcpdump

3. 基本使用

1) 显示网络接口

tcpdump -D

输出示例:

1.eth0
2.wlan0
3.any
4.lo

数字表示接口编号,可用于指定抓包的接口。

2) 抓取指定接口的数据包

tcpdump -i eth0
  • -i 指定接口名称。
  • 若不指定接口,默认抓取第一个非 lo 的接口。

4. 常用选项

1) 保存数据到文件

tcpdump -i eth0 -w packets.pcap
  • -w 指定保存的文件(.pcap 格式,可用 Wireshark 分析)。

2) 读取已保存的文件

tcpdump -r packets.pcap
  • -r 从文件中读取数据。

3) 限制数据包大小

tcpdump -s 96
  • -s 指定捕获每个包的字节大小,96 表示捕获前 96 字节。

4) 限制捕获数量

tcpdump -c 10
  • -c 捕获 10 个数据包后停止。

5) 显示更详细的信息

tcpdump -v   # 显示详细信息
tcpdump -vv  # 显示更详细信息
tcpdump -vvv # 显示极详细信息

5. 数据包过滤

tcpdump 支持 BPF 过滤表达式,常用的有协议、IP、端口等。

1) 按协议

  • 抓取 TCP 数据包:
    tcpdump tcp
  • 抓取 UDP 数据包:
    tcpdump udp
  • 抓取 ICMP(ping)数据包:
    tcpdump icmp

2) 按 IP 地址

  • 抓取发往特定 IP 的数据包:
    tcpdump host 192.168.1.1
  • 抓取源 IP 为指定地址的数据包:
    tcpdump src 192.168.1.1
  • 抓取目标 IP 为指定地址的数据包:
    tcpdump dst 192.168.1.1

3) 按端口

  • 抓取访问特定端口的数据包:
    tcpdump port 80
  • 抓取源端口为 80 的数据包:
    tcpdump src port 80
  • 抓取目标端口为 443 的数据包:
    tcpdump dst port 443

4) 组合条件

  • 抓取源 IP 为 192.168.1.1 且目标端口为 22 的数据包:
    tcpdump src 192.168.1.1 and dst port 22
  • 抓取 IP 不为 192.168.1.1 的数据包:
    tcpdump not host 192.168.1.1

6. 显示格式

1) 显示十六进制和 ASCII 格式

tcpdump -X
  • -X 同时显示十六进制和 ASCII 数据。

2) 仅显示十六进制

tcpdump -xx

3) 显示时间戳

tcpdump -tttt
  • 显示可读的时间格式。

7. 示例

1) 捕获 HTTP 流量

tcpdump -i eth0 tcp port 80

2) 抓取特定网段的数据

tcpdump net 192.168.1.0/24

3) 抓取包含特定内容的数据包

tcpdump -A -i eth0 | grep "GET"
  • -A 显示数据包的 ASCII 内容。

8. 注意事项

  1. 权限tcpdump 通常需要 root 权限运行。
  2. 性能影响:抓包可能影响系统性能,尤其在高流量网络中。
  3. 隐私与安全:抓取流量时避免泄露敏感信息。

http://www.ppmy.cn/news/1549958.html

相关文章

【JAVA】Java基础—面向对象编程:常用API与数据结构—集合框架(List、Set、Map等)

Java集合框架是Java编程语言中一个强大的工具集,它提供了数据结构的实现和操作方法,用于存储和处理对象。Java集合框架的核心接口包括List、Set和Map,它们为开发者提供了灵活而高效的数据管理方式。在日常开发中,集合框架的使用无…

微服务系列概览

分布式和微服务的区别是什么? 分布式是把一个集中式系统拆分成多个系统,每一个系统单独对外提供部分功能,整个分布式系统整体对外提供一整套服务。对于访问分布式系统的用户来说,感知上就像访问一台计算机一样。 而分布式架构的…

网络安全 - DOS

1.1.1 摘要 最近网络安全成了一个焦点,除了国内明文密码的安全事件,还有一件事是影响比较大的——Hash Collision DoS(通过Hash碰撞进行的拒绝式服务攻击),有恶意的人会通过这个安全漏洞让你的服务器运行巨慢无比&…

[译]Elasticsearch Sequence ID实现思路及用途

原文地址:https://www.elastic.co/blog/elasticsearch-sequence-ids-6-0 如果 几年前,在Elastic,我们问自己一个"如果"问题,我们知道这将带来有趣的见解: "如果我们在Elasticsearch中对索引操作进行全面排序会怎样…

在SQLyog中导入和导出数据库

导入 假如我要导入一个xxx.sql,我就先创建一个叫做xxx的数据库。 然后右键点击导入、执行SQL脚本 选择要导入的数据库文件的位置,点击执行即可 注意: 导入之后记得刷新一下导出 选择你要导出的数据库 右键选择:备份/导出、…

移动端自动化环境搭建_Android

adb的安装与使用 adb安装adb环境变量adb使用adb常用命令adb简介adb作用 adb安装 选择对应系统进入下载界面,选中版本下载即可: Windows版本:Windows Mac版本:Mac Linux版本:Linux 安装完成后,进行压缩&…

Android开发教程案例源码分享-匹配动画多个头像飘动效果

Android开发教程案例源码分享-匹配动画多个头像飘动效果 匹配往往出现多个头像飘动,吸引人点击,有时出现的位置还不固定 一、思路: 用MotionLayout 二、效果图: 看视频更直观点: Android开发教程案例源码分享-匹配…

已解决java.lang.StackOverflowError异常的正确解决方法,亲测有效!!!

成功解决java.lang.StackOverflowError异常 本文目录 问题分析 报错原因 解决思路 解决方法 检查递归调用 优化算法 调整JVM栈大小 减少局部变量的使用 总结 在编写Java程序时,你可能会遇到一种名为java.lang.StackOverflowError的错误。这个问题通常是由…