当前位置: 首页 > backend >正文

Linux架构篇、第1章_01架构的介绍HTTP HTTPS 协议全面解析

题目:HTTP/HTTPS 协议全面解析:原理、区别与状态码详解

版本号: 1.0,0
作者: @老王要学习
日期: 2025.04.30
适用环境: 服务器

文档说明

本文围绕 HTTP/HTTPS 协议展开,详细介绍了协议的基本概念、工作原理、两者之间的区别以及常见的状态码。旨在帮助读者深入理解 HTTP/HTTPS 协议,为网络开发和应用提供理论支持


一、HTTP/HTTPS介绍

HTTP

超文本传输协议是( Hyper Text Transfer Protocol)的缩写,是互联网应用最广泛的一种网络协议,用于万维网服务器传输超文本到本地浏览器,基于TCP/IP通信协议来传递数据(HTML、图片、查询结果);默认使用端口80

TCP:(传输控制协议)

可靠性:TCP为HTTP提供了可靠的传输机制;通过序列号、确认应答、重传机制等确保数据准确无误的从客户端传送到服务器,或从服务器传回客户端
连接管理:HTTP通信开始前,TCP会在客户端和服务器之间连接“三次握手”;通信结束后,还会通过“四次挥手”关闭连接,保障通信的有序进行

三次握手(建立连接)

第一次握手:客户端向服务器发送一个带有SYN(同步序列号)标志的TCP报文段,此时客户端进入等待状态,表示连接请求已发送

第二次握手:服务器收到客户端的SYN报文,向客户端发送SYN+ACK报文段(SYN同步服务器序列号、ACK标志确认收到SYN)随后进入等待客户端查收状态

第三次握手:客户端收到服务器的SYN+ACK,向服务器发送一个ACK报文段;双方进入活动状态,标识连接成功,双方开始进行数据传输

举例:

三次握手(建立连接)

第一次握手:好比你要去朋友家借书,你先给朋友打电话说:“我想去你家借本书,你在家不?” 这就是客户端(你)向服务器(朋友)发送带有 SYN 标志的请求,里面带着你这边的一个随机编号(就像你打电话用的电话号码) 。这时你在等朋友回复,处于 “等待回复” 状态。

第二次握手:朋友接到电话后说:“我在家呢,你来吧,我也给你准备了一本我觉得不错的书推荐给你。” 这相当于服务器回复了一个带 SYN 和 ACK 标志的消息,朋友告诉了你他自己的 “编号”(他的电话号码 ),还确认收到了你的请求(表示知道你要来借书 )。朋友进入 “等你出发” 状态。

第三次握手:你听到朋友这么说,就回复:“好嘞,我这就出发!” 这就是客户端再发一个 ACK 消息确认收到朋友的回复,告诉朋友你收到他准备推荐书的消息了。这时你和朋友都准备好,可以进行借书这个 “数据传输” 活动了,连接就建立成功啦。

四次挥手:(关闭连接)

第一次挥手:客户端发送一个带有FIN(结束标志)的TCP报文段,表示自己不再发送数据了,但依可以接收数据,客户端进入’等待服务器回复’状态

第二次挥手:服务器收到FIN报文后,发送一个ACK报文段,确认客户端确定要断开连接,客户端不会再发送数据,但服务器仍然可以继续发送数据

第三次挥手:服务器也没有数据要发送时,向客户端发送一个FIN报文段,表示自己不再发送数据了;服务器进入“等待客户端断开”状态

第四次挥手:客户端收到服务器的FIN报文后,客户端再向服务器发送一个ACK报文段,客户端进入“确认离开等待”状态,等待2倍最大段生存期(MSL)时间后,彻底关闭连接;服务器收到这个ACK报文后,立即关闭连接

举例:

第一次挥手:你在朋友家借完书,准备走了,就跟朋友说:“我书借到啦,我准备回家啦!” 这就是客户端(你)向服务器(朋友)发送带 FIN 标志的消息,表示你不再借新的书(不再发送数据),但还能听朋友说话(接收数据),你进入 “等朋友回应” 状态

第二次挥手:朋友听到你说要走,就回复:“好的,我知道啦。” 这是服务器给你发一个 ACK 消息确认收到你要走的消息,朋友进入 “准备结束交流” 状态,你收到回复后进入 “等朋友也结束交流” 状态。这时朋友可能还有话跟你说,所以还能继续说话(发送数据)

第三次挥手:朋友说完想说的话,也跟你说:“我也没别的事儿啦,你路上注意安全!” 这是服务器给你发带 FIN 标志的消息,表示他也没什么要说的了(不再发送数据),朋友进入 “等你确认离开” 状态

第四次挥手:你听到朋友这么说,就回应:“行,我知道啦,拜拜!” 这是你给朋友发 ACK 消息确认收到他的告别,你进入 “确认离开等待” 状态,等一会儿确保没问题后就彻底离开朋友家(关闭连接)。朋友收到你的回复后,也关闭和你的交流(关闭连接)

IP:(网际协议)

IP负责在网络中寻址和路由数据包;它确定数据从源地址到目的地址的传输路径,为HTTP请求与响应找到正确的传输路径

HTTPS

安装超文本传输协议是(HyperText Transfer Protocol Secure)的缩写,在HTTP基础上加入SSL/TLS加密层,保障网络通信安全,防止数据在传输过程中被盗取、篡改,同时对服务器进行身份验证;默认使用端口443

SSL/TLS:

SSL及其继任者TLS是实现加密通信的关键;通信前客户端与服务器通过SSL/TLS握手协议加密算法、密钥等参数,之后的数据传输就会在这些规则下进行

二、HTTP/HTTPS原理

HTTP

建立连接:客户端向服务器发送一个TCP连接请求,服务器接受连接后。双发开始传输数据
发送请求:客户端按照 HTTP协议的格式,构造一个请求消息,包括请求方法(GET、POST)、请求路径、协议版本等可能的请求和请求体信息,将请求消息发送给服务器
处理请求:服务器收到请求后,根据请求的内容进行处理;解析客户端发来的信息,根据请求路径找到对应的资源与程序
发送响应:服务器处理结果按HTTP协议的格式封装成一个响应消息,包括响应状态码(200成功,404未找到)响应头与响应体等,将响应消息发送给客户端
关闭连接:客户端收到响应后,根据响应状态码与内容进行处理,当不需要继续和服务器通信,就会关闭TCP连接

HTTPS

SSL/TLS 握手:(四次握手)
第一次握手:客户端向服务器发送 “Client Hello”,告知自己支持的 SSL/TLS 版本、加密算法等信息,并给出一个随机数
第二次握手:服务器回复 “Server Hello”,确定使用的版本和算法,也给出一个随机数,同时发送自己的数字证书,可能还会请求客户端的证书
第三次握手:客户端验证服务器证书,生成一个特殊随机数并用服务器公钥加密发送,然后计算出会话密钥,通知服务器使用新密钥加密,并发送一个加密的 “Finished” 消息
第四次握手:服务器解密得到随机数并算出会话密钥,通知客户端使用新密钥,也发送一个加密的 “Finished” 消息,让客户端验证密钥是否正确

数据传输:握手完成后,客户端和服务器就可以使用会话密钥对数据进行加密传输。客户端将请求数据加密后发送给服务器,服务器收到后解密并处理请求,然后将响应数据加密发送给客户端,客户端再解密得到响应内容
连接关闭:当数据传输完成后,客户端或服务器可以发起关闭连接的请求,双方按照一定的步骤关闭 SSL/TLS 连接和底层的 TCP 连接

三、HTTP/HTTPS区别

3.1安全性

HTTP

HTTP以明文传输数据,传输中易被黑客窃取、篡改和监听,用户登录时用户名和密码有被盗取风险

HTTPS

对数据加密,传输时为密文,仅合法接收能够解密的数据,借助数字认证书验证服务器身份,可有效防止数据被窃改,避免中间人攻击,大幅提升了数据安全性

3.2连接方式

HTTP

连接简单,客户端向服务器发送请求,服务器响应请求后连接即结束

HTTPS

连接时需要先进行SSL/TLS握手,以验证服务器身份、协商加密算法和生成加密密钥等,握手成功后才会进行数据传输

3.3端口

HTTP

默认使用80端口进行数据传输

HTTPS

默认使用443端口进行数据传输

3.4证书

HTTP

不需要数字证书来验证身份

HTTPS

要求服务器拥有由权威机构颁发的数字证书,客户端可以通过验证证书来确定服务器的身份是否可信

3.5性能

HTTP

因为没有加密和解密的过程,所以性能相对较高,响应速度较快

HTTPS

因为需要进行加密和解密操作,以及SSL/TLS握手,所以消耗一定性能和时间,导致访问速度相对较慢;不过,随着现代科技的飞速发展,性能差异在大多情况下并不明显

3.6兼容性

HTTP

兼容性较好,几乎所以的浏览器和设备都支持HTTP协议

HTTPS

虽然现在大多数浏览器和设备都支持HTTPS,但是一些旧设备和特殊环境,可能会存在兼容性的问题

3.7成本

HTTP

运行成本较低,不需要购买和维护数字证书

HTTPS

需要购买数字证书,证书的价格因证书类型和颁发机构而异

四、HTTP/HTTPS状态码

4.1信息性状态码

状态码功能
100客户端继续提交剩余请求
101协议切换请求已受理

4.2成功状态码

状态码功能
200请求成功
201上传文件成功
202接受请求但未处理完毕
203请求成功,但信息不一定准确
204请求成功,但无返回内容
205请求成功,但要求重置请求内容
206范围请求成功

4.3重定向状态码

状态码功能
301资源永久迁移,需更新访问地址
302资源临时转移,后续仍可用原地址
304资源未变更,可直接使用缓存

4.4客户端错误状态码

状态码功能
400请求格式错误
401身份认证失败
403权限不足禁止访问
404资源不存在

4.5服务器错误状态码

状态码功能
500服务器内部错误
502上游服务器响应异常
503服务器临时不可用
http://www.xdnf.cn/news/3201.html

相关文章:

  • 【Axure教程】增删改饼图
  • PostgreSQL 中 VACUUM FULL 对索引的影响
  • 【TUST“码蹄杯”编程之星】4.30 每日一题
  • 抓取工具Charles配置教程(mac电脑+ios手机)
  • 算法四 习题 1.3
  • Vue 项目中运行 `npm run dev` 时发生的过程
  • 代码随想录算法训练营Day39
  • 数据科学与计算
  • Ecology中拦截jquery.ajax请求接口后的数据
  • 【Linux更新openSSH服务】
  • GNU gettext 快速上手
  • 论文公式根据章节自动编号教程
  • DeepSeek-Prover-V2-671B 简介、下载、体验、微调、数据集:专为数学定理自动证明设计的超大垂直领域语言模型(在线体验地址)
  • 涨薪技术|0到1学会性能测试第42课-apache监控与调优
  • 应对过度处方挑战:为药物推荐任务微调大语言模型(Xiangnan He)
  • K8S - HPA + 探针实战 - 实现弹性扩缩与自愈
  • 详解 MyBatis-Plus 框架中 QueryWrapper 类
  • Compose笔记(二十一)--AnimationVisibility
  • 学习笔记——《Java面向对象程序设计》-常用实用类
  • Python爬虫(11)Python数据存储实战:深入解析NoSQL数据库的核心应用与实战
  • OpenCV实战教程:从零开始的计算机视觉之旅
  • 鸿蒙NEXT开发动画(方块动画旋转)
  • ESP32开发-作为TCP服务端接收数据
  • 配置和使用基本存储
  • 大型连锁酒店集团数据湖应用示例
  • 关于vue+iview中tabs嵌套及实际应用
  • 如何在uni-app中自定义输入框placeholder的样式
  • 2025年“深圳杯”数学建模挑战赛D题-法医物证多人身份鉴定问题
  • TCP和UDP的数据传输+区别
  • JavaScript的3D库有哪些?