Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
1

Udp

23.12.2015, 15:10. Показов 1772. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При передаче некоторого количества байт по протоколу udp я же могу предсказать сколько байт отправится за один раз функцией send() - на клиенте и сколько байт прочитается одним вызовом recv - на сервере верно?? Ведь это же не потоковый протокол как tcp а передача датаграм.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2015, 15:10
Ответы с готовыми решениями:

UDP чат
Здравствуйте, с C++ знаком около недели, но нужно сделать сетевой чат по UDP. По разным мануалам...

udp socket
Вобщем Как узнать что udp порт открыт? tcp обязан ответить на соединение, но udp не принимает...

UDP Winsock
Всем привет вот могу тока сделать функцию для отссылки на UDP сервер сообщение int PORT =...

Udp и подсети
можно ли производить обмен данными по UDP если подсеть разная? на плате открываю цепочку видео...

11
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
24.12.2015, 10:40 2
Цитата Сообщение от yura91 Посмотреть сообщение
При передаче некоторого количества байт по протоколу udp я же могу предсказать сколько байт отправится за один раз функцией send()
Если запись достаточно медленная, то скорее всего в 98% случаев будет записано столько же сколько указан в send размер буфера
Цитата Сообщение от yura91 Посмотреть сообщение
и сколько байт прочитается одним вызовом recv - на сервере верно??
да достаточно простая ситуация, с одной стороны отправвили 1024байта, на другой стороне ждите 1024 байта
0
Задачи выполнил, ушёл
27 / 30 / 7
Регистрация: 16.10.2015
Сообщений: 345
27.12.2015, 03:17 3
UDP капитально отличается от TCP.

UDP не имеет уязвимости тройного квитирования как у TCP.
UDP быстрый протокол, не нагружает сеть, сетевую карту и процессор.
UDP простой протокол, он прозрачный для понимания и использования.
UDP надёжный протокол, при условии, что вы правильно организовали механику обмена данными, а TCP может подвиснуть, если что-то пойдёт не так.
UDP мультиадресный, он может отправлять пакеты на несколько компьютеров и получать пакеты от нескольких компьютеров, потому что ему не надо устанавливать логическое соединение. UDP - это связь один ко многим, вместо TCP - у которого связь один к одному.
UDP имеет минимальную задержку, необходимую для игр или VoIP, что уменьшает пинг, в отличие от TCP.
UDP позволяет отправлять несколько пакетов подряд и они не будут объединены в один общий, как в TCP.
UDP позволяет создать на своей основе свой собственный протокол, более мощный, чем даже TCP.

Спасибо за то, что пользуетесь UDP)
1
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
27.12.2015, 15:00 4
noname664, все круто, только вот это чушь:

UDP быстрый протокол, не нагружает сеть, сетевую карту и процессор.
При передаче сопоставимых объемов данных нагрузка будет примерно одинаковой с TCP.

и это тоже под сомнением:
Цитата Сообщение от noname664 Посмотреть сообщение
UDP надёжный протокол, при условии, что вы правильно организовали механику обмена данными, а TCP может подвиснуть, если что-то пойдёт не так.
Так можно сказать: не делай в TCP "что-то не так", и ничего не будет виснуть.
0
Задачи выполнил, ушёл
27 / 30 / 7
Регистрация: 16.10.2015
Сообщений: 345
27.12.2015, 21:47 5
При передаче сопоставимых объемов данных нагрузка будет примерно одинаковой с TCP.
Так можно сказать: не делай в TCP "что-то не так", и ничего не будет виснуть.
Вам не понравился UDP?
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
27.12.2015, 22:11 6
Нравится/не нравится - это не профессионально.
У обоих протоколов есть и сильные, и слабые стороны, для каких-то задач
лучше подходит TCP, для других UDP. А из сообщения #3 можно сделать
неверный вывод, что UDP априори лучше.
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28045 / 15778 / 982
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
27.12.2015, 22:13 7
нам пофиг в общем.
УДИПИ - протокол с недостоверной доставкой. а дальше сами решайте.
0
Задачи выполнил, ушёл
27 / 30 / 7
Регистрация: 16.10.2015
Сообщений: 345
28.12.2015, 01:25 8
Нравится/не нравится - это не профессионально.
У обоих протоколов есть и сильные, и слабые стороны, для каких-то задач
лучше подходит TCP, для других UDP. А из сообщения #3 можно сделать
неверный вывод, что UDP априори лучше.
Сильные стороны UDP я перечислил, а какие сильные стороны у TCP.
Я не говорю, что TCP плох во всём, а говорю, что UDP лучший во многом.

