HTTP网络通信协议基础

目录

前言:

1.HTTP协议理论

1.1协议概念

1.2工作原理

2.HTTP抓包工具

2.1Fiddler工具

2.2抓包原理

3.HTTP协议格式

3.1HTTP请求

3.2HTTP响应

3.3格式总结


前言:

在了解完网络编程的传输层UDP和TCP通信协议后,就需要开始对数据进行“修饰”,即应用层协议。在应用层中,HTTP协议是最重要、最常用的一个通信协议。

本节主要介绍HTTP协议的基础知识以及Fiddler抓包工具的使用。

序列:HTTP - 001


1.HTTP协议理论

1.1协议概念

 HTTP(全称为“超文本传输协议”)是一种应用非常广泛的应用层协议,目前已经发展成为一种最主流的应用层协议。

所谓“超文本” 的含义,就是传输的内容不仅仅是文本,还可以是一些其他的资源,比如图片、视频和音频等二进制的数据。

HTTP协议往往是基于传输层的TCP协议实现(HTTP1.0、HTTP1.1和HTTP2.0均为TCP,HTTP3基于UDP实现)。

目前我们主要使用的还是HTTP1.1和HTTP2.0版本。

1.2工作原理

 当我们在浏览器中输入一个“网址”,此时浏览器就会给对应的服务器发送一个HTTP请求,对方服务器收到这个请求之后,经过计算处理,就会给主机返回一个HTTP响应。

事实上,当我们访问一个网站的时候,大概率涉及不止一次的HTTP请求/响应的交互过程,为了清楚捕捉到所有的HTTP请求/响应,所以我们要使用“抓包工具”观察到详细的过程。

2.HTTP抓包工具

在了解HTTP协议的格式之前,我们首先要学会和使用“抓包工具”,这在学习和了解HTTP协议时非常重要。

2.1Fiddler工具

 市面上的抓包工具有很多,以其中最好使用的一款Fiddler抓包工具为例。官网下载地址为:Fiddler | Web Debugging Proxy and Troubleshooting Tools

FIddler是一款专门抓取针对http请求/响应的工具,它对于其他的抓包工具而言具有清晰、方便的优点,所以推荐使用Fiddler抓包工具。

安装完成之后Fiddler界面如下:

安转完成之后,依次选择左上角Tools->Options...->HTTPS->勾选全部的内容,操作完成之后就可以抓取主机的所有http请求/响应。

  • 左侧窗口显示了所有的HTTP请求/响应,可以选中某个请求查看详情;
  • 右侧上方显示了HTTP请求的报文内容;(切换到Raw标签页可以看到详细的数据格式)
  • 右侧下方显示了HTTP响应的报文内容;(切换到Raw标签页可以看到详细的数据格式)
  • 请求和响应的详细数据,可以通过右下角的View in Notepad通过记事本打开;

可以使用ctrl+a全选左侧的抓包结果,delete键清除所有被选中的结果。

2.2抓包原理

Fiddler就相当于一个“代理”

  1. 浏览器访问sogou.com时,就会把HTTP请求先发给Fiddler,Fiddler再把请求转发给sogou服务器。
  2. 当sogou服务器返回数据时,Fiddler拿到返回数据,再把数据交给浏览器,因此Fiddler对于浏览器和sogou服务器之间交互的数据细节,都是非常清楚的。

3.HTTP协议格式

3.1HTTP请求

请求的详细数据,在Fiddler中通过右下角的View in Notepad打开:

请求格式拆解:

  • 首行:[方法]+[url]+[版本号],分别使用空格分隔;
  • 请求头(Header):请求的属性,每个键值对独占一行,冒号+空格来分割键和值
  • 空行:遇到空行表示Header部分结束
  • 正文(Body):空行后面的内容都是Body,Body允许为空字符串。如果Body存在,则在Header中会有一个Content-Length属性来标识Body的长度;

3.2HTTP响应

响应的详细数据,在Fiddler中通过右下角的View in Notepad打开:

