HTTP协议分析实验:通过一次下载任务抓包分析
HTTP协议分析
问:HTTP是干啥用的?
最简单通俗的解释:HTTP 是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。 在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。
一、实验简介
本实验主要讲解HTTP协议的应用,通过一次下载任务,抓取HTTP协议数据报文,对HTTP的请求和相应报文进行详细的分析。
二、实验目标
1.了解运输层HTTP协议基本概念、报文结构;
2.分析HTTP报文头部;
3.分析HTTP请求和相应过程;
4.掌握使用wireshark进行HTTP协议分析技术。
三、实验环境
实验主机:centos7和本地Windows
实验工具:Wireshark
四、实验步骤
1.在本地Windows上打开Wireshark,选择要抓取的网卡,我们虚拟机使用的是VMnet8,所以这里选择这个网卡。

2.打开centos7虚拟机,确保虚拟机可以上网

3.为了使用方便,我们可以使用远程连接工具连接虚拟机,这里使用的使用SecureCRT

4.准备一个下载连接,这里我们下载阿里云的centos7yum文件,文件比较小,下载起来方便,需要使用wget命令,没有这个命令的需要提前安装以下,下载命令:wgethttp://mirrors.aliyun.com/repo/Centos-7.repo
5.将下载连接复制并粘贴到虚拟机,开始下载

6.将抓取到的数据包保存,方便后续查看

7.打开上一步保存的数据包文件,右键选中其中一条TCP数据包,选择对话过滤,再选择TCP数据,就可以单独查看这一次会话的数据包

8.过滤出来的这次下载任务的会话数据包

9.接下来,我们就对HTTP协议进行分析,HTTP协议是建立在TCP/IP协议基础之上应用层协议,关于HTTP协议的原理在前面有详细的讲解,这里在简单通俗的解释一下,HTTP是一个简单的请求-响应协议,可以理解为HTTP协议做了两件事,第一是发送请求,第二是响应请求,通过浏览器发送请求,服务器收到请求后再将客户端需要的结果返回;HTTP协议并不负责传输,只负责打包请求数据和打包响应数据,传输数据是由TCP/IP协议负责的。
我们先来看看HTTP请求和响应出现再哪里?

从上面这个图中我们可以看到,当TCP传输通道建立完成,客户端便发起HTTP请求,中间是服务器发送给客户端的确认报文,确认完成之后,服务器开始响应客户端的请求,将客户端需要的数据发送过来;完成之后客户端会发送确认报文。
10.分析HTTP请求报文,请求由本地虚拟机192.168.130.207发送给阿里云服务器111.48.183.233,请求提交的方法是GET方法。

接下来我们查看应用层协议的详细信息,解释一下Wireshark中间这部份各项对应的含义,首先是Ethernet,这里对应的是数据链路层的信息,可以看到源MAC地址和目标MAC地址;Internet是网络层,可以看到源IP地址和目标IP地址;TransmissionControlProtocol就是传输层,可以看到源端口和目标端口;最后一个就是应用层,本次实验主要讲解的协议,HypertextTransferProtocol也就是HTTP协议。

11.请求行分析,一个HTTP请求报文由请求行(requestline)、请求头部(header)、空行和请求数据4个部分组成,前三行为请求行。请求行中的method表示这次请求使用的是get方法。请求方法的种类比较多,如option,get,post,head,put,delete,trace等,常用的主要是get和post两种。请求方法之后是URI,表示请求的页面地址,即/repo/Centos-7.repo,这是客户端请求的地址,这个地址是该资源再服务器上的地址,还要加上服务器地址才是一个完整的地址。之后是表示http的版本。

get表示请求页面信息,返回页面实体;post是请求服务器将指定文档作为请求的url中的从属实体,简单说,我们常用的在网页中填写表单然后申请等动作就是使用了post方法,填写用户名密码登录站点就使用了post方法。

12.请求首部分析,本次实验请求的是一个文件,如果请求的是一个html页面的话,
User-Agent:提供了客户端浏览器的类型和版本。
Accept:请求的对象类型。如果是“/”表示任意类型,如果是指定的类型,则会变成“type/”。
Host:连接的目标主机,如果连接的服务器是非标准端口,在这里会出现使用的非标准端口。
Connection:对于HTTP连接的处理,keep-alive表示保持连接,如果是在响应报文中发送页面完毕就会关闭连接,状态变为close。

