1.結構總覽
??
??在http協議這一章,我將先后介紹上圖六個部分,本文先介紹http的協議版本。
2.http協議版本
? http協議的歷史并不長,從1991的0.9版本到現在(2017)僅僅才20多年,算算下來,http還是正處青年,正是大好發展的好時光。雖然短短不到27年,卻改變了人類認識世界的方式。在這里,必須給偉大的先賢們鞠躬致敬。
? 0.9版本功能十分簡單,僅僅一個get功能,get翻譯過來就是獲得,在這里指獲取資源。因為功能簡陋,自然得不到很大的應用,所以在五年之后發布了新的版本1.0。
? 1.0版本內容豐富,增加了很多的功能。get獲取資源,post發送資源,head保存了資源的首部信息。多用途互聯網郵件擴展(MIME,Multipurpose Internet Mail Extensions)是一個互聯網標準,它擴展了電子郵件標準,支持多媒體數據傳送,極大了豐富了http協議。
? http1.0版本請求格式形如這樣: ? ?
1 2 3 | ???? GET?/?HTTP/1.0 ???? User-Agent:?Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_10_5) ???? Accept:?*/* |
?回應格式形如這樣: ? ?
1 2 3 4 5 6 7 8 9 | ???? 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 3 4 5 6 | ???? 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.同時多開持久連接 |
?減少請求數很好理解,不再啰嗦。多開持久連接,本質上也是減少請求數,規避不必要的去頻繁斷開。因這兩種方式,由此產生了很多解決技巧,技巧有如下:
1 2 3 | ???? 1.合并腳本和樣式表, ???? 2.將圖片嵌入CSS代碼 ???? 3.域名分片(domain?sharding) |
?基于效率以及安全的考慮,http2強勢登場。http2的前身是google公司的SPDY協議,SPDY協議非常強大,http研發工程師,自感亞歷山大,所以又火急火燎地研發除了http2協議。http2有如下特點:
1 2 3 4 5 6 | ???? 1.前身:SPDY?協議(google) ???? 2.徹底的二進制協議,頭信息和數據體都是二進制,效率提升,加大安全 ???? 3.多路復用(MultiPlexing),即連接共享,規避隊頭堵塞 ???? 4.數據流傳輸,增加傳輸效率 ???? 5.頭信息壓縮,減小了傳輸的大小 ???? 6.服務器推送 |
?至此,http協議版本介紹完畢,感謝觀賞,下一節介紹一次完整的http請求過程。
本文轉自 PowerMichael 51CTO博客,原文鏈接:http://blog.51cto.com/huwho/1931998,如需轉載請自行聯系原作者