Věta "Nutno dodat, že stejnou funkcí disponuje i transportní protokol TCP, ovšem perioda jeho keepalive zpráv je v řádu hodin" je trochu zavádějící. Časování se dá nastavit v /proc/sys/net/ipv4/tcp_keepalive_*
AFAIK se v Linuxu nedá nastavit pro jednotlivá spojení, takže keepalive na vyšší vrstvě má opodstatnění, ale takhle obecně to není.
Podle TCP Keepalive HOWTO se dokonce dá nastavit časování každému procesu zvlášť. Ale neznám aplikaci, která by to dělala. Ve vedlejší diskuzi ještě padl argument, že TCP keepalive může rozbít špatně napsané aplikace, které nepočítají s tím, že volání read(2) ze soketu vrátí nulu.
Ale kdybych měl do citované věty ještě rýpnout z jiné strany, pak není pravda, že perioda je v řádu hodin. Dvě hodiny jsou pouze prodleva před prvním heartbeatem, pak následují keepalive zprávy každých 75 sekund, aspoň ve výchozím nastavení.