老李谈HTTP1.1的长连接
老李談HTTP1.1的長連接
poptest是國內唯一一家培養測試開發工程師的培訓機構,以學員能勝任自動化測試,性能測試,測試工具開發等工作為目標。如果對課程感興趣,請大家咨詢qq:908821478,咨詢電話010-84505200。
HTTP是一個構建在傳輸層的TCP協議之上的應用層的協議,在這個層的協議,是一種網絡交互需要遵守的一種協議規范。
?
HTTP1.0的短連接
HTTP 1.0規定瀏覽器與服務器只保持短暫的連接,瀏覽器的每次請求都需要與服務器建立一個TCP連接,服務器完成請求處理后立即斷開TCP連接,服務器不跟蹤每個客戶也不記錄過去的請求。這個過程大概可以描述為:
1、建立連接:首先DNS解析過程。如把域名變成一個ip,如果url不包含端口號,則會使用該協議的默認端口號,HTTP協議的默認端口號為80。然后三次握手建立一個TCP連接;
2、請求:連接成功后,開始向web服務器發送請求,這個請求一般是GET或POST請求。
3、應答:web服務器收到這個請求,進行處理。web服務器會把文件內容傳送給響應的web瀏覽器。包括:HTTP頭信息,體信息。
4、關閉連接:當應答結束后,web瀏覽器與web服務器必須四次握手斷開連接,以保證其它web瀏覽器能夠與web服務器建立連接。
?
HTTP1.1的長連接
但是HTTP1.1開始默認建立的是長連接,即一旦瀏覽器發起HTTP請求,建立的連接不會請求應答之后立刻斷掉。
?
1、 一個復雜的具備很多HTTP資源的網頁會建立多少TCP連接,如何使用這些連接?
2、 已經建立的TCP連接是否會自動斷開,時間是多久?
?
對于第一個問題。現在瀏覽器都有最大并發連接數限制,應該說如果需要,就會盡量在允許范圍內建立更多的TCP持久連接來處理HTTP請求,同樣滴,一個TCP持久連接可以不斷傳輸多個HTTP請求,但是如果上一個請求的響應還未收到,則不能處理下一個請求(Pipeling管道技術可以解決這個問題從而進一步提升性能),所以說很多瀏覽器其實都可以修改允許最大并發連接數以提升瀏覽網頁的速度。
?
對于第二個問題。問題在于服務器端對于長連接的實現,特別是在對長連接的維護上。FTP協議及SMTP協議中有NOOP消息,這個就可以認為是心跳報文,但HTTP協議沒有類似的消息,這樣服務器端只能使用超時斷開的策略來維護連接。設想超時時間非常短,那么有效空閑時間就非常短,換句話講:一旦鏈路上沒有數據發送,服務器端很快就關閉連接。
也就是說其實HTTP的長連接很容易在空閑后自動斷開,一般來說這個時間是300s左右。
轉載于:https://www.cnblogs.com/poptest/p/5210636.html
總結
以上是生活随笔為你收集整理的老李谈HTTP1.1的长连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [HTML]HTML5实现可编辑表格
- 下一篇: Petya and Staircases