网络故障排查和流量分析利器-Tcpdump命令

Tcpdump是一个在Unix/Linux系统上广泛使用的命令行网络抓包工具。它能够捕获经过网络接口的数据包,并将其以可读的格式输出到终端或文件中。Tcpdump是一个强大的命令行工具,能够捕获和分析网络数据包,为网络管理员和安全专业人员提供了深入了解网络通信的途径。本文将介绍Tcpdump的基本用法、功能和一些常见的应用场景。

Tcpdump VS Wireshark

在我的专栏介绍《Wireshark从入门到精通》了大量关于wireshark图形界面,命令行,插件,使用技巧等诸多内容,为什么还要介绍Tcpdump呢,最主要的原因如下:

  • 在处理数十万,数百万数量级的数据包的时候tcpdump展现出比wireshark/tshark更为强大的性能,使得tcpdump仍旧由一定的用武之地。
  • tcpdump是多数Unix/Linux等系统自带的功能,要想在这些系统上使用最新的wireshark,需要自己下载源码编译,不够方便。
  • 支持BPF过滤器能够满足常见场景的需求,命令行的方式能导出到文本格式利于后续的分析。
  • 在处理大流量数据包额时候,先使用Tcpdump过滤然后再使用Wireshark详细分析是一种不错的策略。

Tcpdump使用举例

Tcpdump的使用非常简单,支持的参数如下:
在这里插入图片描述
图1

捕获数据包

在这里插入图片描述
图2
图2 -i参数将捕获指定网络接口上的所有流量,在没有制定输出文件的情况下,会输出到终端,因此使用-w参数输出到文件。如果在捕获数据包的时候想要做更多的限制,例如限制捕获数据包的数量,限制每个数据包的大小,可以使用如下的命令:

tcpdump -i <interface> -s <snaplen> -c <count>

-s 选项可以限制每一个捕获的数据包大小,使用 -c 选项可以设置捕获的数据包数量,达到指定数量后自动停止,有助于减小输出量。

解析数据包

在这里插入图片描述
图3
图3默认情况下只会显示pcap的一些摘要信息,要想显示payload的信息,需要使用-A参数,如图4:
在这里插入图片描述
图4
图4的 -A参数会将payload以ASCII的形式打印出来。

BPF过滤器

上述无论是数据包的抓取还是文件的解析,都没有使用过滤器,因此默认会抓取所有的数据包,默认读取展示所有的数据包。要想抓取或者展示特定的数据包,则需要借助BPF表达式,捕获过滤规则使用BPF语法,主要提供以下三类原语,这几类原语可以通过运算符组合成为复杂的过滤规则。常见的运算符包括逻辑运算符and or not ,即与或非,以及比较运算符> < 等。当然理解这些概念之前,可能需要对网络协议有一定的了解,关于网络协议内容,可以参考专栏《网络攻防协议实战分析》,见这里。
1,类型原语,包括地址原语 host 和net、端口原语 port port range:

host含义比较广泛,既可以表示以太网层的主机地址,也可以是IP层主机地址,也可以是主机名。因此可以使用如三种表达式:

ether host 00:00:5e:00:53:00
host 192.168.0.115
host test 

net可以用于过滤多个IP地址,当然当一个域名www.example.com 对应着多个IP地址的时候,也相当于过滤多个IP。

net 192.168.0.0/24
port 53 过滤单个端口
portrange 1-1024 过滤一组端口

2,方向原语,主要是src和dst:

src host 192.168.0.115 源IP地址192.168.0.115
dst host 192.168.0.116 目的IP地址192.168.0.116

3,协议原语,包括常见的ether,arp,rarp,ip,ip6,tcp,udp。如果想要确认是否支持该协议的捕获过滤,在图1中输入该协议的名称,如果过滤规则变绿说明支持,如果为红则不支持。

not arp and port not 53 非ARP以及非53号端口报文
ip[2:2] > 100 IP协议第三个字节开始取两个字节表示的长度(也就是IP协议的length值)大于100个字节

例如只过滤host的值为特定地址的数据包的命令如下:
在这里插入图片描述
图5
可以看到使用src表达式只会过滤出源IP地址是特定地址的数据包,当然也可以使用逻辑运算符将类型原语,协议原语,方向原语组合过滤出更为精准的结果。当然也可以在抓包的时候使用,只捕获想要的数据包。关于BPF表达式的更多的内容详见官网,这里。

