性能分析之tcpdump抓包

1. 简单用法


tcpdump -i any port 8382 -s 0 -C 200 -w steem.cap

1.1. 参数说明


-i any        指定抓取的网卡,通常是eth0,示例里any表示抓取所有网卡的包;;
port 8382     指定抓取的端口,包括发送端口或接收端口,只要有一个匹配就记录,如果不配置表示抓取所有端口;
-s 0          抓到的包后对包大小进行裁剪,一般是0,表示不裁剪,记录完整的包体内容;
-C 200        对落地的抓包文件进行拆分,每200M生成一个独立文件;
-w steem.cap  落地文件名,文件拆分场景下会在后面加上序号;

2. 简介

tcpdump 是一个运行在命令行下的抓包工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。tcpdump 适用于大多数的类Unix系统操作系统(如linux,BSD等)。

3. 命令格式

tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]
[ -c count ] [ --count ] [ -C file_size ]
[ -E spi@ipaddr algo:secret,... ]
[ -F file ] [ -G rotate_seconds ] [ -i interface ]
[ --immediate-mode ] [ -j tstamp_type ] [ -m module ]
[ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ]
[ -r file ] [ -s snaplen ] [ -T type ] [ --version ]
[ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ]
[ -z postrotate-command ] [ -Z user ]
[ --time-stamp-precision=tstamp_precision ]
[ --micro ] [ --nano ]
[ expression ]

4. 配置项说明


详细信息参见:pcap-filter(7) man page | TCPDUMP & LIBPCAP

4.1. 过滤

-i interface 或 --interface=interface
指定tcpdump 需要监听的接口.如果没有指定,则由tcpdump自行选择编号最小的接口.any是个虚拟网络接口,可以接收所有网络接口上的数据包.
expression
决定包的过滤条件,表达式结果为true的包会被记录。

4.2. 落地


-F file
使用file 文件作为过滤条件表达式的输入, 此时命令行上的输入将被忽略.
-s snaplen 或 --snapshot-length=snaplen
设置tcpdump的数据包抓取长度为snaplen, 如果不设置默认将会是68字节.把snaplen 设置为0 意味着让tcpdump自动选择合适的长度来抓取数据包.
需要注意的是, 采用长的抓取长度(nt: snaplen比较大), 会增加包的处理时间, 并且会减少tcpdump 可缓存的数据包的数量, 从而会导致数据包的丢失. 所以, 在能抓取我们想要的包的前提下, 抓取长度越小越好.
-w file
把包数据直接写入文件而不进行分析和打印输出. 这些包数据可在随后通过-r 选项来重新读入并进行分析和打印.
-C file_size
按文件大小拆包,此选项需要配合-w file 选项使用。
该选项使得tcpdump 在把原始数据包直接保存到文件中之前, 检查此文件大小是否超过file-size. 如果超过了, 将关闭此文件,另创一个文件继续用于原始数据包的记录. 新创建的文件名与-w 选项指定的文件名一致, 但文件名后多了一个数字.该数字会从1开始随着新创建文件的增多而增加. 
后面可以携带k/K, m/M or g/G分别表示KiB、MiB、GiB。默认可以简单认为是M(实际是百万字节,即1,000,000字节,而不是1,048,576字节)。
-W filecount
限制生成的文件数目,此选项与-C 选项配合使用。
当文件数据超过这里设置的限制时, 依次循环替代之前的文件, 这相当于一个拥有filecount 个文件的文件缓冲池. 同时, 该选项会使得每个文件名的开头会出现足够多并用来占位的0, 这可以方便这些文件被正确的排序.

4.3. 打印


-e
每行的打印输出中将包括数据包的数据链路层头部信息(例如MAC地址).
-n
不对地址(比如, 主机地址, 端口号)进行数字表示到名字表示的转换.
-q
快速(也许用'安静'更好?)打印输出. 即打印很少的协议相关信息, 从而输出行都比较简短.
-l
对标准输出进行行缓冲(nt: 使标准输出设备遇到一个换行符就马上把这行的内容打印出来).在需要同时观察抓包打印以及保存抓包记录的时候很有用. 比如, 可通过以下命令组合来达到此目的:
tcpdump -l | tee dat或者 tcpdump -l > dat & tail -f dat.(nt: 前者使用tee来把tcpdump 的输出同时放到文件dat和标准输出中, 而后者通过重定向操作'>', 把tcpdump的输出放到dat 文件中, 同时通过tail把dat文件中的内容放到标准输出中)

4.4. 其他


-v
当分析和打印的时候, 产生详细的输出. 比如, 包的生存时间, 标识, 总长度以及IP包的一些选项. 这也会打开一些附加的包完整性检测, 比如对IP或ICMP包头部的校验和.
-vv
产生比-v更详细的输出. 比如, NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码.
-vvv
产生比-vv更详细的输出. 比如, telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,
其相应的图形选项将会以16进制的方式打印出来(nt: telnet 的SB,SE选项含义未知, 另需补充).

