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

Linux 抓包工具 --- tcpdump

序言

 在传输层 Tcp 的学习中,我们了解了 三次握手和四次挥手 的概念,但是看了这么多篇文章,我们也只是停留在 纸上谈兵
 欲知事情如何,我们其实可以尝试去看一下具体的网络包的信息。在这篇文章中将向大家介绍,在 Linux 上抓包工具 tcpdump 的基本使用。


一、tcpdump 的使用

1. 安装

 大多数 Linux 系统都自带了这个工具,你可以如下指令来查看是否安装就绪:

tcpdump --version

如果不存在的话,我们使用指令安装一个就好:

sudo apt-get install tcpdump

现在我们就可以正式开始学习如何来使用这个简单且强大的工具了。

2. 基本使用

tcpdump 的基本语法是:

tcpdump [选项] [表达式]

  • 捕获所有网络数据包:

sudo tcpdump

该条指令将捕获你所有的进出网络数据包,但是我们大多时候只需要获取特定条件的数据包即可,所以我们需要对数据包进行筛选。

  • 按接口过滤

sudo tcpdump -i [接口]

通过 -i 选项来指定要捕获的接口,接口的信息你可以使用 ifconfig 来查看。

  • 按协议过滤

sudo tcpdump [协议]
常见的协议:tcp,udp,icmp

这个选项很重要,等会我们就需要借助它来查看我们三次握手和四次挥手的过程。

  • 按 IP 地址过滤:

sudo tcpdump [dst/src] [IP]

在这里的 dst 代表的是捕获发送到特定地址的包;而 src 代表的是捕获来自特定地址的包。

  • 按端口过滤:

sudo tcpdump port [端口号]


  • 组合多个过滤条件:

 使用逻辑运算符 and、or 和 not 来组合过滤条件。例如,我需要捕捉某个源地址的某个端口的 tcp 网络数据包:

sudo tcpdump tcp and src 129.0.10.12 and port 8888 // 示例

基础的使用说到这里就结束了,咋们实战抓一下包。


二、三次握手

 现在我们简单写一个用于网络通信的套接字编程,然后开启对本地端口的监听:

sudo tcpdump -i lo tcp and port 8888

大家注意咯,我使用的是本地环回进行测试,所以我们需要指定接口 lo,不然默认的接口是 eth0,这样就不能捕获我们的数据包;之后我们指定了进行通信的接口 8888

 现在我们启动客户端发起连接,捕获到如下信息:
在这里插入图片描述
现在我们来介绍一个三次握手中,具体包含了什么信息:

  • 第一次:客户端发送 SYN

    • 时间戳: 18:06:37.782287

    • 源地址: localhost.48058,即源端口为 48058

    • 目标地址: localhost.8888,即目标端口为 8888

    • TCP 标志: Flags [S],表示这是 SYN 包,即请求建立连接。

    • 序列号: seq 3613884573,这是发送方的初始序列号。

    • 窗口大小: win 65495,接收方的接收窗口大小(在 TCP 握手过程中,表示能够接收的最大字节数)。

  • 第二次:服务器响应 SYN-ACK 包

    • 时间戳: 18:06:37.782298

    • 源地址: localhost.8888,即目标端口(8888)现在变成了源端口。

    • 目标地址: localhost.48058,即源端口(48058)现在变成了目标端口。

    • TCP 标志: Flags [S.],表示 SYN-ACK 包,服务器响应客户端的连接请求。S 表示 SYN(同步序列号),. 表示 ACK(确认响应)。

    • 序列号: seq 3949276879,服务器的序列号。

    • 确认号: ack 3613884574,服务器确认客户端的初始序列号 + 1,表示已经收到客户端的请求。

    • 窗口大小: win 65483,接收方窗口大小。

  • 第三次:客户端发送 ACK 包,确认连接

    • 时间戳: 18:06:37.782307
    • 源地址: localhost.48058,客户端。
    • 目标地址: localhost.8888,服务器。
    • TCP 标志: Flags [.],表示 ACK 包,即客户端确认服务器响应的连接建立。
    • 确认号: ack 1,表示客户端确认了服务器的响应包。
    • 窗口大小: win 512,接收窗口大小。
    • 长度: length 0,此包也没有携带数据,只有头部。

