网络基本功(十八):细说tcpdump的妙用(下)

三十八、Linux性能优化实战学习笔记-案例篇:怎么使用 tcpdump 和 Wireshark 分析网络流量? tcpdump 和 Wireshark 就是最常用的网络抓包和分析工具,更是分析网络性能必不可少的利器。 tcpdump 仅支持命令行格式使用,常用在服务器中抓取和分析网络包。 Wireshark 除了可以抓包外,还提供了强大的图形界面和汇总分析工具,在分析复杂的网络情景时,尤为简单和实用。 案例准备 ... 阅读详情

网络基本功(十八):细说tcpdump的妙用(下)

 

转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese image001.gif

 

 

更多信息

 

(承接上文)

 

过滤:

 

要有效地使用tcpdump,掌握过滤器非常必要的。过滤允许用户指定想要抓取的数据流,从而用户可以专注于感兴趣的数据。此外,ethereal这样的工具使用tcpdump过滤语法来抓取数据流。

如果用户很清楚对何种数据流不感兴趣,可以将这部分数据排除在外。如果用户不确定需要什么数据,可以将源数据收集到文件之后在读取时应用过滤器。实际应用中,需要经常在两种方式之间转换。

简单的过滤器是加在命令行之后的关键字。但是,复杂的命令是由逻辑和关系运算符构成的。对于这样的情况,通常最好用-F选项将过滤器存储在文件中。例如,假设testfilter 是一个包含过滤主机205.153.63.30的文本文件,之后输入tcpdump –Ftestfilter等效于输入命令tcpdump host 205.153.63.30。通常,这一功能只在复杂过滤器时使用。但是,同一命令中命令行过滤器和文件过滤器不能混用。

 

地址过滤:

 

过滤器可以按照地址选择数据流。例如,考虑如下命令:

bsd1# tcpdump host 205.153.63.30

该命令抓取所有来自以及发往IP地址205.153.63.30的主机。主机可以通过名称或IP地址来选定。虽然指定的是IP地址,但抓取数据流并不限于IP数据流,实际上,过滤器也会抓到ARP数据流。限定仅抓取特定协议的数据流要求更复杂的过滤器。

 

有若干种方式可以指定和限制地址,下例是通过机器的以太网地址来选择数据流:

bsd1# tcpdump ether host 0:10:5a:e3:37:c

 

数据流可进一步限制为单向,分别用src或dst指定数据流的来源或目的地。下例显示了发送到主机205.153.63.30的数据流:

bsd1# tcpdump dst 205.153.63.30

注意到本例中host被省略了。在某些例子中省略是没问题的,但添加这些关键字通常更安全些。


广播和多播数据相应可以使用broadcast和multicast。由于多播和广播数据流在链路层和网络层所指定的数据流是不同的,所以这两种过滤器各有两种形式。过滤器ether multicast抓取以太网多播地址的数据流,ip multicast抓取IP多播地址数据流。广播数据流也是类似的使用方法。注意多播过滤器也会抓到广播数据流。


除了抓取特定主机以外,还可以抓取特定网络。例如,以下命令限制抓取来自或发往205.153.60.0的报文:

bsd1# tcpdump net 205.153.60


以下命令也可以做同样的事情:

bsd1# tcpdump net 205.153.60.0 mask 255.255.255.0

而以下命令由于最后的.0就无法正常工作:

bsd1# tcpdump net 205.153.60.0

 

协议及端口过滤:

 

限制抓取指定协议如IP,Appletalk或TCP。还可以限制建立在这些协议之上的服务,如DNS或RIP。这类抓取可以通过三种方式进行:使用tcpdump关键字,通过协议关键字proto,或通过服务使用port关键字。

 

一些协议名能够被tcpdump识别到因此可通过关键字来指定。以下命令限制抓取IP数据流:

bsd1# tcpdump ip

当然,IP数据流包括TCP数据流,UDP数据流,等等。

 

如果仅抓取TCP数据流,可以使用:

bsd1# tcpdump tcp

tcpdump可识别的关键字包括ip, igmp, tcp, udp, and icmp。

 

有很多传输层服务没有可以识别的关键字。在这种情况下,可以使用关键字proto或ip proto加上/etc/protocols能够找到的协议名或相应的协议编号。例如,以下两种方式都会查找OSPF报文:

bsd1# tcpdump ip proto ospf

bsd1# tcpdump ip proto 89

 

内嵌的关键字可能会造成问题。下面的例子中,无法使用tcp关键字,或必须使用数字。例如,下面的例子是正常工作的:

bsd#1 tcpdump ip proto 6

另一方面,不能使用proto加上tcp:

bsd#1 tcpdump ip proto tcp

会产生问题。

 

对于更高层级的建立于底层协议之上的服务,必须使用关键字port。以下两者会采集DNS数据流:

bsd#1 tcpdump port domain

bds#1 tcpdump port 53

 

第一条命令中,关键字domain能够通过查找/etc/services来解析。在传输层协议有歧义的情况下,可以将端口限制为指定协议。考虑如下命令:

bsd#1 tcpdump udp port domain

这会抓取使用UDP的DNS名查找但不包括使用TCP的DNS zone传输数据。而之前的两条命令会同时抓取这两种数据。

 

报文特征:

 

过滤器也可以基于报文特征比如报文长度或特定字段的内容,过滤器必须包含关系运算符。要指定长度,使用关键字less或greater。如下例所示:

bsd1# tcpdump greater 200

该命令收集长度大于200字节的报文。

 

根据报文内容过滤更加复杂,因为用户必须理解报文头的结构。但是尽管如此,或者说正因如此,这一方式能够使用户最大限度的控制抓取的数据。

一般使用语法 proto [ expr : size ]。字段proto指定要查看的报文头——ip则查看IP头,tcp则查看TCP头,以此类推。expr字段给出从报文头索引0开始的位移。即:报文头的第一个字节为0,第二字节为1,以此类推。size字段是可选的,指定需要使用的字节数,1,2或4。

bsd1# tcpdump "ip[9] = 6"

查看第十字节的IP头,协议值为6。注意这里必须使用引号。撇号或引号都可以,但反引号将无法正常工作。


bsd1# tcpdump tcp

也是等效的,因为TCP协议编号为6。


这一方式常常作为掩码来选择特定比特位。值可以是十六进制。可通过语法&加上比特掩码来指定。下例提取从以太网头第一字节开始(即目的地址第一字节),提取低阶比特位,并确保该位不为0:

bsd1# tcpdump 'ether[0] & 1 != 0'

该条件会选取广播和多播报文。

 

以上两个例子都有更好的方法来匹配报文。作为一个更实际的例子,考虑以下命令:

bsd1# tcpdump "tcp[13] & 0x03 != 0"

该过滤器跳过TCP头的13个字节,提取flag字节。掩码0x03选择第一和第二比特位,即FIN和SYN位。如果其中一位不为0则报文被抓取。此命令会抓取TCP连接建立及关闭报文。

 

不要将逻辑运算符与关系运算符混淆。比如想tcp src port > 23这样的表达式就无法正常工作。因为tcp src port表达式返回值为true或false,而不是一个数值,所以无法与数值进行比较。如果需要查找端口号大于23的所有TCP数据流,必须从报文头提取端口字段,使用表达式“tcp[0:2] & 0xffff > 0x0017”。

Linux 调试三剑客——strace,lsof,tcpdump Brendan D. Gregg 专注 Linux performance & tuning 许多年,其博客 brendangregg.com 里关于分析和调优的干货琳琅满目。一篇名为 Linux Performance 文章全面而详细的整理了常用工具,覆盖了硬件、存储、网络乃至应用,如下图:能掌握上图的十八般武艺固然最好,从定位分析的角度来说,我认为三个高级而常用的命令是 strace, lsof 阅读详情

相关推荐

16:tcpdump 的十八般武艺——你可能没用过的参数

大家好,我是毛衣哥。上一期我们聊了 libpcap,这一期来点实操的。tcpdump 这个命令,大部分人就会-i-n-X三件套。但它的参数远不止这些——而且每个参数背后都对应着一组 BPF 指令生成逻辑或者内核缓冲区的配置。我们来一个个拆。不只要知道"这个参数有什么用",还要知道"这个参数在底层发生了什么"。

YSHE的专栏 383

linux tcp工具,linux工作利器之二,网络分析工具tcpdump

简单介绍tcpdump是一个能够对网络上的数据包进行收集的网络分析工具,根据用户自定义条件截取数据包,具备灵活的策略,是系统管理员分析网络、排查问题的利器。tcpdump提供了源代码,有公开的接口,因此具备很强的可扩展性,它支持针对网络层、协议、主机、网络或端口的过滤,并且支持and、or、not等逻辑语句。普通用户无法执行tcpdump命令,只有具备root权限才能执行。参数介绍默认情况下启动t...

weixin_39917437的博客 367

OSPF邻居抓包

OSPF邻居建立过程抓包分析,大家随意下载

计算机网络层(2)

A:以ASCII格式打印出所有分组,并将链路层的头最小化-c:在收到指定数量的分组后就会停止-C:在将一个原始分组写入文件之前,检查文件当前的大小是否超过参数file_size中指定的大小,如果超过了就关闭当前文件,再打开一个新的参数的文件-d:将匹配信息的包的代码以人们能够理解的汇编格式给出-dd:将匹配信息的包的代码以c语言的程序段的格式给出-ddd:将匹配信息的包的代码以十进制的形式给出-i:指定监听的网络接口-I:使标准输出变为缓冲形式输出-n:不把网络地址转换成名字。

qq_45728643的博客 530

Linux PE vs WinPE:为何麒麟系统修复需要专属工具?

本文探讨了Linux PE与WinPE在修复国产麒麟系统时的关键差异,强调了专属工具的必要性。通过分析文件系统兼容性、引导修复、硬件适配和安全合规等方面,揭示了通用PE工具的局限性,并提供了构建专属修复工具链的实用方案,确保系统维护的高效与安全。

weixin_29290863的博客 1061

一文读懂YOLO V5 与 YOLO V4

一文读懂YOLO V5 与 YOLO V4 YOLO之父Joseph Redmon在今年年初宣布退出计算机视觉的研究的时候,很多人都以为目标检测神器YOLO系列就此终结。然而在4月23日,继任者YOLO V4却悄无声息地来了。Alexey Bochkovskiy发表了一篇名为YOLOV4: Optimal Speed and Accuracy of Object Detection的文章。YOLO V4是YOLO系列一个重大的更新,其在COCO数据集上的平均精度(AP)和帧率精度(FPS)分别提高了10%

williamhyin的博客 8796

tcpdump使用过滤条件抓包(基础篇)

引言 这是有关网络协议的第三篇文章。 前两篇文章分享了tcpdump和tshark最基本的用法。这篇文章原本是想翻译tcpdump官方文档,但是网上已经有了现成的翻译版本,作者已经对比较难懂的部分做了说明,当然作者也有略过一部分的说明。Tcpdump实际上非常复杂,需要对网络协议有全面又细致的掌握,有兴趣可以参考tcpdump官方文档。 这篇文章主要从使用的角度对tcpdump常用的命令进行分享,...

BruceLeeNumberOne的博客 1万+

整理笔记——二极管

二极管是一种由半导体材料制成的一种具有单向导电性能的电子元器件,二极管的核心是PN结。加在二极管两端的电压和通关的电流被成为,二极管的伏安特性曲线​​​二极管的正向特性:起初正向电压较小时,正向电流几乎没有,称之为死区,此时二极管处于截止状态。当电压差超过截止电压(0.5V或者0.7V),电流随着电压上升,开始增加缓慢,随后急剧增大,二极管的电阻变小进入导通状态,此时电压变化较小。二极管的反向特性:起初反向电流很小,不随电压二变化,此时成为反向饱和电流;当方向电压达到二极管的反向击穿电压。

#include 811

[Linux] tcpdump命令

关于tcpdump的参考: 官网-> https://www.tcpdump.org/ tcpdump抓包使用小结 https://www.jianshu.com/p/21b5cbba60d7 一文搞定tcpdump基本用法 https://blog.youkuaiyun.com/chinaltx/article/details/87469933 tcpdump的用法 ...

皮卡丘在充电 426

Linux下libdrm实战:从零搭建一个简单的DRM显示程序(附完整代码)

本文是一份Linux下libdrm的实战指南,详细介绍了如何从零开始搭建一个简单的DRM显示程序。通过对比传统Framebuffer的局限性,阐述了现代DRM架构的核心优势与核心对象(FrameBuffer、Plane、CRTC等)的协作流程。文章提供了完整的代码示例,演示了如何打开设备、创建并填充Dumb Buffer、设置CRTC以依次显示红绿蓝纯色画面,并涵盖了编译、运行及进阶开发要点,为嵌入式Linux图形开发提供了扎实的入门基础。

weixin_29183637的博客 406

AutoGLM-Phone 实现“豆包 AI 手机”的自动化操作手机的实战方案教程 让普通手机秒变ai手机

是一个基于视觉语言模型(VLM)的 AI 手机智能助理框架。❌ 不依赖固定坐标❌ 不需要提前录制脚本✅ 能“看懂”手机屏幕✅ 能理解自然语言指令✅ 能自动规划操作路径并执行让 AI 像人一样看屏幕、想步骤、点手机。从工程角度看,AutoGLM-Phone 已经具备“AI 手机助理”的完整雏形能看能理解能规划能执行能跨 App所谓的「豆包 AI 手机」,本质上就是这类能力的产品化封装。而现在,这套能力已经可以被普通开发者亲手跑起来、改起来、甚至接入自己的业务场景。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 596

tcpdump使用转载

抓包神器 tcpdump 使用介绍 Linux基础:用tcpdump抓包 Linux tcpdump命令详解 网络基本功(十八):细说tcpdump的妙用(下)

guangyacyb的博客 681

从菜鸟到大神:VSCode助力HTML开发全攻略

本文全面介绍 VSCode 在 HTML 开发中的高效应用。先引导读者完成 VSCode 的安装与个性化设置,助其快速适应开发环境;接着推荐 Live Server、Prettier 等实用插件,实现实时预览、代码格式化等功能,提升开发效率。通过详细的开发实战步骤,从新建文件到添加样式,带领读者掌握 HTML 基础结构与常用标签使用。还分享代码片段管理、多人协作等进阶技巧,解决常见开发问题。旨在帮助开发者利用 VSCode,轻松高效完成 HTML 开发,打造优质网页。

邓邓子的博客 3368

RHEL6基础三十八之数据包分析工具tcpdump

tcpdump---dump the traffic on a network说明:tcpdump根据使用者的定义对网络上的数据包进行截获的包分析工具。          tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句。普通用户不能正常执行,需具备root权限的用户才可以直接执行它。格式:t...

weixin_33895695的博客 102

三臂杆大型液压机械臂集中式ADRC控制系统设计