Добавлено через 5 минут
У обоих протоколов есть и сильные, и слабые стороны, для каких-то задач
лучше подходит TCP, для других UDP.
Это стандартный общий ответ, не раскрывающий сути.
Но давайте не будем голословны), а составим список плюсов TCP и сравним их со списком плюсов UDP.

Добавлено через 24 минуты
И ещё...
На UDP работают все игры, и игровые сервера по нему раздают игровые файлы.
На этом протоколе работают голосовые программы.
На нём работает DHCP и DNS.
Google разработал протокол QUIC на базе UDP для браузеров взамен браузерных TCP-сессий, но он пока ещё слишком новый и мало распространён.
uTorrent работает на UDP.

TCP вытесняется UDP.
TCP имеет уязвимости, уязвимость тройного квитирования, всего 32-х разрядный счётчик пакетов, из-за чего при передаче большого объёма данных номера пакетов начнут часто повторяться, это старый протокол, он просто устарел.

Убежденный, Вы наверно часто работали с TCP, а UDP наверно особо не использовали.

Добавлено через 13 минут
UDP быстрый протокол, не нагружает сеть, сетевую карту и процессор.
Блин, точно, я слегка преувеличил, извини(. Он не может вообще не нагружать, некоторая нагрузка конечно есть. Вот здесь я лоханулся и даже не заметил. Я собою снова недоволен .
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
28.12.2015, 01:43 9
Цитата Сообщение от noname664 Посмотреть сообщение
Сильные стороны UDP я перечислил, а какие сильные стороны у TCP.
Гарантия доставки данных целостно и в правильном порядке.
Flow control (сервер и клиент свободно работают на разной
пропускной способности сети).
Full duplex
Graceful shutdown

Цитата Сообщение от noname664 Посмотреть сообщение
UDP простой протокол, он прозрачный для понимания и использования.
то же самое я могу сказать про TCP.

Цитата Сообщение от noname664 Посмотреть сообщение
UDP надёжный протокол, при условии, что вы правильно организовали механику обмена данными
В 99% случаев не надо изобретать велосипедо-TCP на базе UDP, надо сразу брать TCP.
IMHO.

Цитата Сообщение от noname664 Посмотреть сообщение
UDP позволяет отправлять несколько пакетов подряд и они не будут объединены в один общий, как в TCP.
В TCP они тоже не факт, что будут объединены.

Цитата Сообщение от noname664 Посмотреть сообщение
UDP позволяет создать на своей основе свой собственный протокол, более мощный, чем даже TCP.
А TCP что, не позволяет?
Вон сколько вокруг прикладных протоколов на базе именно TCP, работают годами и
меняются, как правило, лишь незначительно. Сам TCP, кстати, за многие годы существования
тоже особо не претерпел серьезных изменений.

Цитата Сообщение от noname664 Посмотреть сообщение
Это стандартный общий ответ, не раскрывающий сути.
Но давайте не будем голословны), а составим список плюсов TCP и сравним их со списком плюсов UDP.
И получим сферического коня в вакууме. Надо сравнивать не плюсы-минусы, а
эффективность и целесообразность использования протокола в конкретных задачах.

Цитата Сообщение от noname664 Посмотреть сообщение
На UDP работают все игры, и игровые сервера по нему раздают игровые файлы.
На этом протоколе работают голосовые программы.
На нём работает DHCP и DNS.
На TCP построен HTTP, почтовые протоколы, FTP и еще куча всего.

Цитата Сообщение от noname664 Посмотреть сообщение
TCP вытесняется UDP.
Угу. Принято в таких случаях писать "TCP больше не актуален, TCP умер".
Поживем еще лет двадцать - увидим. HTTP тоже пророчили скорую смерть, а он жив.

Цитата Сообщение от noname664 Посмотреть сообщение
TCP имеет уязвимости, уязвимость тройного квитирования, всего 32-х разрядный счётчик пакетов, из-за чего при передаче большого объёма данных номера пакетов начнут часто повторяться, это старый протокол, он просто устарел.
Изобрети аналог TCP на базе UDP и я посмотрю, сколько в нем будет уязвимостей,
функциональных недосмотров и просто архитектурных просчетов. И проживет ли он
столько же, сколько TCP, и будет ли таким же популярным.

Цитата Сообщение от noname664 Посмотреть сообщение
Убежденный, Вы наверно часто работали с TCP, а UDP наверно особо не использовали.
Спор ни о чем.
0
Задачи выполнил, ушёл
27 / 30 / 7
Регистрация: 16.10.2015
Сообщений: 345
28.12.2015, 02:23 10
Убежденный, Ваше последнее сообщение показало защиту личной точки зрения. Если человек перешёл на защиту личной точки зрения, он будет её защищать даже если будет не прав. Я не защищаю свою точку зрения, у меня её как бы нет, я просто излагаю выводы, и конечно мне не приятно, если я ошибаюсь в выводах, обычно мне не интересно личное мнение, но мне всегда интересны аргументы и логика выводов.

Вот почему я увидел с Вашей стороны защиту личной точки зрения:

Я указал про протокол QUIC, но вы не указали про него, когда написали:
На TCP построен HTTP, почтовые протоколы, FTP и еще куча всего.
В TCP они тоже не факт, что будут объединены.
Они же всегда объединяются в сплошной поток, ну Вы же скорее всего об этом знаете.

Спор ни о чем.
Это эмоция, чтобы указать, что я неправ и не заметил "очевидного".

А TCP что, не позволяет?
Вон сколько вокруг прикладных протоколов на базе именно TCP, работают годами и
меняются, как правило, лишь незначительно. Сам TCP, кстати, за многие годы существования
тоже особо не претерпел серьезных изменений.
На нём нельзя сделать игру в стиле Action из-за пинга. На UDP принципиально можно создать TCP, поэтому UDP универсальнее, более мощнее, он не ограничивает так, как ограничивает TCP.

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

Стиль Вашего ответа упрекательный, с лёгкой иронией, указывающий на мою недальновидность, стремление показать, что я неправ ну во всём, ну так же обычно не бывает ну что бы во всём.
Вы защищаете свою личную точку зрения.
Я бы хотел агрументированное безличностное обсуждение.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
28.12.2015, 10:42 11
Цитата Сообщение от noname664 Посмотреть сообщение
Убежденный, Ваше последнее сообщение показало защиту личной точки зрения.
Да.

Цитата Сообщение от noname664 Посмотреть сообщение
Если человек перешёл на защиту личной точки зрения, он будет её защищать даже если будет не прав.
Нет.

Цитата Сообщение от noname664 Посмотреть сообщение
Я указал про протокол QUIC, но вы не указали про него, когда написали:
На TCP построен HTTP, почтовые протоколы, FTP и еще куча всего.
А что QUIC?
Он еще слишком далек от той черты, чтобы поглотить другие протоколы.
И неизвестно, пересечет ли ее когда-нибудь или нет.

Цитата Сообщение от noname664 Посмотреть сообщение
Они же всегда объединяются в сплошной поток, ну Вы же скорее всего об этом знаете.
Изначально было написано иначе: "UDP позволяет отправлять несколько пакетов подряд и они не будут
объединены в один общий, как в TCP". В TCP вообще нет никаких гарантий относительно того,
какими порциями придут данные, т.е. будут ли они объединены или фрагментированы.

Цитата Сообщение от noname664 Посмотреть сообщение
Это эмоция, чтобы указать, что я неправ и не заметил "очевидного".
Нет, это ответ на реплику "Вы наверно часто работали с TCP, а UDP наверно особо не использовали".
Потому что холивар "TCP vs UDP" сразу съехал на намек на то, что я, мол, не использовал UDP и поэтому "не в теме".

Цитата Сообщение от noname664 Посмотреть сообщение
На UDP принципиально можно создать TCP, поэтому UDP универсальнее, более мощнее, он не ограничивает так, как ограничивает TCP.
Допустим.
Но TCP уже "готов", а UDP в этом случае придется еще "готовить". Попробуй-ка сделать
на UDP гарантию порядка и отправку в случае потери пакетов. Довольно сложно. Не согласен?
Кстати, если рассуждать в таком ключе, почему бы тогда сразу не спуститься на канальный уровень?
Следуя этой логике, он мощнее и универсальнее чем TCP и UDP, вместе взятые.
Хотел бы услышать твое мнение на этот счет.

Цитата Сообщение от noname664 Посмотреть сообщение
UDP просто по сравнению с TCP как бы низкоуровневый, поэтому он прозрачен. В TCP концепция логического соединения, это дополнительная абстрактная прослойка, скрывающая сетевую механику передачи данных, облегчающая использования, но скрывающая технические детали.
Да, все верно.
Точно также, как и HTTP, который работает поверх TCP. Как пример. Но я бы не стал делать из
этого далекоидущие выводы в духе "XXX мощнее YYY, так как XXX более низкоуровневый и сырой".
Начнем с того, что для YYY может быть тонна готовых и годами проверенных реализаций, а
для XXX под эту задачу нет.

Цитата Сообщение от noname664 Посмотреть сообщение
Стиль Вашего ответа упрекательный, с лёгкой иронией, указывающий на мою недальновидность, стремление показать, что я неправ ну во всём
Мне кажется, что ты видишь в моих ответах только плохое.
А между тем, я в самом первом сообщении написал: "все круто", лишь обозначив пару явных
моментов, с которыми я не согласен.

Цитата Сообщение от noname664 Посмотреть сообщение
Вы защищаете свою личную точку зрения.
Да. Я не высшая материя и абсолютная истина мне неведома.

Цитата Сообщение от noname664 Посмотреть сообщение
Я бы хотел агрументированное безличностное обсуждение.
Покажи, где я перешел на личности или позволил себе упрекательный, неуважительный
или хотя бы просто ироничный тон. Правда, в мыслях такого не было.

Что касается аргументов, то я уже написал выше: где-то лучше TCP, где-то UDP.
Да, это стандартный и банальный ответ, которым "отмазываются" всякие К.О. Я считаю, что человек,
который пишет на базе UDP свой велосипедо-TCP, напрасно теряет время, если только он не создает
что-то принципиально новое, что могло бы прыгнуть на голову выше TCP, и не создает новый
протокол для определенной насущной задачи, где TCP по каким-то причинам неэффективен
или вообще неприменим. Потому что TCP уже готов, бери да пользуйся, он проверен временем,
его недостатки, как правило, известны и есть решения для их устранения (или смягчения).

Для передачи звука в реал-тайме, очевидно, лучше использовать UDP.
Для скачивания файла - TCP.
Попытка использовать одно вместо другого приведет либо к потере эффективности,
либо к усложнизму на ровном месте.
0
Задачи выполнил, ушёл
27 / 30 / 7
Регистрация: 16.10.2015
Сообщений: 345
28.12.2015, 16:53 12
Мне кажется, что ты видишь в моих ответах только плохое.
А между тем, я в самом первом сообщении написал: "все круто", лишь обозначив пару явных
моментов, с которыми я не согласен.
Нет, в твоих ответах я увидел и хорошее, ты написал и хорошее. Наверно я увидел плохое в силу привычки, что начнут набрасываться с обвинениями. Да.

По поводу съезжания на канальный уровень. Нет. Это слишком низко, я думал, что Вы используете в качестве аргумента сетевой уровень, где можно работать сразу с пакетами протокола IP. Нет, там нужно самому фрагментировать пакет по MTU и там нет портов, поэтому будет проблема с доставкой пакета на уровень сокетов конкретной программе через порты. Поэтому ниже уровня UDP опускаться, значит усложнить передачу данных из-за ручного разбиения пакета и отсутствия портов как удобной концепции адресации процессов. Концепция портов не ограничивает UDP. IP адресует компьютер, интерфейс, узел, Порт адресует ещё точнее - процесс. Связка IP+Port - это сетевой адрес процесса (Net Address Process - NAP), так сказать.

Вы перешли к практическим аргументам, я не указал в самом начале, что я имел в виду теоретические возможности. Посмотрите на радикальное сравнение: допустим у нас есть только UDP, и нет TCP, и представьте что у нас есть только TCP и нет UDP.
UDP универсальнее, он не ограничивает так, как ограничивает TCP. Это имелось в виду, поэтому он лучше, только в этом, это не означает, что он сразу даёт требуемый функционал, имелась в виду теоретическая причина, что UDP прекрасно подходит для создания своего протокола.
Вы смотрели на практику, я на теорию.

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

Своими сообщениями я хотел указать на то, что мне бы хотелось, чтобы обсуждение было всегда агрументированным, это бы позволило быстрее найти истину, это универсальный подход, возможно кто-то прочитает наши сообщения и задумается. Это хорошо. Я не писал для того, чтобы показать что я прав.
0
28.12.2015, 16:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2015, 16:53
Помогаю со студенческими работами здесь

UDP question
Привет всем, возник вопрос касаемо UDP протокола Если пакет UDP отправили намного раньше, чем...

Возможности UDP
Доброго времени суток, форумчане. Можно ли примерно сказать какой максимальный поток данных...

C++ UDP Клиент
Денечка, есть задание, типа Составление строки путем перемешивания слов. Сервер принимает слова от...

TCP и UDP
Вот при отправке данных по TCP - данные передаются как поток байт. И не известен размер порции...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru