超文本传输协议HTTP、HTTPS
本文整理了一些关于HTTP和HTTPS的相关内容。
参考文章链接: http和https的区别?(详细图文讲解)
什么是 HTTP、HTTPS
HTTP(超文本传输协议,Hypertext Transfer Protocol)是一种用于分布式、协作式、超媒体信息系统的应用层协议。它允许客户端(如浏览器)与服务器之间进行通信,以请求和传输网页、图片、视频等资源。HTTP 基于请求-响应模型,客户端发送请求到服务器,服务器处理请求后返回响应。
HTTPS(安全超文本传输协议,Hypertext Transfer Protocol Secure)是 HTTP 的安全版本,通过在 HTTP 的基础上添加 SSL/TLS(安全套接字层/传输层安全性)协议来实现数据加密和安全传输。HTTPS 不仅能够传输数据,还能确保数据的机密性、完整性和身份验证,防止数据在传输过程中被窃取或篡改。
HTTP 在传输敏感信息(如用户登录信息、金融交易数据等)时存在较大的安全隐患,容易被中间人攻击、数据泄露等问题所困扰。为了解决这些问题,HTTPS 应运而生。它通过加密技术保护数据传输过程中的隐私和完整性,同时通过数字证书验证服务器的身份,确保用户与合法的服务器进行通信。此外,搜索引擎也倾向于优先推荐使用 HTTPS 的网站。
HTTP 协议
基本原理
HTTP 是一种基于请求-响应模型的应用层协议,主要用于客户端(如浏览器)与服务器之间的通信。基本原理可概括为以下步骤:
-  客户端发起请求:客户端通过浏览器或其他工具向服务器发送一个 HTTP 请求。请求中包含请求方法(如 GET、POST、PUT、DELETE 等)、请求的资源路径(URL)、HTTP 版本以及一系列请求头信息(如
Host、User-Agent、Accept等)。 - 服务器处理请求:服务器接收到请求后,根据请求方法和资源路径解析请求内容,并调用相应的应用程序或服务来处理请求。
 - 服务器返回响应:服务器处理完请求后,生成一个 HTTP 响应并发送回客户端。响应中包含 HTTP 状态码(如 200 表示成功,404 表示未找到等)、响应头信息(如
Content-Type、Content-Length等)以及响应体(如网页内容、图片数据等)。 - 客户端接收响应:客户端接收到服务器的响应后,解析响应内容并将其呈现给用户(如显示网页内容)。
 
HTTP 协议基于无连接和无状态的通信方式,每次请求和响应完成后,连接即被关闭,服务器不会保存客户端的任何状态信息。这种设计使得 HTTP 协议简单高效,适合大规模的分布式网络应用。
工作流程
- 建立连接
- 客户端通过 
TCP/IP协议与服务器建立连接。默认情况下,HTTP 使用端口号80。 - 客户端向服务器发送一个 TCP 连接请求,服务器接受连接后,双方建立一个可靠的 TCP 连接。
 
 - 客户端通过 
 - 发送请求
- 客户端通过建立的 TCP 连接向服务器发送 HTTP 请求。请求由请求行、请求头和请求体组成。
 - 请求行包含请求方法、资源路径和 HTTP 版本号,例如:
GET /index.html HTTP/1.1。 - 请求头包含客户端的一些信息:
Host(目标服务器地址)、User-Agent(客户端类型)、Accept(可接受的响应类型)等。 - 请求体(可选)包含客户端发送给服务器的数据,如表单数据、文件上传等。
 
 - 服务器处理请求
- 服务器接收到客户端的请求后,解析请求行和请求头,确定请求的资源路径和方法。
 - 根据请求方法和资源路径,服务器调用相应的应用程序或服务来处理请求。
 - 如果请求方法是 GET,服务器会查找请求的资源并返回内容;如果是 POST,服务器会处理客户端提交的数据并返回结果。
 
 - 返回响应
- 服务器处理完请求后,生成一个 HTTP 响应并发送回客户端。
 - 响应由状态行、响应头和响应体组成。
 - 状态行包含 HTTP 版本号、状态码和状态消息,例如:
HTTP/1.1 200 OK。 - 响应头包含服务器的一些信息,如
Content-Type(响应内容类型)、Content-Length(响应体长度)等。 - 响应体包含服务器返回的数据,如网页内容、图片数据等。
 
 - 关闭连接
- 客户端接收到服务器的响应后,解析响应内容并将其呈现给用户。
 - 一旦响应处理完成,客户端和服务器之间的 TCP 连接被关闭。
 
 
特点与优势
- 简单高效
- HTTP 协议的设计简洁明了,易于理解和实现。它基于文本格式,便于调试和开发。
 - HTTP 的无状态特性使每个请求和响应都独立,服务器不需要保存客户端的状态信息,提高了服务器的处理能力和扩展性。
 
 - 灵活通用
