< 了解 HTTP 这一篇就够了 :什么是 HTTP ?HTTP 和 HTTPS 有什么区别 ? >

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 在前端开发中,是和浏览器打交道最为频繁的行业之一。但是大部分卷王们,可能仅仅是知道如何使用浏览器,只是知道 URL 跳转到浏览器变成一个完整的网页。 本篇文章将讲述 什么是HTTP、 HTTP 和 HTTPS的区别 及 URL 是如何渲染到页面。那么到这里,肯定会有人问: 那我们为什么要学习这个呢 ? 问得好,这个分为两方面: 一是学习上述内容,能够厚实我们的理论基础。有些内容,虽然用的不多,但是技多不压身,道理懂吧? 二是学习这个,对我们后续的性能优化、排查浏览器上某些错误 的能力都有提升!

👉 前言

在前端开发中,是和浏览器打交道最为频繁的行业之一。但是大部分卷王们,可能仅仅是知道如何使用浏览器,只是知道 URL 跳转到浏览器变成一个完整的网页。 本篇文章将讲述什么是 HTTPHTTP 和 HTTPS的区别URL 是如何渲染到页面

那么到这里,肯定会有人问: 那我们为什么要学习这个呢 ? 问得好,这个分为两方面: 一是学习上述内容,能够厚实我们的理论基础。有些内容,虽然用的不多,但是技多不压身,道理懂吧? 二是学习这个,对我们后续的性能优化排查浏览器上某些错误 的能力都有提升!

🗯️ 废话不多说,开始今天的卷王历程!


👉 什么是 HTTP ?什么是 HTTPS ?

> 基本概念

名称 HTTP HTTPS
中文名 超文本传输协议 超文本传输安全协议
外文全名 Hyper Text Transfer Protocol Hyper Text Transfer Protocol over SecureSocket Layer
工作层 应用层 应用层
作用 规定WWW服务器与浏览器之间信息传递规范 安全HTTP数据传输通道,保证数据安全性

首先,我们需要了解什么是协议,“ 协议 ” 字面意思,是指 用于规范协调两者及两者以上 的不同内容 或 角色之间的 关系、运输等等其他形式的约束。现实生活中也有许多,如: 就业协议、保密协议、租房的租凭协议等等。

> HTTP

超文本传输协议Hyper Text Transfer Protocol,HTTP)是一个简单的 请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。

image.png

HTTP是一个超文本传输协议,即将数据由A传到B或将B传输到A,并且 A 与 B 之间能够存放很多第三方,如: A<=>X<=>Y<=>Z<=>B

传输的数据并不是计算机底层中的二进制包,而是 完整的、有意义的数据。例如:HTML 文件、图片文件、查询结果等超文本,能够被上层应用识别。

在实际应用中,HTTP 常被用于在 Web浏览器网站服务器 之间传递信息,以明文方式发送内容,不提供任何方式的数据加密。

特点如下

  • 支持客户 / 服务器模式;

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快;

  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记;

  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间;

  • 无状态:HTTP协议无法根据之前的状态进行本次的请求处理;

> HTTPS

超文本传输安全协议(Hyper Text Transfer Protocol over SecureSocket Layer, 简称:HTTPS ),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。
HTTPS 在HTTP 的基础下加入SSLHTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSLHTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTPTCP 之间)。

image.png

在上述介绍 HTTP 中,了解到 HTTP 传递信息是以明文的形式发送内容,这并不安全。而 HTTPS 出现正是为了解决 HTTP不安全 的特性

为了保证这些隐私数据能加密传输,让HTTP运行安全的SSL/TLS协议上,即 HTTPS = HTTP + SSL/TLS,通过 SSL证书 来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。

SSL 协议位于 TCP/IP 协议与各种应用层协议之间,浏览器和服务器在使用 SSL 建立连接时需要选择一组恰当的加密算法来实现安全通信,为数据通讯提供安全支持。

流程图如下所示:
image.png

💬 流程步骤:

  1. 首先客户端通过URL访问服务器建立SSL连接
  2. 服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端
  3. 客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级
  4. 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站
  5. 服务器利用自己的私钥解密出会话密钥
  6. 服务器利用会话密钥加密与客户端之间的通信

👉 HTTP 和 HTTPS 的区别

  • HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理,相对更安全
  • HTTP 和 HTTPS 使用连接方式不同,默认端口也不一样,HTTP是80,HTTPS是443
  • HTTPS 由于需要 设计加密 以及多次握手,导致性能方面不如 HTTP。
  • HTTPS需要SSL,SSL 证书需要花钱,成本相较于 HTTP 大很多,特别是功能越强大的证书费用越高。

👉 URL渲染到页面的过程

既然了解到HTTP的知识,那么自然要讲到URL渲染到页面的过程。具体流程如下:

  1. URL输入:用户在浏览器的地址栏中输入URL,并按下回车键。

  2. 浏览器解析URL:浏览器首先会解析URL,确定协议(如http://或https://)、域名(如www.example.com)和可能的路径、查询参数等。

  3. DNS解析:浏览器会查询本地缓存或向DNS服务器发送请求,以获取域名对应的IP地址。
    如果浏览器缓存中有该域名的IP地址,则直接使用缓存中的IP;否则,会向DNS服务器发送解析请求。DNS服务器返回域名对应的IP地址给浏览器。

  4. TCP握手:浏览器使用IP地址和端口号(默认为80或443)与服务器建立TCP连接。
    TCP握手包括三个阶段:SYN(同步)包发送、SYN-ACK(同步确认)包返回、ACK(确认)包发送。这三个阶段确保双方能够建立可靠的连接。

  5. 发送HTTP请求:浏览器构建HTTP请求报文,包括请求方法(如GET、POST)、URL、请求头(如User-Agent、Accept-Language等)以及可能的请求体(如POST请求的表单数据)。

    浏览器通过已建立的TCP连接将HTTP请求发送给服务器。

  6. 服务器处理请求:服务器接收到HTTP请求后,根据请求方法和URL路径找到对应的处理程序。
    服务器可能需要查询数据库、执行计算或调用其他服务来生成响应数据。

  7. 返回HTTP响应:服务器构建HTTP响应报文,包括状态码(如200 OK、404 Not Found等)、响应头(如Content-Type、Content-Length等)以及响应体(即实际的页面内容)。

    服务器通过TCP连接将HTTP响应发送回浏览器。

  8. 浏览器接收并解析响应:浏览器接收到HTTP响应后,首先检查状态码以确定请求是否成功。
    如果状态码表示成功(如200 OK),浏览器会继续解析响应头,了解响应内容的类型、大小等信息。

    浏览器解析响应体中的HTML代码,并构建DOM(文档对象模型)树。

  9. 浏览器渲染页面:浏览器根据DOM树和可能的CSS样式信息构建渲染树。
    浏览器进行布局计算,确定每个元素在页面上的位置和大小。
    浏览器进行绘制操作,将页面内容渲染到屏幕上。

  10. 页面加载完成:当所有资源(如图片、脚本等)都加载完成且页面渲染完毕后,用户就可以看到完整的网页内容了。

具体流程可参考大佬博客 点击跳转

🔔 以下HTML页面渲染的流程图

image.png


📑 参考文献

目录
打赏
0
0
0
0
7
分享
相关文章
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
(已成功解决)Linux环境报错—bash: wget: command not found;常见Linux发行版本,Linux中yum、rpm、apt-get、wget的区别;Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
529 68
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?
本文详细介绍了HTTP、HTTPS和SOCKS5三种代理协议的特点、优缺点以及适用场景。通过对比和分析,可以根据具体需求选择最合适的代理协议。希望本文能帮助您更好地理解和应用代理协议,提高网络应用的安全性和性能。
37 17
Introduction to the HTTP and HTTPS Protocol
HTTP protocol is the foundation of the Internet, and HTTPS is the secure version of HTTP. HTTP is an application layer protocol based on TCP/IP protocol. It does not involve packet (packet) transmission, mainly specifying the communication format between the client and the server, and the default po
65 25
HTTPS与HTTP:区别及安全性对比
HTTP和HTTPS是现代网络通信中的两种重要协议。HTTP为明文传输,简单但不安全;HTTPS基于HTTP并通过SSL/TLS加密,确保数据安全性和完整性,防止劫持和篡改。HTTPS还提供身份验证,保护用户隐私并防止中间人攻击。尽管HTTPS有额外的性能开销和配置成本,但在涉及敏感信息的场景中,如在线支付和用户登录,其安全性优势至关重要。搜索引擎也更青睐HTTPS网站,有助于提升SEO排名。综上,HTTPS已成为大多数网站的必然选择,以保障用户数据安全和合规性。
75 1
|
3月前
单模和多模光纤电缆的区别 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/330968
光纤电缆是基于光可以通过全内反射被限制在弯曲的玻璃棒内这一理念。
82 25
单模和多模光纤电缆的区别 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/330968
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
759 7
HTTP和HTTPS的区别
本文介绍HTTP与HTTPS的区别、HTTPS链接建立过程及常见加密算法。HTTP为明文传输,易被窃听;HTTPS通过SSL/TLS协议加密,确保数据安全。HTTPS使用端口443,提供认证机制。文中还详细讲解了对称加密(如AES、DES)和非对称加密(如RSA、ECC)算法的特点及应用场景。
信息检索和信息提取的区别 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/331046
提取的意思是 “取出”,检索的意思是 “取回”。信息检索是返回与用户特定查询或兴趣领域相关的信息。而信息提取则更多地是从一组文档或信息中提取一般知识(或关系)。信息提取是获取数据并从中提取结构化信息的标准过程,以便将其用于各种目的,其中一个目的可能是搜索引擎。
128 24
【DrissionPage】Linux上如何将https改为http
通过上述步骤,可以在Linux上将DrissionPage从HTTPS改为HTTP。关键在于修改DrissionPage配置、代码中的HTTPS设置、URL以及Web服务器配置,确保所有部分都正确使用HTTP协议。通过合理配置和测试,能够确保系统在HTTP环境下稳定运行。
98 1
https页面加载http资源的解决方法
https页面加载http资源的解决方法
97 5
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等