响应格式拆解:

  • 首行:[版本号]+[状态码]+[状态码解释],分别使用空格分隔;
  • 响应头(Header):请求的属性,每个键值对独占一行,冒号+空格分割键和值
  • 空行:遇到空行表示Header部分结束
  • 正文(Body):空行后面的内容都是Body,Body允许为空字符串。如果Bodv存在,则在Header中会有一个Content-Length属性来标识Body的长度。如果服务器返回了一个html页面,那么html页面内容就是在body中。

3.3格式总结

HTTP协议请求/响应格式:

请求/响应行、报头和空行必须要有,请求正文部分可有可无。

空行作用:HTTP在传输层依赖TCP协议,TCP是面向字节流的,如果没有这个空行,就会出现“粘包问题”


以上便是HTTP协议的基本知识和抓包工具Fiddler。

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

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

相关文章

电动汽车上哪些部位用到了电机?

一、背景 电动汽车中除了主驱动电机之外的其他电机的控制复杂度因电机的种类和功能而异。 一般来说,助力转向电机、空调风扇电机、冷却水泵电机等辅助电机的控制相对较为简单。这些电机通常只需要进行简单的开/关控制或速度调节,以满足车辆的基本需求。…

mac电脑上使用android studio创建flutter项目

mac电脑环境配置可以看这篇文章:https://xiaoshen.blog.csdn.net/article/details/136068650 配置玩环境之后,开始创建第一个flutter项目:点击new flutter project或者new project都可以 然后选择flutter: 并将sdk配置为解压后的…

java nio零拷贝

零拷贝是一种计算机执行IO操作的优化技术,其核心目标是减少数据拷贝次数,从而提高系统性能。它主要体现在以下几个方面: 1. **定义与原理**:零拷贝字面上的意思包括“零”和“拷贝”。其中,“拷贝”是指数据从一个存储…

政安晨:在Jupyter中【示例演绎】Matplotlib的官方指南(一){Pyplot tutorial}

介绍 Matplotlib是一个Python的绘图库,可以用于创建各种静态、动态、交互式的图表和可视化效果。它提供了一种方便的方式来可视化数据,并支持多种图表类型,包括线图、散点图、柱状图、饼图、等高线图等。 Matplotlib可以与NumPy一起使用&am…

【前端web入门第五天】02 盒子模型基础

文章目录: 1.盒子模型的组成 1.1盒子模型重要组成部分1.2 盒子模型-边框线1.3 盒子模型–内边距 1.3.1 盒子模型–内边距-多值写法 1.4 盒子模型–尺寸计算 1.5 盒子模型-版心居中 1.盒子模型的组成 不同组件之间的空白就是盒子模型的功劳 作用:布局网页,摆放盒子…

【Linux】信号保存与信号捕捉处理

信号保存与信号捕捉 一、信号保存1. 信号的发送2. 理解信号保存(1)信号保存原因(2)信号保存概念 3. 信号保存系统接口(1)sigset_t(2)sigprocmask()(3)sigpend…

Blazor SSR/WASM IDS/OIDC 单点登录授权实例5 - Winform 端授权

目录: OpenID 与 OAuth2 基础知识Blazor wasm Google 登录Blazor wasm Gitee 码云登录Blazor SSR/WASM IDS/OIDC 单点登录授权实例1-建立和配置IDS身份验证服务Blazor SSR/WASM IDS/OIDC 单点登录授权实例2-登录信息组件wasmBlazor SSR/WASM IDS/OIDC 单点登录授权实例3-服务端…

Netty应用(八) 之 ByteBuf 半包粘包问题 半包粘包解决方案-封帧解码器

目录 19.ByteBuf 19.1 ByteBuf的基本使用 19.2 ByteBuf的扩容机制 19.3 ByteBuf与内存的关系 19.4 ByteBuf的内存结构 19.5 ByteBuf的API 19.5.1 ByteBuf的写操作 19.5.2 ByteBuf的读操作 19.5.3 ByteBuf的slice 19.6 ByteBuf的内存释放 19.6.1 实现API 19.6.2 如何…

肿瘤微环境各种浸润细胞及maker(学习)