当然关于tcpdump的更多命令的详解可以使用man tcpdump进行查看,也可以参考这里,里面总结了常见的参数含义以及常见的BPF表达式的的用法,如图6:
在这里插入图片描述
图6

结论

TCPDUMP作为一款强大的网络抓包工具,为网络管理、安全分析和协议研究提供了有力支持。通过熟练掌握TCPDUMP的基本用法和高级功能,能够更有效地解决各种网络相关和安全相关的问题。

本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【hyperledger-fabric】将智能合约部署到通道

简介 本文主要来自于B站视频教学视频&#xff0c;也主要参看了官方文档中下图这一章节。针对自己开发的代码做出相应的总结。 1.启动网络 # 跳转到指定的目录 cd /root/fabric/fabric-samples/test-network# 启动docker容器并且创建通道 ./network.sh up createChannel2.打…

拆分文本文件,TXT文本拆分器

在数字化飞速发展的时代&#xff0c;我们经常碰到需要处理大容量TXT文件的情况。这些文件可能包含大量的数据、日志信息或是其他重要内容。然而&#xff0c;传统的文本编辑器在处理这些庞然大物时往往会显得力不从心&#xff0c;这个时候&#xff0c;【首助编辑高手】的出现恰如…

STM32存储左右互搏 SPI总线读写FRAM MB85RS2M

STM32存储左右互搏 SPI总线读写FRAM MB85RS2M 在中低容量存储领域&#xff0c;除了FLASH的使用&#xff0c;&#xff0c;还有铁电存储器FRAM的使用&#xff0c;相对于FLASH&#xff0c;FRAM写操作时不需要预擦除&#xff0c;所以执行写操作时可以达到更高的速度&#xff0c;其…

Docker就应该这么学-01

第一章 容器与开发语言 1.1 Docker 最近一段时间&#xff0c;云计算领域最火的莫过于“容器”一词。提到容器&#xff0c;就不得不提 Docker,可以说 Docker 己经成为了容器的代名词。那么&#xff0c;什么是 Docker ? Docker 又能做什么呢&#xff1f;本章 我们就来简单介绍…

【MPC学习笔记】01:MPC简介(Lecture 1_1 Unconstrained MPC)

本笔记来自北航诸兵老师的课程 课程地址&#xff1a;模型预测控制&#xff08;2022春&#xff09;lecture 1-1 Unconstrained MPC 文章目录 0 MPC 简介0.1 案例引入0.2 系统模型0.3 MPC的优点0.4 MPC的缺点0.5 MPC的未来 1 详细介绍 0 MPC 简介 0.1 案例引入 MPC&#xff08;…

关于简单的数据可视化

1. 安装数据可视化必要的openpyxl、pandas&#xff0c;matplotlib等软件包 使用清华源&#xff0c;命令如下&#xff1a; pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pandaspip install -i https://pypi.tuna.tsingh…

CSU计算机学院2021年C语言期末题目思路分享(后两道题)

文章目录 E: 实数相加——大数加法的拓展原题题目描述输入输出样例输入样例输出 题目思路实现步骤代码和注释 F: 谍影寻踪——链表的思想和运用原题题目描述输入输出样例输入样例输出 题目思路 一点感想 E: 实数相加——大数加法的拓展 原题 题目描述 C语言就要期末考试了&a…

com.gexin.platform 依赖下载问题

打包时报错显示&#xff1a; com.gexin.platform:gexin-rp-sdk-http:pom:4.1.1.4 failed to transfer from http://0.0.0.0/ 解决办法&#xff1a; 1、在idea中找到maven中的设置的settings.xml 2、根据路径找到settings.xml文件&#xff0c;添加以下内容 <mirror><…

2023春季李宏毅机器学习笔记 01 :正确认识 ChatGPT

资料 课程主页&#xff1a;https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.phpGithub&#xff1a;https://github.com/Fafa-DL/Lhy_Machine_LearningB站课程&#xff1a;https://space.bilibili.com/253734135/channel/collectiondetail?sid2014800 一、对Chatgpt的误解…

『华为云耀云服务器实战』|云服务器如何快速搭建个人博客(图文详解)