13.请求实体,HTTP请求实体是指在请求或响应中传输的有效载荷数据,通俗的讲就是你要发送给服务器具体数据或者服务器要返回给你的具体数据。

14.HTTP响应报文分析,HTTP响应报文通常分成如下几部分:第一部分是状态行,第二部分是Headers,第三部分是Body。
响应状态行分析:
ResponseVersion:HTTP/1.1是http版本,常用的就是1.1;
StatusCode:200是状态码,常见的有200,表示成功,404,表示找不到内容;
ResponsePhrase:OK是状态信息。

响应首部行分析:
Server:服务器应用程序软件的名称和版本;
Content-Type:响应正文的类型(是图片还是二进制字符串);
Content-Length:响应正文长度;
Connection:连接状态;
Date:表示响应的日期;
本实验请求的是一个文件,如果我们请求的是一个html页面的话,还会看到Content-Charse:响应正文使用的编码,Content-Encoding:响应正文使用的数据压缩格式,
Content-Language:响应正文使用的语言等信息。

响应正文Body:
服务器发送给客户端的内容,也是客户端所请求的内容。

15.状态码拓展
HTTP状态码被分成了五大类。状态码为客户端提供了一种理解事务处理结果的便捷方式。

五、实验总结
本次实验旨在深入了解HTTP协议应用,并通过一次下载任务,抓取HTTP协议数据报文进行详细分析。重点在于理解HTTP协议的基本概念、报文结构,分析HTTP报文头部,掌握HTTP请求和相应过程,以及使用Wireshark工具进行HTTP协议分析技术。实验可能的难点和易错点包括理解HTTP报文结构和字段含义,以及正确使用Wireshark工具捕获和分析数据包。确保对HTTP协议各方面有清晰理解,将有助于顺利完成实验并达到预期的学习目标。
相关文章:
HTTP协议分析实验:通过一次下载任务抓包分析
HTTP协议分析 问:HTTP是干啥用的? 最简单通俗的解释:HTTP 是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。 在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。 一、…...
http网络服务器
wwwroot(目录)/index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>比特就业课</title>…...
使用C++结合OpenCV进行图像处理与分类
⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…...
探索 Noisee AI 的奇妙世界与变现之旅
日赚800,利用淘宝/闲鱼进行AI音乐售卖实操 如何让AI生成自己喜欢的歌曲-AI音乐创作的正确方式 抖音主播/电商人员有福了,利用Suno创作产品宣传,让产品动起来-小米Su7 用sunoAI写粤语歌的方法,博主已经亲自实践可行 五音不全也…...
【SCSS】use的详细使用规则
目录 use加载成员选择命名空间私有成员配置使用 Mixin重新赋值变量 use 从其他 Sass 样式表中加载 mixins、函数和变量,并将来自多个样式表的 CSS 组合在一起。use加载的样式表被称为“模块”。 加载成员 // src/_corners.scss $radius: 3px;mixin rounded {bord…...
数据结构(C):二叉树前中后序和层序详解及代码实现及深度刨析
目录 🌞0.前言 🚈1.二叉树链式结构的代码是实现 🚈2.二叉树的遍历及代码实现和深度刨析代码 🚝2.1前序遍历 ✈️2.1.1前序遍历的理解 ✈️2.1.2前序代码的实现 ✈️2.1.3前序代码的深度解剖 🚝2.2中序遍历 ✈…...
Win11可以安装AutoCAD2007
1、在win11中,安装AutoCAD2007,需要先安装NET组件。否则会提示缺少".net文件" 打开“控制面板”,点击“程序”,点击“程序和功能”,点击“启用或关闭Windows功能”,勾选“.NET FrameWork 3.5”&a…...
C#操作MySQL从入门到精通(14)——汇总数据
前言 我们有时候需要对数据库查询的值进行一些处理,比如求平均值等操作,本文就是详细讲解这些用法,本文测试使用的数据库数据如下: 1、求平均值 求所有student_age 列的平均值 string sql = string.Empty; if (radioButton_AVG.Checked) {sql = “select AVG( student_…...
【设计模式深度剖析】【2】【行为型】【命令模式】| 以打开文件按钮、宏命令、图形移动与撤销为例加深理解
👈️上一篇:模板方法模式 | 下一篇:职责链模式👉️ 设计模式-专栏👈️ 文章目录 命令模式定义英文原话直译如何理解呢? 四个角色1. Command(命令接口)2. ConcreteCommand(具体命令类&…...
【随手记】maplotlib.use函数设置图像的呈现方式
matplotlib.use() 函数用于设置 matplotlib 的后端,这会影响图形的呈现方式。不同的后端适用于不同的环境和需求。下面列出一些常用的后端及其描述: 常见后端参数 Agg: 参数:agg描述:基于Anti-Grain Geometry的后端,适…...
LLVM Cpu0 新后端 系列课程总结
想好好熟悉一下llvm开发一个新后端都要干什么,于是参考了老师的系列文章: LLVM 后端实践笔记 代码在这里(还没来得及准备,先用网盘暂存一下): 链接: https://pan.baidu.com/s/1yLAtXs9XwtyEzYSlDCSlqw?…...
【云原生】Kubernetes----RBAC用户资源权限
目录 引言 一、Kubernetes安全机制概述 二、认证机制 (一)认证方式 1.HTTPS证书认证 1.1 证书颁发 1.2 config文件 1.3 认证类型 1.4 Service Account 1.4.1 作用 1.4.2 包含内容 1.4.3 与Secret的关系 2.Bearer Tokens 3.基本认证 三、鉴…...
ORA-01652 表空间不够解决方案
前章:出现表空间不足不要手动强制删除对应数据文件存储目录下的DBF文件,需要用SQL语句进行数据文件的DROP,否则会导致ORA-01033报错,因为我没有开启数据库的归档所以不能通过RECOVER的形式找回数据文件最后只能重装本地ORACLE。 …...
亚马逊 AWS 视频转码功能、AWS Elemental MediaConvert 中创建和管理转码作业
上传的视频需要转码成不同的编码, 可以直接在 AWS Elemental MediaConvert 中创建和管理转码作业 AWS Elemental MediaConvert 中创建和管理转码作业 /*** 视频转码* return bool* author wzb* data 2024/5/30*/function videoTranscode(&$data){$fileId $data[id] ?? …...
RocketMQ可视化界面安装
RocketMQ可视化界面安装 **起因:**访问rocketmq-externals项目的git地址,下载了源码,在目录中并没有找到rocketmq-console文件夹。 git下面文档提示rocketMQ的仪表板转移到了新的项目中,点击仪表板到新项目地址; 下载…...
【ffmpeg】本地格式转换 mp4转wav||裁剪mp4
个人感受:太爽了!!!(可能用惯了转换网站和无良的转换软件) ———— 使用FFmpeg把mp4文件转换为WAV文件 - 简书 (jianshu.com) FFMPEG 视频分割和合并 - 简书 (jianshu.com) ———— 示例 ffmpeg -i …...
基于Django+MySQL的智慧校园系统
此项目基于Django MySQL HTML CSS JS jQuery bootstrap实现的功能有 学生管理部门管理代办清单管理校园论坛校园医疗服务校园看点校园生活助手常用功能入口 1. 一些注意点 1. 页面body会自动有一些边界距,处理方法: <head><style>b…...
Linux基础指令(一)
前言 Linux基础指令主要学习:对目录、文件、压缩包、匹配查找,权限等操作 第一次接触ubuntu需要知道的基本知识 sudo passwd root 先给root用户设置密码 su root 切换到root用户 su zhangsan …...
三极管十大品牌
三极管十大品牌-三极管品牌-晶体三极管哪个品牌好-Maigoo品牌榜...
需求记录(共享元素)
MainActivity1 列表展示,使用共享元素完成页面间的切换 package com.example.animactivity;import android.annotation.SuppressLint; import android.app.ActivityOptions; import android.content.Intent; import android.os.Build; import android.os.Bundle; i…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
