標籤:http http協議 http協議版本
httpd協議之http協議版本
1.結構總覽
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/97/C9/wKioL1kyuazTOXDFAABFCiDhnU0272.png" title="Image 6-http協議分析.png" width="480" height="229" border="0" hspace="0" vspace="0" style="width:480px;height:229px;" alt="wKioL1kyuazTOXDFAABFCiDhnU0272.png" />
在http協議這一章,我將先後介紹六個部分,本文先介紹http的協議版本。
2.http協議版本
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/97/C7/wKiom1kyumOy55t4AAAhzZljj44537.png" title="Image 7-http-version.png" alt="wKiom1kyumOy55t4AAAhzZljj44537.png" />
http協議的曆史並不長,從1991的0.9版本到現在(2017)僅僅才20多年,算算下來,http還是正處青年,正是大好發展的好時光。雖然短短不到27年,卻改變了人類認識世界的方式。在這裡,必須給偉大的先賢們鞠躬致敬。
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/97/C7/wKiom1kyvALTOwIwAACB_MQAMRg571.png" title="Image 8-version0.9.png" width="480" height="343" border="0" hspace="0" vspace="0" style="width:480px;height:343px;" alt="wKiom1kyvALTOwIwAACB_MQAMRg571.png" />
0.9版本功能十分簡單,僅僅一個get功能,get翻譯過來就是獲得,在這裡指擷取資源。因為功能簡陋,自然得不到很大的應用,所以在五年之後發布了新的版本1.0。
1.0版本內容豐富,增加了很多的功能。get擷取資源,post發送資源,head儲存了資源的首部資訊。多用途互連網郵件擴充(MIME,Multipurpose Internet Mail Extensions)是一個互連網標準,它擴充了電子郵件標準,支援多媒體資料傳送,極大了豐富了http協議。
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/97/C9/wKioL1kyvXrTnyG9AABEuFqPHtw111.png" title="Image 10-1.0version.png" width="480" height="173" border="0" hspace="0" vspace="0" style="width:480px;height:173px;" alt="wKioL1kyvXrTnyG9AABEuFqPHtw111.png" />
http1.0版本請求格式形如這樣:
GET / HTTP/1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
Accept: */*
回應格式形如這樣:
HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 137582
Expires: Thu, 05 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84
<html>
<body>Hello World</body>
</html>
儘管http1.0功能已經十分強大,但仍然還有缺點。每個TCP串連只能發送一個請求,因此TCP串連的建立成本很高,效率低下,因此後來引入了keep-alive機制,即持久串連。簡單理解,即長時間串連不間斷。
http1.0功能十分強大,因此加大了人們對http協議的依賴,有了廣泛的應用與觀眾的掌聲,http協議的研發人員像是打了雞血一般,僅僅時隔半年版就發布了http1.1。人們常說慢工出細活,對不起,在這不適用。在這裡更像是時間的濃縮的產品就是精華。http1.1功能更為強大,以至於到今天還在應用。
http1.1協議的優點如下:
1.增強了緩衝功能,目前流行版本
2.引入了持久串連(persistent connection)
3.引入了管道機制(pipelining),用戶端可以同時發送多個請求。
4.引入Content-Length欄位,標記內容長度
5.引入分塊傳輸編碼,極大增加了傳輸的速度
6.更豐富的method:GET, POST, HEAD,PUT, DELETE,TRACE, OPTIONS,HOST
http1.1的資料按次序通訊,有隊頭堵塞問題。阻塞了自然要疏通,疏通的常見方式有兩種:
1.減少請求數
2.同時多開持久串連
減少請求數很好理解,不再囉嗦。多開持久串連,本質上也是減少請求數,規避不必要的去頻繁斷開。因這兩種方式,由此產生了很多解決技巧,技巧有如下:
1.合并指令碼和樣式表,
2.將圖片嵌入CSS代碼
3.網域名稱分區(domain sharding)
基於效率以及安全的考慮,http2強勢登場。http2的前身是google公司的SPDY協議,SPDY協議非常強大,http研發工程師,自感亞曆山大,所以又火急火燎地研發除了http2協議。http2有如下特點:
1.前身:SPDY 協議(google)
2.徹底的二進位協議,頭資訊和資料體都是二進位,效率提升,加大安全
3.多工(MultiPlexing),即串連共用,規避隊頭堵塞
4.資料流傳輸,增加傳輸效率
5.頭資訊壓縮,減小了傳輸的大小
6.伺服器推送
至此,http協議版本介紹完畢,感謝觀賞,下一節介紹一次完整的http請求過程。
參考資料:
本文出自 “完成比完美更重要” 部落格,請務必保留此出處http://powermichael.blog.51cto.com/12450987/1931998
思維導圖分析http之http協議版本