?? 鏈路控制信息.txt
字號:
IP網絡的鏈路控制信息不全,
不象電路交換網絡那樣有專用的控制信令通道,能夠及時發現通路斷開/故障,并拆線。除了靠四次握手明確關閉線路,
IP網絡只能用超時判斷線路是否斷開,沒有更多的信息可供參考,而IP網基于存儲轉發機制,根據路由的不同,往返時間是
不固定的而且變化范圍很大,因此要根據傳輸情況預測往返時間,然后在此基礎上確定超時值,即使超時,也要重復若干次
并加倍超時時間才能肯定地判斷是否斷線。這個判斷時間相當可觀,而且不固定。
如果心跳包的間隔時間很短,容易造成錯誤判斷,尤其是網絡擁塞時,也許數據包正存儲在路由器內存里,過一會才會
轉發,而你因為沒有及時收到心跳包就判斷鏈路斷開,造成不必要的人為斷線干擾。更何況你的心跳包間隔時間是固定的,
在全球互聯網里肯定是不合適的。如果你的心跳包間隔時間很長,就和我說的情況一樣了。因此,用心跳包檢測鏈路通斷不
科學,可能誤判。
有些網絡,例如:以太網,有載波檢測功能,拔掉網線,只能影響媒介探測程序,使協議棧掛起,說明介質移動了,
暫時不能用,過一小段時間后再插上網線,仍然可以繼續連接。媒介探測和鏈路斷開判斷似乎是分別進行的。以太網沒有
載波肯定是斷線了,本端可以立即知曉,但對端仍不清楚,況且網線還有再次插上的可能,所以程序的判斷策略設置成等
待超時是比較合理的,不過具體情況要看軟件策略了。
PING基于ICMP協議探測網絡,一般維護時以命令行方式使用。它是一種靈活有效的測試工具,但不會在程序里使用。
TCP鏈路的連通只在連接雙方記錄狀態,物理通道內不存在一個實際的連接鏈路,所以,當沒有數據傳輸時TCP鏈路永
遠不會斷開,分配的資源也不會被釋放。為了防止意外情況造成沒有數據傳輸時鏈路斷開引起的socket數據結構占用的內
存不被釋放的問題,TCP可以選擇使能keepalive功能,定期(2小時)探測鏈路情況。樓上不必自己增加巡檢信號包(勢必增加
多余數據),TCP本身支持keepalive功能,而且探測時帶寬消耗很小。在沒有數據傳輸時依賴keepalive確保斷線檢測,在
傳輸數據時,TCP會通過超時判斷是否斷線的。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -