1. 程式人生 > >HTTP協議(淺說)

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 協議版本

                                 狀態碼和原因短語:代表請求狀態的程式碼(圖片來源見水印)

                                               

                   [ 響應頭]:包含響應的各種引數