|
TCP ACK |
|
|
|
Aug 22 2013, 18:39
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Насколько я знаю ACK должен отпраляться через 200 mS после приема одиночного пакета или после каждого второго пакета. На Win 7 x64 столкнулся с тем, что комп иногда отправляет ACK не после каждого второго, а после первого сразу. Вот поясняющая картинка строчка 1263
. Что это баг или фича ? Если у кого есть wireshark , то прикладываю сохраненый лог.
1_1263.rar ( 30.67 килобайт )
Кол-во скачиваний: 73
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Nov 6 2013, 09:48
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115

|
Приветствую, отдельную тему не стал создавать, поскольку тоже про ACKи вопрос у меня. Исходные условия. 1. Есть мой девайс, который работает по modbus/TCP, слейв 2. Запускаю коммуникацию под виндой, с пом. утилитки ModbusPoll. Тут всё хорошо 3. Запускаю коммуникацию под Убунтой. Вроде всё хорошо, почти... В Убунте, открыв wireshark, вижу что с компа идет почти с каждым поллингом дублирующий ACK. Как избавится от них ? Погуглил, выяснил, Dup ACK посылается в случае если нарушена очередность следования TCP сегментов или если сегмент утерян. Сегменты очевидно не теряются, иначе были бы ошибки коммуникации. Не правильный порядок сегментов ? А чё тогда под виндой правильный выходит ? В приложение загрузил архив с обоими логами, сделанные и под виндой и в убунте. Я не вижу в чем отличия, глазу не за что зацепиться, а в убунте DUP ACKи идут... Причем они есть не на каждом поллинге. Спасибо !
Прикрепленные файлы
logs.rar ( 9.36 килобайт )
Кол-во скачиваний: 15
|
|
|
|
|
Nov 6 2013, 11:44
|
Знающий
   
Группа: Свой
Сообщений: 758
Регистрация: 11-07-05
Из: Понаехал (Мск)
Пользователь №: 6 688

|
Цитата(berkl @ Nov 6 2013, 13:48)  Я не вижу в чем отличия, глазу не за что зацепиться, а в убунте DUP ACKи идут... Причем они есть не на каждом поллинге. Поле identification в IP пакете увеличилось на один, если нет никаких роутеров между устройствами, и iptables, есть смысл попробовать покопаться в опциях IP-TCP у убунты. попробовать на другом диструбутиве. возможно включена некая эксперементальная фича, которая не совсем нормально работает. В обще, конечно, стек должен такие вещи отрабатывать. попробуйте поглядеть сессия ubuntu-ubuntu и win-ubuntu.
|
|
|
|
|
Nov 6 2013, 12:16
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115

|
Цитата(SFx @ Nov 6 2013, 15:44)  Поле identification в IP пакете увеличилось на один, если нет никаких роутеров между устройствами, и iptables, есть смысл попробовать покопаться в опциях IP-TCP у убунты. попробовать на другом диструбутиве. возможно включена некая эксперементальная фича, которая не совсем нормально работает. В обще, конечно, стек должен такие вещи отрабатывать. попробуйте поглядеть сессия ubuntu-ubuntu и win-ubuntu. Есть пассивный свитч между девайсом и компом. Да я без него включал на прямки, всё одно. Похоже да, что-то со стеком Убунты, его настройками. Попалась консольная утилитка TCP мастера http://www.modbusdriver.com/modpoll.html, она и на винду и на Линукс. Решил для чистоты экперимента её попробовать. Получилось тоже самое только еще более выражено: под виндой всё тикает. Перезагружаюсь под Убунтой. Тот же долбанный ACK Dup появился, а modpoll вобще подавилась ею. Выдала сообщение "I/O Error!" и встала после первого же поллинга  . Такие дела. Буду думать, спасибо за ответ
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|