keepalive自動(dòng)切換原理 keepalive默認(rèn)保持多久?
keepalive默認(rèn)保持多久?K設(shè)置移動(dòng)網(wǎng)絡(luò)“始終連接數(shù)據(jù)業(yè)務(wù)”什么意思?應(yīng)用層設(shè)置周期性心跳keepalives,被TCP視為應(yīng)用數(shù)據(jù)。毫無(wú)疑問(wèn),一旦這些生活不 如果在超時(shí)時(shí)間內(nèi)沒(méi)有收到來(lái)自另一個(gè)
keepalive默認(rèn)保持多久?
K
設(shè)置移動(dòng)網(wǎng)絡(luò)“始終連接數(shù)據(jù)業(yè)務(wù)”什么意思?
應(yīng)用層設(shè)置周期性心跳keepalives,被TCP視為應(yīng)用數(shù)據(jù)。毫無(wú)疑問(wèn),一旦這些生活不 如果在超時(shí)時(shí)間內(nèi)沒(méi)有收到來(lái)自另一個(gè)TCP的ACK,它們將繼續(xù)重新傳輸。至于最大重傳次數(shù),取決于具體TCP協(xié)議的實(shí)現(xiàn)。一般至少會(huì)重傳8次,重傳間隔會(huì)越來(lái)越長(zhǎng),以避免網(wǎng)絡(luò)融合對(duì)TCP連接的短期影響。
上面最后一句有點(diǎn)難以理解。意味著即使當(dāng)前使用的路徑斷開(kāi),路由協(xié)議也會(huì)動(dòng)態(tài)選擇新的物理鏈路,因此后續(xù)的TCP重傳消息會(huì)使用新的鏈路到達(dá)目的地,從而避免TCP超時(shí)斷線的風(fēng)險(xiǎn)。
所以不是說(shuō)只有TCP斷開(kāi)再重新連接才會(huì)選擇更好的路徑。移動(dòng)網(wǎng)絡(luò)的IP層將實(shí)時(shí)更新最新和最佳路徑。這是TCP消息所依賴的IP網(wǎng)絡(luò)平臺(tái)的特性。不管你喜不喜歡,一直都是這樣的表現(xiàn)!
接下來(lái)的一些內(nèi)容將有助于讀者理解TCP長(zhǎng)連接。
TCP長(zhǎng)連接的存在可以優(yōu)化客戶端訪問(wèn)服務(wù)器的訪問(wèn)效率。沒(méi)有長(zhǎng)TCP連接,客戶端每次訪問(wèn)服務(wù)器都需要三次握手,增加了1.5RTT時(shí)延。
但是,如果存在長(zhǎng)TCP連接,客戶端在建立TCP連接時(shí)可以節(jié)省1.5RTT。
但是,凡事有利有弊。長(zhǎng)TCP連接的存在,如果沒(méi)有數(shù)據(jù)刷新,至少有一個(gè)風(fēng)險(xiǎn):移動(dòng)網(wǎng)絡(luò)使用NAT技術(shù)。換句話說(shuō),到NAT設(shè)備的長(zhǎng)TCP連接作為NAT條目存在,它有一個(gè)生命周期。如果沒(méi)有數(shù)據(jù)刷新,2-20分鐘后刪除。
一旦刪除,當(dāng)客戶端和服務(wù)器的數(shù)據(jù)到達(dá)NAT設(shè)備時(shí),是否會(huì)重新創(chuàng)建NAT條目?
不要!
如何處理NAT設(shè)備?
扔過(guò)來(lái)。
為了避免超時(shí)刪除NAT條目,可以通過(guò)定期保持應(yīng)用層的心跳來(lái)避免這種糟糕的情況。
但是周期性的心跳并不代表一切,例如,下面的情況就發(fā)生在:。
(1)
網(wǎng)絡(luò)擁塞
重新傳輸?shù)男奶⒈灰淮斡忠淮螣o(wú)情地丟棄。
(2)
NAT設(shè)備重啟
NAT條目消失。
(3)
服務(wù)器重啟
TCP四元組消失。
(4)
網(wǎng)絡(luò)環(huán)路
心跳消息永遠(yuǎn)無(wú)法到達(dá)服務(wù)器。
(5)
網(wǎng)絡(luò)收斂緩慢
TCP消息已經(jīng)丟失,直到TCP被重置。
TCP長(zhǎng)連接配置了heartbeat,也沒(méi)有逃脫被重置的命運(yùn)。你可以從上面找到原因。