本文设计了一种用于三臂杆液压机械臂的集中式自抗扰控制(ADRC)系统。该系统通过建立包含惯性矩阵、科氏力、重力及摩擦力的非线性动力学模型,并集成液压系统传递函数,构建了完整的系统模型。控制方案采用跟踪微分器安排过渡过程,扩张状态观测器实时估计系统状态和总扰动,以及非线性状态误差反馈生成控制量。MATLAB实现展示了集中式ADRC控制器的核心结构,包括参数定义、跟踪微分器、扩张状态观测器和非线性反馈模块的设计。该系统能有效处理多关节耦合效应,实现三输入三输出的MIMO控制,具有抗干扰能力强、响应速度快的特点。

huanghm88的专栏 271

32、生物信息学中的符号、缩写及相关概念解析

本文详细解析了生物信息学中常用的符号、缩写及相关概念,涵盖概率理论、函数表示、模型结构、图与集合、维度参数、神经网络、隐藏马尔可夫模型、双向架构、语法系统、系统发育树、微阵列分析以及核方法与支持向量机等多个领域。通过表格和mermaid流程图的形式,系统梳理了各类符号的定义与应用场景,并介绍了常见缩写的全称与意义。文章旨在帮助研究人员准确理解生物信息学中的基础术语,提升对基因表达分析、序列建模、机器学习等技术的理解与应用能力。

rrr55的博客 146

Linux性能优化实战学习笔记:第四十八讲,网络丢包

Linux性能优化实战学习笔记:第四十八讲 一、上节回顾 上一节,我们一起学习了如何分析网络丢包的问题,特别是从链路层、网络层以及传输层等主要的协议栈中进行分析。 不过,通过前面这几层的分析,我们还是没有找出最终的性能瓶颈。看来,还是要继续深挖才可以。今天,我们就来继续分析这个未果的案例。 在开始下面的内容前,你可以先回忆一下上节课的内容,并且自己动脑想一想,除了我们提到的链路层、网络层以及传输层之外,还有哪些潜在问题可能会导致丢包呢? 二、iptables 首先我们要知道,除了网络层和传输层

jj1130050965的博客 926

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

《神探tcpdump第四招》-linux命令五分钟系列之三十八

==本文会是“选项内容”的最后一期讲解,主要会讲讲-w和-r两个选项。tcpdump的选项很多,多达50个,其他我没有涉及的选项,还是要大家自己通过man tcpdump的方式来学习了。实在研究不懂的,可以找我探讨:)==做过网络流量分析的同学,或许都有一个共同的需求,那就是“流量保存”和“流量回放”,这就恰好对应了今天要讲解的-w选项和-r选项。“流量保存”就是把抓到的网络...

weixin_34405557的博客 169

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Linux性能优化实战学习笔记:第三十八讲/PING和PTR

Linux性能优化实战学习笔记:第三十八讲 一、上节回顾 上一节,我们学习了 DNS 性能问题的分析和优化方法。简单回顾一下,DNS 可以提供域名和 IP 地址的映射关系,也是一种常用的全局负载均衡(GSLB)实现方法。 通常,需要暴露到公网的服务,都会绑定一个域名,既方便了人们记忆,也避免了后台服务 IP 地址的变更影响到用户。 不过要注意,DNS 解析受到各种网络状况的影响,性能可能不稳定。比如公网延迟增大,缓存过期导致要重新去上游服务器请求,或者流量高峰时 DNS 服务器性能不足等,都会 导

jj1130050965的博客 1004

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

execve系统调用_【Linux系统】Linux 调试三剑客——strace,lsof,tcpdump

能掌握上图的十八般武艺固然最好,从定位分析的角度来说,我认为三个高级而常用的命令是 strace, lsof 和 tcpdump。stracestrace - trace system calls and signals据说,对一个经验丰富的 Linux C/C++ 工程师,他通过 strace 即可分析多数软件的大致实现方式。Linux 进程空间可分为用户空间和内核空间,程序通常运行在...

weixin_36078354的博客 208
上一篇: 网络基本功(十七):细说tcpdump的妙用(上)
下一篇: 网络基本功(十九):细说NAT原理与配置
mxway
博客等级 码龄17年 370粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值