httpd一之關於http工作模式的基本說明

科技小先鋒發表於2017-11-21

  本文主要講解http的協議版本、http報文、http的首部以及一個web請求的基本過程等相關概念性問題

  本文中主要用到一些名詞解釋

  http hyprttext transport protcol 超文字傳輸協議

  html hypertext mark language 超文字標記語言

  URI:Uniform Resource Identifier 統一資源提示符

  URL: Uniform Resource Locator 統一資源定位符

一、HTTP協議的版本:

     http0.9:只能傳輸html文件

     http1.0:支援多媒體資料的處理,保持連線。有快取功能

     http1.1:支援更多的請求方法,更加精細的快取控制,能保持持久連線

二、HTTP報文格式

    1)HTTP事務

       一次請求與其對應的響應,稱之為HTTP的事務

    2)HTTP請求的方法

       GET:請求獲取一個資源,需要伺服器傳送給客戶端

       HEAD:跟GET相似,但其不需要伺服器發回資源僅傳回響應首部即可

       POST:支援HTML表單提交,表單中有使用者填入的資料,這些資料會傳送到伺服器端,由伺服器儲存至某個位置,也可能是傳送給某個處理程式進行處理

       PUT:與GET相反,是向伺服器寫入文件,如釋出系統

       DELETE:請求刪除URL指向的資源

       OPTIONS:探測伺服器端對某資源所支援的請求方法

       TRACE:用於追蹤請求資源要經過的防火牆、代理或閘道器等

      其中GET、HEAD為比較安全的請求方法,PUT、DELETE為相對不安全的方法

    3)響應報文程式碼(此處只有一些常用的程式碼)

       1XX:資訊性狀態碼

       2XX: 成功狀態碼

           200:表示訪問OK

           201:Created OK 寫入成功

       3XX: 重定向狀態碼

           301:Moved Permanebtly 永久重定向,在響應報文中使用“Location:URL”來指定資源現在所在的位置

           302:Found 臨時重定向,在響應報文中使用“Location:URL”來指定資源臨時所在的位置

        4XX:客戶端的錯誤

           403:Forbidden 請求被伺服器拒絕

           404:Not Fonud 伺服器無法找到請求的URL

           405:Method Not Allowed 不允許使用此方法請求響應的URL

        5XX:伺服器類的錯誤

           500:Internal Server Error 伺服器內部錯誤

           502:Bad Gateway 代理伺服器上游收到一條偽響應

           503:Service Unavailable 伺服器此時無法提供服務,但將來可能可用

     4)HTTP首部

        通用首部:請求和響應都可以使用的

            Connection:定義c/s之間關於請求/響應的有關選項,例如,對於HTTP/1.0可以使用 Connection keep-alibe

            Via:顯示了報文中經過的中間節點

            Cache-Control:快取指示,常用於快取伺服器

        請求首部:只能請求時使用的

           報文格式:

           <method><request-url><version>

           <headers>

           <entity-body>

            <method>:請求方法,希望伺服器端執行的動作,如GET、HEAD、POST等

            <request-url>:請求的資源,可以是相對路徑,也可以是完整的URL

            <version>:協議版本,格式HTTP/<major>。<minor>,如http/1.0

            <headers>:HTTP首部

            選項

            Cilent-IP:請求端ip

            Host:請求的主機名和埠號,虛擬主機環境下用於不同的虛擬主機

            Referer:指明瞭請求當前資源的原始資源URL

            User-Agent:使用者代理,使用什麼工具發出的請求

            Accept首部:使用者標明客戶自己更傾向於支援使用的能力

               Accept:指明伺服器能傳送的媒體型別

               Accept-Charset:支援使用的字符集

               Accept-Encoding:支援使用的編碼方式

               Accept-Language:支援使用的語言

            請求條件首部

               Expect:期望的伺服器端的行為

               If-Modified-Since:是否在指定的時間以來修改過此資源

               If-None-Match:如果提供的實體標記與當前的實體標記不相符,則獲取檔案

            跟安全相關的請求首部

               Authorication:客戶端提交給服務端的認證資料,如賬號和密碼

               Cookie:客戶端傳送給伺服器端的身份標識,還有高階版本Cookie2

        響應首部:只能響應時使用的

         報文格式:

         <version><status><reason-phrase>

         <headers>

         <entity-body>

         <status>:狀態碼

         <reason-phrase>:原因短語,數字狀態嗎易讀資訊

         <entity-body>:主體部分

          選項

           Age:響應持續的時間

           Server:向客戶端標明伺服器程式名稱和版本

           協商首部:

              Accept-Ranges:對當前資源來講,伺服器所能夠接受的範圍型別

              Vary:首部列表,伺服器會根據列表中的內容挑選出最適合的版本傳送給客戶端

           跟安全相關的響應首部

              Set-Cookie:伺服器端在某客戶端第一次請求時發給客戶端的令牌,還有高階版本Set-Cookie2

              WWW-Authenication:質詢,即要求客戶端提供賬號和密碼

        實體首部:用於指定實體屬性

            Location:資源的新位置

            Allow:允許對此資源使用的請求方法

            內容首部:

               Contern-Encoding 返回的編碼方式

               Contern-Language 返回的語言

               Contern-Length   放回的長度

               Contern-type   主體物件的型別

               Contern-Range 表示的主體的位元組範圍

               Contern-Location 資源主體所在的位置

        擴充套件首部:非標準首部,可能是由程式開發者建立的

三、一個web請求的基本過程

     建立請求

     接受請求

     處理請求

     訪問資源

     構建響應

     傳送響應

     記錄日誌

本文轉自wangfeng7399 51CTO部落格,原文連結:http://blog.51cto.com/wangfeng7399/1378276,如需轉載請自行聯絡原作者


相關文章