linux之tcpdump的用法

linux之tcpdump的用法

用法简介

tcpdump是一个命令行网络抓包工具,其命令格式为:

tcpdump[ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ] [ -T 类型 ] [ -w 文件名 ] [表达式 ]

以下是一些关键选项的说明:

-a:将网络地址和广播地址转变成名字。

-d:将匹配信息包的代码以人们能够理解的汇编格式给出。

-dd:将匹配信息包的代码以c语言程序段的格式给出。

-ddd:将匹配信息包的代码以十进制的形式给出。

-e:在输出行打印出数据链路层的头部信息。

-f:将外部的Internet地址以数字的形式打印出来。

-l:使标准输出变为缓冲行形式。

-n:不把网络地址转换成名字。

-t:在输出的每一行不打印时间戳。

-v:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。

-vv:输出更详细的调试信息。

应用举例

1)捕获网络数据包

bash 复制代码
tcpdump -i <interface>

其中是网络接口,例如eth0或wlan0。这将捕获指定接口上所有的网络数据包。

2)按照协议过滤

bash 复制代码
tcpdump -i <interface> <protocol>

指定要捕获的协议,例如ip、tcp、udp等。例如,捕获IP数据包:tcpdump -i eth0 ip。

3)按照端口过滤

bash 复制代码
tcpdump -i <interface> port <port>

其中是要监听的端口号。例如,捕获TCP端口80的数据包:tcpdump -i eth0 tcp port 80。
4)按照IP地址过滤

bash 复制代码
tcpdump -i <interface> host <ip_address>

其中<ip_address>是要监听的IP地址。例如,捕获源或目标为192.168.1.1的数据包:tcpdump -i eth0 host 192.168.1.1。

5)按照网络段过滤

bash 复制代码
tcpdump -i <interface> net <network_address>

其中<network_address>是要监听的网络地址。例如,捕获属于192.168.1.0/24网络段的所有数据包:tcpdump -i eth0 net 192.168.1.0/24。

6)保存捕获到的数据包到文件

bash 复制代码
tcpdump -i <interface> -w <output_file.pcap>

这将把捕获到的数据包保存到指定的pcap文件,以便后续分析或共享。

7)从文件中读取数据包

bash 复制代码
tcpdump -r <input_file.pcap>

使用此命令可以从pcap文件中读取并显示数据包。

8)显示数据包的详细信息

bash 复制代码
tcpdump -i <interface> -v

使用此命令可以显示数据包的详细信息,包括协议、源/目标IP地址、端口等。增加-v参数可以提供更详细的输出。

9) 以十六进制格式显示数据包

bash 复制代码
tcpdump -i <interface> -X

使用此命令将以十六进制格式显示数据包的完整内容,以及它们的ASCII解码。

10) 实时数据流分析

bash 复制代码
tcpdump -i <interface> -n -q -s 0 -t "%m"

此命令将实时分析网络接口上的数据流,并显示每个数据包的摘要信息,包括源/目标IP地址、协议类型、端口等。使用-n参数不进行名称解析,-q参数只显示摘要信息,-s 0表示捕获完整数据包,-t参数用于添加时间戳。

11)以十六进制和ASCII显示捕获的数据包

bash 复制代码
tcpdump -XX -i eth0

此命令将以十六进制和ASCII格式显示从eth0接口捕获的所有数据包。

12)捕获数据包并将其保存在文件中

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

此命令将捕获从eth0接口发送的所有数据包,并将其保存在名为test.pcap的文件中。

13)从文件中读取捕获的数据包

bash 复制代码
tcpdump -r test.pcap -n -i eth0

此命令将从名为test.pcap的文件中读取以前捕获的数据包,并在屏幕上以常规格式显示它们。

14)仅捕获TCP数据包

bash 复制代码
tcpdump -i eth0 tcp

此命令将仅捕获从eth0接口发送的所有TCP数据包。

15)捕获特定源端口或目的端口的TCP数据包

bash 复制代码
tcpdump -i eth0 src port 80 or dst port 22

此命令将捕获从eth0接口发送的源端口为80或目的端口为22的所有TCP数据包。

16)捕获特定源端口和目的端口的TCP数据包

bash 复制代码
tcpdump -i eth0 src port 80 and dst port 6100

此命令将捕获从eth0接口发送的源端口为80且目的端口为6100的所有TCP数据包。注意,"and"和"or"是逻辑运算符,用于组合多个条件。

17)捕获所有ICMP数据包

bash 复制代码
tcpdump -i eth0 icmp

此命令将捕获从eth0接口发送的所有ICMP数据包。

相关推荐
zhangxueyi5 分钟前
如何理解Linux的根目录?与widows系统盘有何区别?
linux·服务器·php
可涵不会debug5 分钟前
C语言文件操作:标准库与系统调用实践
linux·服务器·c语言·开发语言·c++
ghx_echo8 分钟前
linux系统下的磁盘扩容
linux·运维·服务器
幻想编织者44 分钟前
Ubuntu实时核编译安装与NVIDIA驱动安装教程(ubuntu 22.04,20.04)
linux·服务器·ubuntu·nvidia
利刃大大2 小时前
【Linux入门】2w字详解yum、vim、gcc/g++、gdb、makefile以及进度条小程序
linux·c语言·vim·makefile·gdb·gcc
飞行的俊哥7 小时前
Linux 内核学习 3b - 和copilot 讨论pci设备的物理地址在内核空间和用户空间映射到虚拟地址的区别
linux·驱动开发·copilot
幽兰的天空9 小时前
介绍 HTTP 请求如何实现跨域
网络·网络协议·http
lisenustc9 小时前
HTTP post请求工具类
网络·网络协议·http
心平气和️9 小时前
HTTP 配置与应用(不同网段)
网络·网络协议·计算机网络·http
心平气和️9 小时前
HTTP 配置与应用(局域网)
网络·计算机网络·http·智能路由器