* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Протокол UDP
23 февраля 2009

Протокол UDP (User Datagram Protocol - протокол пользовательских дейтаграмм) используется реже, чем его "одноклассник" TCP, но он проще для понимания, поэтому мы начнём изучение транспортных протоколов с него. Коротко UDP можно описать как ненадёжный протокол без соединения, основанный на дейтаграммах. Теперь рассмотрим каждую из этих характеристик подробнее.
UDP не имеет никаких дополнительных средств управления пакетами по сравнению с IP. Это значит, что пакеты, отправленные с помощью UDP, могут теряться, дублироваться и менять порядок следования. В сети без роутеров ничего этого с пакетами почти никогда не происходит, и UDP может условно считаться надёжным протоколом. Сети с роутерами строятся, конечно же, таким образом, чтобы подобные случаи происходили как можно реже, но полностью исключить их, тем не менее, нельзя. Происходит это из-за того, что передача данных может идти несколькими путями через разные роутеры. Например, пакет может пропасть, если короткий путь к удалённому узлу временно недоступен, а в длинном приходится пройти больше роутеров, чем это разрешено. Дублироваться пакеты могут, если они ошибочно передаются двумя путями, а порядок следования может изменяться, если пакет, посланный первым, идёт по более длинному пути, чем пакет, посланный вторым.
Всё вышесказанное отнюдь не означает, что на основе UDP нельзя построить надёжный обмен данными, просто заботу об этом должно взять на себя само приложение. Каждый исходящий пакет должен содержать порядковый номер, и в ответ на него должен приходить специальный пакет - квитанция, которая уведомляет отправителя, что пакет доставлен. При отсутствии квитанции пакет высылается повторно (для этого необходимо ввести таймауты на получение квитанции). Принимающая сторона по номерам пакетов восстанавливает их исходный порядок.
UDP не поддерживает соединение. Это означает, что при использовании этого протокола можно в любой момент отправить данные по любому адресу без необходимости каких-либо предварительных действий, направленных на установление связи с адресатом. Это напоминает процесс отправки обычного письма: на нём пишется адрес, и оно опускается в почтовый ящик без каких-либо предварительных действий. Такой подход обеспечивает большую гибкость, но лишает систему возможности автоматической проверки исправности канала связи.
Дейтаграммами называются пакеты, которые передаются как единое целое. Каждый пакет, отправленный с помощью UDP, составляет одну дейтаграмму. Полученные дейтаграммы складываются в буфер принимающего сокета и могут быть получены только раздельно: за одну операцию чтения из буфера программа, использующая сокет, может получить только одну дейтаграмму. Если в буфере лежит несколько дейтаграмм, потребуется несколько операций чтения, чтобы прочитать все. Кроме того, одну дейтаграмму нельзя получить из буфера по частям: она должна быть прочитана целиком за одну операцию.
Чтобы данные, передаваемые разным сокетам, не перемешивались, каждый сокет должен получить уникальный в пределах узла номер от 0 до 65535, называемый номером порта. При отправке дейтаграммы отправитель указывает IP-адрес и порт получателя, и система принимающей стороны находит сокет, привязанный к указанному порту, и помещает данные в его буфер. По сути дела, UDP является очень простой надстройкой над IP, все функции которой заключаются в том, что физический поток разделяется на несколько логических с помощью портов, и добавляется проверка целостности данных с помощью контрольной суммы (сам по себе протокол IP не гарантирует отсутствия искажений данных при передаче).
Максимальный размер одной дейтаграммы IP равен 65535 байтам. Из них не менее 20 байт занимает заголовок IP. Заголовок UDP имеет размер 8 байт. Таким образом, максимальный размер одной дейтаграммы UDP составляет 65507 байт.
Типичная область применения UDP - программы, для которых потеря пакетов некритична. Например, некоторые сетевые 3D-стрелялки в локальной сети используют UDP, т.к. очень часто посылают пакеты, информирующие о действиях игрока, и потеря одного пакета не приведёт к существенным проблемам: следующий пакет доставит необходимые данные. Достоинствами UDP являются простота установления связи, возможность использования одного сокета для обмена данными с несколькими адресами и отсутствие необходимости возобновлять соединение после разрыва связи. В некоторых задачах также очень удобно то, что дейтаграммы не смешиваются, и получатель всегда знает, какие данные были отправлены одной дейтаграммой, а какие - разными.
Ещё одним достоинством UDP является возможность отправки широковещательных дейтаграмм. Для этого нужно указать широковещательный IP-адрес (обычно это 255.255.255.255, но в некоторых случаях могут использоваться адреса типа 192.168.100.225 для вещания в пределах сети 192.168.100.ХХ и т.п.), и такую дейтаграмму получат все сокеты в локальной сети, привязанные к заданному порту. Эту возможность нередко используют программы, которые заранее не знают, с какими компьютерами они должны связываться. Они посылают широковещательное сообщение и связываются со всеми узлами, которые распознали это сообщение и прислали на него соответствующий ответ. По умолчанию для широковещательных пакетов число роутеров, через которые они могут пройти, устанавливается равным нулю, поэтому такие пакеты не выходят за пределы подсети.


Теги: User Datagram Protocol Borland Delphi

Статьи по теме:

Панель Desktop
Свойство Alignment
Свойство PrintIfEmpty
Свойство Color
Свойство Master для TQRChildBand
Свойство Expression для TQRExpr
Панель Position
Проектирование структуры реляционного хранилища данных
MasterSource
Indexes
Пример создания задания на печать
Свойство Page
Электронная почта. Структура электронной почты, её возможности
GetFieldData
Семиуровневая модель ЛВС
| Borland Delphi | Alex |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | Borland Delphi | Протокол UDP. Регион сайта: Москва и Санкт-Петербург