5. 过滤表达式(pcap-filter)


详细信息参见
pcap-filter(7) man page | TCPDUMP & LIBPCAP
expr relop expr
expr是一个算术表达式;relop是一个关系操作符;
与C语法一致,表达式中可以使用整数、二进制操作符(+ - * / & | << >>)等,关系操作符可以是(<, >, <=, >=, =, ==, !=);
dst host host 或 dst net net
消息的目的地址是host/net则为true. host可以是一个ip地址,也可以是一个主机名.
src host host 或 src net net
消息的源地址是host/net则为true. host可以是一个ip地址,也可以是一个主机名.
host host 或 net net
消息的目的地址或者源地址是host/net则为true. host可以是一个ip地址,也可以是一个主机名.
dst port port
消息的目的端口是port则为true.
src port port
消息的源端口是port则为true.
port port
消息的目的端口或者源端口是port则为true.
dst portrange port1-port2
消息的目的端口在port1到port2范围内则为true.
src portrange port1-port2
消息的源端口在port1到port2范围内则为true.
dst portrange port1-port2
消息的目的端口或者源端口在port1到port2范围内则为true.
less length 或 len <= length
消息的长度小于等于length则为true.
greaterlength 或 len >= length
消息的长度大于等于length则为true.
ip proto protocol 或 ip6 proto protocol
消息为IPV4/IPV6,且协议类型为protocol则为true. protocol可以是\tcp、\udp等(tcp和udp是关键字,因此要加反斜杠转义).
ip broadcast
消息为IPV4广播数据包则为true.
ip multicast 或 ip6 multicast
消息为IPV4/IPV6组播数据包则为true.

6.注意事项


   抓包的目的是为了分析数据的存在性时,需要确定什么类型的消息,来源和目的地址。分析消息耗时则需要确保在同一个机器上分析请求和应答,避免机器时间差造成结果的不准确。cap文件可以拿到windows上用工具Wireshark分析。


7. 更多参考

https://www.cnblogs.com/tangxiaosheng/p/4950055.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/190285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CRM在设备制造行业的应用,优化资源配置

设备制造业竞争激烈&#xff0c;公司要以客户为中心&#xff0c;搞好售后服务。CRM管理软件是设备制造业客户关系管理的重要工具。以下是CRM在设备制造业里的典型应用。 1.营销管理 制订市场策略&#xff1a;设备制造通常涉及较长的决策周期和销售周期。客户可能会在多家供货商…

Adobe Acrobat DC 将PDF转曲步骤

1、编辑--更多--背景--添加 2、只需要将不透明度调为0即可。 3、工具--印刷制作 4、拼合器预览 5、只需要将下面标出来的地方勾选即可 6、可以另存为&#xff0c;不影响源文件 7、检查是否成功&#xff0c;文件--属性--字体为空&#xff0c;说明成功了 参考资料&#xff1a; …

使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装

一、安装containerd 安装 k8s 有几种方式&#xff1a; 1、 Kubeadm 2、 二进制 这两个是 k8s 官网提供的方式&#xff0c;也是生产环境用的还可以借助第三方平&#xff1a;rancher、kubesphere 都可以装 k8s 这里使用 kubeadm 1.安装 containerd 在 Kubernetes 集群中&#…

C++12.1

三种运算符重载&#xff0c;每个至少实现一个运算符的重载 #include <iostream>using namespace std;class Person {friend const Person operator- (const Person &L, const Person &R);friend bool operator<(const Person &L,const Person &R);f…

opencv2.4 android编译

背景见我的前一篇博客&#xff1a;opencv 编译Simple&#xff0c;转眼6年过去了&#xff0c;最近有个东西想尝试基于opencv来做&#xff0c;所以有本文。 一些背景知识 opencv1.1已经不再维护&#xff0c;目前只能从github中找到一个历史的版本: https://github.com/archith/…

一名高阶程序员的专业养生指南

前言 都说程序员是一份脑力活儿&#xff0c;基本用不上身体&#xff0c;其实这是一种典型的偏见。程序员能够高效高质的完成编码工作&#xff0c;很大程度上依赖一个健康强壮的身体。 正文 作为一名高阶程序员&#xff0c;保持良好的健康状态对于提高工作效率和生活质量都非…

网络和Linux网络_8(传输层)TCP协议_续(流量控制+滑动窗口+拥塞控制+紧急指针+listen第二个参数)

目录 1. 流量控制 2. 滑动窗口 2.1 滑动窗口概念 2.2 滑动窗口模型详解 高速重发控制&#xff08;快重传&#xff09; 3. 拥塞控制和拥塞窗口 4. 延迟应答 5. 捎带应答 6. 面向字节流 7. 粘包问题 8. 16位紧急指针 9. listen的第二个参数 10. TCP总结异常情况与UD…

设置MATLAB启动时弹到上次退出时的工作文件夹

