玩转网络抓包利器:Wireshark常用协议分析讲解
Wireshark是一个开源的网络协议分析工具,它能够捕获和分析网络数据包,并以用户友好的方式呈现这些数据包的内容。Wireshark 被广泛应用于网络故障排查、安全审计、教育及软件开发等领域。关于该工具的安装请参考之前的文章:地址 ,接下来开始正式讲解其实用技巧。
目录
ARP协议分析
ICMP协议分析
TCP协议分析
HTTP协议分析
ARP协议分析
ARP(Address Resolution Protocol),也叫地址解析协议,是一种用于将网络层地址(如IP地址)转换为数据链路层地址(如MAC地址)的协议。根据IP地址获取物理地址的一个TCP/IP协议。
接下来我们使用wireshark来抓取一下arp的包,这里我们使用cmd去ping一下百度的包进行尝试:

然后我们通过显示过滤器来检索一下arp的包处理进行查看:

我们点击数据包查看具体的信息,其展示的具体数据含义如下:

Ethernet II, Src: 源mac地址 Dst: 目标mac地址
Address Resolution Protocol (request):发送request请求包
Hardware type: Ethernet (1):硬件类型
Protocol type: IPv4 (0x0800):网络层协议类型
Hardware size: 6:mac地址长度
Protocol size: 4:协议长度
Opcode: request (1):请求
Sender MAC address: XiaomiMobile_df:5e:6a (88:c3:97:df:5e:6a):路由物理地址
Sender IP address: 192.168.31.1:网关发送者IP
Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00):目标mac地址
Target IP address: 192.168.31.8:目标ip

Address Resolution Protocol (reply):接收reply响应请求包
Opcode: reply(2):响应
Sender MAC address: Intel_3f:4a:d5 (d4:e9:8a:3f:4a:d5):发送者的MAC地址
Sender IP address: 192.168.31.8:发送者的IP地址
总的来说,ARP协议是用于将网络层地址转换为数据链路层地址的重要协议,它使得主机和路由器能够正确地通信,并且对于构建局域网等小型网络非常重要。
ICMP协议分析
ICMP(Internet Control Message Protocol),也称互联网控制消息协议,是用于在IP网络上发送控制消息的协议。它通常被用于诊断网络问题、报告错误和提供状态信息。
icmp协议一般是我们在发送ping的请求会产生,所有这里我们使用cmd去ping一下本地电脑的网关进行尝试:

接下来我们选择其中一条数据,对该数据包中的数据进行一个简单的解读:

Frame 33:物理层相关基础信息
Ethernet II:链路层相关基础信息
Internet Protocol Version:基于ip协议的相关基础信息
Internet Control Message Protocol:ICMP相关数据描述
Type: 8 (Echo (ping) request):发的请求包
Code:0:代表响应,发送成功
Checksum: 0x4cb3 [correct]:检查发送网关的数据是否被篡改过,校验完整性
[Checksum Status: Good] Identifier (BE): 1 (0x0001):校验结果未Good,表示没有问题
Identifier (LE): 256 (0x0100):表示标识符的值, 用于区分不同的数据包或会话。
Sequence Number (BE): 168 (0x00a8):表示序列号的值,用于按顺序排列和跟踪数据包的传输顺序。
Sequence Number (LE): 43008 (0xa800):表示序列号的值,序列号用于按顺序排列和跟踪数据包的传输顺序。
[Response frame: 34]:表示一个响应帧是对先前发送的请求帧的回应。
Data:具体发给网关的数据包,是一个加密的数据
总的来说,ICMP 是一种网络协议,用于在 IP 网络上传输控制消息,以确保网络的正常运行并提供诊断和错误报告功能。
TCP协议分析
TCP(Transmission Control Protocol),也称传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层协议。它在计算机网络中扮演着至关重要的角色,用于确保数据的可靠传输。
握手和挥手过程是 TCP 协议中重要的步骤,用于建立和断开连接。通过三次握手,客户端和服务器建立起可靠的连接;通过四次挥手,双方安全地关闭连接,确保数据的可靠传输和连接资源的释放。以下对tcp的三次握手四次挥手做一个简要的概述:
三次握手:是建立 TCP 连接时使用的一种协议,用于确保通信双方能够正常交换数据。下面是 TCP 三次握手的流程:
第一步:客户端向服务端发送连接请求(SYN)
客户端(Client)首先向服务端(Server)发送一个带有 SYN(同步序列编号)标志的数据包,表示客户端想要建立连接,并选择一个初始的序列号(Sequence Number)。
第二步:服务端收到连接请求并回复(SYN + ACK)
服务端收到客户端发送的 SYN 数据包后,会回复一个带有 SYN 和 ACK 标志的数据包,表示服务端已经接受了客户端的连接请求,并选择自己的初始序列号,同时确认客户端的序列号。
第三步:客户端收到服务端的回复并发送确认(ACK)
最后,客户端再次向服务端发送一个带有 ACK 标志的数据包,表示客户端也确认了服务端的序列号。
完成了以上三个步骤,TCP 连接就建立起来了,通信双方可以开始正常地进行数据传输。
总的来说,TCP 三次握手协议确保了通信双方都能够正确地同步序列号,并确认彼此的能力和意愿进行数据传输,从而建立起可靠的连接。以下是具体流程图的实现:

