Answers:
TCP“ keepalive”是并非所有操作系统上都具有的功能。它不是TCP标准本身,也不可靠。RC1122对此加以说明,但明确指出:
实施者可以在其TCP实施中包括“保持活动”,尽管这种做法未被普遍接受。如果包括保持活动,则应用程序必须能够为每个TCP连接打开或关闭它们,并且必须默认为关闭。
更重要的是:
切记,不包含任何数据的ACK段不会被TCP可靠地传输,这一点非常重要。因此,如果实施了保持活动机制,则绝不能将对任何特定探测器的响应失败解释为无效连接。
TCP keepalive以特殊方式使用TCP协议,发送重复的ACK,但不附加任何数据。事实是:您不能指望它可用。此外,某些防火墙还会过滤TCP Keepalive。
为了使BGP正常运行,您需要一种方法来实现特定的计时器,以确保可靠地发送keepalive(发送消息的频率)并保持(在此时间之后,我们宣布对等端无响应)。因此,BGP使用它自己的keepalive消息,与TCP keepalive相比,开销不大(19字节)。