TCP 自己實(shí)現(xiàn)的一種檢測心跳情況的機(jī)制。
?基于TCP打開的鏈接,會(huì)伴隨一些計(jì)時(shí)器(timer),有些計(jì)時(shí)器是用來管理keepalive的,當(dāng)計(jì)時(shí)器趨于 0 的時(shí)候(一般也就是整個(gè)鏈接鏈路空閑,沒有數(shù)據(jù)傳輸?shù)臅r(shí)候),會(huì)觸發(fā)keepalive 端向另一端發(fā)送ack (相關(guān)參數(shù):tcp_keepalive_time,該參數(shù)決定idle時(shí)間為多少是發(fā)送ack),如果這個(gè)ack沒有正常的回復(fù),則會(huì)觸發(fā)一個(gè)ack探針發(fā)送(相關(guān)參數(shù):tcp_keepalive_probes,該參數(shù)決定發(fā)送探針應(yīng)該發(fā)送幾次才斷掉連接),探針發(fā)送頻率(相關(guān)參數(shù):tcp_keepalive_intvl,每個(gè)探針發(fā)送間隔時(shí)間)決定探針發(fā)送速度。當(dāng)探針發(fā)送足夠而且沒有回復(fù),則TCP協(xié)議會(huì)關(guān)掉這條連接。
相關(guān)文檔:
http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/
http://www.blogjava.net/yongboy/archive/2015/04/14/424413.html
http://www.cnblogs.com/fengbohello/p/4250177.html
https://hengyunabc.github.io/why-we-need-heartbeat/