реклама на сайте
подробности

 
 
> Вопросы по TCP: delay ack и TCP Window Update
Slowhan
сообщение Jul 21 2011, 04:53
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 20-06-11
Из: Ленино
Пользователь №: 65 788



Люди, я знаю, что лето, душно и все достало. Но помогите пожалуйста советом ибо у меня совсем горят сроки... А вопросы даже больше теоретические...

Есть прибор(arm7), отсылающий по tcp посылки удаленной системе(нетбук). Посылки достаточно объемны - 100 КБайт.

Т.к. софт для удаленной системе будет писаться на стороне заказчика, то проверяю скорость работы обычной терминалкой.
И что я вижу - каждый фрагмент tcp посылки передается раз в 200 мс.

Стал гуглить - оказалось в винде (и не только) есть такая штука, delay ack - т.е. винда отправляет ACK на посылку раз в 200 мс. Меня такое совсем не устраивает... Мои 100 Кбайт получается разбиваются на примерно 68 посылок и отправляются по 200 мс каждая - в сумме 14 секунд. Ужас.

Стал гуглить касаемо моего стека (взял кейловский). На кейловском форуме нашел решение - создать сокет с атрибутом TCP_TYPE_DELAY_ACK. Тогда каждая посылка будет разбиваться на две подряд и в этом случаи винда отвечает сразу.

После этих действий скорость заметно возросла, но... Но все равно не достаточно высоко - для меня это критично.
В WireShark во время передачи моей 100 кбайтной посылки иногда проскакивает после обычного TCP ACK от нетбука, еще какойто непонятный пакет - [TCP Window Update]. И это заметно отжирает время.

Собственно вопросы:
1) Можно ли настроить delay ack винды. Скажем 10 мсек вместо стандартных 200? И как?... sm.gif
2) В програмирование для винды не силен, с сокетами не работал. Человек котоырй будет писать софт для моей системы, как то может сам отсылать ACK или же в винсокетах используется стандартный delay ack в 200 мсек? Он пишет на си шарпе.
3) Что такое [TCP Window Update] в сниффере и почему он происходит? Как от него избавиться?

Спасибо Всем кто откликнется!

Сообщение отредактировал Slowhan - Jul 21 2011, 05:02
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Slowhan
сообщение Jul 21 2011, 15:50
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 20-06-11
Из: Ленино
Пользователь №: 65 788



Цитата
Вменяемый стек, имея данные для передачи, должен начинать эту передачу не ожидая подтверждения.

Вот тут не понял, что Вы имеете ввиду. Какой же это вменяемый стек, если он без подтверждения работает. Тогда UDP какое-то получается.

За пример кода большое спасибо, буду разбираться!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 11:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01352 секунд с 7
ELECTRONIX ©2004-2016