文章目录 引言一、云耀云服务器L实例介绍1.1 准备一个华为云耀云服务器1.2 重置实例密码1.3 利用xshell 远程连接 二、安装环境软件2.1 安装git准备远程拉取2.2 安装Docker 和 Docker compose 三、博客开源项目介绍3.1 操作界面展览 四、拉取项目搭建个人博客4.1 拉取项目进行配…

【算法】一维、二维前缀和 解决算法题(C++)

文章目录 1. 前缀和算法 介绍2. 一维前缀和 模板引入DP34【模板】前缀和 3. 利用一维前缀和 解题724.寻找数组的中心下标238.除自身以外数组的乘积560.和为K的子数组974.和可被K整除的子数组525.连续数组 二维前缀和 模板1314.矩阵区域和 1. 前缀和算法 介绍 前缀和算法 用于高…

白话机器学习的数学-3-评估

1、 模型评估 那我们如何测量预测函数 fθ(x)的正确性&#xff0c;也就是精度呢&#xff1f; 观察函数的图形&#xff0c;看它能否很好地拟合训练数据&#xff1a; 这是只有一个变量的简单问题&#xff0c;所以才能在图上展 示出来。 过像多重回归这样的问题&#xff0c;变量增…

x-cmd pkg | bit - 实验性的现代化 git CLI

目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 bit&#xff0c;由 Chris Walz 于 2020 年使用 Go 语言开发&#xff0c;提供直观的命令行补全提示和建立在 git 命令之上的封装命令&#xff0c;旨在建立完全兼容 git 命令的现代化 CLI。 首次用户 使用 x bit 即可自…

【华为机试】2023年真题B卷(python)-矩阵元素的边界值

一、题目 题目描述&#xff1a; 给定一个N*M矩阵&#xff0c;请先找出M个该矩阵中每列元素的最大值&#xff0c;然后输出这M个值中的最小值。 补充说明: N和M的取值范围均为: [0,100] 二、示例 示例1&#xff1a; 输入: [[1,2],[3,4]] 输出: 3 说明: 第一列元素为: 1和3&…

Linux 进程(五) 调度与切换

概念准备 当一个进程放在cpu上运行时&#xff0c;是必须要把进程的代码跑完才会进行下一个进程吗&#xff1f;答案肯定是 不对。现在的操作系统都是基于时间片轮转执行的。 时间片&#xff08;timeslice&#xff09;又称为“量子&#xff08;quantum&#xff09;”或“处理器片…

求职招聘小程序平台运营版系统源码 全开源源代码 附带完整的安装与部署教程

近年来&#xff0c;移动互联网的普及&#xff0c;求职招聘行业也在逐步向数字化转型。在这个过程中&#xff0c;小程序因其便捷性、即时性等特点&#xff0c;成为了求职者和招聘方的新宠。罗峰来给大家分享一款求职招聘小程序平台运营版系统源码&#xff0c;致力于为用户提供高…

安装elasticsearch、kibana、IK分词器、扩展IK词典

安装elasticsearch、kibana、IK分词器、扩展IK词典 后面还会安装kibana&#xff0c;这个会提供可视化界面方面学习。 需要注意的是elasticsearch和kibana版本一定要一样&#xff01;&#xff01;&#xff01; 否则就像这样 elasticsearch 1、创建网络 因为我们还需要部署k…

Unable to connect to Redis server

报错内容&#xff1a; Exception in thread "main" org.redisson.client.RedisConnectionException: java.util.concurrent.ExecutionException: org.redisson.client.RedisConnectionException: Unable to connect to Redis server: 175.24.186.230/175.24.186.230…

Elasticsearch:带有自查询检索器的聊天机器人示例

本工作簿演示了 Elasticsearch 的自查询检索器 (self-query retriever) 将问题转换为结构化查询并将结构化查询应用于 Elasticsearch 索引的示例。 在开始之前&#xff0c;我们首先使用 langchain 将文档分割成块&#xff0c;然后使用 ElasticsearchStore.from_documents 创建…

多粒度在研究中的应用

FontDiffuser: One-Shot Font Generation via Denoising Diffusion with Multi-Scale Content Aggregation and Style Contrastive Learning 存在的问题 现有的字体生成方法虽然取得了令人满意的性能&#xff0c;但在处理复杂字和风格变化较大的字符(尤其是中文字符)时&#x…