LINUX.ORG.RU

Разъясните про UDP


0

1

Возможно глупый вопрос... но верно ли я понимаю про UDP?

Если размер UDP пакета больше, чем MTU, пакет будет сегментирован. Если вдруг случится ошибка при передаче одного из кадров на канальном уровне, то весь пакет окажется недействительным и UDP его выкинет?

★★★★★

Ответ на: комментарий от mv

И получается, что делать пакеты больше, чем MTU не выгодно. Особенно в неустойчивых сетях.

hibou ★★★★★
() автор топика
Ответ на: комментарий от hibou

Еще одна мысль есть. Можно прикрутить некий счетчик ошибок доставки пакетов. Если он будет зашкаливать, то снизить размер пакета до MTU. Если процент потерь будет исчезающе мал, то постепенно увеличивать размер пакета до максимума. Мне кажется это снизит накладные расходы на качественных сетях.

Я тут сеансовый уровень над UDP пытаюсь написать. Для тренировки. :)

hibou ★★★★★
() автор топика
Ответ на: комментарий от mv

Ага, я установку соединения сделал как в SCTP, а не как в TCP. Типа ресурсы на соединение у сервера выделяются после подтверждения клиентом секретного ключа. DoS'a не должно быть.

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

hibou ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Мне нет. Но ты можешь гордиться сколько угодно.

Я еще много чего не знаю и хотел бы научиться.

hibou ★★★★★
() автор топика
Ответ на: комментарий от hibou

Видимо в плане обучения есть пункт научиться самостоятельно читать и понимать прочитанное без посторонней помощи.

anonymous
()
Ответ на: комментарий от hibou

Не знаю где тут порог и когда надо дропать нафиг.

сделай его пропорциональным скорости и потерям. Но вообще,

true_admin ★★★★★
()
Ответ на: комментарий от hibou

> Я тут сеансовый уровень над UDP пытаюсь написать.

Ты пытаешься изобрести TCP. Не то, чтобы это плохо само по себе, но после окончания опыта почитай, как работает TCP - чтобы ЧСВ сдулось..

tailgunner ★★★★★
()
Ответ на: комментарий от hibou

>Если процент потерь будет исчезающе мал, то постепенно увеличивать размер пакета до максимума

Если он будет зашкаливать, то снизить размер пакета до MTU

Похоже на congestion control. Его тебе кстати тоже придется изобрести.

stack_protector
()
Ответ на: комментарий от stack_protector

Вообще я взялся за это, чтобы лучше понять как сам стек протоколов, так и его реализацию в ядре линукс. Когда читаешь теорию, иногда кажется, что все понятно, но это только кажется! А вот когда доходишь до практической части, тут все становится на свои места. Многое, о чем даже не задумывался вылезает на поверхность.

hibou ★★★★★
() автор топика
Ответ на: комментарий от hibou

> Если он будет зашкаливать, то снизить размер пакета до MTU. Если процент потерь будет исчезающе мал, то постепенно увеличивать размер пакета до максимума

Все уже изобретено - Path MTU discovery

no-such-file ★★★★★
()
Ответ на: комментарий от tailgunner

> > Я тут сеансовый уровень над UDP пытаюсь написать.

Ты пытаешься изобрести TCP. Не то, чтобы это плохо само по себе, но после окончания опыта почитай, как работает TCP - чтобы ЧСВ сдулось..

Those who don't understand TCP are condemned to reinvent it, poorly. (C)

anonymous
()
Ответ на: комментарий от hibou

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

Если тебе не понятно после прочтения «теории» - то лезть в недра линукс не стоит.

Смотри uIP или стэк от netbsd 1.6

anonymous
()
Ответ на: комментарий от hibou

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

Тогда реализуй просто TCP. Заодно и верифицировать реализацию сможешь - просто подоединишься к живому TCP-сокету.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.