Відповіді:
TCP "keepalive" - це функція, яка присутня не у всіх операційних системах. Це не в стандарті TCP, і це не є надійним. RC1122 специфікує це, але прямо вказано:
Реалізатори МОЖУТЬ включати "Keep-alives" у свої реалізації TCP, хоча ця практика не є загальновизнаною. Якщо включено функцію зберігання, програма ОБОВ'ЯЗКОВО зможе їх увімкнути або вимкнути для кожного TCP-з'єднання, і вони ОБОВ'ЯЗКОВО вимкнені.
Ще важливіше:
Надзвичайно важливо пам’ятати, що сегменти ACK, які не містять даних, не надійно передаються TCP. Отже, якщо реалізований механізм збереження життя, НЕ МОЖЕ НЕ трактувати неспроможність реагувати на будь-який конкретний зонд як мертве з'єднання.
TCP keepalive особливим чином використовує протокол TCP, надсилаючи дублікат ACK без доданих до нього даних. Річ у тому, що ви не можете розраховувати, що вона буде доступною. Також деякі брандмауери фільтрують збереження TCP.
Щоб BGP правильно функціонував, вам потрібен спосіб впровадити конкретні таймери для збереження (як часто ми надсилаємо повідомлення) та утримуйте (після закінчення цього часу ми оголошуємо, що одноранговий користувач не відповідає) надійно надісланий. Таким чином, BGP використовує власне повідомлення про збереження даних, яке не має великої кількості накладних витрат (19 байтів) порівняно з протоколом TCP.