Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
47
Добавлен:
11.04.2015
Размер:
4.78 Mб
Скачать

10.3 Протокол пользовательских дейтаграмм (udр)

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

UDP использует Internet Protocol для передачи сообщения от одной машины к другой и обеспечивает ту же самую ненадежную доставку сообщений, что и IР. UDР не использует подтверждения прихода сообщений, не упорядочивает приходящие сообщения и не обеспечивает обратной связи для управления скоростью передачи информации между машинами. Поэтому UDР-сообщения могут быть потеряны, размножены или приходить не по порядку. Кроме того, пакеты могут приходить раньше, чем получатель сможет обработать их. В общем можно сказать, что:

UDР обеспечивает ненадежную службу без установления соединения и использует IР для транспортировки сообщений между машинами. Он предоставляет возможность указывать несколько мест доставки на одном компьютере.

Прикладные программы, использующие UDP, несут полную ответственность за проблемы надежности, включая потерю сообщений, дублирование, задержку, неупорядоченность или потерю связи. К несчастью, программисты часто игнорируют эти проблемы при разработке программ. Кроме того, поскольку программисты тестируют свои программы, используя надежные высокоскоростные локальные, тестирование может не выявить возможные ошибки. Таким образом, программы, использующие UDP и успешно работающие в локальной сети, будут аварийно завершаться в глобальных сетях TCР/IР.

10.4 Формат udр-сообщений

Каждое UDР-сообщение называется пользовательской дейтаграммой. Концептуально дейтаграмма состоит из двух частей, UDР заголовка и области данных UDР. Как показано на рисунке 114, заголовок состоит из четырех 16-битных полей, которые определяют порт, из которого было послано сообщение, порт, в который сообщение приходит, длину сообщения и контрольную сумму UDР.

Рисунок 114 - Формат полей в дейтаграмме UDР

Поля «Порт отправителя» и «Порт получателя» содержат 16-битные номера портов, используемые для разделения сообщений, получения которых ожидают процессы. Поле «Порт отправителя» необязательно. Когда оно используется, оно обозначает порт-источник сообщения, на который нужно посылать ответы, если не используется, оно должно содержать ноль.

Поле «Дина» (length) содержит число октетов в дейтаграмме, включая заголовок UDP и данные. Таким образом, минимальное значение поля length - восемь, то есть только длина заголовка. (Не произойдет ничего страшного, если будет отправлена UDР дейтаграмма с нулевой длиной данных.) Параметр UDР длины - избыточный. IР дейтаграмма содержит свою полную длину в байтах, поэтому длина UDP дейтаграммы это полная длина минус длина IР заголовка.

Контрольная сумма UDP необязательна, значение 0 в поле «Контрольная сумма» означает, что сумма не вычисляется. Разработчики решили сделать контрольную сумму необязательной, чтобы уменьшить объем вычислений при использовании UDР в высоконадежной локальной сети. Заметим однако, что IР не вычисляет контрольную сумму поля данных в IР-дейтаграммах. Таким образом, контрольная сумма UDР обеспечивает единственную гарантию того, что целостность данных сохранена и ими можно пользоваться.

Иногда удивляются, почему у некоторых UDР-сообщений рассчитанное значение контрольной суммы равно нулю. Значение 0 возможно потому, что UDР использует такой же алгоритм вычисления контрольной суммы, как и IР: он делит данные на шестнадцатибитные части и вычисляет дополнение от суммы их дополнений. Удивительно, но ноль не проблема, потому что арифметика с дополнениями имеет два представления нуля: все биты содержат или ноль, или единицу. Когда контрольная сумма равна нулю, UDР используют представление с установкой всех битов в единицу.

Соседние файлы в папке Методичка по протоколам