国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
HTTP詳解(1)-工作原理

       

1. HTTP簡(jiǎn)介

         HTTP協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議)是用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。它不僅保證計(jì)算機(jī)正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內(nèi)容首先顯示(如文本先于圖形)等。

         在了解HTTP如何工作之前,我們先了解計(jì)算機(jī)之間的通信。

2. 計(jì)算機(jī)相互之間的通信

        互聯(lián)網(wǎng)的關(guān)鍵技術(shù)就是TCP/IP協(xié)議。兩臺(tái)計(jì)算機(jī)之間的通信是通過(guò)TCP/IP協(xié)議在因特網(wǎng)上進(jìn)行的。實(shí)際上這個(gè)是兩個(gè)協(xié)議:

        TCP : Transmission Control Protocol 傳輸控制協(xié)議和IP: Internet Protocol  網(wǎng)際協(xié)議。

        IP:計(jì)算機(jī)之間的通信

        IP協(xié)議是計(jì)算機(jī)用來(lái)相互識(shí)別的通信的一種機(jī)制,每臺(tái)計(jì)算機(jī)都有一個(gè)IP.用來(lái)在internet上標(biāo)識(shí)這臺(tái)計(jì)算機(jī)。  IP 負(fù)責(zé)在因特網(wǎng)上發(fā)送和接收數(shù)據(jù)包。通過(guò) IP,消息(或者其他數(shù)據(jù))被分割為小的獨(dú)立的包,并通過(guò)因特網(wǎng)在計(jì)算機(jī)之間傳送。IP 負(fù)責(zé)將每個(gè)包路由至它的目的地。

        IP協(xié)議僅僅是允許計(jì)算機(jī)相互發(fā)消息,但它并不檢查消息是否以發(fā)送的次序到達(dá)而且沒(méi)有損壞(只檢查關(guān)鍵的頭數(shù)據(jù))。為了提供消息檢驗(yàn)功能,直接在IP協(xié)議上設(shè)計(jì)了傳輸控制協(xié)議TCP.

        

       TCP : 應(yīng)用程序之間的通信

       TCP確保數(shù)據(jù)包以正確的次序到達(dá),并且嘗試確認(rèn)數(shù)據(jù)包的內(nèi)容沒(méi)有改變。TCP在IP地址之上引端口(port),它允許計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)提供各種服務(wù)。一些端口號(hào)為不同的服務(wù)保留,而且這些端口號(hào)是眾所周知。

       服務(wù)或者守護(hù)進(jìn)程:在提供服務(wù)的機(jī)器上,有程序監(jiān)聽(tīng)特定端口上的通信流。例如大多數(shù)電子郵件通信流出現(xiàn)在端口25上,用于wwww的HTTP通信流出現(xiàn)在80端口上。

       當(dāng)應(yīng)用程序希望通過(guò) TCP 與另一個(gè)應(yīng)用程序通信時(shí),它會(huì)發(fā)送一個(gè)通信請(qǐng)求。這個(gè)請(qǐng)求必須被送到一個(gè)確切的地址。在雙方“握手”之后,TCP 將在兩個(gè)應(yīng)用程序之間建立一個(gè)全雙工 (full-duplex) 的通信,占用兩個(gè)計(jì)算機(jī)之間整個(gè)的通信線路。TCP 用于從應(yīng)用程序到網(wǎng)絡(luò)的數(shù)據(jù)傳輸控制。TCP 負(fù)責(zé)在數(shù)據(jù)傳送之前將它們分割為 IP 包,然后在它們到達(dá)的時(shí)候?qū)⑺鼈冎亟M。

       TCP/IP 就是TCP 和 IP 兩個(gè)協(xié)議在一起協(xié)同工作,有上下層次的關(guān)系。

       TCP 負(fù)責(zé)應(yīng)用軟件(比如你的瀏覽器)和網(wǎng)絡(luò)軟件之間的通信。IP 負(fù)責(zé)計(jì)算機(jī)之間的通信。TCP 負(fù)責(zé)將數(shù)據(jù)分割并裝入 IP 包,IP 負(fù)責(zé)將包發(fā)送至接受者,傳輸過(guò)程要經(jīng)IP路由器負(fù)責(zé)根據(jù)通信量、網(wǎng)絡(luò)中的錯(cuò)誤或者其他參數(shù)來(lái)進(jìn)行正確地尋址,然后在它們到達(dá)的時(shí)候重新組合它們。

 

3. HTTP協(xié)議所在的協(xié)議層

      HTTP是基于TCP協(xié)議之上的。在TCP/IP協(xié)議參考模型的各層對(duì)應(yīng)的協(xié)議如下圖,其中HTTP是應(yīng)用層的協(xié)議。

     


 

