【计算机网络】【网络协议】HTTP/HTTPS协议

430 阅读8分钟

一、概述

1.1 HTTP/HTTPS协议介绍

  • 英文/中文全称:

    • HTTPHyperText Transfer Protocol,超文本传输协议。
    • HTTPSHyperText Transfer Protocol Secure,超文本传输安全协议。
  • HTTP介绍:

    • 是获取网络资源(HTML文件、文本、图片、视频、查询结果等)的通讯协议;
    • 是在web上进行数据交换的基础,是一种 client-server 协议
    • 是一个基于 TCP/IP 通信协议的可扩展协议
    • 是应用层的协议
  • 遵循模型:客户端-服务端模型

1.2 HTTP的发展史

参考:HTTP 的发展

  • HTTP0.9 - 单行协议

    1989年,万维网发明。万维网在现有的 TCP 和 IP 协议基础上建立。版本号0.9是用来区分后来的版本。

    HTTP0.9的请求和响应:

    请求由单行指令构成,以唯一可用方法 GET 开头,其后跟目标资源的路径;

    响应也只包含响应文档本身;

    注意点:

    • HTTP0.9的响应内容不包含HTTP头,
    • 没有状态码或错误代码
  • HTTP1.0 - 构建可扩展性

    在 1991-1995 年,浏览器和服务器迅速扩展内容使其用途更广,但是这些新扩展并没有被引入到标准中以促进协作工作,而仅仅作为一种尝试。

    1996 年 11 月,文档 RFC 1945 定义了 HTTP/1.0,但它是狭义的,并不是官方标准。

    新增的扩展:

    • 协议版本信息现在会随着每个请求发送(HTTP/1.0 被追加到了 GET 行)。
    • 状态码会在响应开始时发送,使浏览器能了解请求执行成功或失败,并相应调整行为(如更新或使用本地缓存)。
    • 引入了 HTTP 标头的概念,无论是对于请求还是响应,允许传输元数据,使协议变得非常灵活,更具扩展性。
    • 在新 HTTP 标头的帮助下,具备了传输除纯文本 HTML 文件以外其他类型文档的能力(凭借 Content-Type 标头)。
  • HTTP1.1 - 标准化的协议

    1997 年初,HTTP1.1 标准发布。消除了大量歧义内容并引入了多项改进。

    在 1997 年 1 月以 RFC 2068 文件发布。

    改进点:

    • 连接可以复用,节省了多次打开 TCP 连接加载网页文档资源的时间。
    • 增加管线化技术,允许在第一个应答被完全发送之前就发送第二个请求,以降低通信延迟。
    • 支持响应分块。
    • 引入额外的缓存控制机制。
    • 引入内容协商机制,包括语言、编码、类型等。并允许客户端和服务器之间约定以最合适的内容进行交换。
    • 凭借 Host 标头,能够使不同域名配置在同一个 IP 地址的服务器上。
  • HTTP2.0 - 为了更优异的表现

    2015 年 5 月正式标准化。

    HTTP2.0与HTTP1.1的不同:

    • HTTP/2 是二进制协议而不是文本协议。不再可读,也不可无障碍的手动创建,改善的优化技术现在可被实施。
    • 这是一个多路复用协议。并行的请求能在同一个链接中处理,移除了 HTTP/1.x 中顺序和阻塞的约束。
    • 压缩了标头。因为标头在一系列请求中常常是相似的,其移除了重复和传输重复数据的成本。
    • 其允许服务器在客户端缓存中填充数据,通过一个叫服务器推送的机制来提前请求。

    2016年里HTTP的新扩展:

    • 对 Alt-Svc 的支持允许了给定资源的位置和资源鉴定,允许了更智能的 CDN 缓冲机制。
    • 客户端提示(client hint) 的引入允许浏览器或者客户端来主动交流它的需求,或者是硬件约束的信息给服务端。
    • 在 Cookie 头中引入安全相关的的前缀,现在帮助保证一个安全的 Cookie 没被更改过。
  • HTTP3.0 - 基于QUIC的HTTP

    HTTP/3 有这与 HTTP 早期版本的相同语义,但在传输层部分使用 QUIC (en-US) 而不是 TCP

二、HTTP

2.1 HTTP的作用

是客户端浏览器与其它程序与Web服务器之间的应用层通信协议。

2.2 HTTP的工作原理

  • HTTP协议工作于客户端-服务端架构之上。浏览器作为HTTP客户端通过URL向HTTP服务器即WEB服务器发送所有请求。
  • WEB服务器有:Apache 服务器,IIS 服务器(Internet Information Services)等。
  • Web 服务器根据接收到的请求后,向客户端发送响应信息。
  • HTTP 默认端口号为 80,但是我们也可以改为 8080 或者其他端口。

HTTP协议通信流程:

image.png

2.3 HTTP的基本性质

  1. HTTP是简约的

    大体上,HTTP被涉及得简单且易读。报文能够被人读懂并理解,向开发者提供了更简单的测试方式,也对初学者降低了门槛。

  2. HTTP是可扩展的

    在HTTP1.0中引入的HTTP标头(header)让协议扩展变得非常容易。只要服务器客户端之间对新标头的语义经过简单协商,新功能就可以被加入进来

  3. HTTP是无状态,但并非无会话

    HTTP连接是无状态的,无状态的意思就是,在同一个连接中,两个执行成功的请求之间是没有关系的。

  4. HTTP和网络连接

2.4 HTTP的特点

  • 支持客户/服务器模式
  • 简单快速:客户向服务器请求服务是,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记
  • 无连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
  • 无状态:HTTP协议无法根据之前的状态进行本次的请求处理

三、HTTPS

HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

3.1 HTTPS的作用

  • HTTPS的主要作用是在不安全的网络上创建一个安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人共计提供合理的防护。

  • HTTPS的信任基于预先安装在操作系统中的证书办法机构(CA)。

    与一个网站之间的HTTP连接仅在这些情况下可被信任:

    • 浏览器正确地实现了HTTPS且操作系统中安装了受信任的证书办法机构
    • 证书颁发机构仅信任合法的网站
    • 被访问的网站提供了一个有效饿证书,也就是说它是一个由操作系统信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告)
    • 该证书正确地验证了被访问的网站
    • 此协议的加密层(SSL/TLS)能够有效地提供认证和高强度的加密

3.2 HTTPS的工作流程

  1. TCP 三次同步握手
  2. 客户端验证服务器数字证书
  3. DH算法协商对称加密算法的密钥、hash算法的密钥
  4. SSL安全加密隧道协商完成
  5. 网页加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改

四、HTTP与HTTPS的区别

  • 数据传输:

    • HTTP 明文传输,数据都是未加密的,安全性差;
    • HTTPS (HTTP + SSL)数据传输过程是加密的,安全性好;
  • 证书申请:

    • HTTP 无需申请证书
    • HTTPS 需要到 CA(Certificate Authority,数字证书认证机构)申请证书,一般免费证书较少,需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
  • 响应速度:

    • HTTP 较快。主要因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换3个包
    • HTTPS 比HTTP慢。HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
  • 端口:

    • HTTP 的端口是 80
    • HTTPS 的端口是 443
  • 服务器资源:

    • HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

参考