RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Буферизация сообщений в tcp/ip стеке


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Andrey
To : XPEH
Subj : Буферизация сообщений в tcp/ip стеке

> > Беда в том, что в одном tcp пакете обнаружено несколько сообщений от прикладной программы (ПО), тогда как по хорошему, каждое сообщение от ПО должно быть в своем отдельном tcp пакете. В моем случаи, при кратковременной потере связи, сообщения от ПО оказываются в одном tcp пакете. Как заверяют производители ПО, происходит буферизация сообщений на tcp/ip стеке. Вопрос, такое суммирование/складывание сообщений на уровне tcp/ip стека возможно или нет? Если да, то как это работает?
> >
>
> --- грубые выражения ON ---
> передайте пожалуйста своим друзьям-криворучкам, что надо _читать_ документацию
> и _думать_, прежде чем писать сетевые программы.
> --- грубые выражения OFF ---
>
> TCP/IP - потоковый протокол. в нем никто не гарантирует, что куски данных,
> посланные целиком приходят к получателю именно в таком нарезанном виде.
> они могут быть побиты и перерезаны на куски других размеров на любом роутере
> через который проходят.
>
> кстати лет как с 8-10 назад очень многие коллеги ваших коллег тоже напарывались
> на данные проблемы - так разные версии разных тогдашних почтовых майлеров - оутлук,
> нетскапе, пммайл (кажется тхе бат тогда еще не было) - по разному реагировали
> на ответы разных почтовых серверов. некоторые вначале писали строку - одной tcp-пасылькой, потом слали перевод строки, некоторые еще иначе били строку на части при ответах, так вот - многие майлеры очень обижались на разные эти вариации ;)
>
> впрочем с той поры многие поумнели ;)
>
>

Поясню мою проблему несколько иначе.

Схема выглядит следующим образом:

HOST1 \
- HUB - HOST2
NetMonitor /

Кроме NetMonitor (им смотрим весь tcp/ip трафик) включены логи на обоих хостах на прикладном уровне. Обмен данными происходит успешно, что фиксируется и в логах, и NetMonitor.

Теперь разрываем связь между HUB и HOST2 и смотрим лог HOST1 и NetMonitor.

HOST1: отправлен message1 size 100;
NetMonitor: HOST1 отправил tcp пакет на HOST2 содержащий message1 size 100;
Так как связь разорвана, HOST1 не получил ответа от HOST2 и повторяет данное сообщение
HOST1: отправлен message1 size 100 (повтор);
NetMonitor: HOST1 отправил tcp пакет на HOST2 содержащий message1 size 100 и еще один message1 size 100;

Timeout между первым пакетом и повтором (HOST1 message1) составляет 10 секунд.

Как на ваш взгляд, где "собака зарыта"?

ну а самое главное на какую документацию нужно ссылаться в "перегаворах" с производителями ПО для HOST1?




Thu 05 Feb 2004 12:26 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0)




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.