[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Web - технологии / Протоколы /

Протокол UDP

Передача информации из интернет происходит при помощи транспортных протоколов. Существует два транспортных протокола - TCP и UDP. В этой статье мы рассмотрим User Datagram Protocol или UDP.

Почти все уже знакомы с транспортным протоколом TCP. Однако не многие знают о транспортном протоколе UDP. И для этого существуют причины. Почти все данные, будь то данные приложений, данные сессии или другие данные, пересылаются по старому проверенному протоколу TCP. В результате в голове укрепляется мысль, которую я постоянно слышу от многих людей: “Да, TCP гарантирует, что данные придут туда, куда надо”. Однако в действительности, это заявление неправильно.

TCP или Transmission Control Protocol – это протокол ориентированный на соединение. UDP или User Datagram Protocol не требует соединения. Что же это в точности означает? Хорошо, если вы читали мои статьи о TCP, вы должны были заметить, что TCP имеет очень много параметров, включенных в заголовок. Эти самые параметры (номер последовательности TCP, номер подтверждения) делают этот протокол ориентированным на соединение. Наконец, TCP имеет заголовок стандартной длины в 20 байт, вместо 8 у UDP.

Чем отличается UDP?

Хорошо, наш протокол UDP имеет длину заголовка 8 байт. Это на 12 байтов меньше, чем для TCP. В результате этого UDP намного быстрее, т.к. необходимо меньше передавать. Кажется, что 12 байтов это не много, но, умножив их на тысячи пакетов, мы быстро увидим разницу для вашей сети. Но если заголовок UDP намного меньше, то, как тогда он выглядит, вы спросите меня? Хороший вопрос! Посмотрите, пожалуйста, на диаграмму ниже и увидите, как выглядит заголовок UDP.

_____________________________________________________
2 байта номер порта отправителя | 2 байта номер порта получателя
_____________________________________________________
2 байта длина пакета UDP             | 2 байта значение контрольной суммы UDP ____________________________________________________
                                      Данные, если таковые имеются

Итак, из диаграммы выше, мы видим, что дополнительные 12 байтов в заголовке могут привести к значительным различиям. В результате этого UDP не ориентирован на соединение. Вы наверно заметили, что в заголовке UDP также имеется контрольная сумма. Сейчас я бы хотел напомнить вам, что все 4 основных протокола - IP, TCP, UDP, ICMP – имеют контрольную сумму. Во всех четырех основных протоколах при наличии данных в заголовке присутствует контрольная сумма. Еще я бы хотел упомянуть о UDP и его контрольной сумме, что ее использование необязательно. По существу, оно не должно использоваться, а в TCP, ICMP, и IP, напротив необходимо.

Это гарантированно?

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

Да, все это здорово, но в действительности использует ли какой-нибудь приложение или другой протокол UDP-протокол? Отличный вопрос, и ответ на него положительный. Существует несколько приложений, которые используют в качестве транспорта протокол UDP. Одно из самых известных – это DNS  (domain name system – доменная служба имен). Трафик, формируемый DNS, в действительности передается по UDP. DNS – это один из тех протоколов, который использует и UDP и DNS. Однако стоит сказать, что активность DNS в основном складывается из запросов и ответов DNS. Которые, как упоминалось ранее, передаются по UDP.

А мы рассмотрим пакет UDP!

Теперь, когда я чувствую ваше предвкушение узнать строение UDP, мы рассмотрим пакет UDP и различные поля, которые можно видеть в примере.

02:00:04.079943 192.168.1.100.53 > 192.168.1.200.57746: [udp sum ok]  60865 FormErr% [0q] 0/0/0 (12) (DF) (ttl 253, id 9987, len 40)
0x0000   4500 0028 2703 4000 fd11 619a c0a8 0164        E..(' Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
0x0010   c0a8 01c8 0035 e192 0014 ba83 edc1 8091        .....5..........
0x0020   0000 0000 0000 0000 0000 0000 0000             ..............

Теперь, если вы читали все мои статьи, вы понимаете, что есть отличный ресурс для просмотра пакетов. В противном случае загрузите TCP/IP and tcpdump flyer. Он находится в разделе “Additional Resources”. С этим документом мы готовы рассмотреть содержимое пакета байт за байтом.

Один из способов быстро ориентироваться в пакете заключается в том, чтобы перейти к адресу назначения в заголовке IP. Его можно найти в строке 0x0010, и он составляет следующие 4 байта информации - c0a8 01c8. Мы знаем, что если нет настроек в нашем заголовке IP, то этот протокол следует  заголовком IP (в этом случае UDP) 11 в шестнадцатиричном коде. 11 можно увидеть на первой строке 0x00 “fd11”.  С помощью некоторых параметров заголовка IP можно быстро определить, где начинается протокол.

Итак, на основе того, что было сказано, первый байт нашего заголовка UDP – 0035, находящийся в строке 0x0010. Согласно нашей таблице TCP/IP, первые два байта заголовка UDP относятся к порту источника. Если мы переведем шестнадцатиричное значение 0035, то мы увидим, к какому порту относится данных пакет: это порт 53.

Уже лучше? Теперь после порта источника следующие два байта относятся к порту назначения; как видно это число в шестнадцатиричном коде e192 или более правильно 0xe192. После того, как мы переведем его в десятичный код, мы сможем определить порт назначения.

Замечательно, мы продолжаем рассматривать заголовок нашего UDP пакета! Следующие 2 байта согласно нашей таблице – это длина пакета UDP - 0x0014, после преобразования в десятичный код получаем 20. Так в действительности и должно было быть. Далее идет значение контрольной суммы UDP, которая также занимает 2 байта. В нашем случае значение контрольной суммы 0xba83.

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

Дон Паркер (Don Parker)




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Web - технологии / Протоколы /

IP адрес: определение и сокрытие
15-03-2010   

Как известно, Internet основана на семействе протоколов tcp/ip, определяющих, каким образом осуществляется взаимодействие между подключенными к сети компьютерами. Идентификация этих компьютеров осуществляется с помощью так называемых IP-адресов... подробнее

Кол. просмотров: общее - 2965 сегодня - 2

Устранение неисправностей TCP/IP: Структурный подход
15-03-2010   

О чем вы думаете, когда слышите фразу устранение неисправностей с TCP/IP? Люди, которые обладают хорошим воображением могут сразу представить блок-схему... подробнее

Кол. просмотров: общее - 3245 сегодня - 1

Протокол NNTP
15-03-2010   

Все знают о таких программах для работы в одноранговой сети, как Napster, Kazaa и т.д. Однако сколько человек знают о новостных группах в двоичном формате? Держу пари, что немногие. Подобные группы основаны на протоколе NNTP, который и является основной целью написания настоящей статьи. Итак, читайте, чтобы узнать больше о NNTP... подробнее

Кол. просмотров: общее - 3165 сегодня - 0

Протокол FTP
15-03-2010   

Из огромного количества существующих протоколов только некоторые были созданы для передачи данных. Вопреки расхожему мнению Интернет - это не только HTTP и веб-сайты. В данной статье дается обзор протокола FTP и передачи данных с его помощью... подробнее

Кол. просмотров: общее - 9009 сегодня - 0

Протокол UDP
15-03-2010   

Передача информации из интернет происходит при помощи транспортных протоколов. Существует два транспортных протокола - TCP и UDP. В этой статье мы рассмотрим User Datagram Protocol или UDP... подробнее

Кол. просмотров: общее - 3308 сегодня - 0



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects