文章目录
- 一、HTTPS 简介
- 二、HTTP 通信过程
一、HTTPS 简介
HTTPS 协议就是在 HTTP 协议的基础上 , 增加了一个 SSL 外壳 , 对 HTTP 协议进行加密 ;
HTTP 协议传输数据时 , 传输的就是 明文 , 如果抓包或者截获后 , 可以直接看到传输的数据内容 ;
HTTPS 协议在网络传输时 , 传输的内容是 加密后的内容 , 不是明文 , 更不容易被截获 ;
HTTP 特点 :
① 无状态 : 服务器 不存储客户端的状态 , 客户端每次请求服务器 , 都当做新的客户端第一次请求 ; 爬虫可以随意无限次地抓取网站信息 ;
② 无连接 : 客户端每次请求服务器端 , 数据传授完毕后 , 连接断开 ; HTTP 是基于 TCP 协议的 , 每次连接需要
次握手 , 每次断开连接需要
次挥手 , 频繁进行连接断开操作 , 繁琐 , 延迟高 , 空耗系统资源 ;
③ 安全性差 : 传输的数据是 明文 , 无法确保数据保密性 ; 客户端和服务器端不验证对方身份 , 无法确保数据完整性 ;
④ 快速 , 灵活 , 高效 ;
HTTPS 特点 :
① 安全性强 : 传输数据加密 , 中间截获 , 无法进行解密 ;
② 身份验证 : 通过 SSL 认证证书 , 确认通信的 客户端 与 服务器 双方的身份 ;
③ 数据完整性 : 加密后的数据能防止被截获修改 ;
二、HTTP 通信过程
发送 HTTP 请求 , HTTP 基于 TCP , 因此需要先建立 TCP 连接 ;
① 建立 TCP 连接 : TCP 连接的建立需要
次握手机制 ;
- 客户端 -> 服务器端 : 你能听到我说话吗 ?
- 服务器端 -> 客户端 : 我能 , 你能听到我说话吗 ?
- 客户端 -> 服务器端 : 我能 , 开始发送数据 ;
② 客户端浏览器向 Web 服务器发送请求报文 : 请求头命令就是下图 " 请求行 " 信息 ; 如
GET / HTTP/1.1
③ 客户端浏览器发送请求头信息 : 请求头信息就是下图中的 " 请求头部 " 数据 , 由若干键值对组成 ; 如下示例
Host: rucfd.ruc.edu.cn
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
If-None-Match: "b7f-5b575595fe630-gzip"
If-Modified-Since: Wed, 02 Dec 2020 06:28:18 GMT
完整的请求报文信息 :
GET / HTTP/1.1
Host: rucfd.ruc.edu.cn
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
If-None-Match: "b7f-5b575595fe630-gzip"
If-Modified-Since: Wed, 02 Dec 2020 06:28:18 GMT
④ Web 服务器向客户端浏览器会送应答第一部分 : 只回送 " 响应行 " 数据 ; 如 :
HTTP/1.1 200 OK
⑤ Web 服务器向客户端浏览器回送应答第二部分 : 回送 " 响应头部 " 信息 ; 如 :
Server: none
Date: Mon, 21 Jun 2021 05:15:56 GMT
Content-Type: text/html
Content-Length: 1104
Connection: keep-alive
Last-Modified: Wed, 02 Dec 2020 06:28:18 GMT
ETag: "b7f-5b575595fe630-gzip"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
响应报文完整示例 :
HTTP/1.1 200 OK
Server: none
Date: Mon, 21 Jun 2021 05:15:56 GMT
Content-Type: text/html
Content-Length: 1104
Connection: keep-alive
Last-Modified: Wed, 02 Dec 2020 06:28:18 GMT
ETag: "b7f-5b575595fe630-gzip"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
⑥ Web 服务器向客户端浏览器回送应答第三部分 : 回送用户请求的实际数据 , 在之前 " 响应头部 " 中的 Content-Type 中设置有用户请求的类型 , 是 text/html 类型 , 这里会送的就是该 html 文本数据 ;
Content-Type: text/html
⑦ Web 服务器关闭 TCP 连接 :
次挥手 ;