- HTTP 支持多种请求方法(如 GET、POST、PUT、DELETE 等),能够满足不同的应用场景。
 - 它可以传输多种类型的数据,如文本、图片、视频等,适用于各种网络应用。
 
 - 广泛支持
- HTTP 是互联网上最广泛使用的协议之一,几乎所有浏览器和服务器都支持 HTTP 协议。
 - 它与多种其他协议(如 TCP/IP、DNS 等)无缝集成,能够轻松构建复杂的网络应用。
 
 - 可扩展性
- HTTP 协议通过请求头和响应头提供了丰富的扩展机制,允许开发者添加自定义的头信息来实现特定的功能。
 - 它还支持多种内容编码(如 gzip 压缩)和缓存机制,能够优化网络传输效率和性能。
 
 - 兼容性强
- HTTP 协议版本更新(如从 HTTP/1.1 到 HTTP/2)保持了向后兼容性,使旧的客户端和服务器能够无缝迁移到新的协议版本。
 - 它还支持多种编程语言和开发框架,方便开发者进行开发和部署。
 
 
HTTPS 协议
基本原理
HTTPS 是 HTTP 协议的安全版本,通过在 HTTP 的基础上添加 SSL/TLS(安全套接字层/传输层安全性)协议来实现数据的安全传输。其核心原理可概括为以下几个方面:
加密传输
HTTPS 使用 SSL/TLS 协议对传输的数据进行加密。加密过程包括对称加密和非对称加密两种方式。在握手过程中,客户端和服务器首先使用非对称加密(如 RSA 或 ECC)交换密钥,然后使用对称加密(如 AES)对后续的通信数据进行加密。这种加密方式既保证了密钥交换的安全性,又提高了数据传输的效率。
身份验证
HTTPS 通过数字证书来验证服务器的身份。服务器需要从权威的证书颁发机构(CA)获取数字证书,并在握手过程中将证书发送给客户端。客户端通过验证证书的有效性(包括证书的颁发机构、有效期、域名等信息)来确认服务器的身份,防止中间人攻击。
数据完整性
HTTPS 使用哈希算法(如
SHA-256)对传输的数据进行完整性校验。在数据传输过程中,客户端和服务器会生成数据的哈希值,并在接收数据时验证哈希值是否一致。如果数据在传输过程中被篡改,哈希值将不匹配,从而确保数据的完整性。协议层级
HTTPS 在
TCP 层之上、HTTP 层之下工作。它通过 SSL/TLS 协议封装 HTTP 数据,使得 HTTP 协议在传输过程中得到保护。默认情况下,HTTPS 使用端口号443。
工作流程
- 建立连接
- 客户端通过 TCP/IP 协议与服务器建立连接。默认情况下,HTTPS 使用端口号 443。
 - 客户端向服务器发送一个 TCP 连接请求,服务器接受连接后,双方建立一个可靠的 TCP 连接。
 
 - SSL/TLS 握手
- 客户端向服务器发送一个
ClientHello消息,包含客户端支持的 SSL/TLS 版本、加密算法列表、随机数等信息。 - 服务器收到
ClientHello消息后,选择一种加密算法,并向客户端发送一个ServerHello消息,包含服务器选择的 SSL/TLS 版本、加密算法、随机数等信息。 - 服务器向客户端发送自己的数字证书(包括公钥),客户端验证证书的有效性。
 - 客户端生成一个预主密钥(
Pre-Master Secret),并使用服务器的公钥对其进行加密,然后发送给服务器。 - 服务器使用自己的私钥解密预主密钥,客户端和服务器分别使用预主密钥和之前交换的随机数生成主密钥(
Master Secret),用于后续的对称加密通信。 - 客户端和服务器分别发送
ChangeCipherSpec消息和Finished消息,表示握手完成,开始使用对称加密进行通信。 
 - 客户端向服务器发送一个
 - 发送请求和响应
- 客户端通过建立的安全连接向服务器发送 HTTP 请求,请求内容经过 SSL/TLS 加密。
 - 服务器接收到加密的请求后,解密请求内容并处理请求,然后将响应内容加密后发送回客户端。
 - 客户端接收到加密的响应后,解密响应内容并将其呈现给用户。
 
 - 关闭连接
- 客户端或服务器可以随时发送
CloseNotify消息来关闭连接。 - 一旦连接关闭,
SSL/TLS会话结束。 
 - 客户端或服务器可以随时发送
 
