Большой поток с сокета на сокет (выставление флага PUSH)
От: hmixa  
Дата: 22.02.05 21:50
Оценка:
Добрый день
Вот пишется программка которой необходимо быстро-быстро передавать на другой компьютер по TCP очень большой поток данных — данные просто льются туда. Поток работает в одну сторону, поэтому — как я понимаю — есть проблемы с получением АСК пакетов — то есть send или же то же WSASend часто замирают на довольно долгое время — очевидно до получения АСК пакета по таймауту. В тоже самое время вражеская программа посылает тот же самый поток баз проблем — с хорошей скоростью. Товарищ снифер показал что враги пользуются флагом PUSH в каждом TCP-пакете. Вот бы мне так же суметь Как при помощи WinSock 2.0 передавать пакеты с установленным PUSH. Я думаю это должно мне помоч.

Спецы!!! Может быть что-то другое спасет отца русской демократии ?
Re: Большой поток с сокета на сокет (выставление флага PUSH)
От: Andrew.W Worobow https://github.com/Worobow
Дата: 23.02.05 10:19
Оценка:
Здравствуйте, hmixa, Вы писали:

H>Вот пишется программка которой необходимо быстро-быстро передавать на другой компьютер по TCP очень большой поток данных — данные просто льются туда. Поток работает в одну сторону


Для таких вещей лучше не пользоваться TCP, так как вообщем этот протокол дает гарантированную доставку, а если необходимо иметь гарантированный рантайм, то это вещь с гарантированной доставкой не совместимая...
Не все кто уехал, предал Россию.
Re[2]: Большой поток с сокета на сокет (выставление флага PU
От: hmixa  
Дата: 23.02.05 14:21
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

AWW>Для таких вещей лучше не пользоваться TCP, так как вообщем этот протокол дает гарантированную доставку, а если необходимо иметь гарантированный рантайм, то это вещь с гарантированной доставкой не совместимая...


Да — но ломаться нечему — два компа через свитч — и все — куда тут еще более надежность повышать.
Re: Большой поток с сокета на сокет (выставление флага PUSH)
От: MaximE Великобритания  
Дата: 24.02.05 09:13
Оценка:
hmixa wrote:

> Добрый день

> Вот пишется программка которой необходимо быстро-быстро передавать на другой компьютер по TCP очень большой поток данных — данные просто льются туда. Поток работает в одну сторону, поэтому — как я понимаю — есть проблемы с получением АСК пакетов — то есть send или же то же WSASend часто замирают на довольно долгое время — очевидно до получения АСК пакета по таймауту. В тоже самое время вражеская программа посылает тот же самый поток баз проблем — с хорошей скоростью. Товарищ снифер показал что враги пользуются флагом PUSH в каждом TCP-пакете. Вот бы мне так же суметь Как при помощи WinSock 2.0 передавать пакеты с установленным PUSH. Я думаю это должно мне помоч.

PUSH немного из другой оперы и из приложения его не выставить.

Для tcp соединения есть сво-во mss — maximum segment size. Обычно он равен path mtu — 20 (IP4 bare header) — 20 (TCP header). Все фрагменты меньше mss считаются малыми. Для малых фрагментов по-умолчанию включен алгоритм Нейгла — следующий малый фрагмент не отправляется, пока не придет ACK не предыдущий. На большие фрагменты (>= mss) алгоритм Нейгла не действует (http://www.faqs.org/rfcs/rfc896.html) и они отправляются без задержки.

Решения твоей проблемы: a) отправлять всегда большие фрагменты, б) отключить алгоритм Нейгла (опция TCP_NODELAY). Но в любом случае максимальный network throughput может быть достигнут только на потоке больших фрагменты.

--
Maxim Yegorushkin

Those who do not understand Unix are condemned to reinvent it, poorly. © Henry Spencer
Posted via RSDN NNTP Server 1.9
Re[2]: Большой поток с сокета на сокет (выставление флага PU
От: MaximE Великобритания  
Дата: 24.02.05 09:25
Оценка: 1 (1)
Andrew.W Worobow wrote:

> H>Вот пишется программка которой необходимо быстро-быстро передавать на другой компьютер по TCP очень большой поток данных — данные просто льются туда. Поток работает в одну сторону

>
> Для таких вещей лучше не пользоваться TCP, так как вообщем этот протокол дает гарантированную доставку, а если необходимо иметь гарантированный рантайм, то это вещь с гарантированной доставкой не совместимая...

Это заблуждение.

Кроме всего прочего TCP обеспечивает flow control — приемник управляет потоком данных. Если ты будешь просто тупо высылать пакеты с максимальной возможной скоростью, буфер приемника может быть переполнен (особенно если у него более слабый комп) и пакеты будут просто откидываться. Поэтому тебе придется повторить посылку — пустая трата network bandwidth и никакого выигрыша в скорости доставки. TCP же позволяет достигнуть максимальной возможной скорости передачи учитывая, и скорость приема приемником и емкость канала (rtt * bandwidth) для избежания заторов и достижения максимального использования.

--
Maxim Yegorushkin

Those who do not understand Unix are condemned to reinvent it, poorly. © Henry Spencer
Posted via RSDN NNTP Server 1.9
Re[3]: Большой поток с сокета на сокет (выставление флага PU
От: Andrew.W Worobow https://github.com/Worobow
Дата: 24.02.05 18:42
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Andrew.W Worobow wrote:


>> H>Вот пишется программка которой необходимо быстро-быстро передавать на другой компьютер по TCP очень большой поток данных — данные просто льются туда. Поток работает в одну сторону

>>
>> Для таких вещей лучше не пользоваться TCP, так как вообщем этот протокол дает гарантированную доставку, а если необходимо иметь гарантированный рантайм, то это вещь с гарантированной доставкой не совместимая...

ME>Это заблуждение.


Это не заблуждение, давайте рассмотрим ситуацию, например когда есть источник который высылает информацию о неком процессе в реальном времени, и есть приемник который эту информацию получает, теперь представим что в канале связи происходит с некоторой вероятностью потеря информации, и как следствие в случае использования TCP пойдут повторы, по тому как по стандарту протокол обязан востановить правильный порядок данных, это приведет к задержкам, и следовательно к нералтайму, в случае же использования IP или UDP, повторов не будет, а данные пропали и пропали, и х... с ними, важен же реалтаим, кому нужны данные о температуре сопла ракеты если ракета уже сгорела...
Не все кто уехал, предал Россию.
Re[4]: Большой поток с сокета на сокет (выставление флага PU
От: MaximE Великобритания  
Дата: 24.02.05 19:10
Оценка:
Andrew.W Worobow wrote:

> Здравствуйте, MaximE, Вы писали:

>
> ME>Andrew.W Worobow wrote:
>
>>> H>Вот пишется программка которой необходимо быстро-быстро передавать на другой компьютер по TCP очень большой поток данных — данные просто льются туда. Поток работает в одну сторону
>>>
>>> Для таких вещей лучше не пользоваться TCP, так как вообщем этот протокол дает гарантированную доставку, а если необходимо иметь гарантированный рантайм, то это вещь с гарантированной доставкой не совместимая...
>
> ME>Это заблуждение.
>
> Это не заблуждение, давайте рассмотрим ситуацию, например когда есть источник который высылает информацию о неком процессе в реальном времени, и есть приемник который эту информацию получает, теперь представим что в канале связи происходит с некоторой вероятностью потеря информации, и как следствие в случае использования TCP пойдут повторы, по тому как по стандарту протокол обязан востановить правильный порядок данных, это приведет к задержкам, и следовательно к нералтайму, в случае же использования IP или UDP, повторов не будет, а данные пропали и пропали, и х... с ними, важен же реалтаим, кому нужны данные о температуре сопла ракеты если ракета уже сгорела...

Мы говорим о разных вещах. Я говорю о том, что быстрее чем по TCP доставить данные с гарантией со своим протоколом вряд ли получится.

--
Maxim Yegorushkin

Those who do not understand Unix are condemned to reinvent it, poorly. © Henry Spencer
Posted via RSDN NNTP Server 1.9
Re[5]: Большой поток с сокета на сокет (выставление флага PU
От: Andrew.W Worobow https://github.com/Worobow
Дата: 24.02.05 19:21
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Andrew.W Worobow wrote:


>> Здравствуйте, MaximE, Вы писали:

>>
>> ME>Andrew.W Worobow wrote:
>>
>>>> H>Вот пишется программка которой необходимо быстро-быстро передавать на другой компьютер по TCP очень большой поток данных — данные просто льются туда. Поток работает в одну сторону
>>>>
>>>> Для таких вещей лучше не пользоваться TCP, так как вообщем этот протокол дает гарантированную доставку, а если необходимо иметь гарантированный рантайм, то это вещь с гарантированной доставкой не совместимая...
>>

ME>Мы говорим о разных вещах. Я говорю о том, что быстрее чем по TCP доставить данные с гарантией со своим протоколом вряд ли получится.


Да быстрее с гарантией вряд ли... да и не надо, есть же TCP, просто человек спрашивает про "быстро-бастро ... 1 Мега в 40 миллисекунд" я так понимаю ему важен реалтаим...
Не все кто уехал, предал Россию.
Re[6]: Большой поток с сокета на сокет (выставление флага PU
От: hmixa  
Дата: 27.02.05 08:13
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

AWW>Здравствуйте, MaximE, Вы писали:


ME>>Andrew.W Worobow wrote:



AWW>Да быстрее с гарантией вряд ли... да и не надо, есть же TCP, просто человек спрашивает про "быстро-бастро ... 1 Мега в 40 миллисекунд" я так понимаю ему важен реалтаим...


Да именно реалтаим. Терятся тут нечему — два компа через свитч — все больше ничего нет. должно шуровать как из пушки. А нет.
Re[7]: Большой поток с сокета на сокет (выставление флага PU
От: Andrew.W Worobow https://github.com/Worobow
Дата: 27.02.05 08:42
Оценка:
Здравствуйте, hmixa, Вы писали:

H>Здравствуйте, Andrew.W Worobow, Вы писали:


AWW>>Здравствуйте, MaximE, Вы писали:


ME>>>Andrew.W Worobow wrote:



AWW>>Да быстрее с гарантией вряд ли... да и не надо, есть же TCP, просто человек спрашивает про "быстро-бастро ... 1 Мега в 40 миллисекунд" я так понимаю ему важен реалтаим...


H>Да именно реалтаим. Терятся тут нечему — два компа через свитч — все больше ничего нет. должно шуровать как из пушки. А нет.


Наверно самое быстрое будет голый ETHRENET....
Не все кто уехал, предал Россию.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.