一:HTTP簡介
網站建設哪家好,找成都創新互聯!專注于網頁設計、網站建設、微信開發、微信小程序開發、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了太仆寺免費建站歡迎大家使用!HTTP是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫。
它的發展是萬維網協會(World Wide Web Consortium)和Internet工作小組
IETF(Internet Engineering Task Force)合作的結果,(他們)最終發布了一系列的RFC,RFC 1945定義了HTTP/1.0版本。
其中最著名的就是RFC 2616。RFC 2616定義了今天普遍使用的一個版本——HTTP 1.1。
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用于從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。
它可以使瀏覽器更加高效,使網絡傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,
以及哪部分內容首先顯示(如文本先于圖形)等。
HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端服務器模型。HTTP是一個無狀態的協議。
http://cimc-express.com/ 是哥URL,叫統一資源定位符。 HTTP稱為協議,cimc-express.com是一個域名,表示互聯網上
的一個位置。瀏覽器會將cimc-express.com解析為IP地址,HTTP 是基于TCP協議的,要先建立TCP連接。
目前使用的HTTP協議大部分是1.1. 在1.1協議里面,默認開啟了Keep-Alive,這樣建立的TCP連接,可以在多次請求中復用。
二:HTTP發送報文
HTTP報文大概分為三大部分。第一部分是請求行,第二部分是請求的首部,第三部分是請求的正文實體。
1.請求行
URL就是http://cimc-express.com,版本是HTTP1.1,HTTP中的方法類型有:
GET: 去服務器端獲取資源,對于訪問網頁來講,獲取的是一個頁面;對于一個基于HTTP協議的API,返回的可能是一個
JSON字符串
POST: 向服務器端提交資源
PUT: 向服務器端提交資源,POST往往是用來創建一個資源,PUT往往是用來修改一個資源
DELETE: 刪除資源
2.首部
首部是key:value形式,保存一些非常重要的字段。Accept-Charset表示客戶端可以接受的字符集,Content-Type指正文的
格式,Cache-Control是用來控制緩存的。
3.正文實體
三:HTTP數據發送
1.HTTP協議是基于TCP協議的,它使用面向連接的方式發送請求,通過stream二進制流的方式傳給對方。到了TCP層,會把
二進制流變成一個報文段發送給服務器。
2.在發送每個報文段的時候,都需要對方有一個回應ACK,來保證報文可靠到達了對方。如果沒有回應,那么TCP這一層會
進行重新傳輸,直到可以到達。同一個包 有可能被傳了多次,但是HTTP這一層不知道這一點。
3.TCP層發送每一個報文的時候,都需要加上自己的地址(源地址)和它想要去的地址(目標地址),將這兩個信息放到IP頭
里面,交給IP層進行傳輸。
4.IP層需要查看目標地址和自己是否在同一個局域網。如果是,就發送ARP協議來請求這個目標地址對應的MAC地址,然后將
源MAC地址和目標MAC地址放入MAC頭, 發送出去即可;如果否,就需要發送到網關,還需要發送ARP協議,來獲取網關的
MAC地址,然后將源MAC地址和網關MAC放入MAC頭,發送出去。
5.網關收到包發現MAC符合,取出目標IP地址,根據路由協議找到下一跳的路由器,獲取下一條路由器的MAC地址,將包發
給嚇一跳路由。
6.目標的機器發現MAC地址符合,就將包收起來;發現IP地址符合,根據IP頭重協議項,知道自己上一層是TCP協議,于是解
析TCP的頭,里面有序列號,需要看看這個序列 號是不是我要的,如果是就放入緩存中然后返回一個ACK,如果不是就丟棄
7.TCP頭里面還有端口號,HTTP的服務器正在監聽這個端口號。于是,目標機器自然知道是HTTP服務器這個進程想要這個包,
于是將包發給HTTP服務器。HTTP服務器的進程 看到,原來這個請求是要訪問一個網頁,于是就把這個網頁發送給客戶端。
四:HTTP返回報文
1.狀態碼
200:交易成功,400:錯誤請求 404:沒有發現文件、查詢或URl 500:內部服務器錯誤 502:網關錯誤
2.返回首部key:value. Retry-After表示客戶端應該在多長時間以后再次嘗試一下,Content-Type表示返回的是HTML,還是
JSON。
3.構造好了返回的HTTP報文,接下來就是把這個報文發送出去。是交給Socket去發送,還是交給TCP層,讓TCP層將返回的
HTML,也分成一個個小的段,并且保證每個段都可靠 到達。
五:HTTP2.0
1.HTTP1.1在應用層以純文本的形式進行通信,每次通信都要帶完整的HTTP的頭,而且不考慮pipeline模式的話,每次的過程
總是一去一回。這樣在實時性和并發性上都存在問題。
2.HTTP2.0會對HTTP頭進行一定的壓縮,將原來每次都要攜帶的大量key:value在兩端建立一個索引表,對相同的頭只發送
索引表中的索引。
3.HTTP2.0協議將一個TCP的連接中,切分成多個流,每個流都有自己的ID,而且流可以是客戶端發往服務端,也可以是服務
端發往客戶端,它其實只是一個虛擬的通道,流是有 優先級的
4.HTTP2.0還將所有的傳輸信息分割為更小的消息和幀,并對它們采用二級制格式編碼。常見的幀有Header幀,用于傳輸
Header內容,并且會開啟一個新的流。再就是Data幀,用來 傳輸正文實體,多個Data屬于同一個流。
5.通過這兩種機制,HTTP2.0的客戶端可以將多個請求分到不同的流中,然后將請求內容拆成幀,進行二進制傳輸。這些幀可
以打散亂序發送,然后根據每個幀首部的流標識符重新組裝 ,并且可以根據優先級,決定優先處理哪個流的數據。
舉例: 一個頁面要發送三個獨立的請求,一個獲取css,一個獲取js,一個獲取圖片jpg. 如果使用HTTP 1.1 就是串行的;但是如果
使用HTTP 2.0,就可以在一個連接里,客戶端和服務端都可以 同時發送多個請求或回應,而且不用按照順序一對一對應。
HTTP2.0成功解決了HTTP1.1的隊首阻塞問題,同時,也不需要通過HTTP 1.X的pipeline機制用多條TCP連接來實現并行請求
與響應;減少了TCP連接數對服務器性能的影響,同時將頁面的 多個數據css,js,jpg等通過一個數據連接進行傳輸,能夠加快頁
面組件的傳輸速度。
六:QUIC
HTTP 2.0雖然大大增加了并發性,但還是有問題的。因為HTTP 2.0也是基于TCP協議的,TCP協議在處理包時是有嚴格順序的
。Google的QUIC協議基于UDP實現,包含自定義連接機制,
自定義重傳機制,無阻塞多路復用和自定義流量控制。
分享名稱:計算機網絡之十二:HTTP協議-創新互聯
網站URL:http://m.newbst.com/article0/dioeoo.html
成都網站建設公司_創新互聯,為您提供面包屑導航、品牌網站設計、網站維護、微信小程序、服務器托管、標簽優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