多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > HTTP詳解

HTTP詳解

來源:程序員人生   發布時間:2016-07-13 10:16:55 閱讀次數:2984次

     

1. HTTP簡介

         HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用于從WWW服務器傳輸超文本到本地閱讀器的傳送協議。它可使閱讀器更加高效,使網絡傳輸減少。它不但保證計算機正確快速地傳輸超文本文檔,還肯定傳輸文檔中的哪1部份,和哪部份內容首先顯示(如文本先于圖形)等。

         在了解HTTP如何工作之前,我們先了解計算機之間的通訊。

2. 計算機相互之間的通訊

        互聯網的關鍵技術就是TCP/IP協議。兩臺計算機之間的通訊是通過TCP/IP協議在因特網上進行的。實際上這個是兩個協議:

        TCP : Transmission Control Protocol 傳輸控制協議和IP: Internet Protocol  網際協議。

        IP:計算機之間的通訊

        IP協議是計算機用來相互辨認的通訊的1種機制,每臺計算機都有1個IP.用來在internet上標識這臺計算機。  IP 負責在因特網上發送和接收數據包。通過 IP,消息(或其他數據)被分割為小的獨立的包,并通過因特網在計算機之間傳送。IP 負責將每一個包路由至它的目的地。

        IP協議僅僅是允許計算機相互發消息,但它其實不檢查消息是不是以發送的次序到達而且沒有破壞(只檢查關鍵的頭數據)。為了提供消息檢驗功能,直接在IP協議上設計了傳輸控制協議TCP.

        

       TCP : 利用程序之間的通訊

       TCP確保數據包以正確的次序到達,并且嘗試確認數據包的內容沒有改變。TCP在IP地址之上引端口(port),它允許計算機通過網絡提供各種服務。1些端口號為不同的服務保存,而且這些端口號是盡人皆知。

       服務或守護進程:在提供服務的機器上,有程序監聽特定端口上的通訊流。例如大多數電子郵件通訊流出現在端口25上,用于wwww的HTTP通訊流出現在80端口上。

       當利用程序希望通過 TCP 與另外一個利用程序通訊時,它會發送1個通訊要求。這個要求必須被送到1個確切的地址。在雙方“握手”以后,TCP 將在兩個利用程序之間建立1個全雙工 (full-duplex) 的通訊,占用兩個計算機之間全部的通訊線路。TCP 用于從利用程序到網絡的數據傳輸控制。TCP 負責在數據傳送之前將它們分割為 IP 包,然后在它們到達的時候將它們重組。

       TCP/IP 就是TCP 和 IP 兩個協議在1起協同工作,有上下層次的關系。

       TCP 負責利用軟件(比如你的閱讀器)和網絡軟件之間的通訊。IP 負責計算機之間的通訊。TCP 負責將數據分割并裝入 IP 包,IP 負責將包發送至接受者,傳輸進程要經IP路由器負責根據通訊量、網絡中的毛病或其他參數來進行正確地尋址,然后在它們到達的時候重新組合它們。

 

3. HTTP協議所在的協議層

      HTTP是基于TCP協議之上的。在TCP/IP協議參考模型的各層對應的協議以下圖,其中HTTP是利用層的協議。

      


 

4. HTTP要求響應模型   

       HTTP由要求和響應構成,是1個標準的客戶端服務器模型(B/S)。HTTP協議永久都是客戶端發起要求,服務器回送響應。見下圖:

    

 

       HTTP是1個無狀態的協議。無狀態是指客戶機(Web閱讀器)和服務器之間不需要建立持久的連接,這意味著當1個客戶端向服務器端發出要求,然后服務器返回響應(response),連接就被關閉了,在服務器端不保存連接的有關信息.HTTP遵守要求(Request)/應對(Response)模型??蛻魴C(閱讀器)向服務器發送要求,服務器處理要求并返回適當的應對。所有HTTP連接都被構造成1套要求和應對。

 

