网络原理(HTTP协议)

【Unity3D】RTS Engine 笔记一 RTS Engine 中配置一个新场景, 初步认识GameManager、设置地形以及配置地形网格搜索 阅读详情

摘要:本文从 HTTP 协议的基础概念讲起,介绍其“请求—响应”的通信方式与学习价值;随后借助 Fiddler 抓包工具演示如何观察真实请求和响应,并详细拆解请求行、URL 组成、请求方法、请求头以及响应状态码等核心格式;最后引入 HTTPS,说明对称加密、非对称加密与证书机制如何解决窃听、篡改和身份冒充问题,帮助读者系统理解 HTTP 与 HTTPS 的工作原理。

http协议简单介绍

介绍:

HTTP(HyperText Transfer Protocol,超文本传输协议) 是一种应用层协议,主要用于客户端和服务器之间进行数据通信。我们平时使用浏览器访问网页、登录账号、搜索内容、提交表单,本质上很多操作都是通过 HTTP 请求和 HTTP 响应完成的。

HTTP 采用“请求—响应”的通信方式:客户端向服务器发送请求,服务器处理请求后再返回对应的响应。HTTP 本身主要规定了双方传输数据时的格式和规则,并不负责底层的数据传输,底层通常由 TCP 等协议来完成。

为什么要学习:

我们平时使用交互的过程:用户通过前端发起操作,前端把操作转换成 HTTP 请求交给后端,后端处理后返回 HTTP 响应,前端再把结果展示给用户,所以我们要学习以及认识具体的http协议里面的相关格式以及注意事项

抓包工具辅助学习

抓包是什么

抓包简单理解一下就是将我们在网络中发送以及接收的数据包捕获下来查看一下具体的信息,这里面包含的信息就是我们需要学习的

抓包演示

抓包我这边介绍的是fiddler这样一个代理工具,我们首次使用的时候需要把这个https的设置打开,接下来我来演示一下如何抓包,假设我先点开一个百度的网站,在左边找到我们刚刚打开的百度,右边点击raw来更好的查看我们请求以及响应的格式,也可以右下角用记事本打开

请求以及响应格式

先通过一张图来简单大概的扫一眼

请求

请求行

URL

URL(统一资源定位符)标识一个网络上的资源位置,分别由上面这些共同的部分组成。

协议:一般就是http或者https,https是http的一个加密版本

接下来的子域名,域名以及顶级域名一起构成了一个服务器的地址

端口:8080 就是一个端口号,一般这个端口号是根据协议默认的,比如 HTTP 默认 80,HTTPS 默认 443,你平时看网站的 URL 时,一般没有看到端口号,说明就是默认了的;看到这里可能会有一个疑惑,不是说端口号是区分应用程序的吗,在我的理解里面不应该是百度自己一个端口号,抖音一个端口号,那按我这么说的不是他们两个都是 HTTPS 的话,那么端口号也就一致了吗:没错,端口号是一样的,都是 443,但是前面有个观点是错的,就是端口不是直接确认应用程序,端口对应的是“某台主机上的网络服务入口”,不是某个网站或者某个 App 的编号,网络服务入口就是外部网络请求想找到这台主机里的某个网络程序的时候,要通过哪个端口进去,所以我们确认某个应用程序的时候还要结合网址一起来看,也就呼应我们前面说到的五元组。

路径:这个就标识了你现在访问的这个页面是在哪个路径下的,不过你自己看的url里面,他们的服务器可能并不一定真的有这个文件夹,更像是一个路由地址

查询参数(query string):这个是键值对格式的数据,通过&来分割,=左边是key,右边是value,这个是由程序员来决定的,一般标识了某个内容的具体信息

片段标识:一般区分一个网页中的具体内容,这个一般是在文档类的网站上容易看到,为了让浏览器跳到当前页面里的某个具体位置,这个可以有可以没有,看具体情况

我们结合这个具体的url来分析一下,这个是我点开百度壁纸图片里的具体的一张图片的url

https就是协议,image.baidu.com就是服务器的地址,这里协议是https,所以默认端口是443,不过这个可能不会写,然后search/detail就是路径,可能百度的服务器并不一定真的有这么一个文件夹来存储我搜到的这个图片,更像是要通过更像是告诉服务器“我要访问图片搜索中的详情功能”,而后面的 ?xxx=xxx 查询参数,则进一步告诉服务器“我具体想看哪一张图片”。

URL encode

当 query string 里包含了特殊符号的时候,我们就得进行 encode 转码,具体操作就是将 query string 的每个字节拿到,根据 ASCII 码表的 16 进制表示,并且在前面加上 %,就比如 + 号通过 ASCII 码的 16 进制表示是 0X2B,所以通过转码就是 %2B。

方法

方法就是url前面的GET/POST之类的,我们来对常见的方法进行一个介绍,请求方法一般是程序员在代码里决定的,并且这些作用是最开始http开发的时候开发者的一个美好期望,不是说post不能获取资源,这个一般是程序员决定的,并且GET是最常用的

GET:从服务器中拿取数据,get一般没有body,一般get的信息会写在query string里面,就比如我在百度里面搜索一个java,然后通过抓包工具拿到请求观察一下

里面就可以看到我们刚刚搜索的java,以及一些其他的信息

POST:post一般有body,并且一般在登录以及上传一个文件的时候多见,比如下面这个就是我在登录gitee之后抓的包,里面方法就是post

GET和POST的区别(面试考点):

1,GET 请求一般实现成幂等,POST 一般没有这个要求【什么是幂等:如果这个请求重复产生以后结果不明确,就是不幂等,就好比抖音的视频页面你刷新就会有不一样的视频,通过大数据进行分析给你想要的结果,这当然是不幂等】

2,GET 偏查询,参数通常放 URL,POST 偏提交,数据通常放 Body

3,POST 并不天然比 GET 安全,安全传输依赖 HTTPS

PUT:一般用于更新,数据也放在body

DELETE:删除,类似于get,没有body

请求头

Host:表示服务器主机的地址和端口

Content-Length:表示body中的数据长度,因为tcp是面向字节流的,所以可能出现粘包问题【http3一下的版本都是tcp传输的】

Content-Type:表示body数据的格式

Content-Type用途
application/jsonJSON 数据,前后端接口最常见
application/x-www-form-urlencoded普通表单提交
multipart/form-data文件上传 + 表单数据
text/htmlHTML 页面
text/plain普通文本
application/xml / text/xmlXML
image/jpegJPEG 图片
image/pngPNG 图片
application/octet-stream通用二进制数据/文件下载

User-Agent:告诉服务器客户端是什么浏览器、系统等

Mozilla/5.0 主要是历史兼容标识,不代表当前浏览器就是 Mozilla;真正的浏览器身份要看 UA 后面的具体字段,这里也可以看到我们的操作系统版本以及多少位

Referer:表示这个页面是从哪个页面跳转过来的

这个就可以看出是从gitee登录页面跳转来的,这个跳转就涉及到一个很有趣的事情了,就是我们的广告系统是通过广告主那边的点击数量以及我网站的服务器维护的一个日志进行匹配来看多少钱的,所以在早些年的时候,运营商会截胡请求,然后修改里面的referer来源,来赚取利益,所以后面都转战https了,因为https有加密,这个后面会聊

Cookie:浏览器这端本地存储数据的方式,这个cookie哪里来的,是服务器返回的,按照字符串(键值对)的形式存储,按照域名划分,每个域名有自己的cookie,本地存储之后,后续访问同一个网站,就会把cookie的内容通过请求报头,传输给服务器

下面这个是返回的响应

apifox

这是一个构造请求的工具

我们以这个为例,这是一个专门测试http的网站,会将你的请求回显回来,这个软件就是模拟前端,主动给后端发 HTTP 请求,然后看后端返回什么,也可以帮助我们学习http的格式

响应

状态码

认识常见的状态码

范围含义常见理解
1xx信息类请求还在处理中
2xx成功请求成功
3xx重定向需要去别的地址/使用缓存
4xx客户端错误请求本身有问题
5xx服务器错误后端处理出问题

200 → 成功
400 → 请求有问题
401 → 未认证
403 → 无权限
404 → 找不到
405 → 请求方法不允许
500 → 后端异常
502 → 网关错误
503 → 服务不可用
504 → 网关超时

https

为什么要引入https:

HTTP 主要有三个问题:

  • 容易被窃听:账号、密码、Cookie、请求内容可能被别人看到。
  • 容易被篡改:传输中的数据可能被中间人偷偷修改。
  • 无法可靠确认服务器身份:你以为连的是正规网站,实际上可能被中间人冒充。

所以引入了 HTTPS:

HTTPS = HTTP + TLS

我们先简单介绍一下加密

明文:要传输的原始数据

密文:把明文进行加密

然后我们还要介绍两个很重要的概念

对称加密:加密和解密使用同一把密钥

非对称加密:两把钥匙,公钥加密 → 私钥解密

我们通过画图来简单介绍一下这两个加密,以及可能会被黑客攻击的场景

对称加密:由于我们加密解密都是使用这一把钥匙,所以每个人的钥匙肯定是不一样的,这个钥匙可以通过客户端随机决定的,那么当我们客户端决定了一个钥匙,肯定要将这个钥匙通过网络传输交给服务器,这样才能进行后续的加密以及解密

所以就像是这样的情况,我们就会被黑客攻击

所以我们就要引入非对称加密

非对称加密:我们通过公钥来加密,用私钥来解密,这个非对称加密的首要任务就是通过这个形式来加密传输一个对称加密时候用到的共同密钥,因为我们对称加密的效率是更高的,以及消耗是更少的,所以我们一般都是通过对称加密的形式来传输,但是对称加密传输的密文又容易被黑客截胡,所以我们先通过非对称的形式来传递这个对称密钥,之后再对称加密

但是这种方式真的是安全的吗,不是的,因为有下面这种情况

由于客户端以及服务器并不知道给他们发消息的是谁,他们不知道这是黑客,所以只能对他们发来的信息选择相信,在黑客拿到客户端的密钥111的时候,为了不打草惊蛇,不引起服务器的怀疑,就拿着服务器的公钥来发送解密后的111,这样在接下来客户端以及服务器都不知情的情况下,双方正常进行通信,殊不知中间有一个黑客

为了应对黑客这样骗两头的情况,我们引入了证书

证书机构会通过服务器给的一些资质域名啥的给一个证书,这个证书大致长下面这样,这个公钥是证书机构给的,然后这个签名是基于证书机构的私钥生成的,CA 私钥负责生成签名,CA 公钥可以验证这个签名是不是对应私钥生成的,所以信息由黑客到达客户端并且把公钥给成自己的之后,客户端会进行一个验证,首先会根据证书的内容进行hash,得到一个验证值1,如果根据这个证书机构给的公钥对签名进行一个验证2,如果验证1和验证2是一样的,那么就说明对方是正常的,如果黑客改了pub1,那么就和验证2的结果对不上,那黑客可能就想着把签名也改了,因为第二个验证是拿着公钥计算签名得来的,但是黑客改不了这个签名,因为签名是需要私钥才能生成一个合法的,如果自己编造的不合法的,在公钥计算签名的时候就会直接出错,直接识别黑客

在非对称传输对称密钥之前,我们就会根据这个证书的证明来看对方是不是服务器。

所以说https为什么安全:先用证书确认“你是谁”,再通过非对称密码机制安全协商密钥,最后使用对称加密高效传输 HTTP 数据。(这都是https会干的事情)也就是TLS核心的机制

高通8155车机系统里,安卓和QNX是怎么‘打电话’的?聊聊HAB通信框架那些事 本文深入解析了高通8155车机系统中HAB通信框架如何实现安卓与QNX的高效协同。作为异构系统的通信桥梁,HAB通过共享内存和中断信号机制,在多媒体数据传输中展现出零拷贝、硬件加速等优势,成为智能座舱实现实时性与生态丰富性平衡的关键技术。 阅读详情

相关推荐

告别混乱接线!用EPLAN 3D布局图,手把手教你搞定电气柜的3D建模与自动布线

本文详细介绍了如何使用EPLAN 3D布局图进行电气柜的3D建模与自动布线,帮助工程师告别混乱接线。从项目准备、基础结构建模到智能设备布局与逻辑定义,再到高级布线技术与问题排查,提供了一套完整的实战指南。通过EPLAN的3D功能,显著提升设计效率与系统可靠性。

weixin_30680385的博客 341

【网络原理】万字详解 HTTP 协议

本期内容主要介绍 HTTP,HTTP 的报文格式以及如何构造HTTP~

爱编程爱运动的博客 8763

线性调频LFM脉冲压缩 连续波雷达仿真&线性调频信号仿真分析压缩matlab程序源码

13、线性调频信号(LFM)压缩感知的稀疏与重构算法(OMP)的matlab仿真程序(一个可以在matlab上运行的压缩感知实例;8、具有多普勒频移的线性调频信号(知道带宽、采样频率、T使用MATLAB仿真线性调频信号即LFM,同时具有多普勒频移时,匹配滤波后的波形变化。19、CW脉冲和LFM信号Matlab仿真(这是matlab仿真程序,实现了常规雷达信号CW和线性调频信号LFM的仿真)18、lfm信号模糊函数图 matlab(用matlab 实现的线性调频信号信号(lfm)的模糊函数图)

2301_77866396的博客 401

Java【网络原理】(4)HTTP协议

哈喽大家好啊,今天来继续给大家带来Java中网络原理的学习,本节主要学习的是HTTP协议,在讲HTTP协议之前还会补充一个知识点(自定义协议),本节学完后就是HTTPS的学习了,那么废话不多说让我们开始吧。

2301_81073317的博客 3880

别再死记硬背了!用这5个Qt Design Studio小项目,彻底玩转核心组件

本文通过5个Qt Design Studio实战项目,帮助开发者深入理解核心组件的协作与应用。从动态登录界面到游戏化任务列表,每个项目都展示了组件属性与交互设计的巧妙结合,让你不再死记硬背,而是真正掌握Qt Design Studio的核心技能。

weixin_29202213的博客 271

懒人精灵手游内存技术分析

教学声明:全套教程教学用到的游戏采用手游私服网游进行测试,不针对任何游戏。教学只做计算机技术研究,不做其他用途。

yizhihaoren123的博客 1657

【网络原理】HTTP协议

在前面,我们已经讲了什么是TCP、UDP和IP协议以及以太网协议,那么本篇我们就来讲解一下在应用层的HTTP协议。

zhyhgx的博客 2815

Halcon Camera-calibration 相关算子(一)

Halcon Camera-calibration 相关算子介绍

qq_44744164的博客 1367

【网络原理 8】HTTP 协议的基本格式和 fiddler 的用法

之前给大家分别介绍了应用层,传输层的 TCP/UDP,网络层的 IP ,数据链路层的 以太网。这里要介绍的 HTTP 属于应用层里的协议。为什么HTTP报⽂中要存在"空⾏"?因为HTTP协议并没有规定报头部分的键值对有多少个.空⾏就相当于是"报头的结束标记",或者是 "报头和正⽂之间的分隔符".HTTP在传输层依赖TCP协议,TCP是⾯向字节流的.如果没有这个空⾏,就会出现"粘包问题".

Y_1215的博客 2337

【Unity 实用工具篇】 | Unity网格破碎插件 unity-fracture

前面写过一篇Unity中物体破碎效果的插件:【Unity 实用工具篇】 | Unity物体破碎效果 OpenFracture 本文介绍一个另外的工具unity-fracture,也可以实现网格破碎效果,且功能与OpenFracture略有差异。

努力前行,总会成为自己心中的那道光 1万+

逆向工具:一文讲述 Ghidra 的详细使用

Ghidra是由NSA开源的一款功能强大的逆向工程框架,支持多平台、多架构和多种文件格式分析。本文详细介绍了Ghidra的核心优势、安装配置方法、主界面功能模块,并通过一个CrackMe示例演示了完整的逆向分析流程。文章还讲解了高级功能如交叉引用、控制流图分析、数据类型重建和脚本自动化等,最后提供了常见文件格式的分析技巧。作为IDA Pro的免费替代方案,Ghidra适合个人学习、教学和中小项目使用。(149字)

数据知道的博客 4351

网络原理(4)HTTP协议

浏览器打开网站通过手机app访问服务器上述两种场景基本上都需要通过http协议来进行访问.和之前学习过的协议不同的是,http协议是一个理论 + 实践的协议,实践性更强.同时学习http最重要还是学习http协议的报文格式http协议的报文格式和之前学习过的协议还有所不同,准确的说http协议的报文格式有两种请求报文格式(request)响应报文格式(response)这两种报文格式并不是完全相同的,在结构和内容上有所区别.http是一种一问一答结构模型的协议,除了一问一答这种结构,还有。

Mylvzi的博客 1121

SOME/IP协议详解「2.1.2·Payload数据类型序列化」

SOME/IP协议详解「2.1.2·Payload数据类型序列化」 点击返回雪云飞星的SOME/IP协议详解「总目录」 SOME/IP协议详解「2.1.2·Payload数据类型序列化」1 大小端问题2 数据对齐填充问题3 都有哪些数据类型 之前简单的概括了一下序列化/反序列化,就是降维打击,从这一章开始到2.1所有章节结束,都在讲解这个降维打击的详细规则与原理 1 大小端问题 首先什么是大小端: 大端:高字节存放到内存的低地址 小端:高字节存放到内存的高地址 假如有一个数据是0x12345678

雪云飞星的博客 4629

[网络原理] HTTP协议

HTTP协议详解

scsery的博客 1364

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

网络原理 HTTP与HTTPS协议

本篇文章主要介绍了HTTP请求格式和响应格式以及HTTPS的加密方式.

matexiang的博客 2953

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【Java EE初阶 --- 网络原理】应用层---HTTP(HTTPS)协议

在初识网络中,我们知道TCP/IP分成五层,每一层都涉及到一些关键的协议。应用层是和我们程序员联系最紧密的一层,并且只要涉及到网络通信都基本视为应用层的一部分。而应用层中涉及到的网络通信协议,很多也是程序员自己定制的。自定制一般分为两个步骤:1. 根据需求,确定要传输的信息2. 约定好信息组织的格式(一般客户端和服务端都按照定制的规则来构造/解析数据)通常数据的组织格式1. 行文本(最原始)4. xml(可读性好,冗余较多)5. json(主流方式,可读性好,冗余一般)

optimistic_chen的博客 1448

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

网络原理 —— HTTP协议

本文系统介绍HTTP/HTTPS协议的核心内容:1. HTTP基础:HTTP协议工作原理、报文结构(请求/响应)、请求方法(GET/POST)、状态码等核心概念。2. 实践操作:通过Fiddler抓包工具分析HTTP请求响应过程,演示URL结构、header字段、Cookie机制等关键要素。3. 请求构造。4. HTTPS安全:深入分析对称/非对称加密原理、中间人攻击风险以及数字证书的安全机制。

2301_76937176的博客 1035

网络原理之http协议详解

文章目录为何要有应用层认识urlHTTP协议格式请求头和响应头(重要)HTTP的方法GET和 POST方法的区别(重要)HTTP的状态码HTTP常见Header 为何要有应用层 首先在正式开始展开之前我希望我们要 理解为何要有应用层? 我相信大家应该了解过 TCP/IP ,知道目前数据能从客户端进程经过路径选择跨网络传送到服务器端进程[ IP+Port ], 可是,仅仅把数据从A点传送到B点就完了吗?这就好比,在淘宝上买了一部手机,卖家[ 客户端 ]把手机通过顺丰[ 传送+路径选择 ] 送到买家 [ 服务器

qq_49425839的博客 2022

网络原理——HTTP协议

一、http协议 HTTP协议是超文本传输协议(Hyper Text Transfer Protocol)的缩写,是用于从万维网(www)服务器传输超文本到本地浏览器的传送协议,HTTP是基于TCP/IP通信协议来传输数据(HTML文件、图片文件、查询结果等),HTTP是一个属于应用层的协议。 HTTP协议工作在服务器-客户端架构之上。浏览器作为HTTP客户端用过URL向HTTP服务器发送所有请求...

qq_45036591的博客 452

网络原理-HTTP协议

本文主要讲解了一下HTTP协议,并通过抓包工具fiddler对HTTP协议进行解析,使讲解更加具体形象。

Smarmot的博客 1337

【网络原理】——HTTP协议、fiddler抓包

HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法

阿华的博客 1816

【网络原理】HTTP 协议的基本格式和 fiddler 抓包工具的用法

HTTP(超文本传输协议)是一种应用非常广泛的应用层协议. HTTP往往是基于传输层的 TCP 协议实现的。(HTTP3之前,都是基于TCP实现的,HTTP3 基于UDP实现) 目前主要使用的还是 HTTP1.1 和 HTTP2.0。当前我们讨论的 HTTP 以 1.1 版本为主。 HTTP最主要的应用场景,就是网站,在浏览器和服务器之间传输数据。

StuLearn-LJC的博客 1398

网络原理8 - HTTP协议1

那为什么HTTP报文中要存在“空行”?HTTP协议中,并没有具体规定报头部分的键值对有多少个,空行就相当于是“报头的结束标志”,或者说空行是“报头和正文之间的分隔符”。HTTP在传输层是依赖TCP协议的,TCP是面向字节流的,如果没有这个空行,就会出现“粘包问题”。

CxK6666667的博客 1095

网络原理--HTTP协议

从图中可以看出到现在已经发展出了HTTP3,但是市面上的主流还是以HTTP1.0为主。HTTP2.0和3.0都引入了很多新的特性,比如:提高传输效率,提高传输的安全性。而且在HTTP3.0以前,HTTP都是基于TCP实现的,而HTTP3.0则是基于UDP实现的。

wuyunhang123456的博客 1767

Http协议网络原理概述

HTTP特点:简单快速、灵活、无连接、无状态、支持B/S及C/S模式URL的作用: 全称是UniformResourceLocator,中文叫统一资源定位符.URI是统一资源标识符,用来唯一的标识一个资源。请求响应request: 请求行()、请求头部(header)、空行和请求数据四个部分组成.状态行、消息报头、空行和响应正文三次握手&四次挥手为什么不使用两次握手:无法防止历史连接的建立,会造成资源浪费,不能同步双方序列号。

Huangjiazhen711的博客 746

【网络原理】HTTP 协议和 HTTPS 协议

HTTP协议是互联网数据传输的基础协议,采用客户端-服务器一问一答模式。通过Fiddler抓包工具可以查看HTTP请求和响应的文本格式结构:请求包含首行、请求头、空行和正文;响应包含状态行、响应头、空行和正文。URL定位网络资源,包含协议、域名、路径等元素,特殊字符需进行URL编码。HTTPS在HTTP基础上增加SSL/TLS加密层保障安全。

REGARD712的博客 2587
上一篇: 面试题(网络部分前传)-13问
下一篇: JVM面试考点
评论 24
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值