您是否注意到浏览器中 URL 开头的“HTTP”或“HTTPS”?那么,什么是 HTTP,什么是 HTTPS?它们有何不同?为了理解差异,有助于消除这两个术语的含义并了解它们各自的工作原理。今天小编就来介绍这两个协议。
什么是 HTTP?
HTTP代表HyperText Transfer Protocol,是万维网的基础。没有它,Web 就不会是今天的样子。
默认情况下,HTTP URL 以http://
开头并默认使用 80 端口。
名称中的超文本部分表示涉及文档或文件。这些可以包含文本、图像、图形、视频或任何其他媒体。
此外,它们可能包含指向其他文档或文件的链接以供交叉引用,您可以在使用鼠标或触摸板单击链接或在手机屏幕上触摸链接后轻松访问这些链接。
名称中的传输部分意味着文件可以通过万维网从一个联网设备移动到另一个。
该协议的一部分手段,它由一套管理设备如何能够利用互联网的计算机规则。它还告诉他们当与许多其他设备远距离连接时,他们如何使用互联网作为通信媒介。
HTTP 建立在 TCP/IP 网络协议套件之上和协议栈中的其他层之上。
TCP/IP 是一组标准化的规则,用于允许浏览器和服务器通过 Internet 进行通信。毕竟,万维网就是浏览器和服务器之间的通信。
具体来说,HTTP 是一种应用层协议,是用于 Web 客户端和 Web 服务器之间通信和数据传输的主要协议。
简而言之,HTTP 是一套关于如何通过网络传输超文本文件和各种信息的规则和标准。这就是浏览器和服务器通信的方式。
一个典型的 HTTP 请求和响应流程
当浏览器想要连接到网站时使用 HTTP。
它们通过发送 HTTP 请求和接收 HTTP 响应进行通信。这被称为客户端计算机 - Web 服务器计算模型中的请求 - 响应周期。
客户端(通常是 Google Chrome、Mozilla Firefox 或 Apple Safari 等 Web 浏览器)发出请求。它通过在浏览器顶部的地址栏中输入一个像W3Cschool.cn
这样人性化的 URL(统一资源定位器)来实现这一点。
该域名,W3Cschool.cn
根据IP地址与域名系统(DNS)被映射到响应的服务器上。
然后 Web 浏览器连接到服务器并发出 HTTP请求,请求它需要接收以加载网页的信息。
HTTP 请求可能如下所示:
GET / HTTP/1.1
Host: www.freecodecamp.org
它包括:
- 一种 HTTP 方法,通常称为 HTTP 动词,如
GET
. 这个特定的动词用于获取信息。另一个常见的动词是POST,当客户端以表单提交数据时使用。动词指定浏览器期望从服务器执行的操作。 - 路径,这在我们的例子是/,在根路径。服务器存储构成网站的所有文件,因此请求需要指定浏览器请求加载的部分。
- HTTP 类型及其版本。
- URL 的域名。
然后 Web 服务器接收请求并通过查找请求的数据来处理它。
服务器是一台不同于我们日常使用的计算机。它的唯一目的是存储数据和文件,并在需要时检索和分发它们。
服务器向浏览器返回一条消息或 HTTP响应。
响应示例如下: HTTP/1.1 200 OK
- 首先从协议和版本开始 HTTP/1.1
- 接下来是 HTTP状态代码,一个 3 位数字,在本例中为200。它指示 HTTP 请求是否已完成。以 开头的状态代码2表示成功并且请求已成功完成。以 开头的状态代码4,例如404,表示客户端错误(例如在 URL 中输入错误),因此该页面不会显示在浏览器中。以 开头的状态代码5意味着服务器端错误,并且该页面再次未显示在浏览器中。
- 接下来是状态文本,人类可读的文本,它总结了状态代码的含义。在这种情况下,它是“OK”,意味着成功检索到请求的文档。
HTTP 响应还包括可能如下所示的标头:
date: Thu, 12 Aug 2021 12:07:16 GMT
server: cloudflare
content-type: text/html; charset=utf-8
标头包括有关发回的内容类型的重要信息,例如语言、格式和发送响应的时间。
最后,对“GET”请求的响应包括可选的HTTP body。这包含请求的信息,例如构成网站的 HTML/CSS/JavaScript 文件。
然后浏览器接收响应,呈现页面,并关闭连接。
每次它需要在页面上加载一个新元素(如不同的样式或图像或视频)时,它将开始一个新的连接,整个过程再次重复。
HTTP 的限制
HTTP 由于其简单性而很快,但它在交换数据时不提供安全性。这是因为所有数据都以纯文本形式传输 ,根本没有加密。
在传输过程中,超文本数据被分解成“数据包”,任何在浏览器和服务器之间拥有正确工具、技能和知识的人都可以轻松查看和窃取正在传输的信息。
这意味着用户名、密码和敏感信息有被攻击者访问的风险,同时注入病毒的风险很高。
这意味着 HTTP 不是安全或私有的媒介,导致用户感到不安全。
HTTP 对于某些网站(如博客)是安全的,但您不应通过 HTTP 连接提交任何信用卡或其他个人信息。
什么是HTTPS?
HTTPS代表HyperText Transfer Protocol Secur。
默认情况下,HTTPS URL 以https://
开头并默认使用 443端口。
它不是一个独立于 HTTP 的协议,但它是它的更安全和机密的版本。这是在浏览器和服务器之间传输数据的最安全方式。
现在大多数网站都使用 HTTPS 而非 HTTP。因此,在提交任何敏感信息(例如登录您的银行帐户和进行金融交易)之前,请始终确保该站点使用 HTTPS。
您可以通过地址栏左侧的锁定图标来判断站点是否安全并具有 HTTPS 连接:
与在应用层工作的 HTTP 不同,HTTPS 在传输层工作。
HTTPS 是如何工作的?
通过 HTTPS 连接发送的每个数据包都使用加密协议(例如 TLS 或 SSL)在 HTTP 之上进行加密和安全。
传输层安全 (TLS),以前称为安全套接字层 (SSL),是用于加密通信的协议。它是更新、更安全的 SSL 版本。
TLS 提供针对攻击的安全性,其三个主要目标是身份验证、隐私和整体安全。
TLS 通过使用非对称密钥算法公钥基础设施 (PKI) 来保护通信。该系统使用两个唯一相关的密钥来加密和解密敏感信息,从而实现互联网上的安全通信。
两个密钥结合使用,通过这种方式 TLS 在发送方和接收方之间创建链接。它确保双方都被识别出来,并且确实是他们所说的那样。
首先,你必须将公共密钥。它可以公开查看,并且可以与每个人以及任何想要与该站点进行交互的人共享。
此密钥用于将明文转为密文,对数据进行加密,并作为锁对数据进行加密。它还确认私钥的所有者。向浏览器分发公钥是通过证书完成的。
然后,每个公钥都有一个唯一的私钥,它们成对工作。您使用此密钥解密信息。用公钥加密的数据只能用对应的唯一私钥解密。
正是这个独特的私钥解锁了锁并解密了数据。私钥还确认信息是您的。此密钥保密、存储且仅对其所有者可用。
在传输任何实际数据之前,已建立安全连接并交换证书。
客户端输入他们想要访问的网页的 URL。网页的服务器通过包含公钥的 TLS 或 SSL 证书发送以启动连接。客户端和服务器经过多次来回(称为 TLS/SSL 握手),直到建立安全会话。
结论
在本文中,我们了解了 HTTPS 是什么、它是如何工作的以及它与 HTTP 有何不同(并且更安全)。
概括地说,HTTPS 是 HTTP 的安全版本,HTTP 是通过 Web 发送超文本的基本网络协议。
在 HTTPS 中有额外的安全步骤,例如 TSL/SSL 证书和 TSL/SSL 握手。
它为用户和数据提供身份验证,确保交易保密(数据完整性是优先事项),而不必担心在客户端 - 服务器通信期间发生数据泄露。
消息和交易的内容只能由发送者和预期接收者查看。