Тайм-аут TCP после получения RST

Я пытаюсь понять проблему между клиентом NFS и сервером. Когда серверное приложение дает сбой, ядро ​​отправляет пакет RST клиенту, с которым клиент закрывает старое соединение и инициирует новое, отправляя SYN. Поскольку на данный момент приложение не готово, сервер снова отвечает [RST, ACK]. После этого клиент отправляет SYN-пакеты только каждые 15 секунд.

Я хотел понять, откуда берется этот 15-секундный тайм-аут? Это что-то, что обеспечивает TCP, или это тайм-аут приложения, который полностью зависит от приложения?

Заранее спасибо!!!


person Undivided    schedule 04.06.2014    source источник


Ответы (1)


Поскольку TCP не инициирует новую попытку подключения в случае сбоя подключения (как это происходит здесь, при условии, что RST возвращается в стек TCP), это таймер приложения.

TCP будет повторно отправлять SYN только в том случае, если не получит на него никакого ответа, обычно удваивая время между каждой попыткой до фиксированного предела повторных попыток.

person nos    schedule 04.06.2014
comment
IIRC, NFS использует UDP, который является неупорядоченным и с потерями. Может ли он также использовать TCP? - person wildplasser; 05.06.2014
comment
Да, NFS также может использовать TCP, и обычно рекомендуется использовать TCP. - person nos; 05.06.2014