HTTP協議(淺說)
(上網就是把人家主機上的資源弄到你的主機上)
1. HTTP:(Hype Text Transfer Protocol)超文字傳輸協議,,協議就是一套規則
2. 超文字:純文字就是純粹的文字資訊的文字,對應的超文字就是包含視訊、音訊、圖片等多媒體資訊的文字
3. URL(UniformResource Location)統一資源定位符,用於識別全球資訊網中的某個資源的地址
(1)格式:協議//:主機埠/檔案資源的路徑 eg:http://www.baidu.com:80/index.html
(2)http:協議,表示該資源以什麼格式、流程、規則等進行傳輸,對應的還有 https(http的安全版)、ftp(檔案傳輸協議)等
(3)www.baidu.com:該主機的 IP 地址(唯一的),網際網路上有很多主機,通過 IP 找到要和哪臺主機進行通訊。但一般 IP 地址格式都是:0~255.0~255.0~255.0~255,我們之所以可以通過 www.baidu.com 訪問,是因為它通過 DNS 綁定了這個 IP 地址,DNS 可理解為一張表,記錄著 IP 和域名的對應資訊,在網際網路中也是唯一的
(4)80:該程式的埠,通過 IP 找到主機後,這個主機上可能執行著很多的程式,通過埠號就可以確定要和哪個程式通訊,因為一般每個程式都會唯一佔用多個埠號。埠號小於 1024 的一般都是預設被佔用了的,比如 HTTP 預設佔用 80 埠,因此我們設定埠號的時候一般設定大於 1024
(5)/index.html:該檔案資源的路徑,類似於 Windows 的檔案路徑,通過這個路徑就可以獲得對應資源了
如此,通過 URL 就可以定位每個資源了
4.流程
(1)瀏覽器分析 URL eg:http://www.baidu.com:80/index.html
(2)瀏覽器向 DNS 請求解析:根據解析表,www.baidu.com 對應的IP 是 61.135.169.125(命令列用 ping 可以檢視)
(3)DNS 解析出的 IP 發回給瀏覽器,這樣就得到要獲取的資源在網際網路中的準確地址了 http://61.135.169.125:80/index.html
(4)根據 IP + 埠,瀏覽器與伺服器建立 TCP 連線
(5)瀏覽器向伺服器傳送 GET/index.html 請求(一般第一次都使用 GET 請求,一般網站的首頁都是 index.html)
(6)伺服器響應請求,根據瀏覽器所在的 IP+埠,向瀏覽器傳送 index.html 檔案
(7)釋放 TCP 連線
(8)瀏覽器裡顯示收到的資源
流程圖
5. HTTP 報文格式
既然 HTTP 是一套規則,那也肯定規定了它的格式,現在就來了解一下
(1)請求報文
請求報文的格式一共三大段:請求行、請求頭和資料部分,注意他們之間的空格和回車,這是固定且必須的
[ 請求行 ]:請求方法是瀏覽器訪問伺服器的方式,比如最廣泛的 GET,用於提交登入資料的 POST
URL 就是伺服器的 URL,協議版本是 HTTP 的版本,常見的比如 HTTP/1.1
[ 請求頭 ]:表示該請求的各種相關引數資訊,常見的如下表
[ 資料部分 ]:不是固定的,是根據自己請求的資源生成的
(2)響應報文結構(注意空格和回車)
[ 狀態行 ]:版本指的是 HTTP 協議版本
狀態碼和原因短語:代表請求狀態的程式碼(圖片來源見水印)
[ 響應頭]:包含響應的各種引數