如下是tcp建议三次握手的流程,其他具体参数的含义大家自行去了解,这里不再赘述:

四次挥手:在TCP连接中,当一端决定关闭连接时,需要经过四个步骤来完成连接的断开。下面是 TCP 四次挥手的流程:
第一步:当客户端决定关闭连接时,会发送一个 FIN(结束)报文段给服务器,表示不再发送数据。客户端进入 FIN_WAIT_1 状态。
第二步:服务器收到客户端的 FIN 报文段后,会发送一个 ACK 报文段作为确认,表示已经收到了客户端的关闭请求。服务器进入 CLOSE_WAIT 状态。
第三步:如果服务器也希望关闭连接,它会发送一个 FIN 报文段给客户端,表示自己也准备关闭连接。服务器进入 LAST_ACK 状态。
第四步:客户端收到服务器的 FIN 报文段后,会发送一个 ACK 报文段作为确认,并进入 TIME_WAIT 状态。在经过一段时间后,客户端关闭连接,服务器也关闭连接,双方完成挥手,进入 CLOSED 状态。
四次挥手确保了双方在关闭连接时的可靠性和顺利性,同时允许双方在关闭前完成未完成的数据传输。这一过程是TCP连接的正常断开流程,以确保数据的完整性和连接资源的释放。以下是具体流程图的实现:

这里我们可以通过流量图的方式查看,点击统计流量图

选择tcp

查看tcp四次挥手的流程如下:

HTTP协议分析
HTTP(HyperText Transfer Protocol),是一种用于传输超文本的应用层协议。它是一种无状态的协议,通常基于客户端-服务器模型,在Web浏览器和Web服务器之间传输数据。其底层也是用到了tcp协议,所有来说相对简单一点。
接下来我们通过cmd终端命令请求一下百度,并抓取一下网络的包,如下:

接下来我们开始分析一下数据包:

然后我们建议对请求成功的数据进行数据流追踪:


