【计算机网络】HTTP 与 HTTPS ( HTTP 发展过程 | HTTP/1.1 与 HTTP/2 对比 | HTTP 报文格式 )
文章目錄
- 前言
- 一、HTTP 發展過程
- 二、HTTP/1.1 與 HTTP/2 對比
- 三、HTTP 報文格式
前言
目前如果在瀏覽器中訪問 http 網站 , 瀏覽器會提示不安全 , 如下圖 :
如果訪問 https 網站 , 瀏覽器顯示安全圖標 , 如下圖 :
當前幾乎所有的網站 , 都使用 HTTPS 協議 ;
HTTPS 是在 HTTP 的基礎上進行的強化 ;
HTTPS = HTTP + SSL ;
一、HTTP 發展過程
HTTP 協議是基于 TCP/IP 的超文本傳輸協議 , 發展歷史如下 :
- HTTP/0.9 : 199119911991 年 , 只能進行 GET 請求 , 不能傳輸數據包 , 規定客戶端服務器通信格式 ; ( 不是正式標準 )
- HTTP/1.0 : 199619961996 年 , 增加了 PUT , PATCH , HEAD , OPTIONS , DELETE 等命令 , 不再限制傳輸內容的格式 ; ( 正式標準 )
- HTTP/1.1 : 199719971997 年 , 支持 長連接 , 帶寬節約 , HOST 域 , 管道機制 , 分塊傳輸編碼 等機制 ; ( 目前使用最廣泛的版本 )
- HTTP/2 : 201520152015 年 , 支持 多路復用 , 服務器推送 , 頭信息壓縮 , 二進制協議 等機制 ; ( 逐步推進覆蓋市場 )
目前使用最廣泛的版本是 HHTP/1.1 , 但是 201520152015 年后 , HTTP/2 出現 , 逐漸覆蓋市場 ;
二、HTTP/1.1 與 HTTP/2 對比
HTTP/1.1 請求網頁流程 :
- ① 建立 HTTP 連接 ;
- ② 客戶端發送 GET 請求 , 請求服務器端的 index.html 文件 ;
- ③ 服務器端響應 , 返回 html 文件信息 ;
- ④ 客戶端發送 GET 請求 , 請求 style.css 文件 ;
- ⑤ 服務器端響應 , 返回 style.css 文件
- ⑥ 客戶端發送 GET 請求 , 請求服務器端的 scripts.js 文件 ;
- ⑦ 服務器端響應 , 返回 scripts.js 文件 ;
- ⑧ 客戶端渲染界面
- ⑨ 關閉 HTTP 連接 ;
弊端 : 每次只能請求網頁的一個文件 , css 和 js 腳本需要分兩次請求 , 客戶端才能獲取到完整的文件 ;
HTTP/2 多路復用機制 : 通過 111 個 HTTP/2 發起多重 請求/響應 信息 , 多個請求共享同一個 TCP 連接 ;
- ① 建立 HTTP 連接 ;
- ② 客戶端發送 GET 請求 , 請求服務器端的 index.html 文件 ;
- ③ 服務器端響應 , 返回 html 文件信息 ;
- ④ 客戶端發送 GET 請求 , 請求 style.css 和 scripts.js 文件 ;
- ⑤ 服務器端響應 , 返回 style.css 和 scripts.js 文件
- ⑥ 客戶端渲染界面
- ⑦ HTTP 連接繼續保持打開狀態 ;
三、HTTP 報文格式
客戶端要訪問某網站 , 向服務器端發送的報文是 請求報文 ;
請求報文格式 : CRLF 是回車換行 ;
服務器端 接收 到客戶端的請求報文 , 響應客戶端的請求 , 向客戶端發送的報文是 響應報文 ;
響應報文格式 : CRLF 是回車換行 ;
請求報文 與 響應報文 真實案例分析 :
這里以訪問人大網站 ( http://rucfd.ruc.edu.cn/ ) 為例 ;
在瀏覽器輸入上述網址 , 按下 F12 鍵 , 進入調試模式 , 刷新網頁 , 查看 HTTP 請求與響應過程 ;
請求頭 :
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 ;
GET / HTTP/1.1首部行 : 請求行下面的都是首部行 , 每個鍵值對后面跟著一個回車換行 ;
響應頭 :
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狀態行 : 版本號 HTTP/1.1 , 狀態碼 200 , 短語 OK ;
HTTP/1.1 200 OK首部行 : 剩余的都是首部行 , 每個鍵值對后面跟著一個回車換行 ;
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【计算机网络】HTTP 与 HTTPS ( HTTP 发展过程 | HTTP/1.1 与 HTTP/2 对比 | HTTP 报文格式 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【错误记录】Android Studio
- 下一篇: 【错误记录】TabLayout 升级支持