玩转网络抓包利器: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 参…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...

Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...