当前位置: 首页 > news >正文

深入解析:Linux tcpdump命令在网络流量分析中的实战应用

        tcpdump是一个强大的命令行工具,用于捕获和分析TCP、UDP、ICMP等协议的网络流量。

功能与用途

  1. 捕获网络流量:tcpdump可以捕获和显示来自本地计算机或通过网络传输的数据包,提供有关数据包的详细信息,如源和目的IP地址、端口号、协议类型、数据长度等。
  2. 分析数据包:通过捕获的数据包,tcpdump可以帮助用户分析网络问题,如延迟、丢包、重传等,对于网络调试、安全审计和性能优化等方面非常有用。
  3. 过滤功能:tcpdump支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助用户去掉无用的信息,专注于分析特定类型的流量。

软件安装

yum install -y tcpdump         #centos系统
apt-get install -y tcpdump     #ubuntu系统

语法格式及常用选项

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

参数

描述

-nn

直接以IP及port号码显示,而非显示主机名与服务名称

-w

将监听所得到的数据包内容存储下来,输出结果至文件

-W

指定输出文件的最大数量,到达后会重新覆写第1个文件

-r

读取一个抓包文件

-C

限制输入文件的大小,超出以后后缀加1等数字的形式递增,注意单位是1000000字节

-G

指定每隔N秒就重新输出至新文件,注意-w参数应该基于strftime参数指定文件名

监听及停止条件参数

参数

描述

-D

列举所有网卡设备

-i

后面接要监听的网络接口设备,例如eth0、lo、ppp0等的界面

-c

监听的数据包数,如果没有这个参数,tcpdump会持续不断监听

-s

指定每条报文的最大字节数,默认是262144字节,可以设置大小

–time-stamp-precision

制定捕获时的时间精度,默认是毫秒级micro,可选选择纳秒nano

输出时间戳格式参数

参数

描述

-t

不显示时间戳

-tt

自1970年1月1日0点至今的秒数

-ttt

显示邻近两行报文间经过的秒数

-tttt

自第一个监听的报文起经历的秒数

分析信息详情参数据

参数

描述

-e

使用数据链路层(OSI第二层)的MAC数据包数据来显示

-q

仅列出较为简单的数据包信息,每一行的内容比较精简

-v

显示网络层头部更多的信息,如TTL、id等

-n

显示IP地址、数字端口代替hostname等

-S TCP

信息以绝对序列号代替相对序列号

-A

数据包的内容以ASCII格式显示,通常用来监听WWW网页数据包数据

-x

以16进制方式显示报文内容,不显示数据链路层

-xx

以16进制方式显示报文内容,显示数据链路层

-X

可以列出十六进制(hex)以及ASCII的数据包内容,不显示数据链路层

-XX

可以列出十六进制(hex)以及ASCII的数据包内容,显示数据链路层

参考例子

1、查看本机全部网卡信息

如果我们想快速查看本机全部网卡设备信息,使用tcpdump代替ifconfig会更加高效,包括网桥设备(br0、docker0)、虚拟机网卡(virbr0)、蓝牙网卡(bluetooth0)、usb总线接口(usbmon1、usbmon2)、本机网卡(ens33)、回环地址(lo)等常见设备信息,系统对查询出的全部网卡接口设备进行编号。

tcpdump -D

2、监听指定网卡的数据包信息

监听ens33网卡上的全部网络数据包,需要显示IP及PORT号码,持续收到6条数据包以后自动停止

tcpdump -i ens33 -nn -c 6

3、将监听的数据包数据保存至文件

使用tcpdump监听经过ens33网卡的数据包,将数据包每隔3秒时长写入一个特定格式文件(文件生成格式定义为def%M-%S),并且读取其中一个生成文件的内容

tcpdump -i ens33 -G 3 -w def%M-%S

ll def*

tcpdump -r def04-11

tcpdump条件表达式详解

主机过滤

host、src host、dst host:设置主机、来源主机、目的主机作为过滤条件,

例如:tcpdump -nn host 192.168.31.101 代表过滤指定主机IP地址的网络数据包。

网络过滤

net、src net、dst net: 设置网段、来源网段、目的网段作为过滤条件,

例如:tcpdump net -nn 192.168.0.0 代表过滤指定网段的网络数据包

端口过滤

port、src port、dst port、portrange:设置端口、来源端口、目的端口、端口范围作为过滤条件,

例如:tcpdump -nn dst port 80 代表过滤从目的端口80发来的网络数据包

协议过滤

可以指定网络协议类型,包括ether、fddi、tr、wlan、ip、ip6、arp、rarp、tcp、udp、icmp、igmp、icmp、igrp、pim、ah、esp、vrrp等,

例如:tcpdump -nn icmp or tcp 代表过滤icmp协议或者tcp协议数据包。

逻辑表达式过滤

and(&&)、or(||)、not(!): 分别代表并且、或者、非逻辑运算,

例如:tcpdump ‘src host 192.168.31.101 and dst port 8080’ 代表监听源IP是192.168.31.101主机发送给目的端口8080的所有数据包。

特定状态过滤

tcp[tcpflas]: 按照tcp指定状态标志位进行过滤,

例如: tcpdump -i eth0 -nn ‘tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-ack’ 代表希望同时捕获syn类型和ack类型的数据包

综合

如何使用tcpdump命令实现如下监控目标:1.监听来自ens33网卡数据,通信协议为port 22,目标数据包来源为192.168.31.101的数据包,请给出正确答案。

tcpdump -i eth0 -nn ‘port 22 and src 192.168.1.101’

http://www.lryc.cn/news/462530.html

相关文章:

  • Java集合常见知识总结(上)
  • 【算法】力扣:K个一组反转链表
  • Matlab报错——错误使用 vertcat
  • 【如何获取股票数据10】Python、Java等多种主流语言实例演示获取股票行情api接口之沪深A股历史分时KDJ数据获取实例演示及接口API说明文档
  • 进入 Searing-66 火焰星球:第一周游戏指南
  • 考研论坛设计小程序ssm+论文源码调试讲解
  • JAVA笔记 | EasyExcel创建带有简单下拉框的导入模板
  • 【含开题报告+文档+PPT+源码】贫困儿童一对一扶贫帮扶系统设计与实现
  • 多系统萎缩不慌张,这些维生素是你的“隐形盾牌”!️
  • IGFBP7:免疫治疗新靶点
  • 深度学习模型的架构与应用:技术解析与未来展望
  • 机器学习——主要分类
  • Java密封类(Sealed Classes)增强详解
  • 鸿蒙如何自动生成二维码?QRCode组件
  • 【分布式知识】MapReduce详细介绍
  • JAVA八股
  • 关于武汉芯景科技有限公司的限流开关芯片XJ6288开发指南(兼容SY6288)
  • 指令:计算机的语言(五)
  • C#笔记(1)
  • SSDF攻击、防御与展望
  • MedMamba代码解释及用于糖尿病视网膜病变分类
  • 单点登录的要点
  • linux线程 | 一点通你的互斥锁 | 同步与互斥
  • 全栈开发小项目
  • 批处理一键创建扫描仪桌面打开快捷方式图标 简单直接有效 扫描文档图片的应急策略
  • 【服务器知识】Tomcat简单入门
  • 【前端】Matter:过滤与高级碰撞检测
  • wps图标没有坐标轴标题怎么办?wps表格不能用enter下怎么办?
  • 在ESP-IDF环境中如何进行多文件中的数据流转-FreeRTOS实时操作系统_流缓存区“xMessageBuffer”
  • ConcurrentLinkedQueue适合什么样的使用场景?