Http協議 詳解

1.Http  URL  分析  

  Http   超文本傳輸協議     是一個基於請求和響應模式的、無狀態、應用層協議,基於TCP/IP協議
html

  Http1.1 版本是對Http1.0的改進,支持長鏈接。     web

   Http URL 格式以下:
        http://host[":"port][path]
        ---http  經過http協議定位網絡資源    也能夠是FTP 協議
        ----host  合法的Internet主機域名或者IP 
        ----port  指定的服務器端口  默認80   
        ---path  請求資源的URI地址    若是URL沒有給出path,瀏覽器默認會爲請求URL 添加上「/」


2. Http 請求分析     
GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie: BDUSS=dmNjE0Sm9CUHlEUkRDNVl1elVHVXUwaEV6M1lQclZBYndGMENzdzVCWTA5VWxXQVFBQUFBJCQAAAAAAAAAAAEAAAAVQwYpYmFpYnV4aWhhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRoIlY0aCJWNj;
Http請求分爲3個部分:請求行、消息報文、請求正文

     GET / HTTP/1.1  ---請求行  格式 Method     Request-URI HTTP-Version 算法

   method ---請求方法   Request-URI  請求資源定位符    HTTP-Version 請求HTTP協議版本;瀏覽器

   method---所有大寫,包括以下方法:緩存

   GET  獲取Request-URI所標識的資源;服務器

   POST   在 Request-URI所標識的資源附加新數據。實際上,一般會用它來支持HTML的表單。表單中填好的數據一般會被    發送給服務器,而後服務器將其發送到他要去的地方。網絡

   HEAD  請求獲取Request-URI所標識的資源的響應消息報頭  app

                  HEAD方法與GET方法的行爲很相似,但服務器在響應中只返回首部。不會反回實體的主體部分。這就容許             客戶端在未獲取實際資源的狀況下,對資源的首部進行檢查。做用:性能

            在不獲取資源的狀況下,瞭解資源的狀況測試

            經過查看響應中的狀態碼,看看某個對象是否存在

            經過查看首部,測試資源是否被修改

            服務器開發者必須確保返回的首部與GET請求返回的首部徹底相同

    PUT     請求服務器存儲一個資源,並用Request-URI做爲其標識

    DELETE  請求服務器刪除Request-URI所標識的資源
    TRACE   請求服務器回送收到的請求信息,主要用於測試或診斷
    CONNECT 保留未來使用
    OPTIONS 請求查詢服務器的性能,或者查詢與資源相關的選項和需求


消息報文:

Connection: keep-alive  ----客戶端發起長鏈接   keepalive 在不少狀況下可以重用鏈接,減小資源消耗,縮短響應時間。Connection普通報頭域容許發送指定鏈接的選項。例如指定鏈接是連續,或者指定「close」選項,通知服務器,在響應完成後,關閉鏈接Pragma: no-cache   

Cache-Control: no-cache     ---用於指定緩存指令,緩存指令是單向的(響應中出現的緩存指令在請求中未必會出現),且是獨立的(一個消息的緩存指令不會影響另外一個消息處理的緩存機制),HTTP1.0使用的相似的報頭域爲Pragma。    

     請求時的緩存指令包括:no-cache(用於指示請求或響應消息不能緩存)、no-store、max-age、max-stale、min-fresh、only-if-cached;
     響應時的緩存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage.Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

---請求報頭域用於指定客戶端接受哪些類型的信息    

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) 

Chrome/44.0.2403.125 Safari/537.36

-------,它是一個特殊字符串頭,使得服務器可以識別客戶使用的操做系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。一些網站經常經過判斷 UA 來給不一樣的操做系統、不一樣的瀏覽器發送不一樣的頁面,所以可能形成某些頁面沒法在某個瀏覽器中正常顯示,但經過假裝 UA 能夠繞過檢測。DNT: 1   ----禁止追蹤Accept-Encoding: gzip, deflate, sdch ----請求報頭域相似於Accept,可是它是用於指定可接受的內容編碼。若是請求消息中沒有設置這個域服務器假定客戶端對各類內容編碼均可以接受。 gzip, deflate 內容壓縮 Google最近發明的HTTP壓縮算法SDCHAccept-Language: zh-CN,zh;q=0.8

---請求報頭域相似於Accept,可是它是用於指定一種天然語言。若是請求消息中沒有設置這個報頭域,服務器假定客戶端對各類語言均可以接受。Cookie:

--- 瀏覽器 保存當前域名的信息

Host: www.baidu.com 

----- 請求報頭域主要用於指定被請求資源的Internet主機和端口號

Referer:  https://www.baidu.com/link?

---告訴服務器我是從哪一個頁面連接過來的,服務器籍此能夠得到一些信息用於處理。(能夠用於防止盜鏈)

3. Http 響應  分爲3部分  狀態行、消息報文、響應內容      
   HTTP/1.1 200 OK    ---狀態行
        Date: Tue, 08 Dec 2015 05:13:27 GMT ---- 普通報頭域表示消息產生的日期和時間
    Content-Type: text/html; charset=utf-8

   ----指明發送給接收者的實體正文的媒體類

   Transfer-Encoding: chunked 

    -----表示輸出的內容長度不能肯定    Expires: Tue, 08 Dec 2015 05:13:38 GMT

   ----緩存失效時間    Last-Modified: Tue, 08 Dec 2015 05:13:28 GMT

   ---請求資源服務器最後一次修改時間    X-UA-Compatible: IE=10

   ----指定瀏覽器 兼容模式

  Content-Length: 23330

    ---請求資源大小

相關文章
相關標籤/搜索