前言 每次关机前退出matlab后&#xff0c;下次打开matlab想完成剩余的工作&#xff0c;还需要回忆工作文件夹&#xff0c;或者依据上次打开的m文件之类的点击跳转&#xff0c;一次两次觉得没什么&#xff0c;多了就觉得很麻烦反感&#xff0c;参考官方知乎博主的解答&#xff…

详细介绍torch中的from torch.utils.data.sampler相关知识

PyTorch中的torch.utils.data.sampler模块提供了一些用于数据采样的类和函数&#xff0c;这些类和函数可以用于控制如何从数据集中选择样本。下面是一些常用的Sampler类和函数的介绍&#xff1a; Sampler基类&#xff1a; Sampler是一个抽象类&#xff0c;它定义了一个__iter_…

【SpringCloud】设计原则之前后端分离与版本控制

一、设计原则之前后端分离 在传统的 Web 应用开发中&#xff0c;大多数的程序员会将浏览器作为前后端的分界线 将浏览器中用户进行页面展示的部分称之为前端&#xff0c;而将运行在服务器&#xff0c;为前端提供业务逻辑和数据准备的所有代码统称为后端 由于前后端分离这个…

MQTT分析——CONNECT为例子

源代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net.Sockets;namespace ConsoleApp1 {class Program{static void Main(string[] args){Connect();}/// <summary>/// 向…

Vue3中的动态组件,使用动态组件实现页面的切换。

目录 动态组件 本文主要介绍Vue3中的动态组件&#xff0c;使用动态组件实现页面的切换。 动态组件 在Vue3中&#xff0c;动态组件是通过<component>元素来实现的。动态组件可以根据所设置的组件名称动态地渲染不同的组件。 动态组件可以通过以下步骤来使用&#xff1a;…

SQL Server 2016(在Products表中查询数据)

1、实验环境。 以实验案例一的结果为环境。 2、需求描述。 【1】查询成本低于10元的水果信息。 【2】将所有蔬菜的成本上调1源。 【3】查询成本大于3元并小于40元的产品信息&#xff0c;并按照成本从高到低的顺序显示结果。 【4】查询成本最高的5个产品信息。 【5】查询有…

房产中介管理信息系统的设计与实现

摘 要 随着房地产业的开发&#xff0c;房产中介行业也随之发展起来&#xff0c;由于房改政策的出台&#xff0c;购房、售房、租房的居民越来越多&#xff0c;这对房产中介部门无疑是一个发展的契机。本文结合目前中国城市房产管理的实际情况和现阶段房屋产业的供求关系对房产中…

基于低代码平台开发应用程序

目录 低代码介绍 预研目标 预研产品 1.业务流程 2.用户权限 3.统计图表 4.大屏设计 5.第三方登录 6.分布式调度 小结 近几年&#xff0c;一直对低代码平台有所耳闻&#xff0c;目前已经对低代码平台有了一定的认识&#xff0c;如果能通过一个可视化的配置页面就能完成前端开发&…

Sock0s1.1

信息收集 探测存活主机 发现存活主机为192.168.217.133 探测开放端口 nmap -sT -p- 192.168.217.133 -oA ./ports 发现两个端口开放&#xff0c;分别是22 3128&#xff0c;同时探测到了8080端口&#xff0c;但是显示是关闭的状态。 UDP端口探测 nmap -sU --top-ports 20 1…

linux学习资源

linux书籍资源&#xff08;pdf版&#xff09;&#xff1a; 有需要的请在评论区留言。 《Linux Basics for Hackers》 kaiwan的三部曲&#xff1a; 《Hands-On System Programming with Linux》 《Linux Kernel Programming》 《Linux Kernel Programming Part 2》 《Ma…

编程好处、系统介绍、app演示

编程视频教学地址&#xff1a; 1、编程好处 1.1、自主开发 类似微信、qq等软件应用&#xff0c;解决人们日常生活问题 例如&#xff1a; 1&#xff09;你可以&#xff0c;自己开发一个网站&#xff0c;管理自己的日常生活照片&#xff0c;防止哪一天手机掉了或丢了&#xff0…

【动手学深度学习】(八)数值稳定和模型初始化

文章目录 一、理论知识 一、理论知识 1.神经网络的梯度 考虑如下有d层的神经网络 计算损失l关于参数Wt的梯度&#xff08;链式法则&#xff09; 2.数值稳定性常见的两个问题 3.梯度爆炸 4.梯度爆炸的问题 值超出阈值 对于16位浮点数尤为严重 对学习率敏感 如果学习率太大…

CKafka 一站式搭建数据流转链路,助力长城车联网平台降低运维成本

关于长城智能新能源 长城汽车是一家全球化智能科技公司&#xff0c;业务包括汽车及零部件设计、研发、生产、销售和服务&#xff0c;旗下拥有魏牌、哈弗、坦克、欧拉及长城皮卡。2022年&#xff0c;长城汽车全年销售1,067,523辆&#xff0c;连续7年销量超100万辆。长城汽车面向…