所以我们直到有三次握手,但是没想到,三次握手背后干了这么事情:

  • 客服端,服务端初始化序列号
  • 两者通告接受窗口大小
  • 协商出一个合适的 MSS 值

现在再让我们看看四次挥手吧!


三、四次挥手

 现在服务端断开连接,之后客户端也断开了连接,这中间发生了什么了:

在这里插入图片描述
现在我们就不逐个字段的介绍了,但是很奇怪呢?怎么四次挥手变成三次了?我们理一下:

  1. 服务端发送 FIN 包,表示断开连接请求
  2. 收到服务端的消息后,客户端发送了 ACK 表示收到,并且发送 FIN 包表示断开连接,以捎带应答的方式发出
  3. 收到客户端的信息后,服务端发送 ACK,连接正式断开

所以,中间分开发送的 ACKFIN 被合并了!这很合理,之所以分开发送的原因是因为:服务端还存在未处理完的数据并未发送给客户端,需要处理并发送后再断开!但是我们并没有剩余的数据,所以直接就断开了!


四、总结

 在这篇文章中,我们介绍了抓包工具 tcpdump 的使用,并且还实践了利用该工具抓取三次握手,四次挥手过程中数据包的信息。

相关文章:

Linux 抓包工具 --- tcpdump

序言 在传输层 Tcp 的学习中,我们了解了 三次握手和四次挥手 的概念,但是看了这么多篇文章,我们也只是停留在 纸上谈兵。  欲知事情如何,我们其实可以尝试去看一下具体的网络包的信息。在这篇文章中将向大家介绍,在 L…...

Vector Optimization – Stride

文章目录 Vector优化 – stride跳跃Vector优化 – stride跳跃 This distance between memory locations that separates the elements to be gathered into a single register is called the stride. A stride of one unit is called a unit-stride. This is equivalent to se…...

git config是做什么的?

git config是做什么的? git config作用配置级别三种配置级别的介绍及使用,配置文件说明 使用说明git confi查看参数 默认/不使用这个参数 情况下 Git 使用哪个配置等级? 一些常见的行为查看配置信息设置配置信息删除配置信息 一些常用的配置信…...

计算机网络(7) 数据链路层

数据链路层的内容不学不知道,一学真的是吓一跳哦,内容真的挺多的,但是大家不要害怕,总会学完的。 还有由于数据链路层的内容太多,一篇肯定是讲不完的所以我决定把它分为好几个部分进行学习与讲解。大家可以关注以后文…...

2024年秋国开电大《建筑结构试验》形考任务1-4

形考作业一 1.下列选项中,( )项不属于科学研究性试验。 答案:检验结构的质量,说明工程的可靠性 2.下列各项,( )项不属于工程鉴定性试验。 答案:验证结构计算理论的假定 3.按试验目的进行分类,可将结构试验分成( )。 答案:工程鉴定性试验和科学研究性试验…...

【MySQL】explain之type类型

explain的type共有以下几种类型,system、const、eq_ref、ref、range、index、all。 system:当表中只有一条记录并且该表使用的存储引擎的统计数据是精确的,比如MyISAM、Memory,那么对该表的访问方法就是system。 const&#xff…...

Llama架构及代码详解

Llama的框架图如图: 源码中含有大量分布式训练相关的代码,读起来比较晦涩难懂,所以我们对llama自顶向下进行了解析及复现,我们对其划分成三层,分别是顶层、中层、和底层,如下: Llama的整体组成…...

Android onConfigurationChanged 基础配置

onConfigurationChanged 代替重建 0. **定义与基本用途**1. **具体使用场景 - 屏幕方向改变**2. **具体使用场景 - 键盘可用性改变**3. **具体使用场景 - 语言设置变更**4. **具体使用场景 - 屏幕密度变化**5. **具体使用场景 - 字体大小改变**6. **具体使用场景 - 屏幕尺寸变化…...

3. Sharding-Jdbc核⼼流 程+多种分⽚策略

1. Sharding-Jdbc 分库分表执⾏核⼼流程 Sharding-JDBC执行流程 1. SQL解析 -> SQL优化 -> SQL路由 -> SQL改写 -> SQL执⾏-> 结果归并 ->返回结果简写为:解析->路由->改写->执⾏->结果归并1.1 SQL解析 1. SQL解析过程分为词法解析…...

为什么财富的蓝图如此重要

我们生活在一个二元对立的世界里:上与下、明与暗、冷与热内与外、快与慢、左与右。这些还只是千百种对立之中的几个例子而已。 有了一个极端,表示一定同时有相对的另一端存在。有了右边不可能没有左边。 所以,在钱这件事上,有外…...

【云计算解决方案面试整理】1-2云计算基础概念及云计算技术原理

准备面云计算解决方案的岗位,整理了一些,也请大佬们指点。 文档分为 云计算基础概念、云计算技术原理、主流云计算平台(以天翼云为例)、云计算架构(弹性设计、高可用设计、高性能设计)、安全防护几个方面。 一、云计算基础概念 1.请简要解释一下什么是云计算? 简单说呢…...

循环语句 while()... 与 for()...(day11)

一、while()与do...while()... 循环语句: 通过循环语句可以反复执行一段代码多次 1、while循环: - 语法: while(①条件表达式){ ②语句... } - while语句在执行时, 先对条件表达式进行求值判断, 如果值为true&#…...

Mysql篇-三大日志

概述 undo log(回滚日志):是 Innodb 存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 MVCC。 redo log(重做日志):是 Innodb 存储引擎层生成的日志,实现…...

MySQL的SQL书写顺序和执行顺序

老是忘记执行顺序,记录一下: 1. SQL语句的书写顺序 书写顺序通常是我们编写SQL查询时的顺序,主要包括以下关键字: SELECT:选择要查询的字段。FROM:指定数据来源表。JOIN(可选)&am…...

摄像机视频分析软件下载LiteAIServer视频智能分析软件抖动检测的技术实现

在现代社会中,视频监控系统扮演着至关重要的角色,其可靠性和有效性在很大程度上取决于视频质量。然而,由于多种因素,如摄像机安装不当、外部环境振动或视频信号传输的不稳定,视频画面常常出现抖动问题,这不…...

spring gateway 动态路由

##yml配置 spring:application:name: public-gateway # cloud: # gateway: # routes: # - id: mybatis-plus-test # 路由的唯一标识 # uri: http://192.168.3.188:9898 # 目标服务的地址 # predicates: # - Path/test/** # 匹配…...

除了 Postman,还有什么好用的 API 管理工具吗?

Postman在团队协作上的支持相对有限,且免费版本的功能较为基础,高级功能需要付费解锁。 为了寻找更加符合团队需求的解决方案,许多开发者开始探索其他API管理工具,其中Apifox便是备受推崇的选择之一。下面通过一个表格来简单了解…...

JAVA:探索 EasyExcel 的技术指南

1、简述 在 Java 开发中,Excel 文件的读写操作是一项常见的需求。阿里巴巴开源的 EasyExcel 提供了一种高效、简洁的解决方案,特别是在处理大规模数据时表现尤为突出。本文将详细介绍 EasyExcel 的优缺点、应用场景,并通过实例展示其基本用法…...

【数字图像处理+MATLAB】对图片进行伽马校正(Gamma Correction):使用幂律变换公式进行伽马变换

引言 伽马校正(Gamma Correction)是一种用于图像处理的技术,主要用于调整图像的亮度或对比度。其基本原理是对图像的每一个像素应用一个非线性变换,以更好地适应人眼的视觉感知。在数字图像处理中,伽马校正通常用于调…...

算法——螺旋矩阵II(leetcode59)

给你一个正整数 n ,生成一个包含 1 到 n^2所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 对于螺旋矩阵来讲难点主要在于行或列放置元素时的边界条件,我们遵循一个循环不变量原则在放置行或列元素时遵循左闭右开来放置元…...

警惕AI领域未经证实的技术传闻与虚构命名

我不能按照您的要求生成关于“TAI #200: Anthropic’s Mythos Capability Step Change and Gated Release”的博文内容。原因如下:该标题中出现的“Mythos”并非 Anthropic 官方公开发布或确认存在的模型、能力或产品名称。截至2024年7月,Anthropic 官方…...

MPV_lazy终极指南:如何用懒人包快速提升视频播放体验?

MPV_lazy终极指南:如何用懒人包快速提升视频播放体验? 【免费下载链接】mpv_PlayKit 🔄 mpv player 播放器折腾记录 Windows conf | 中文注释配置 汉化文档 快速帮助入门 | mpv-lazy 懒人包 Win11 x64 config | 着色器 shader 滤镜 filter 整…...

图解人工智能(31)深度学习前沿

在词向量模型中,训练的目的是使相关的词离的更近,不相关的词离的更远,其中“相关性”是按语义上的远近来判断的。假设我们要对下列领域中的对象做嵌入,该如何定义对象的相关性?(1)动物园里的动物…...

图片去水印怎样快速搞定?2026年实测去水印工具推荐与方法全解

去水印是许多内容创作者和日常用户都会遇到的需求。无论是保存喜欢的图片、重新编辑素材,还是处理自己的作品,都需要用到高效的去水印方法。本文将为你详细介绍2026年最实用的图片去水印工具和操作方法,帮助你快速找到适合自己的解决方案。 小…...

Superpowers 总览与原理(通俗版)

一句话结论 Superpowers 不是一个“新模型”,而是一套“技能(skills) 启动引导(bootstrap)”的工作流层,用明确的流程和纪律约束智能体如何思考、如何拆解任务、如何实现与复核。 它是怎么用的(…...

Themes 与 Styles

Themes 与 Styles 主题目录:Source/Themes项目说明H.Theme主题核心。H.Themes.Colors.Accent强调色。H.Themes.Colors.Blue蓝色。H.Themes.Colors.Copper铜色/复古。H.Themes.Colors.Gray灰色。H.Themes.Colors.Industrial工业风。H.Themes.Colors.Mineral矿物色。H…...

[QA]插件式测试用例生成工具:LLM Test Case Tool 的设计与实现

一句话介绍:QA 在需求分析和测试设计中常用的能力沉淀到浏览器插件里:用户在阅读 PRD 时,可以直接在页面右下角调用 Workee,完成摘要、大纲、疑点、测试点、测试用例、UAT 用例和多页面分析。 1. 背景:为什么还需要这个…...

软件测试的“测开分离”趋势,是机遇还是陷阱

一、测开分离:软件测试行业的新变局在软件测试行业的发展历程中,角色的边界一直在悄然演变。从早期手工测试独挑大梁,到自动化测试兴起后测试人员开始涉足简单代码编写,再到如今测试开发工程师岗位的独立,测试与开发的…...

ElevenLabs湖北话语音合成:从零部署到商用级TTS的7大避坑步骤(附武汉/宜昌/襄阳三方言测试数据)

更多请点击: https://kaifayun.com 第一章:ElevenLabs湖北话语音合成的技术定位与方言价值 ElevenLabs 作为全球领先的AI语音生成平台,其核心能力聚焦于高保真、情感化、多语言的文本到语音(TTS)合成。尽管官方尚未正…...

将Taotoken集成到自动化客服系统实现智能问答降本增效

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 将Taotoken集成到自动化客服系统实现智能问答降本增效 对于需要构建或升级智能客服系统的企业而言,核心诉求往往集中在…...