Интернет магазин китайских планшетных компьютеров |
||||||||||||||||||||||||||||||||
Компьютеры - UDP13 июня 2011Оглавление: 1. UDP 2. Использование UDP это транспортный протокол для передачи данных в сетях IP без установления соединения. Он является одним из самых простых протоколов транспортного уровня модели OSI. Его IP-идентификатор 0x11. В отличие от TCP, UDP не гарантирует доставку пакета, поэтому аббревиатуру иногда расшифровывают как Unreliable Datagram Protocol. Это позволяет ему гораздо быстрее и эффективнее доставлять данные для приложений, которым требуется большая пропускная способность линий связи, либо требуется малое время доставки данных. Состав UDP-датаграммыПервые 64 бита датаграммы представляют собой UDP-заголовок, остальные биты данные сообщения:
Значение поля «длина датаграммы» указывает на длину всего UDP-сообщения, то есть включая и UDP-заголовок. Измеряется в октетах. Максимальная длина данныхДля вычисления максимальной длины данных в UDP-сообщении при передаче в IP сетях необходимо учесть, что UDP-сообщение в свою очередь является содержимым области данных IP-сообщения. Максимальная длина IP-сообщения равна 65535 октетов. Потому максимальная длина UDP-сообщения равна 65535 − 20 = 65515 октетов. Длина заголовка UDP-сообщения равна 8 октетам, следовательно, максимальная длина данных в UDP-сообщении равна 65515 − 8 = 65507 октетов. На практике нерационально использовать максимальную величину IP пакета, так как такой размер превышает MTU основных протоколов канального уровня, и следовательно требует фрагментации IP пакета, поэтому обычно используется размер, соотнесенный с MTU используемого канального протокола.
ПсевдозаголовокUDP-заголовок не содержит информации об адресе отправителя и получателя, поэтому даже при совпадении порта получателя нельзя с точностью сказать, что сообщение пришло в нужное место. Для проверки того, что UDP-сообщение достигло пункта своего назначения, используется дополнительный псевдозаголовок:
Поле «протокол» содержит в себе значение 17 идентификатор UDP-протокола. Поле «длина UDP-датаграммы» содержит в себе длину UDP-сообщения в октетах, то есть совпадает с одноименным полем в UDP-заголовке. Псевдозаголовок не включается в UDP-сообщение. Он используется для расчета контрольной суммы перед отправлением сообщения и при его получении. Расчёт контрольной суммыПеред расчетом контрольной суммы UDP-сообщение дополняется в конце нулевыми битами до длины, кратной 16 битам. Поле контрольной суммы в UDP-заголовке во время расчета контрольной суммы отправляемого сообщения принимается нулевым. Для расчета контрольной суммы псевдозаголовок и UDP-сообщение разбивается на слова = 16 бит). Затем рассчитывается поразрядное дополнение до единицы суммы всех слов с поразрядным дополнением. Результат записывается в соответствующее поле в UDP-заголовке. В том случае, если контрольная сумма получилась равной нулю, поле заполняют единицами. Если контрольную сумму не требуется рассчитывать, значение поля оставляют нулевым. При получении сообщения получатель считает контрольную сумму заново, и, если в результате получится двоичное число из шестнадцати единиц, то контрольная сумма считается сошедшейся, и сообщение принимается. Пример расчёта контрольной суммыДля примера рассчитаем контрольную сумму нескольких 16-битных слов:
ПоляЕсли задействован порт отправителя, то он указывает порт процесса, посылающего датаграмму. Можно принять, что это тот порт, на который при отсутствии какой-либо иной информации следует адресовать ответную датаграмму. Если данное поле не задействовано, то в него следует записать нули. Порт получателя имеет смысл только в контексте конкретного Internet адреса получателя. Длина длина в октетах данной датаграммы, включая как заголовок, так и данные. В псевдозаголовке, который «понарошку» добавляется к UDP-заголовку, указываются адреса отправителя и получателя, номер протокола и длина UDP-датаграммы. Процедура вычисления контрольной суммы такая же, как и в протоколе TCP. Если расчетная контрольная сумма равна нулю, то соответствующее поле заполняется всеми единицами. Если поле заполнено одними нулями, это означает, что отправитель датаграммы не вычислял контрольной суммы, что может быть сделано при отладке, а также для тех протоколов, которые не требуют точности передачи. Здесь следует внести небольшое пояснение. При дополнении до единицы, или, что то же, при обратном представлении числа, запись со всеми нулями эквивалентна записи со всеми единицами. Обе они обозначают нуль. Поскольку первый бит является знаковым, число, состоящее из всех нулей называют положительным нулём, а состоящее из всех единиц отрицательным. Несмотря на их математическую эквивалентность, в поле контрольной суммы UDP, как можно было видеть, они используются по-разному. Положительный ноль указывает на то, что контрольная сумма намеренно не вычислялась, а отрицательный ноль, на то, что вычисленная контрольная сумма оказалась равной нулю. Интерфейс протокола IPМодуль протокола UDP должен иметь возможность извлекать из Internet заголовка датаграммы Internet адреса отправителя и получателя, а также тип протокола. Один из возможных интерфейсов UDP/IP мог бы возвращать в ответ на команду получения полную Internet датаграмму, включая Internet заголовок целиком. Такой интерфейс мог бы также позволить протоколу UDP передавать протоколу IP для посылки некую готовую Internet датаграмму вместе с заголовком. Протокол IP мог бы лишь проверять определенные поля Internet заголовка на совместимость, а также вычислять контрольную сумму Просмотров: 2191
|