1. 程式人生 > >HTTP協議,keep-alive優化

HTTP協議,keep-alive優化

圖解傳說中的HTTP協議

HTTP協議詳解

HTTP協議與TCP/IP協議的關係

HTTP的長連線和短連線本質上是TCP長連線和短連線。HTTP屬於應用層協議,在傳輸層使用TCP協議,在網路層使用IP協議。 IP協議主要解決網路路由和定址問題,TCP協議主要解決如何在IP層之上可靠地傳遞資料包,使得網路上接收端收到傳送端所發出的所有包,並且順序與傳送順序一致。TCP協議是可靠的、面向連線的。

如何理解HTTP協議是無狀態的

無狀態是指協議對於事務處理沒有記憶能力,兩次http請求之間沒有任何聯絡

長連線和短連線

HTTP/1.0中預設使用短連結,即客戶端和服務端每進行一次http操作就建立一次連線,任務結束就中斷連線。
從HTTP/1.1起,預設使用長連線,用以保持連線特性。使用長連線的http協議會在響應頭加入這行程式碼

Connection:keep-alive

apache優化

關閉KeepAlive ,可以節省記憶體,但連線增多,消耗更多的cpu,是否開啟要視情況而定
詳情參考:apache的keepalive和keepalivetimeout(apache優化)https://www.cnblogs.com/wanshutao/p/5084648.html

在使用長連線的情況下,當一個網頁開啟完成後,客戶端和伺服器之間用於傳輸HTTP資料的TCP連線不會關閉,客戶端再次訪問這個伺服器時,會繼續使用這一條已經建立的連線。Keep-Alive不會永久保持連線,它有一個保持時間,可以在不同的伺服器軟體(如Apache)中設定這個時間。實現長連線需要客戶端和服務端都支援長連線。
HTTP協議的長連線和短連線,實質上是TCP協議的長連線和短連線。

TCP連線

當網路通訊時採用TCP協議時,在真正的讀寫操作之前,客戶端與伺服器端之間必須建立一個連線,當讀寫操作完成後,雙方不再需要這個連線時可以釋放這個連線。連線的建立依靠“三次握手”,而釋放則需要“四次握手”,所以每個連線的建立都是需要資源消耗和時間消耗的。