Сбой квитирования TCP-порта - PullRequest
0 голосов
/ 03 мая 2020

Мое приложение использует tcp-сокеты для связи между двумя серверами. На одном сервере A (который действует как сервер) порт является постоянным (9590), тогда как другой сервер B является клиентом, который использует случайный доступный порт для подключения на порт 9590 сервера.

Проблема заключается в том, что после успешного установления соединения TCP связь работает нормально. Но в течение нескольких часов (скажем, 2 часа), если приложение бездействует, т.е. когда нет связи с 9590 порт сервера A, соединение установлено.

Таким образом, когда приложение (клиент) снова пытается установить связь с 9590 после этого периода простоя, сбой установления соединения TCP. и после повторной передачи 10 пакетов, поскольку ответа не будет, TCP-соединение будет разорвано и будет установлено новое соединение.

Так что может быть причиной зависания соединения. Что можно сделать, чтобы оживить соединение.

При просмотре выходных данных 'netstat' наблюдается, что очередь отправителя порта блокируется некоторыми пакетами в процессе рукопожатия:

netstat -n | grep 9590

tcp 0 530 клиент-сервер: случайный_порт сервер: 9590

...