HTTP Keep-Alive
在HTTP 1.0以前,每個http請求都要求打開一個TCP socket連接飞涂,并且使用一次之后就斷開這個TCP連接旦部,這會導(dǎo)致頻繁地創(chuàng)建和銷毀TCP。HTTP 1.1通過使用keep-alive可以改善這種狀態(tài)较店,即在一次TCP連接中可以持續(xù)發(fā)送多份數(shù)據(jù)而不會斷開連接士八。
TCP KEEPALIVE
這是TCP協(xié)議棧為了檢測連接狀況的保活機制梁呈,當(dāng)TCP空閑一定時間后會發(fā)送心跳包給對方婚度,
如果對端回復(fù)ACK后,就認為對端是存活的官卡,重置定時器蝗茁;
如果對端回復(fù)RST應(yīng)答(對端崩潰或者其他原因醋虏,導(dǎo)致的復(fù)位),那就關(guān)閉該連接哮翘;
如果對端無任何回應(yīng)灰粮,那就會出發(fā)超時重傳,直到達到重傳的次數(shù)忍坷,如果對端依然沒有回復(fù)粘舟,那么就關(guān)閉該連接。
HTTP位于網(wǎng)絡(luò)協(xié)議棧的應(yīng)用層佩研,而TCP位于網(wǎng)絡(luò)協(xié)議棧的傳輸層柑肴,兩者的KEEP-ALIVE雖然名稱相同,但是作用不同旬薯。HTTP是為了重用TCP晰骑,避免每次請求,都重復(fù)創(chuàng)建TCP绊序;而TCP的KEEP-ALIVE是一種彼队撸活機制,檢測對端是否依然存活骤公。