4. HTTP請(qǐng)求響應(yīng)模型   

       HTTP由請(qǐng)求和響應(yīng)構(gòu)成,是一個(gè)標(biāo)準(zhǔn)的客戶端服務(wù)器模型(B/S)。HTTP協(xié)議永遠(yuǎn)都是客戶端發(fā)起請(qǐng)求,服務(wù)器回送響應(yīng)。見(jiàn)下圖:

   

 

       HTTP是一個(gè)無(wú)狀態(tài)的協(xié)議。無(wú)狀態(tài)是指客戶機(jī)(Web瀏覽器)和服務(wù)器之間不需要建立持久的連接,這意味著當(dāng)一個(gè)客戶端向服務(wù)器端發(fā)出請(qǐng)求,然后服務(wù)器返回響應(yīng)(response),連接就被關(guān)閉了,在服務(wù)器端不保留連接的有關(guān)信息.HTTP遵循請(qǐng)求(Request)/應(yīng)答(Response)模型??蛻魴C(jī)(瀏覽器)向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器處理請(qǐng)求并返回適當(dāng)?shù)膽?yīng)答。所有HTTP連接都被構(gòu)造成一套請(qǐng)求和應(yīng)答。

 

5. HTTP工作過(guò)程      

     一次HTTP操作稱為一個(gè)事務(wù),其工作整個(gè)過(guò)程如下:

     1 ) 、地址解析,

     如用客戶端瀏覽器請(qǐng)求這個(gè)頁(yè)面:http://localhost.com:8080/index.htm

     從中分解出協(xié)議名、主機(jī)名、端口、對(duì)象路徑等部分,對(duì)于我們的這個(gè)地址,解析得到的結(jié)果如下:
     協(xié)議名:http
     主機(jī)名:localhost.com
     端口:8080
     對(duì)象路徑:/index.htm

      在這一步,需要域名系統(tǒng)DNS解析域名localhost.com,得主機(jī)的IP地址。


    2)、封裝HTTP請(qǐng)求數(shù)據(jù)包

     把以上部分結(jié)合本機(jī)自己的信息,封裝成一個(gè)HTTP請(qǐng)求數(shù)據(jù)包


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

       在HTTP工作開(kāi)始之前,客戶機(jī)(Web瀏覽器)首先要通過(guò)網(wǎng)絡(luò)與服務(wù)器建立連接,該連接是通過(guò)TCP來(lái)完成的,該協(xié)議與IP協(xié)議共同構(gòu)建Internet,即著名的TCP/IP協(xié)議族,因此Internet又被稱作是TCP/IP網(wǎng)絡(luò)。HTTP是比TCP更高層次的應(yīng)用層協(xié)議,根據(jù)規(guī)則,只有低層協(xié)議建立之后才能,才能進(jìn)行更層協(xié)議的連接,因此,首先要建立TCP連接,一般TCP連接的端口號(hào)是80。這里是8080端口

     4)客戶機(jī)發(fā)送請(qǐng)求命令

       建立連接后,客戶機(jī)發(fā)送一個(gè)請(qǐng)求給服務(wù)器,請(qǐng)求方式的格式為:統(tǒng)一資源標(biāo)識(shí)符(URL)、協(xié)議版本號(hào),后邊是MIME信息包括請(qǐng)求修飾符、客戶機(jī)信息和可內(nèi)容。

     5)服務(wù)器響應(yīng)

     服務(wù)器接到請(qǐng)求后,給予相應(yīng)的響應(yīng)信息,其格式為一個(gè)狀態(tài)行,包括信息的協(xié)議版本號(hào)、一個(gè)成功或錯(cuò)誤的代碼,后邊是MIME信息包括服務(wù)器信息、實(shí)體信息和可能的內(nèi)容。

        實(shí)體消息是服務(wù)器向?yàn)g覽器發(fā)送頭信息后,它會(huì)發(fā)送一個(gè)空白行來(lái)表示頭信息的發(fā)送到此為結(jié)束,接著,它就以Content-Type應(yīng)答頭信息所描述的格式發(fā)送用戶所請(qǐng)求的實(shí)際數(shù)據(jù)

     6)服務(wù)器關(guān)閉TCP連接

     一般情況下,一旦Web服務(wù)器向?yàn)g覽器發(fā)送了請(qǐng)求數(shù)據(jù),它就要關(guān)閉TCP連接,然后如果瀏覽器或者服務(wù)器在其頭信息加入了這行代碼

    Connection:keep-alive

   TCP連接在發(fā)送后將仍然保持打開(kāi)狀態(tài),于是,瀏覽器可以繼續(xù)通過(guò)相同的連接發(fā)送請(qǐng)求。保持連接節(jié)省了為每個(gè)請(qǐng)求建立新連接所需的時(shí)間,還節(jié)約了網(wǎng)絡(luò)帶寬。

 

 

