Задача такая: Нужно передавать данные по протоколу UDP, но с "механизмом надёжной доставки". Как я полагаю нужно, чтобы данные передавались без потерь при помощи UDP протокола.
Как это реализовать?
У меня есть два варианты:
1) Сделать подобие TCP, только на прикладном уровне, т.е. пронумеровать все пакеты и отправлять их по одному. После каждой отправки, ждать подтверждения о доставке пакета и отправлять следующий, если нет подтверждения, значит послать пакет ещё раз.
2) Пересылать все пакеты, предварительно пронумеровав их. Потом посмотреть какие из них не дошли, и отправить запрос, на повторную их передачу.
Какой из этих способов предпочтительней? И как это можно ещё реализовать?
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, igrok213, Вы писали:
A>UDP с гарантией доставки это TCP. Ничего существенно эффективнее самому всё равно не реализовать.
А чем плохи мои способы? Если пакеты будут теряться, то они будут повторно отправлены.
Здравствуйте, igrok213, Вы писали:
A>>UDP с гарантией доставки это TCP. Ничего существенно эффективнее самому всё равно не реализовать. I>А чем плохи мои способы? Если пакеты будут теряться, то они будут повторно отправлены.
Тем что TCP это и так делает, а учитывая многие мудрённые алгоритмы, обеспечит значительно меньшую латентность, большую пропускную способность, Если всё сделаешь по уму, получится TCP. Так стоило ли мучаться?
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, igrok213, Вы писали:
A>>>UDP с гарантией доставки это TCP. Ничего существенно эффективнее самому всё равно не реализовать. I>>А чем плохи мои способы? Если пакеты будут теряться, то они будут повторно отправлены.
A>Тем что TCP это и так делает, а учитывая многие мудрённые алгоритмы, обеспечит значительно меньшую латентность, большую пропускную способность, Если всё сделаешь по уму, получится TCP. Так стоило ли мучаться?
Согласен, что приходится придумывать велосипед Но просто задание такое дали (лабораторная работа в инсте), да и не претендую я на то, чтобы написать протокол ТСР или лучше.
Re: Сохранность данных в UDP
От:
Аноним
Дата:
17.02.07 03:34
Оценка:
Если уж так надо свой trasport control на удп то лучше не бросаться в крайности, а нумеровать пакеты в группе, после отсылки группы слать пакет-уведомление мол пакеты с такогото по такое то отправлены, после чего ждать подтверждения что они все получены или запросов перепосылки по диапазонам номеров пропущенных пакетов. Если в течении определенного таймаута не придет подтверждение получения — перепослать пакет-уведомление, и тп.. Короче как правильно сказали нужно заюзать tcp. кастомный peer2peer stream-oriented transfer over UDP — изврат.
Здравствуйте, igrok213, Вы писали:
I>Задача такая: Нужно передавать данные по протоколу UDP, но с "механизмом надёжной доставки". Как я полагаю нужно, чтобы данные передавались без потерь при помощи UDP протокола.
I>Как это реализовать? I>У меня есть два варианты: I>1) Сделать подобие TCP, только на прикладном уровне, т.е. пронумеровать все пакеты и отправлять их по одному. После каждой отправки, ждать подтверждения о доставке пакета и отправлять следующий, если нет подтверждения, значит послать пакет ещё раз.