本文為《三萬長文50+趣圖帶你領悟web編程的內功心法》第二個章節,
2、初識HTTP/1.1
接下來我們先來簡單介紹下HTTP/1.1的優缺點,好讓大家對它有個認識,然后再進一步深入了解,
2.1、可擴展
正是因為HTTP規范中限制很少,告訴你可以做什么,但是不會告訴你各種條條框框不能做什么,所以,很容易擴展,這也是為什么從HTTP/0.9誕生,一直擴展升級,添加更多的特性的原因,

2.2、傳輸可靠性
由于底層是基于TCP協議的,所以繼承了TCP傳輸資料的可靠性,主要體現在[1]:
- 資料的順序傳輸;
- 丟包重傳,保證可靠;
- 連接維護;
- 流量控制,保證穩定;
- 擁塞控制,及時調整,最大程度保證傳輸正常進行,
2.3、基于請求應答模式
只有一方先主動發起連接和請求之后,接收方才可以進行回應,HTTP正是基于這種一問一答的請求應答模式,如果客戶端不請求,服務端就不會搭理客戶端,
雖然后面HTTP/2出現了服務端推送[2],但是也是針對特定資源的推送,并不是服務端想推送什么就推送什么,
2.4、無狀態
有狀態意味著一定會通過某種狀態標識為去追蹤狀態,就像TCP的狀態機,TCP請求頭有特定的狀態標識位來維護連接的狀態,
HTTP并沒有提供記錄狀態的地方,也就是說在互動性場景中,HTTP沒有記憶能力,這就會導致這樣的問題:
- 同一個用戶多次訪問一個網站,都需要重復讀做身份驗證,
即使開啟了keep-alive機制,也只是TCP層面的維持連接,對于HTTP層來說,看起來還是無狀態的,
我們不能每次都要讓用戶輸入賬號密碼進行身份驗證吧,為此才會出現Cookie和Session,為HTTP彌補了狀態存盤的問題,
2.5、明文傳輸,不安全
我們通過抓包工具抓HTTP/1.1的包,通過肉眼都可以看到請求頭和請求體里面的內容,那么用戶登錄請求的時候,傳輸的賬號密碼以下子就可以捕獲到了,
我們知道,資料在網路中請求的鏈路是很漫長的,只要任何一個環節抓到了你的包,你的資料就泄露了,這也是為什么要推出HTTPS的原因,
2.6、性能較差(請求-應答)
由于使用請求應答機制,每次都需要傳一大段請求頭,效率比較差,
另外,HTTP/1.1基于請求-應答模式,在應用層存在隊頭阻塞問題,并且TCP層同樣會存在TCP的隊頭阻塞問題,導致性能比較差,需要通過各種奇門妙招去優化網路請求,
效率問題正是促使HTTP/2、HTTP/3誕生的原因之一,
本文為arthinking基于相關技術資料和官方檔案撰寫而成,確保內容的準確性,如果你發現了有何錯漏之處,煩請高抬貴手幫忙指正,萬分感激,
如果您覺得讀完本文有所識訓的話,可以關注我的賬號,或者點贊吧,碼字不易,您的支持就是我寫作的最大動力,再次感謝!
為了把相關系列文章收集起來,方便后續查閱,這里我創建了一個Github倉庫,把發布的文章按照分類收集起來了,感興趣的朋友可以Star跟進:
https://github.com/arthinking/java-tech-stack

關注我的博客IT宅(itzhai.com)或者公眾號Java架構雜談,及時獲取最新的文章,我將持續更新后端相關技術,涉及JVM、Java基礎、架構設計、網路編程、資料結構、資料庫、演算法、并發編程、分布式系統等相關內容,
References
- 謝希仁. 計算機網路(第6版). 電子工業出版社.
- TCP/IP詳解 卷1:協議(原書第2版). 機械工業出版社.
- UNIX網路編程 卷1:套接字聯網API. 人民郵電出版社
- HTTP權威指南. 人民郵電出版社
- HTTP/2基礎教程. 人民郵電出版社
- 劉超. 趣談網路協議. 極客時間
- 羅劍鋒. 透視HTTP協議.極客時間
本文同步發表于我的博客IT宅(itzhai.com)和公眾號(Java架構雜談)
作者:arthinking | 公眾號:Java架構雜談
博客鏈接:https://www.itzhai.com/articles/getting-to-know-http-1-1.html
著作權宣告: 著作權歸作者所有,未經許可不得轉載,侵權必究!聯系作者請加公眾號,
兩萬字長文50+張趣圖帶你領悟網路編程的內功心法-TCP特點. Retrieved from https://www.itzhai.com/network/comprehend-the-underlying-principles-of-network-programming.html#4-2-2%E3%80%81TCP%E7%89%B9%E7%82%B9 ??
技術干貨:HTTP/2 之服務器推送 (Server Push) 最佳實踐. Retrieved from https://www.infoq.cn/article/qYdN85t4G4dL4vBAe3N2 ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/261978.html
標籤:其他
