Linux - Tcpdump命令

2024-09-06 01:58
文章标签 linux 命令 tcpdump

本文主要是介绍Linux - Tcpdump命令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、说明
   
是一个用于抓取网络数据包并输出的工具,命令格式如下:
       tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ][ -C file_size ] [ -F expr_file ][ -i interface ] [ -m module ] [ -M secret ][ -r read_file ] [ -s snaplen ] [ -T type ] [ -w save_file ][ -W file_count ][ -E spi@ipaddr algo:secret,...  ][ -y datalinktype ] [ -Z user ][ expression ]

二、选项
    -A     以ASCII格式打印出所有信息包并将链路层的头最小化。 
    -c     在收到指定的数量的数据包后退出
    -C     将数据包以一百万字节为单位的file_size指定的大小写入连续的多个文件中
    -d     将匹配的数据包的代码以可读的形式输出到标准输出
    -dd    将匹配的数据包的代码以c语言程序段的格式给出 
    -ddd   将匹配的数据包的代码以十进制的形式给出 
    -D     打印出系统中所有tcpdump可以抓取包的网络接口列表 
    -e     在输出行打印出数据链路层的头部信息 
    -E     用 spi@ipaddr algo:secret 解密那些以addr作为地址并且包含了安全参数索引值spi的IPsec ESP包 
    -f     以数字而非符号方式显示外来 IPv4 地址
    -F     从指定的文件中读取过滤表达式,忽略命令行中给出的表达式 
    -i     指定监听的网络接口,可以通过-D查看 
    -l     使标准输出变为缓冲行形式,可以把数据导出到文件 
    -L     列出网络接口的已知数据链路 
    -m     从其指定的Module文件中导入SMI MIB模块定义
    -M     如果TCP报文中存在TCP-MD5选项,使用secret作为用于验证TCP分段中签名的共享密钥
    -n     不把网络地址转换成名称
    -nn    不把协议和端口号转换成名称
    -N     不输出主机名中的域名部分
    -O     不运行数据包匹配的代码优化器 
    -p     不将网络接口设置成混杂模式。 
    -q     只输出较少的协议信息一遍快速输出 
    -r     从指定的文件中读取包(这些包一般通过-w选项产生) 
    -S     将Tcp的序列号以绝对值而非相对值的形式输出
    -s     从每个数据包中读取最开始的snaplen个字节,而不是默认的68个字节
    -T     将监听到的包直接解释为type指定类型的报文,常见的类型有rpc和snmp等
    -t     不在每一行中输出时间戳
    -tt    在每一行中输出非格式化的时间戳 
    -ttt   在本行和前面一行之间输出一个时间差
    -tttt  在每一行中输出由date处理的默认格式的时间戳
    -u     输出未解码的NFS句柄 
    -v     输出一个稍微详细的信息,例如在Ip包中可以包括ttl和服务类型的信息
    -vv    输出更为详细的报文信息
    -w     直接将数据包写入save_file文件中,而不是不解析并打印出来
    -W     与-C一起使用以限制创建文件的数量,达到file_count则开始覆盖
    -x     以十六进制显示每个信息包,减去其链接级别标题
    -xx    以十六进制显示每个信息包,包括其链接级别标题
    -X     以十六进制和ASCII显示每个信息包,减去其链接级别标题
    -y     设置在将信息包捕获到datalinktype时要使用的数据链路类型


三、表达式
    表达式用于过滤报文的条件,如果没有则抓取所有的数据包,表达式有三种类型的关键字:
    第一种是关于类型的关键字,主要的类型包括 host、net、port,缺省为host
    第二种是传输方向的关键字,主要的方向包括 src、dst、src or dst、src and dst,缺省为 src or dst
    第三种是通信协议的关键字,主要的协议包括 wlan、ip、ip6、arp、rarp、decnet、tcp、udp,缺省时监听所有协议


四、输出内容

[root@xl usr]# tcpdump -e -nn -S -X host 192.168.2.231 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
11:18:40.804021 00:22:64:2d:35:1c > 00:0c:29:85:0b:14, ethertype IPv4 (0x0800), 
length 74: 192.168.3.43.57889 > 192.168.2.222.8080: S 1808454045:1808454045(0) 
win 5840 <mss 1460,sackOK,timestamp 113878982 0,nop,wscale 7>0x0000:  4510 003c 765b 4000 4006 3d3b c0a8 02e7  E..<v[@.@.=;....0x0010:  c0a8 02de e221 1f90 6bca d19d 0000 0000  .....!..k.......0x0020:  a002 16d0 bc70 0000 0204 05b4 0402 080a  .....p..........0x0030:  06c9 a7c6 0000 0000 0103 0307            ............
    第一行:执行tcpdump命令,指定显示数据链路层头部、不转换协议和端口号、以绝对值显示包的INS序列号、以十六进制和ASCII显示数据包  
    第二行:提示使用选项-v和-vv,可以看到更全的输出内容
    第三行:监听通过eth0这个NIC设备的网络包,且它的链路层是基于以太网的,要抓的包大小限制是96字节
    第四行:11:18:40.804021 表示抓包的时、分、秒、微秒;00:22:64:2d:35:1c > 00:0c:29:85:0b:14 表示从mac地址发送到mac地址的主机;ethertype IPv4 (0x0800) 表示Ethernet帧的协议类型为ipv4(即代码为0x0800)
    第五行:length 74 表示以太帧长度为66;192.168.3.43.57889 > 192.168.2.222.8080 表示从ip的端口发送到ip的端口,>标识传输方向; S 建立连接的连接标识;1808454045:1808454045(0) 表示包的顺序号是768512且没有数据,格式为 first:last(n bytes),即包中数据的是从顺序号first开始直到last结束的不包括last的n个字节的用户数据;
    第六行:win 5840 表示窗口大小为5840字节;mss 1460 表示由发送端指明的最大报文段长度,发送端将不接收超过这个长度的TCP报文段;sackOK 表示发送端支持并同意使用SACK选择性确认技术;nop是一个空操作选项, wscale 7 表示发送端使用的窗口扩大因子为7 

    注:TCP连接标识有 SYN(建立连接)、FIN(关闭连接)、ACK(响应确认)、PSH(数据推送)、RST(连接重置)、URG(紧急置位),当出现SYN和SYN+ACK包时表示客户端与服务器端建立了一个连接,当出现PSH包时表示有DATA数据包被传递,当出现FIN包或RST包时表示客户端与服务器端断开了连接


五、使用举例

# 抓取所有和主机192.168.3.43通信的包含发送给和接收到的数据包
[root@xl usr]# tcpdump host 192.168.3.43
# 抓取所有与本机的tcp 80端口通信的数据包
[root@xl usr]# tcpdump udp port 80
# 抓取所有在eth0网络接口上发送给主机192.168.3.43的数据包
[root@xl usr]# tcpdump -i eth0 dst host 192.168.3.43
# 抓取与主机192.168.3.43的80端口通信的数据包
[root@xl usr]# tcpdump -i eth0 host 192.168.3.43 and port 80
# 抓取主机192.168.2.222和主机192.168.3.43之外的所有主机通信的ip包并写入文件
[root@xl usr]# tcpdump ip host 192.168.2.222 and ! 192.168.3.43 -w ./target.cap



这篇关于Linux - Tcpdump命令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140676

相关文章

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级