6. HTTP協(xié)議棧中各層數(shù)據(jù)流      

             首先我們看看客戶端請(qǐng)求的時(shí)候,數(shù)據(jù)在各層協(xié)議的數(shù)據(jù)組織如下圖:

        


            而服務(wù)器解析客戶機(jī)請(qǐng)求就是反向操作的過(guò)程,如下圖:

          


       

       客戶機(jī)發(fā)起一次請(qǐng)求的時(shí)候:

       客戶機(jī)會(huì)將請(qǐng)求封裝成http數(shù)據(jù)包-->封裝成Tcp數(shù)據(jù)包-->封裝成Ip數(shù)據(jù)包--->封裝成數(shù)據(jù)幀--->硬件將幀數(shù)據(jù)轉(zhuǎn)換成bit流(二進(jìn)制數(shù)據(jù))-->最后通過(guò)物理硬件(網(wǎng)卡芯片)發(fā)送到指定地點(diǎn)。

       服務(wù)器硬件首先收到bit流....... 然后轉(zhuǎn)換成ip數(shù)據(jù)包。于是通過(guò)ip協(xié)議解析Ip數(shù)據(jù)包,然后又發(fā)現(xiàn)里面是tcp數(shù)據(jù)包,就通過(guò)tcp協(xié)議解析Tcp數(shù)據(jù)包,接著發(fā)現(xiàn)是http數(shù)據(jù)包通過(guò)http協(xié)議再解析http數(shù)據(jù)包得到數(shù)據(jù)。



6. HTTPS實(shí)現(xiàn)原理    

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

         SSL:安全套接層,是netscape公司設(shè)計(jì)的主要用于web的安全傳輸協(xié)議。這種協(xié)議在WEB上獲得了廣泛的應(yīng)用。通過(guò)證書認(rèn)證來(lái)確??蛻舳撕途W(wǎng)站服務(wù)器之間的通信數(shù)據(jù)是加密安全的。

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

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

       對(duì)稱加密主要問(wèn)題是共享秘鑰,除你的計(jì)算機(jī)(客戶端)知道另外一臺(tái)計(jì)算機(jī)(服務(wù)器)的私鑰秘鑰,否則無(wú)法對(duì)通信流進(jìn)行加密解密。解決這個(gè)問(wèn)題的方案非對(duì)稱秘鑰。

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

      這種密鑰成對(duì)出現(xiàn)(且根據(jù)公鑰無(wú)法推知私鑰,根據(jù)私鑰也無(wú)法推知公鑰),加密解密使用不同密鑰(公鑰加密需要私鑰解密,私鑰加密需要公鑰解密),相對(duì)對(duì)稱加密速度較慢,典型的非對(duì)稱加密算法有RSA、DSA等。

   下面看一下https的通信過(guò)程:

   

        過(guò)程大致如下:
        1) SSL客戶端通過(guò)TCP和服務(wù)器建立連接之后(443端口),并且在一般的tcp連接協(xié)商(握手)過(guò)程中請(qǐng)求證書。
              即客戶端發(fā)出一個(gè)消息給服務(wù)器,這個(gè)消息里面包含了自己可實(shí)現(xiàn)的算法列表和其它一些需要的消息,SSL的服務(wù)器端會(huì)回應(yīng)一個(gè)數(shù)據(jù)包,這里面確定了這次通信所需要的算法,然后服務(wù)器向客戶端返回證書。(證書里面包含了服務(wù)器信息:域名。申請(qǐng)證書的公司,公共秘鑰)。                 
       2)Client在收到服務(wù)器返回的證書后,判斷簽發(fā)這個(gè)證書的公共簽發(fā)機(jī)構(gòu),并使用這個(gè)機(jī)構(gòu)的公共秘鑰確認(rèn)簽名是否有效,客戶端還會(huì)確保證書中列出的域名就是它正在連接的域名。
       3)  如果確認(rèn)證書有效,那么生成對(duì)稱秘鑰并使用服務(wù)器的公共秘鑰進(jìn)行加密。然后發(fā)送給服務(wù)器,服務(wù)器使用它的私鑰對(duì)它進(jìn)行解密,這樣兩臺(tái)計(jì)算機(jī)可以開(kāi)始進(jìn)行對(duì)稱加密進(jìn)行通信。

https通信的優(yōu)點(diǎn):

1)客戶端產(chǎn)生的密鑰只有客戶端和服務(wù)器端能得到;

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

3)客戶端到服務(wù)端的通信是安全的。




7. HTTP各種長(zhǎng)度限制   


1. URL長(zhǎng)度限制

