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

 
 
> Вопросы по 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, 12:38
Сообщение #2


Участник
*

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



Скорость хотелось бы 2-3 Мбайта в секунду. Реально ли это на кейловском стеке? По тестам терминалки только около мегабайта...

Цитата
Между прочим, решение по разбивке пакета пополам - оно паллиативно до жути и работает только в быстрой сети.

Там не пополам, там разбивается на 1514 байт и 60. Вроде так и делают умные люди?) просто по мне на отправку второго, пусть и маленького пакета уходит ценное время и проще исправить настройку стека, чтобы отвечал ACK на каждый пакет... Хотя может я заблуждаюсь...

Цитата
Аллах до делов велик, что не позволил всем кому не попадя крутить подтверждения TCP (да и вообще всякие параметры стека). Трогать его не надо, это я уже говорил выше.

А как там в общем происходит работа? ВинСокет как-то понимает что пришел самый последний кусочек большой TCP посылки или это делается по таймауту у "большого брата"?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 15:03
Рейтинг@Mail.ru


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