相关文章:
玩转网络抓包利器:Wireshark常用协议分析讲解
Wireshark是一个开源的网络协议分析工具,它能够捕获和分析网络数据包,并以用户友好的方式呈现这些数据包的内容。Wireshark 被广泛应用于网络故障排查、安全审计、教育及软件开发等领域。关于该工具的安装请参考之前的文章:地址 ,…...
静态时序分析:SDC约束命令set_drive详解
相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html 本章将讨论使用set_drive命令,它用于对输入端口的驱动能力建模。首先需要说明的是,默认情况下,DC在STA时默认输入端口的转换时间是0,这对于…...
C#算法(12)—对图像像素做X/Y方向的偏移
我们在上位机开发领域有时候需要对获取的图像的像素做整体的偏移,比如所有像素在X方向上偏移几个像素,或者所有像素在Y方向上偏移几个像素,本文就是开发了像素整体偏移算法来解决这个问题。 比如有一个图像大小为3*3,像素值如下图1,如果我想实现将这个幅图像的像素整体往右…...
说一说Eclipse的项目类型和常用项目的区别
Eclipse在新建项目的时候有很多类型,包括Java project、Web project等等,如下: 那么这些项目类型有什么区别呢?我们在创建项目的时候应该如何选择,了解清楚这一点还是非常重要的,但记住一个出发点ÿ…...
[opencv][windows]cmake opencv opencv_contrib所需的缓存文件下载
这个是windows上源码编译opencvopencv-contrib时候cmake时候缓存文件,只需要将压缩文件夹解压到源码目录下面,cmake-gui上configure时候就不会报错,注意解压后文件夹名字是.cache,文件夹名字不能改变,比如opencv/.cache,有的人解压…...
五步解决 Ubuntu 18.04 出现GLIBC_2.28 not found的解决方法
Ubuntu 18.04 出现GLIBC_2.28 not found的解决方法 参考debian网址https://packages.debian.org/buster/并搜索想要的软件或者工具等,如libc6,有结果如下: 具体就不介绍了,请浏览官网了解。 第一步:添加软件源,在/et…...
【Java EE初阶二十一】http的简单理解(二)
2. 深入学习http 2.5 关于referer Referer 描述了当前页面是从哪个页面跳转来的,如果是直接在地址栏输入 url(或者点击收藏夹中的按钮) 都是没有 Referer。如下图所示: HTTP 最大的问题在于"明文传输”,明文传输就容易被第三方获取并篡改. …...
STM32 与 ARM 谁比较强大?
STM32 和 ARM 是两个不同的概念,STM32 是一种微控制器产品,而 ARM 是一家处理器架构设计和许可的公司。因此,无法简单地比较它们的强大程度。 STM32 是基于 ARM Cortex-M 核的微控制器产品,具有高性能、低功耗、低成本和易于开发等…...
四、分类算法 - 朴素贝叶斯算法
目录 1、朴素贝叶斯算法 1.1 案例 1.2 联合概率、条件概率、相互独立 1.3 贝叶斯公式 1.4 朴素贝叶斯算法原理 1.5 应用场景 2、朴素贝叶斯算法对文本进行分类 2.1 案例 2.2 拉普拉斯平滑系数 3、API 4、案例:20类新闻分类 4.1 步骤分析 4.2 代码分析 …...
Javascript中var和let之间的区别
文章目录 一.变量提升(声)二.let和var的区别 区别: 1、var有变量提升,而let没有; 2、let不允许在相同的作用域下重复声明,而var允许; 3、let没有暂时性死区问题; 4、let创建的全局变量没有给window设置对应…...
不要抱怨,不如抱 Java 运算符吧 (1)
本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…...
python之ftp小工具
文章目录 python之FTP小工具 python之FTP小工具 源码 #!/usr/bin/python3 import os import sys from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler, ThrottledDTPHandler from pyftpdlib.servers import FTPServer import logg…...
攻防世界-web-Training-WWW-Robots
题目信息 In this little training challenge, you are going to learn about the Robots_exclusion_standard. The robots.txt file is used by web crawlers to check if they are allowed to crawl and index your website or only parts of it. Sometimes these files rev…...
护眼灯减蓝光和无蓝光的区别是什么?盘点回购率前5名的护眼台灯!
随着近视问题日益严重,保护视力已逐渐成为公众关注的焦点。在日常生活中,不良的光线环境常常成为视力下降的潜在威胁,因此,护眼台灯成为了现代家庭保护视力的必备工具。其中,关于台灯的蓝光问题更是受到了广泛关注。有…...
Linux常见的指令
目录 01. ls 指令02. pwd命令03. cd 指令04. touch指令05.mkdir指令(重要):06.rmdir指令 && rm 指令(重要):07.man指令(重要):08.cp指令(重要&#x…...
C++项目开发编译踩坑记录
git工具配置了autocrlfinput下载的代码换行符默认从CRLF转换为LF,导致在windows桌面开发时,编译C代码全文报语法错误 问题现象:使用git clone命令从库上下载下来的代码,使用VS 2022编译,全文报语法错误,但…...
【Python】【Pycharm】Python Script头文件设置
1、步骤:File->settings->Editor->File and CodeTemplates->Python Script 2、复制粘贴以下代码,应用即可: #!/usr/bin/env python # -*- coding: utf-8 -*-# Time :${DATE} ${TIME} # Author : admin # Site :${SITE} …...
Recorder 实现语音录制并上传到后端(兼容PC和移动端)
Recorder 首页:https://github.com/xiangyuecn/Recorder 一、安装 npm install recorder-core二、代码部分 1. HTML页面 <template><div><el-inputv-model"ttsText"type"textarea"placeholder"请输入内容"><…...
fastJSON 字符串转对象
一、fastJSON 包 dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.33</version> </dependency> 二、转普通对象 自定义对象A A aa JSONObject.parseObject("字符串", A.…...
C++知识点总结(19):高级贪心算法
高级贪心算法 一、P1803 活动安排1. 审题2. 思路2.1 最优区间挑选方法2.2 分配时间方法2.3 排序方法 3. 参考答案 二、P1094 纪念品分组1. 审题2. 思路2.1 每组多少个方法2.2 搭配的方法 3. 参考答案 三、村民打水1. 审题2. 思路3. 参考答案 四、习题1. 服务等待1.1 审题1.2 参…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