5. HTTP工作進程      

     1次HTTP操作稱為1個事務,其工作全部進程以下:

     1 ) 、地址解析,

     如用客戶端閱讀器要求這個頁面:http://localhost.com:8080/index.htm

     從中分解出協議名、主機名、端口、對象路徑等部份,對我們的這個地址,解析得到的結果以下:
     協議名:http
     主機名:localhost.com
     端口:8080
     對象路徑:/index.htm

      在這1步,需要域名系統DNS解析域名localhost.com,得主機的IP地址。


    2)、封裝HTTP要求數據包

     把以上部份結合本機自己的信息,封裝成1個HTTP要求數據包


     3)封裝成TCP包,建立TCP連接TCP的3次握手

       在HTTP工作開始之前,客戶機(Web閱讀器)首先要通過網絡與服務器建立連接,該連接是通過TCP來完成的,該協議與IP協議共同構建Internet,即著名的TCP/IP協議族,因此Internet又被稱作是TCP/IP網絡。HTTP是比TCP更高層次的利用層協議,根據規則,只有低層協議建立以后才能,才能進行更層協議的連接,因此,首先要建立TCP連接,1般TCP連接的端口號是80。這里是8080端口

     4)客戶機發送要求命令

       建立連接后,客戶機發送1個要求給服務器,要求方式的格式為:統1資源標識符(URL)、協議版本號,后邊是MIME信息包括要求修飾符、客戶機信息和可內容。

     5)服務器響應

     服務器接到要求后,給予相應的響應信息,其格式為1個狀態行,包括信息的協議版本號、1個成功或毛病的代碼,后邊是MIME信息包括服務器信息、實體信息和可能的內容。

        實體消息是服務器向閱讀器發送頭信息后,它會發送1個空白行來表示頭信息的發送到此為結束,接著,它就以Content-Type應對頭信息所描寫的格式發送用戶所要求的實際數據

     6)服務器關閉TCP連接

     1般情況下,1旦Web服務器向閱讀器發送了要求數據,它就要關閉TCP連接,然后如果閱讀器或服務器在其頭信息加入了這行代碼

    Connection:keep-alive

   TCP連接在發送后將依然保持打開狀態,因而,閱讀器可以繼續通過相同的連接發送要求。保持連接節省了為每一個要求建立新連接所需的時間,還節儉了網絡帶寬。

 

 

6. HTTP協議棧中各層數據流      

             首先我們看看客戶端要求的時候,數據在各層協議的數據組織以下圖:

         

            而服務器解析客戶機要求就是反向操作的進程,以下圖:

           
       

       客戶機發起1次要求的時候:

       客戶機會將要求封裝成http數據包-->封裝成Tcp數據包-->封裝成Ip數據包--->封裝成數據幀--->硬件將幀數據轉換成bit流(2進制數據)-->最后通過物理硬件(網卡芯片)發送到指定地點。

       服務器硬件首先收到bit流....... 然后轉換成ip數據包。因而通過ip協議解析Ip數據包,然后又發現里面是tcp數據包,就通過tcp協議解析Tcp數據包,接著發現是http數據包通過http協議再解析http數據包得到數據。



6. HTTPS實現原理    

             HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL。其所用的端口號是443。

         SSL:安全套接層,是netscape公司設計的主要用于web的安全傳輸協議。這類協議在WEB上取得了廣泛的利用。通過證書認證來確??蛻舳撕途W站服務器之間的通訊數據是加密安全的。

      有兩種基本的加解密算法類型:

      1)對稱加密(symmetrcic encryption):密鑰只有1個,加密解密為同1個密碼,且加解密速度快,典型的對稱加密算法有DES、AES,RC5,3DES等;

       對稱加密主要問題是同享秘鑰,除你的計算機(客戶端)知道另外1臺計算機(服務器)的私鑰秘鑰,否則沒法對通訊流進行加密解密。解決這個問題的方案非對稱秘鑰。

      2)非對稱加密:使用兩個秘鑰:公共秘鑰和私有秘鑰。私有秘鑰由1方密碼保存(1般是服務器保存),另外一方任何人都可以取得公共秘鑰。

      這類密鑰成對出現(且根據公鑰沒法推知私鑰,根據私鑰也沒法推知公鑰),加密解密使用不同密鑰(公鑰加密需要私鑰解密,私鑰加密需要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSA、DSA等。

   下面看1下https的通訊進程:

   

        進程大致以下:
        1) SSL客戶端通過TCP和服務器建立連接以后(443端口),并且在1般的tcp連接協商(握手)進程中要求證書。
              即客戶端發出1個消息給服務器,這個消息里面包括了自己可實現的算法列表和其它1些需要的消息,SSL的服務器端會回應1個數據包,這里面肯定了這次通訊所需要的算法,然后服務器向客戶端返回證書。(證書里面包括了服務器信息:域名。申請證書的公司,公共秘鑰)。                 
       2)Client在收到服務器返回的證書后,判斷簽發這個證書的公共簽發機構,并使用這個機構的公共秘鑰確認簽名是不是有效,客戶端還會確保證書中列出的域名就是它正在連接的域名。
       3)  如果確認證書有效,那末生成對稱秘鑰并使用服務器的公共秘鑰進行加密。然后發送給服務器,服務器使用它的私鑰對它進行解密,這樣兩臺計算機可以開始進行對稱加密進行通訊。

https通訊的優點:

1)客戶端產生的密鑰只有客戶端和服務器端能得到;

2)加密的數據只有客戶端和服務器端才能得到明文;

3)客戶端到服務真個通訊是安全的。




7. HTTP各種長度限制   


1. URL長度限制

在Http1.1協議中并沒有提出針對URL的長度進行限制,RFC協議里面是這樣描寫的,HTTP協議其實不對URI的長度做任何的限制,服務器端必須能夠處理任何它們所提供服務多能接受的URI,并且能夠處理無窮長度的URI,如果服務器不能處理太長的URI,那末應當返回414狀態碼。
 
 
雖然Http協議規定了,但是Web服務器和閱讀器對URI都有自己的長度限制。

服務器的限制:我接觸的最多的服務器類型就是Nginx和Tomcat,對url的長度限制,它們都是通過控制http要求頭的長度來進行限制的,nginx的配置參數為large_client_header_buffers,tomcat的要求配置參數為maxHttpHeaderSize,都是可以自己去進行設置。

閱讀器的限制:每種閱讀器也會對url的長度有所限制,下面是幾種常見閱讀器的url長度限制:(單位:字符)
IE : 2803
Firefox:65536
Chrome:8182
Safari:80000
Opera:190000

對get要求,在url的長度限制范圍以內,要求的參數個數沒有限制。

2. Post數據的長度限制

Post數據的長度限制與url長度限制類似,也是在Http協議中沒有規定長度限制,長度限制可以在服務器端配置最大http要求頭長度的方式來實現。

3. Cookie的長度限制

Cookie的長度限制分這么幾個方面來總結。

(1) 閱讀器所允許的每一個域下的最大cookie數目,沒有去自己測試,從網上找到的資料大概是這么個情況
IE :本來為20個,后來升級為50個
Firefox: 50個
Opera:30個
Chrome:180個
Safari:無窮制

當Cookie數超過限制數時閱讀器的行動:IE和Opera會采取LRU算法將老的不常使用的Cookie清除掉,Firefox的行動是隨機踢出某些Cookie的值。固然不管怎樣的策略,還是盡可能不要讓Cookie數目超過閱讀器所允許的范圍。

(2) 閱讀器所允許的每一個Cookie的最大長度

Firefox和Safari:4079字節
Opera:4096字節
IE:4095字節

(3) 服務器中Http要求頭長度的限制。Cookie會被附在每次http要求頭中傳遞給服務器,因此還會遭到服務器要求頭長度的影響。

4. Html5 LocalStorage

Html5提供了本地存儲機制來供Web利用在客戶端存儲數據,雖然這個其實不屬于Http協議的1部份,但是隨著Html5的流行,我們可能需要愈來愈多使用LocalStorage,乃至當它普及的時候跟它打交道就會同今天我們跟Cookie打交道1樣多。

對LocalStorage的長度限制,同Cookie的限制類似,也是閱讀器針對域來限制,只不過cookie限制的是個數,LocalStorage限制的是長度:

Firefox\Chrome\Opera都是允許每一個域的最大長度為5MB

但是這次IE比較大方,允許的最大長度是10MB


1. HTTP版本

HTTP/1.0

HTTP/1.1

HTTP-NG

 

2. 會話方式

HTTP/1.0

建立連接->要求->響應->斷開連接

每次連接只處理1次要求和相應,對資源的每次訪問都要建立1個單獨的連接。

閱讀器到服務器的每次通訊都是完全分開的。

沒有Host域,所以不可以創建基于主機頭的虛擬主機。

 

HTTP/1.1

在1個TCP連接中可以傳送多個HTTP要求和響應

不需要等待上次HTTP響應終了,可以多個HTTP要求同時進行。服務器會根據閱讀器發送的要求順序來按順序進行響應,這被稱作管線。

Host域,可以建立虛擬主機。

 

3. 要求消息

結構:

要求行

若干消息頭(可選)

(CRLF)

實體內容(可選)

 

GET無實體內容

 

4. 響應消息

結構:

狀態行

若干消息頭(可選)

(CRLF)

實體內容(可選)

 

5. HTTP消息

HTTP/1.1,如果消息中包括實體內容,且沒有采取Transfer-Encoding: chunked傳輸編碼方式,則必須要有Content-Length消息頭。否則閱讀器和服務器都不知道什么時候消息結束。

 

6. 簡單要求消息和簡單響應消息

沒有消息頭。

其中,簡單要求消息只可用于GET方式,且要求行中不指定HTTP版本號,

對簡單要求消息,服務器將會返回簡單響應消息,只返回實體內容。

如:

ROOT /index.html

 

7. HTTP消息頭概述

閱讀器通過消息頭,比如可以告知服務器閱讀器的國家語言版本信息,可以告知服務器訪問者是從哪一個頁面訪問到當前頁面的。

 

服務器通過消息頭,比如可以告知閱讀器隔多長時間刷新1下,用哪一種字符集顯示內容,創建Cookie。

 

結構:

頭字段名稱(不辨別大小寫):_值,值,值(CRLF)

頭字段名稱(不辨別大小寫):_值,值,值(CRLF)

頭字段名稱(不辨別大小寫):_值,值,值(CRLF)

 (可以任意順序排列)

 

分為:通用信息頭、要求頭、響應頭、實體頭4類。

 

8. 要求行

結構:

要求方式_資源路徑_HTTP版本號(CRLF)

如:

GET /index.htm HTTP/1.1

 

要求方式:

Method

 

GET

要求獲得Request-URI所標識的資源

POST

Request-URI所標識的的資源后附加新的數據

HEAD

要求獲得Request-URI所標識的資源的響應消息報頭

PUT

要求服務器存儲1個資源,并用Request-URI作為資源標識

DELETE

要求服務器刪除Request-URI所標識的資源

TRACE

要求服務器回送收到的要求信息,主要用于測試和診斷

CONNECT

保存將來使用

OPTIONS

要求查詢服務器的性能,或查詢與資源相干的選項和需求

 

9. 狀態行

結構:

HTTP版本號_狀態碼_狀態描寫(CRLF)

如:

HTTP/1.1 200 OK

 

10. 使用GETPOST傳遞參數

GET使用URL傳遞參數

如:

GET /List.aspx?Catagoryid=5&Cityid=23 HTTP/1.1

 

POST使用實體內容傳遞參數

如:

POST /List.aspx HTTP/1.1

Content-Type:application/x-www-form-urlencoded

Content-Length:22

 

Catagoryid=5&Cityid=23

 

POST消息頭中要設置Content-Type的值為application/x-www-form-urlencoded,和使用Content-Length 以標識實體內容的長度。

 

Content-Length長度比實體內容長度短時,則會疏忽多出部份的實體內容。當Content-Length少于實體長度時,則會繼續等待。

 

11. 響應狀態碼

 

狀態代碼由3位數字組成,第1位定義了響應的種別:

1xx:唆使信息——表示要求已接收,繼續處理。

2xx:成功——表示要求已被成功接收、理解、接受。

3xx:重定向——要完成要求必須進行更進1步的操作。

4xx:客戶端毛病——要求有語法毛病或要求沒法實現。

5xx:服務器端毛病——服務器未能實現合法的要求。

 

常見狀態碼:

<small id="g4zw3"></small>

  • Status-Code

    Reason-Phrase

     

    200

    OK

    客戶端要求成功

    206

     

    客戶端發送了帶有Range頭的GET 生活不易,碼農辛苦
    如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
    程序員人生

    ------分隔線----------------------------
    分享到:
    ------分隔線----------------------------
    關閉
    程序員人生
    主站蜘蛛池模板: 18到20岁女人一级毛片 | 99精品国产美女福到在线不卡 | 与黑人女人做爰的真实感受 | 亚洲国产2017男人a天堂 | 伊人免费在线观看高清版 | 欧美精品久久久久久久久大尺度 | 国产欧美精品一区二区三区 | 亚洲大成色www永久网址 | 中文亚洲欧美 | 国产成年网站v片在线观看 国产成人 免费观看 | 欧美一级免费 | 欧美精品v欧洲精品 | 久久国产精品一区二区 | 男女性刺激爽爽免费视频 | 91精品国产综合久久欧美 | 成人一区专区在线观看 | 午夜在线播放免费人成无 | 国产日韩精品欧美一区视频 | 久久久久久久久久久久久久久久久久久久 | 久久久国产成人精品 | 国产一区二区免费不卡在线播放 | 亚洲视频免费在线看 | 老司机福利在线观看 | 国产精品亚洲午夜一区二区三区 | 日本8888xxxx免费视频 | 国产亚洲在线观看 | 最近中文字幕经典版在线 | 欧美日韩亚洲国产精品一区二区 | 精品理论片一区二区三区 | 欧美人xxx| 国产suv精品一区二区四区三区 | 欧美中文一区 | 波多野氏免费一区 | 变态 另类 国产 亚洲 | 114毛片免费观看网站 | 午夜私人福利影院 | 亚洲精品伊人 | 福利片免费一区二区三区 | 伊人婷婷在线 | 91精品人成在线观看 | 亚洲欧美中文字幕 |
    <source id="g4zw3"><tr id="g4zw3"></tr></source>