特点与优势
数据加密
HTTPS 对传输的数据进行加密,防止数据在传输过程中被窃取或篡改。即使攻击者能够截获数据,也无法解密其内容,从而保护了用户的隐私和敏感信息。
身份验证
HTTPS 通过数字证书验证服务器身份,确保客户端与合法的服务器进行通信。这有效防止了中间人攻击,提高了网络通信的安全性。
数据完整性
HTTPS 使用哈希算法对数据进行完整性校验,确保数据在传输过程中未被篡改。如果数据被篡改,客户端将拒绝接收数据,从而保障了数据的完整性。
兼容性强
HTTPS 是基于 HTTP 协议的扩展,兼容现有的 HTTP 应用。大多数现代浏览器和服务器都支持 HTTPS,开发者可以轻松地将现有的 HTTP 应用迁移到 HTTPS。
搜索引擎优化(SEO)
搜索引擎(如 Google)倾向于优先推荐使用 HTTPS 的网站,因为 HTTPS 提供了更高的安全性。这有助于提升网站在搜索引擎结果页面(SERP)中的排名,增加网站的流量。
提升用户信任
使用 HTTPS 的网站在浏览器地址栏中会显示一个绿色的锁形图标,表明网站是安全的。这有助于提升用户对网站的信任,增加用户在网站上的停留时间和交互行为。
支持 HTTP/2
HTTPS 是 HTTP/2 的基础,HTTP/2 提供了更高的性能优化,如多路复用、服务器推送等。使用 HTTPS 可以更好地支持 HTTP/2 的特性,提升网站的加载速度和用户体验。
HTTP 与 HTTPS 的区别
安全机制
数据加密
HTTP:HTTP 是明文传输协议,数据在客户端和服务器之间传输时未经过加密。这意味着传输的数据(如用户名、密码、信用卡信息等)可能会被网络中的中间设备(如路由器、代理服务器)或恶意攻击者截获。
HTTPS:HTTPS 在 HTTP 的基础上引入了 SSL/TLS 加密机制。在数据传输过程中,客户端和服务器之间通过非对称加密交换密钥,然后使用对称加密对数据进行加密。即使数据被截获,攻击者也无法解密其内容,从而有效保护了数据的机密性。数据完整性
HTTP:HTTP 协议本身不提供数据完整性校验机制。数据在传输过程中可能会被篡改,而客户端无法检测到这种篡改。
HTTPS:HTTPS 使用哈希算法(如 SHA-256)对传输的数据进行完整性校验。在数据传输过程中,客户端和服务器会生成数据的哈希值,并在接收数据时验证哈希值是否一致。如果数据在传输过程中被篡改,哈希值将不匹配,从而确保数据的完整性。身份验证
HTTP:HTTP 协议不提供身份验证机制,无法验证服务器或客户端的身份。攻击者可以通过中间人攻击(MITM)伪装成合法的服务器或客户端,窃取用户数据。
HTTPS:HTTPS 使用数字证书来验证服务器的身份。服务器需要从权威的证书颁发机构(CA)获取数字证书,并在握手过程中将证书发送给客户端。客户端通过验证证书的有效性(包括证书的颁发机构、有效期、域名等信息)来确认服务器的身份,从而防止中间人攻击。
协议基础
使用的协议
HTTP:HTTP 是一种应用层协议,基于TCP/IP协议栈工作。它主要用于客户端和服务器之间的数据传输。
HTTPS:HTTPS 是 HTTP 的安全版本,通过在 HTTP 的基础上添加SSL/TLS 协议来实现数据的安全传输。SSL/TLS 是一种传输层安全协议,用于加密数据并验证通信双方的身份。端口号
HTTP:HTTP 默认使用端口号80。
HTTPS:HTTPS 默认使用端口号443。
性能
加载速度
HTTP:HTTP 是明文传输,数据传输速度快,但安全性差。在没有加密开销的情况下,HTTP 的加载速度通常比 HTTPS 快。
HTTPS:HTTPS 在数据传输过程中需要进行加密和解密操作,这会增加一定的计算开销,可能导致加载速度略慢。然而,随着硬件性能的提升和 SSL/TLS 协议的优化,这种性能差距已经逐渐缩小。此外,HTTPS 支持 HTTP/2 协议,HTTP/2 通过多路复用、服务器推送等技术可以显著提升页面加载速度。对服务器的影响
HTTP:HTTP 不涉及加密和解密操作,对服务器的计算资源要求较低。
HTTPS:HTTPS 的加密和解密操作会增加服务器的计算开销,尤其是在高并发场景下。不过,现代服务器的硬件性能已经足够强大,能够较好地处理这些额外的负载。此外,使用硬件加速(如SSL 加速卡)可以进一步减轻服务器的负担。
应用场景
HTTP 的适用场景
- 非敏感信息传输:HTTP 适用于传输非敏感信息,如公开的网页内容、新闻资讯等。这些信息即使被截获也不会对用户或企业造成严重损失。
 - 低安全性需求的内部网络:在企业内部网络中,如果数据传输的安全性要求不高,可以使用 HTTP 来降低系统复杂性和成本。
 - 简单的信息查询:对于一些简单的信息查询服务,如天气预报、股票行情等,HTTP 是一个高效且经济的选择。
 
HTTPS 的适用场景
- 电子商务网站:电子商务网站涉及用户敏感信息(如信用卡信息、个人身份信息等),须使用 HTTPS 保护用户隐私和数据安全。
 - 金融服务:银行、证券等金融服务机构需要使用 HTTPS 来确保交易数据的安全性和完整性,防止数据泄露和欺诈行为。
 - 个人隐私保护:涉及用户个人隐私的应用(如电子邮件、社交媒体、在线医疗等)需要使用 HTTPS 来保护用户的隐私。
 - 搜索引擎优化(SEO):搜索引擎倾向于优先推荐使用 HTTPS 的网站,为了提升网站在搜索结果中的排名,建议使用 HTTPS。
 - 需要高安全性的企业应用:对于企业内部的敏感应用(如人力资源管理系统、财务系统等),使用 HTTPS 可以有效防止数据泄露和中间人攻击。
 
HTTP 和 HTTPS 的实际应用
HTTP 的常见应用
- 网站浏览
HTTP 是互联网上最早广泛应用的协议之一,广泛用于普通的网站浏览场景。许多新闻网站、博客、社交媒体平台等在早期都使用 HTTP 协议来传输网页内容。例如:- 新闻网站:用户通过浏览器访问新闻网站时,HTTP 协议用于从服务器获取新闻文章、图片和视频等资源。这些内容通常是公开的,对安全性要求不高,因此 HTTP 能够高效地完成任务。
 - 博客平台:博客作者发布文章后,读者可以通过 HTTP 协议访问博客页面,查看文章内容。由于博客内容大多是公开分享的,HTTP 的简单性和高效性使其成为合适的选择。
 
 - 简单信息查询
HTTP 也常用于简单的信息查询服务,如天气预报、股票行情、公共信息查询等。这些服务的特点是:- 数据公开性:查询的内容通常是公开的,不需要加密保护。例如,用户查询天气信息时,数据是公开的,对安全性要求不高。
 - 高效性:HTTP 的无状态特性和简单的请求-响应模型使其能够快速处理大量用户的查询请求,适合这类对性能要求较高的场景。
 
 
HTTPS 的常见应用
- 电子商务
电子商务网站是 HTTPS 应用的典型场景之一。在这些网站上,用户需要输入敏感信息,如信用卡号、地址、联系方式等。HTTPS 的加密机制能够确保这些信息在传输过程中不被窃取或篡改。例如:- 在线购物平台:用户在购买商品时,需要输入支付信息和个人信息。HTTPS 通过加密这些数据,确保用户的隐私和交易安全。
 - 支付网关:支付网关是处理支付交易的核心环节,必须使用 HTTPS 来保护用户的支付信息。SSL/TLS 加密和数字证书验证机制能够有效防止中间人攻击,确保交易的完整性和安全性。
 
 - 金融交易
金融行业对数据安全的要求极高,因此 HTTPS 是金融交易的必备技术。银行、证券公司等金融机构通过 HTTPS 来保护用户的账户信息、交易记录和资金操作。例如: - 网上银行:用户登录网上银行时,HTTPS 用于加密登录信息,防止密码被窃取。在进行转账、查询余额等操作时,HTTPS 确保数据的安全传输。
 - 证券交易:证券交易系统需要处理大量的敏感数据,如股票买卖订单、资金流向等。HTTPS 通过加密和身份验证机制,确保交易的安全性和合规性。
 
- 个人隐私保护
许多涉及个人隐私的应用和服务都采用了 HTTPS 来保护用户数据。例如:- 社交媒体平台:用户在社交媒体上分享个人信息、照片和消息时,HTTPS 确保这些数据在传输过程中不被泄露。例如,Facebook 和 Twitter 等平台都使用 HTTPS 来保护用户的隐私。
 - 在线医疗平台:在线医疗平台涉及用户的健康信息和医疗记录,这些信息非常敏感。HTTPS 通过加密和身份验证机制,确保用户的医疗数据在传输过程中不被窃取或篡改。
 - 电子邮件服务:许多电子邮件服务提供商(如 Gmail、Outlook 等)使用 HTTPS 来保护用户的邮件内容。HTTPS 确保用户在登录邮箱、发送和接收邮件时,数据的安全性和隐私性得到保障。
 
 
HTTP 和 HTTPS 在实际应用中各有其适用场景。HTTP 适用于对安全性要求不高、注重效率的场景,而 HTTPS 则是处理敏感数据和需要高安全性的场景的首选协议。