在Http1.1協(xié)議中并沒(méi)有提出針對(duì)URL的長(zhǎng)度進(jìn)行限制,RFC協(xié)議里面是這樣描述的,HTTP協(xié)議并不對(duì)URI的長(zhǎng)度做任何的限制,服務(wù)器端必須能夠處理任何它們所提供服務(wù)多能接受的URI,并且能夠處理無(wú)限長(zhǎng)度的URI,如果服務(wù)器不能處理過(guò)長(zhǎng)的URI,那么應(yīng)該返回414狀態(tài)碼。
雖然Http協(xié)議規(guī)定了,但是Web服務(wù)器和瀏覽器對(duì)URI都有自己的長(zhǎng)度限制。

服務(wù)器的限制:我接觸的最多的服務(wù)器類型就是Nginx和Tomcat,對(duì)于url的長(zhǎng)度限制,它們都是通過(guò)控制http請(qǐng)求頭的長(zhǎng)度來(lái)進(jìn)行限制的,nginx的配置參數(shù)為large_client_header_buffers,tomcat的請(qǐng)求配置參數(shù)為maxHttpHeaderSize,都是可以自己去進(jìn)行設(shè)置。

瀏覽器的限制:每種瀏覽器也會(huì)對(duì)url的長(zhǎng)度有所限制,下面是幾種常見(jiàn)瀏覽器的url長(zhǎng)度限制:(單位:字符)
IE : 2803
Firefox:65536
Chrome:8182
Safari:80000
Opera:190000

對(duì)于get請(qǐng)求,在url的長(zhǎng)度限制范圍之內(nèi),請(qǐng)求的參數(shù)個(gè)數(shù)沒(méi)有限制。

2. Post數(shù)據(jù)的長(zhǎng)度限制

Post數(shù)據(jù)的長(zhǎng)度限制與url長(zhǎng)度限制類似,也是在Http協(xié)議中沒(méi)有規(guī)定長(zhǎng)度限制,長(zhǎng)度限制可以在服務(wù)器端配置最大http請(qǐng)求頭長(zhǎng)度的方式來(lái)實(shí)現(xiàn)。

3. Cookie的長(zhǎng)度限制

Cookie的長(zhǎng)度限制分這么幾個(gè)方面來(lái)總結(jié)。

(1) 瀏覽器所允許的每個(gè)域下的最大cookie數(shù)目,沒(méi)有去自己測(cè)試,從網(wǎng)上找到的資料大概是這么個(gè)情況
IE :原先為20個(gè),后來(lái)升級(jí)為50個(gè)
Firefox: 50個(gè)
Opera:30個(gè)
Chrome:180個(gè)
Safari:無(wú)限制

當(dāng)Cookie數(shù)超過(guò)限制數(shù)時(shí)瀏覽器的行為:IE和Opera會(huì)采用LRU算法將老的不常使用的Cookie清除掉,F(xiàn)irefox的行為是隨機(jī)踢出某些Cookie的值。當(dāng)然無(wú)論怎樣的策略,還是盡量不要讓Cookie數(shù)目超過(guò)瀏覽器所允許的范圍。

(2) 瀏覽器所允許的每個(gè)Cookie的最大長(zhǎng)度

Firefox和Safari:4079字節(jié)
Opera:4096字節(jié)
IE:4095字節(jié)

(3) 服務(wù)器中Http請(qǐng)求頭長(zhǎng)度的限制。Cookie會(huì)被附在每次http請(qǐng)求頭中傳遞給服務(wù)器,因此還會(huì)受到服務(wù)器請(qǐng)求頭長(zhǎng)度的影響。

4. Html5 LocalStorage

Html5提供了本地存儲(chǔ)機(jī)制來(lái)供Web應(yīng)用在客戶端存儲(chǔ)數(shù)據(jù),盡管這個(gè)并不屬于Http協(xié)議的一部分,但是隨著Html5的流行,我們可能需要越來(lái)越多使用LocalStorage,甚至當(dāng)它普及的時(shí)候跟它打交道就會(huì)同今天我們跟Cookie打交道一樣多。

對(duì)于LocalStorage的長(zhǎng)度限制,同Cookie的限制類似,也是瀏覽器針對(duì)域來(lái)限制,只不過(guò)cookie限制的是個(gè)數(shù),LocalStorage限制的是長(zhǎng)度:

Firefox\Chrome\Opera都是允許每個(gè)域的最大長(zhǎng)度為5MB
但是這次IE比較大方,允許的最大長(zhǎng)度是10MB

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
http數(shù)據(jù)包; 截獲; 還原
初識(shí)“HTTP”--,Protocol Analysis
原來(lái)你是這樣的Websocket
http協(xié)議(二)
TCP/IP協(xié)議?!狪P、TCP、UDP、HTTP協(xié)議詳解
計(jì)算機(jī)網(wǎng)絡(luò)常用知識(shí)總結(jié)!
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服