目录 Tumor Infiltrating Leukocytes(肿瘤浸润性白细胞) TISCH2数据库收录的TIL 免疫细胞的分类 28种不同免疫细胞类型 Tumor Infiltrating Leukocytes(肿瘤浸润性白细胞) Gene expression markers of Tumor Infiltrating Le…

[2024]常用的pip指令

[2024]常用的pip指令 HI,这里是肆十二,好久不见,大家! 新年好! pip是Python的包管理工具,它可以用来安装、升级、卸载Python包。以下是一些常用的pip指令: 安装包: bash复制代码…

钓鱼邮件便捷发送工具(GUI)

简介 本程序利用Python语言编写,使用Tkinter实现图形化界面,可使用Pyinstaller进行exe打包,程序主界面截图如下: 功能 支持腾讯企业邮、网易企业邮、阿里企业邮、自建邮服SMTP授权账号(其他邮服,可在自建…

医疗处方架构设计和实现的实战经验总结

医疗处方是医生开具给患者的药物治疗建议。在现代医疗系统中,设计和实现一个高效而可靠的医疗处方架构至关重要。本文将介绍医疗处方架构的设计原则和关键组件,以及如何实现一个可扩展和安全的处方管理系统。 内容: 1. 引言 - 医疗处方的…

vue3 之 商城项目—home

home—整体结构搭建 根据上面五个模块建目录图如下&#xff1a; home/index.vue <script setup> import HomeCategory from ./components/HomeCategory.vue import HomeBanner from ./components/HomeBanner.vue import HomeNew from ./components/HomeNew.vue import…

HarmonyOS 状态管理装饰器 Observed与ObjectLink 处理嵌套对象/对象数组 结构双向绑定

本文 我们还是来说 两个 harmonyos 状态管理的装饰器 Observed与ObjectLink 他们是用于 嵌套对象 或者 以对象类型为数组元素 的数据结构 做双向同步的 之前 我们说过的 state和link 都无法捕捉到 这两种数据内部结构的变化 这里 我们模拟一个类数据结构 class Person{name:…

java实现文件随机加密

1、引言 有时候我们需要对我们的某些文件数据进行加密&#xff0c;并且不希望被轻易破译&#xff0c;此时最好不要使用已知的加密方法&#xff0c;这里我就给大家提供一种数据加密的方式&#xff0c;用以实现文件数据的加密&#xff0c;我称之为随机加密&#xff0c;即使是对相…

【ES6】模块化

nodejs遵循了CommonJs的模块化规范 导入 require() 导出 module.exports 模块化的好处&#xff1a; 模块化可以避免命名冲突的问题大家都遵循同样的模块化写代码&#xff0c;降低了沟通的成本&#xff0c;极大方便了各个模块之间的相互调用需要啥模块&#xff0c;调用就行 …

vulnhub-->hacksudo-Thor靶机详细思路

目录 1. IP探测2.端口服务扫描3.网站漏洞扫描4.目录扫描5.信息分析6.破壳漏洞(Shellshock)nmap---漏洞检测CVE-2014-6271 7.nc反弹8.提权9.service提权 1. IP探测 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:10:3c:9b, IPv4: 19…

C++入门学习(二十七)跳转语句—break语句

1、与switch语句联合使用 C入门学习&#xff08;二十三&#xff09;选择结构-switch语句-CSDN博客 #include <iostream> #include <string> using namespace std;int main() { int number;cout<<"请为《斗萝大路》打星(1~5※)&#xff1a;" &…

grab,一个强大的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个强大的 Python 库 - grab。 Github地址&#xff1a;https://github.com/lorien/grab Python Grab 是一个功能强大的 Web 抓取框架&#xff0c;它提供了丰富的功能和灵活的接口&#xff0c;使得…

Zabbix报警机制、配置钉钉机器人、自动发现、主动监控概述、配置主动监控、zabbix拓扑图、nginx监控实例

目录 配置告警 用户数超过50&#xff0c;发送告警邮件 实施 验证告警配置 配置钉钉机器人告警 创建钉钉机器人 编写脚本并测试 添加报警媒介类型 为用户添加报警媒介 创建触发器 创建动作 验证 自动发现 配置自动发现 主动监控 配置web2使用主动监控 修改配置文…