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