以前又听说网络术语“心跳”,说Hello包是一种心跳,链路探测是一种心跳,HA主从识别报文也是一种心跳……
最近在学习协议栈接触KEEPLIVE,自然的想到了Heartbeat,自然的认为指的是同一个东西,是“心跳”报文......
Heartbeat -- 心跳
Keepalive -- 保活数据包
Keepalive和Heartbeat是不同的,这主要表现在是否有回应上,具体讲解如下:
● Bidirectional “keepalive” message exchange
- a HELLO followed by an ACK
only on side is interested in liveliness
● Unidirectional “heartbeat” message exchange
- a HELLO only
both sides have to demonstrate liveliness
Keepalive是一个“去回”的过程,犹如ping,一边可以通过这样的方法就可知道对方是否存活;
Heartbeat只发,不关心是否有回应,它关心的是有没有对方发来的hello包,如果有,就代表对方存活;
另外关于DPD如何探测的问题,DPD是Keepalive那种模式的,因此他证明对端的存活需要对端回应ACK报文。