Как отправить пакет ACK в Solaris10 - PullRequest
0 голосов
/ 29 ноября 2010

Для tcp-соединения есть ли способ отправить ACK-пакет на другую сторону без других данных (только ack-пакет) в Solaris 10.

Я знаю, что мы можем сделать это с помощью опции TCP Keep alive, но она поддерживается в Solaris 10.

Ответы [ 3 ]

2 голосов
/ 29 ноября 2010

Надежный способ обнаружения разъединения состоит в том, чтобы встроить сообщение типа null / ping / echo в протокол уровня вашего приложения, и чтобы ваше приложение отправляло его через регулярные интервалы. Если он не получает своевременного ответа, он может предположить, что соединение было разорвано. Большинство протоколов, которые предназначены для использования долгоживущих соединений, включают такое сообщение (например, IRC, IMAP и SSH все делают).

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

2 голосов
/ 29 ноября 2010

Если вы только что получили, стек TCP сам отправит множество ACK без данных.Однако невозможно отправить ACK из приложения.

1 голос
/ 29 ноября 2010

Вы впервые публикуете сообщения о том, что Solaris 10 поддерживает протоколы поддержки активности TCP, а позже - ...

Solaris поддерживает глобальную настройку протокола tcp keepalive с помощью команды ndd, например:

ndd -set /dev/tcp tcp_keepalive_interval 120000

OpenSolaris и Solaris 11 Express поддерживают настройки поддержки активности сокетов.Вы можете включить его с помощью SO_KEEPALIVE и настроить его с помощью TCP_KEEPALIVE_THRESHOLD и TCP_KEEPALIVE_ABORT_THRESHOLD.

http://docs.oracle.com/cd/E19082-01/819-2254/6n4iaov75/index.html

...