keepalive瀏覽器
Http 協議中有一個keep-alive的狀態,Tcp 三次握手中也有一個keep-alive的狀態,從字面上看就多了一個'-',它們兩個是徹底不一樣的。
服務器
1、Http協議中的keep-alive:tcp
在訪問一個頁面的過程當中,會請求不少次服務器去獲取不一樣的網頁內容,而http的每次請求都是無鏈接的,請求->發送->關閉,因此在屢次請求的過程當中會使用不一樣的tcp端口號和sockfd,這樣會發生屢次的斷開和連接tcp的過程,能夠想象這種狀況對於服務器而言是想當不利的。ide
下面是我作的一個實驗:個人搭建的服務器在一次網頁請求中發生的連接和斷開spa
能夠看出,整個過程發生了3次連接和關閉的過程。blog
而 http 中keep-alive的做用就是複用tcp,在瀏覽器請求服務器http服務時,ci
服務器將保持當前的tcp連接一段時間,這個時間是能夠經過keepalive_timeoutget
設置的。it
瀏覽器在HTTP1.1下的keep-alive都是默認開啓的。
io
2、TCP下的keepalive
TCP下的keepalive :
這個keepalive是一種檢測TCP連接情況的保險措施,它會每隔必定的時間就去
client發送個數據,經過client端的反應來採起相應的措施。
因此:徹底不一樣的兩個keepalive