URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 1897
[ Назад ]

Исходное сообщение
"обрыв/закрытие TCР сессий"

Отправлено ntds.dit , 18-Янв-16 11:23 
Привет.
Теоретический вопрос.
Есть сервер и клиент. Клиент установил TCP сессию с сервером, сессия "простаивает" и через какое-то время оборудование между клиентом и сервером "обрывает" TCP сессию не уведомляя об этом ни клиента ни сервер. И когда клиент или сервер думая что соединение установлено отправляет данные они не доходят адресату.
Такое возможно? если возможно, приведите пример, пожалуйста.

Содержание

Сообщения в этом обсуждении
"обрыв/закрытие TCР сессий"
Отправлено anonymous , 18-Янв-16 11:38 
Легко.
Например между клиентом и сервером фаервол (stateful-девайс).
При переполнении таблицы соединений сатрое соединение будет сброшено из памяти.

На роутере с pat/nat трансляциями может переполниться таблица трансляций с тем же эффектом.
Этим страдали например старые циски с маленьким объёмом оперативной памяти, которых сейчас уже вряд ли встретятся, и недавно ещё этим страдали длинковские роутеры при использовании в домашней сети торент-клиента.


"обрыв/закрытие TCР сессий"
Отправлено Аноним , 18-Янв-16 11:53 
Еще пример: из сети с домашним роутером и НАТом зашли по SSH на удаленный сервер, и так и оставили консоль.
Через некоторое время соединение между роутером и провайдером рвется, поднимается заново, но с другим адресом. Соответственно, все старые НАТ-трансляции становятся недействительными.
Итог тот же: если что-то в ссш-консоль напиать, оно не дойдет до сервера (а если и дойдет, то сервер не примет их, т.к. они с другого адреса, о котором сервер ни сном ни духом) и клиент ACK не получит, из-за чего после нескольких ретрансмитов сделает connection timed out

"обрыв/закрытие TCР сессий"
Отправлено ntds.dit , 18-Янв-16 12:32 
Спасибо за Ваши ответы!

"обрыв/закрытие TCР сессий"
Отправлено ShyLion , 18-Янв-16 13:28 
> Спасибо за Ваши ответы!

У ната и у динамических правил фаервола есть таймауты.
Лечение:
- на стороне роутера - увеличить таймауты
- на стороне клиентов - использовать механизмы KEEPALIVE, как на уровне приложения так и на уровне сокетов - шлются пакеты с пустыми блоками полезной нагрузки.


"обрыв/закрытие TCР сессий"
Отправлено Alex_S , 19-Янв-16 06:21 
> - на стороне клиентов - использовать механизмы KEEPALIVE, как на уровне приложения
> так и на уровне сокетов - шлются пакеты с пустыми блоками
> полезной нагрузки.

  зачем на уровне приложения-то ?
  просто KEEPALIVE опции сокета - недостаточно ?


"обрыв/закрытие TCР сессий"
Отправлено ShyLion , 19-Янв-16 09:24 
>> - на стороне клиентов - использовать механизмы KEEPALIVE, как на уровне приложения
>> так и на уровне сокетов - шлются пакеты с пустыми блоками
>> полезной нагрузки.
>   зачем на уровне приложения-то ?
>   просто KEEPALIVE опции сокета - недостаточно ?

Неисповедимы пути в голове софтопейсателя. Или например протокол UDP.
Я просто примеры привел.