Могут ли сокеты POSIX прервать трехстороннее рукопожатие TCP? - PullRequest
0 голосов
/ 29 октября 2018

Я работаю над механизмом проверки балансировки нагрузки, который отправляет запросы проверки серверам для определения их доступности. Конфигурация пробника имеет настройку только для TCP, при которой доступность сервера определяется путем настройки соединения TCP с последующим отключением.

Отключение может быть TCP RST (в зависимости от настройки балансировщика нагрузки), что делает запрос зонда следующим образом:

load balancer                server
                 SYN ->
              <- SYN/ACK
                 ACK ->
                 RST ->

Третий ACK кажется ненужным, так как соединение не будет использоваться для обмена данными. Кроме того, это может быть проще на сервере, если он получил только RST. В этом случае сервер должен обработать ошибку сокета (accept), а не обрабатывать издержки нового соединения (например, создать поток).

Я могу прервать установленное соединение, установив нулевое время задержки (setsockopt), но в этом случае меня интересует отправка RST до установления соединения.

Может ли интерфейс сокета Posix поддерживать следующий обмен TCP?

load balancer                server
                 SYN ->
              <- SYN/ACK
                 RST ->
...