計算機網(wǎng)絡(luò)之十二:HTTP協(xié)議-創(chuàng)新互聯(lián)

一:HTTP簡介

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了太仆寺免費建站歡迎大家使用!

HTTP是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫。

它的發(fā)展是萬維網(wǎng)協(xié)會(World Wide Web Consortium)和Internet工作小組

IETF(Internet Engineering Task Force)合作的結(jié)果,(他們)最終發(fā)布了一系列的RFC,RFC 1945定義了HTTP/1.0版本。

其中最著名的就是RFC 2616。RFC 2616定義了今天普遍使用的一個版本——HTTP 1.1。

HTTP協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議)是用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。

它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,

以及哪部分內(nèi)容首先顯示(如文本先于圖形)等。

HTTP是一個應(yīng)用層協(xié)議,由請求和響應(yīng)構(gòu)成,是一個標(biāo)準的客戶端服務(wù)器模型。HTTP是一個無狀態(tài)的協(xié)議。

http://cimc-express.com/ 是哥URL,叫統(tǒng)一資源定位符。 HTTP稱為協(xié)議,cimc-express.com是一個域名,表示互聯(lián)網(wǎng)上

的一個位置。瀏覽器會將cimc-express.com解析為IP地址,HTTP 是基于TCP協(xié)議的,要先建立TCP連接。

目前使用的HTTP協(xié)議大部分是1.1. 在1.1協(xié)議里面,默認開啟了Keep-Alive,這樣建立的TCP連接,可以在多次請求中復(fù)用。

計算機網(wǎng)絡(luò)之十二:HTTP協(xié)議

二:HTTP發(fā)送報文

HTTP報文大概分為三大部分。第一部分是請求行,第二部分是請求的首部,第三部分是請求的正文實體。

計算機網(wǎng)絡(luò)之十二:HTTP協(xié)議

1.請求行

URL就是http://cimc-express.com,版本是HTTP1.1,HTTP中的方法類型有:

GET: 去服務(wù)器端獲取資源,對于訪問網(wǎng)頁來講,獲取的是一個頁面;對于一個基于HTTP協(xié)議的API,返回的可能是一個

JSON字符串

POST: 向服務(wù)器端提交資源

PUT: 向服務(wù)器端提交資源,POST往往是用來創(chuàng)建一個資源,PUT往往是用來修改一個資源

DELETE: 刪除資源

2.首部

首部是key:value形式,保存一些非常重要的字段。Accept-Charset表示客戶端可以接受的字符集,Content-Type指正文的

格式,Cache-Control是用來控制緩存的。

3.正文實體

三:HTTP數(shù)據(jù)發(fā)送

1.HTTP協(xié)議是基于TCP協(xié)議的,它使用面向連接的方式發(fā)送請求,通過stream二進制流的方式傳給對方。到了TCP層,會把

二進制流變成一個報文段發(fā)送給服務(wù)器。

2.在發(fā)送每個報文段的時候,都需要對方有一個回應(yīng)ACK,來保證報文可靠到達了對方。如果沒有回應(yīng),那么TCP這一層會

進行重新傳輸,直到可以到達。同一個包 有可能被傳了多次,但是HTTP這一層不知道這一點。

3.TCP層發(fā)送每一個報文的時候,都需要加上自己的地址(源地址)和它想要去的地址(目標(biāo)地址),將這兩個信息放到IP頭

里面,交給IP層進行傳輸。

4.IP層需要查看目標(biāo)地址和自己是否在同一個局域網(wǎng)。如果是,就發(fā)送ARP協(xié)議來請求這個目標(biāo)地址對應(yīng)的MAC地址,然后將

源MAC地址和目標(biāo)MAC地址放入MAC頭, 發(fā)送出去即可;如果否,就需要發(fā)送到網(wǎng)關(guān),還需要發(fā)送ARP協(xié)議,來獲取網(wǎng)關(guān)的

MAC地址,然后將源MAC地址和網(wǎng)關(guān)MAC放入MAC頭,發(fā)送出去。

5.網(wǎng)關(guān)收到包發(fā)現(xiàn)MAC符合,取出目標(biāo)IP地址,根據(jù)路由協(xié)議找到下一跳的路由器,獲取下一條路由器的MAC地址,將包發(fā)

給嚇一跳路由。

6.目標(biāo)的機器發(fā)現(xiàn)MAC地址符合,就將包收起來;發(fā)現(xiàn)IP地址符合,根據(jù)IP頭重協(xié)議項,知道自己上一層是TCP協(xié)議,于是解

析TCP的頭,里面有序列號,需要看看這個序列 號是不是我要的,如果是就放入緩存中然后返回一個ACK,如果不是就丟棄

7.TCP頭里面還有端口號,HTTP的服務(wù)器正在監(jiān)聽這個端口號。于是,目標(biāo)機器自然知道是HTTP服務(wù)器這個進程想要這個包,

于是將包發(fā)給HTTP服務(wù)器。HTTP服務(wù)器的進程 看到,原來這個請求是要訪問一個網(wǎng)頁,于是就把這個網(wǎng)頁發(fā)送給客戶端。

四:HTTP返回報文

計算機網(wǎng)絡(luò)之十二:HTTP協(xié)議

1.狀態(tài)碼

200:交易成功,400:錯誤請求  404:沒有發(fā)現(xiàn)文件、查詢或URl  500:內(nèi)部服務(wù)器錯誤 502:網(wǎng)關(guān)錯誤

2.返回首部key:value.  Retry-After表示客戶端應(yīng)該在多長時間以后再次嘗試一下,Content-Type表示返回的是HTML,還是

JSON。

3.構(gòu)造好了返回的HTTP報文,接下來就是把這個報文發(fā)送出去。是交給Socket去發(fā)送,還是交給TCP層,讓TCP層將返回的

HTML,也分成一個個小的段,并且保證每個段都可靠 到達。

五:HTTP2.0

1.HTTP1.1在應(yīng)用層以純文本的形式進行通信,每次通信都要帶完整的HTTP的頭,而且不考慮pipeline模式的話,每次的過程

總是一去一回。這樣在實時性和并發(fā)性上都存在問題。

2.HTTP2.0會對HTTP頭進行一定的壓縮,將原來每次都要攜帶的大量key:value在兩端建立一個索引表,對相同的頭只發(fā)送

索引表中的索引。

3.HTTP2.0協(xié)議將一個TCP的連接中,切分成多個流,每個流都有自己的ID,而且流可以是客戶端發(fā)往服務(wù)端,也可以是服務(wù)

端發(fā)往客戶端,它其實只是一個虛擬的通道,流是有 優(yōu)先級的

4.HTTP2.0還將所有的傳輸信息分割為更小的消息和幀,并對它們采用二級制格式編碼。常見的幀有Header幀,用于傳輸

Header內(nèi)容,并且會開啟一個新的流。再就是Data幀,用來 傳輸正文實體,多個Data屬于同一個流。

5.通過這兩種機制,HTTP2.0的客戶端可以將多個請求分到不同的流中,然后將請求內(nèi)容拆成幀,進行二進制傳輸。這些幀可

以打散亂序發(fā)送,然后根據(jù)每個幀首部的流標(biāo)識符重新組裝 ,并且可以根據(jù)優(yōu)先級,決定優(yōu)先處理哪個流的數(shù)據(jù)。

舉例: 一個頁面要發(fā)送三個獨立的請求,一個獲取css,一個獲取js,一個獲取圖片jpg. 如果使用HTTP 1.1 就是串行的;但是如果

使用HTTP 2.0,就可以在一個連接里,客戶端和服務(wù)端都可以 同時發(fā)送多個請求或回應(yīng),而且不用按照順序一對一對應(yīng)。

計算機網(wǎng)絡(luò)之十二:HTTP協(xié)議

HTTP2.0成功解決了HTTP1.1的隊首阻塞問題,同時,也不需要通過HTTP 1.X的pipeline機制用多條TCP連接來實現(xiàn)并行請求

與響應(yīng);減少了TCP連接數(shù)對服務(wù)器性能的影響,同時將頁面的 多個數(shù)據(jù)css,js,jpg等通過一個數(shù)據(jù)連接進行傳輸,能夠加快頁

面組件的傳輸速度。

六:QUIC

HTTP 2.0雖然大大增加了并發(fā)性,但還是有問題的。因為HTTP 2.0也是基于TCP協(xié)議的,TCP協(xié)議在處理包時是有嚴格順序的

。Google的QUIC協(xié)議基于UDP實現(xiàn),包含自定義連接機制,

自定義重傳機制,無阻塞多路復(fù)用和自定義流量控制。

分享名稱:計算機網(wǎng)絡(luò)之十二:HTTP協(xié)議-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://bm7419.com/article0/dioeoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、品牌網(wǎng)站設(shè)計網(wǎng)站維護、微信小程序、服務(wù)器托管、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)