⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 链路控制信息.txt

📁 tornado2.2开发
💻 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 + -