Главная страница

Порядок создания СЗПДн. Требования к сетевым устройствам


Скачать 1.38 Mb.
НазваниеТребования к сетевым устройствам
АнкорПорядок создания СЗПДн
Дата11.10.2021
Размер1.38 Mb.
Формат файлаdoc
Имя файлаrfc1122_HOST1_tr.doc
ТипПротокол
#245378
страница10 из 11
1   2   3   4   5   6   7   8   9   10   11
§4.1. UDP-протокол

§4.1.1. Предисловие

Протокол доставки дейтаграмм пользователя (User Datagram Protocol — UDP-протокол) реализует только минимальный транспортный сервис — негарантированную доставку UDP-блоков — и предоставляет прикладным модулям (процессам) прямой доступ к дейтаграммной службе сетевого (IP-)уровня. Этот протокол используется прикладными протоколами (системами, процессами), которые не требуют такого качества услуг, предоставляемых ТСР-протоколом, или которые желают использовать услуги по организации виртуального соединения, не предоставляемых ТСР-протоколом (например, доставка IP-пакетов с использованием групповой или широковещательной IP-адресации).

UDP-протокол является почти “пустым протоколом” (“null protocol”). Среди услуг, которые он предоставляет, это только вычисление проверочной (контрольной) суммы с использованием IP-адресов и мультиплексирование блоков транспортного уровня на основе номера транспортного порта. Более того, прикладная программа, функционирующая совместно UDP-протоколом, обязана сама решать проблемы сквозного соединения, которые мог бы решить протокол транспортного уровня с установлением соединения (повторная передача для обеспечения надёжной доставки, фрагментация и обратная сборка, управление потоком, предотвращение перегрузок), когда бы это понадобилось. Довольно сложная связь между IP- и ТСР-протоколами будет также отражаться в соединении между UDP-протоколом и многими прикладными системами (процессами), использующими UDP-протокол.
§4.1.2. Специфические проблемы

§4.1.2.1. Пóрты

Правила использования UDP-протоколом хорошо известных пóртов (well-known ports) полностью совпадают с правилами для ТСР-протокола.

Если IP-пакет содержит UDP-блок с номером UDP-порта, который “не ожидает” получение такого блока (не находится в режиме “прослушивания порта”, “LISTEN call”), то программный модуль, реализующий функции UDP-протокола (UDP-модуль), должен передать ICMP-сообщение об ошибке “Порт не достижим” (“Port Unreachable”).
§4.1.2.2. Дополнительные функции IP-протокола

Программный UDP-модуль должен в обязательном порядке, причём в явном виде, транслировать данные любой дополнительной функции IP-протокола, принятые на сетевом (IP-)уровне, на прикладной уровень.

Прикладной программный модуль (процесс) должен обладать способностью определения дополнительных функций IP-протокола для передачи их UDP-модулю с целью формирования UDP-блоков, а UDP-модуль обязан транслировать эти дополнительные функции на сетевой (IP-)уровень.

В настоящее время, дополнительными функциями, которые необходимо транслировать через UDP-модуль, являются “Исходный маршрут или маршрут от источника” (“Source Route”), “Регистрация маршрута” (“Record Route”) и “Метка времени” (“Timestamp”). Тем не менее, в перспективе могут быть определены иные дополнительные функции, и UDP-модулю нет необходимости и даже не целесообразно “выдвигать” какие-либо предположения относительно формата или содержания таких функций, данные которых будут транслироваться на или от прикладного модуля (процесса). Исключением в данном случае может быть дополнительная функция IP-протокола “Безопасность” (“Security”).

Прикладному модулю (процессу), функционирующему совместно с UDP-модулем, понадобиться получение маршрута от источника из UDP-блока/запроса и формирование обратного маршрута (то есть с точностью до “наоборот”) для отправки соответствующего ответа.
§4.1.2.3. ICMP-сообщения

Программный UDP-модуль должен в обязательном порядке транслировать ICMP-сообщения об ошибках, принятые от сетевого (IP-)уровня, на прикладной уровень. По крайней мере, на понятийном уровне это могло бы завершиться передачей ответа ERROR_REPORT (сообщение об ошибке) прикладному процессу.

Следует заметить, что ICMP-сообщения об ошибках, полученные в ответ после передачи IP-пакета, содержащего UDP-блок, поступают асинхронно. Функционирующий совместно с UDP-модулем прикладной модуль (процесс), который пожелает принимать ICMP-сообщения об ошибках, берёт на себя ответственность за демультиплексирование таких сообщений при их поступлении через транспортный интерфейс. Например, с этой целью прикладной модуль (процесс) может находиться в состоянии ожидания процедуры приёма. Также прикладной модуль (процесс) несёт ответственность за предотвращение нештатных ситуаций, вызванных задержкой поступления ICMP-сообщений об ошибках, которые явились результатом раннее переданного UDP-блока, но транслируемых через один и тот же транспортный порт (или через несколько одинаковых портов).
§4.1.2.4. Проверочная сумма UDP-протокола

ГВМ должна обладать способностью вычисления и проверки контрольных сумм UDP-протокола. Дополнительно прикладной модуль (процесс) может обладать способностью контролировать наличие или отсутствие проверочной суммы UDP-протокола, но в режиме по-умолчанию эти две функции должны быть реализованы.

Если был получен UDP-блок с проверочной суммой, которая является не нулевой и некорректной, то UDP-модуль должен по умолчанию его уничтожить. Дополнительно прикладной модуль (процесс) может обладать способностью контролировать отсутствие проверочной суммы UDP-блоках, и если последние без проверочной суммы, то их целесообразно уничтожать или транслировать на прикладной уровень.

Некоторые прикладные системы, которые обычно функционируют во взаимодействующих между собой (противоположных) ЛВС через Internet-сеть, в целях повышения эффективности блокируют функции вычисления и проверки контрольных сумм UDP-протокола. И в результате такого блокирования имеют место многочисленные случаи не обнаруживаемых ошибок вследствие отсутствия ответных сообщений о них. Даже целесообразность блокировки функции вычисления и проверки контрольных сумм UDP-протокола является весьма сомнительной.

Существует общая ошибка при реализации функции вычисления и проверки контрольных сумм UDP-протокола. В отличие от вычисления и проверки контрольных сумм ТСР-протокола, эта функция в UDP-протоколе является не обязательной. Нулевое значение, содержащееся в поле “Контрольная сумма” заголовка принятого UDP-блока, указывает на то, что значение контрольной суммы отсутствует. Если после вычисления контрольной суммы её значение действительно равно нулю, передающая сторона должна заполнить поле “Контрольная сумма” заголовка UDP-блока единицами (десятичное значение — 65535).
§4.1.2.5. UDP-протокол и многоадресная ГВМ

При получении IP-пакета с UDP-блоком его специфический IP-адрес получателя должен быть доставлен на прикладной уровень.

Прикладной программный модуль (процесс) должен точно определять IP-адрес отправителя в принятом IP-пакете, доставляющем UDP-блок, или оставлять его не опознанным (в этом случае программный IP-модуль будет выбирать соответствующий IP-адрес отправителя). Целесообразно, чтобы был реализован способ установления канала взаимодействия с прикладным уровнем с целью выбора IP-адреса отправителя (например, для того, чтобы прикладной модуль мог в последующем принять ответный UDP-блок только через соответствующий интерфейс).

Прикладной модуль, использующий UDP-протокол, должен использовать в ответе тот IP-адрес отправителя, который являлся специфическим IP-адресом получателя в запросе.
§4.1.2.6. Некорректные IP-адреса

Полученный IP-пакет, содержащий заголовок с некорректным IP-адресом отправителя и UDP-блок (например, широковещательный или групповой IP-адрес), должен уничтожаться UDP- или IP-модулем.

Когда ГВМ транслирует IP-пакет, содержащий UDP-блок, то IP-адрес отправителя должен быть (одним из) IP-адресом(ов) самой ГВМ.
§4.1.3. Транспортный интерфейс (между UDP- и прикладным

модулями)

транспортный интерфейс между UDP- и прикладным модулями (транспортным и прикладным уровнями) должен предоставлять все услуги сетевого интерфейса между сетевым(IP-) и транспортным модулями (сетевым(IP-) и транспортным уровнями), представленными в §3.4. Таким образом, прикладной модуль, использующий UDP-протокол, запрашивает функции GET_SRCADDR(), GET_MAXSIZES(), ADVISE_DELIVPROB()иRECV_ICMP(), также представленные в §3.4. Например, функция GET_MAXSIZES() может использоваться для определения эффективного максимального размера UDP-блока, транслируемого IP-пакетом, для соответствующей структуры из трёх параметров {interface,remote host,TOS} (интерфейс, удалённая ГВМ, категория обслуживания).

Прикладной программный модуль должен обладать способностью устанавливать значения параметров TTL и TOS, а также дополнительных IP-функций при трансляции IP-пакета, доставляющего UDP-блок. Значения этих параметров должны доставляться на IP-уровень прозрачно. Программный UDP-модуль может транслировать полученное значение параметра TOS на прикладной уровень.
§4.1.4. Требования к ГВМ на транспортном уровне

для UDP-протокола

На рис.8 представлена таблица с общими требованиями к ГВМ на транспортном уровне для UDP-протокола.




п/п

Содержание требования

(функция)

Обязательная

Рекомендуемая

Возможная

Не

целесообразная

Запрещённая

1.

Передача ICMP-сообщения об ошибке “Порт не достижим” (“Port Unreachable”)















2.

Трансляция принятых значений дополнительных IP-функций на прикладной уровень















3.

Прикладной уровень может устанавливать значения дополнительных IP-функций при передаче IP-пакета















4.

UDP-модуль транслирует значения дополнительных IP-функций на сетевой(IP-) уровень















5.

Доставка ICMP-сообщений на прикладной уровень















6.

Способность генерирования/проверки контрольной суммы















7.

Удаление UDP-блока по умолчанию в случае некорректной контрольной суммы















8.

Если установлена дополнительная функция “Отправитель” (“Sender”), то проверочная сумма не вычисляется















9.

В режиме по умолчанию проверочная сумма вычисляется















10.

Если установлена дополнительная функция “Получатель” (“Receiver”), то проверочная сумма запрашивается















11.

Трансляция специфического IP-адреса получателя на прикладной уровень















12.

Прикладной уровень может определять локальный IP-адрес















13.

Прикладной уровень определяет локальный IP-адрес “наугад”















14.

Прикладной уровень уведомляет об используемом локальном IP-адресе















15.

IP-пакет с некорректным IP-адресом отправителя уничтожается UDP- или IP-протоколами















16.

Передача IP-пакетов, содержащих только корректные IP-адреса отправителя















17.

Дублирование функций сетевого(IP-) интерфейса транспортным интерфейсом в интересах прокладного модуля















18.

Способность определять значения параметров TTL, TOS и дополнительных IP-функций в период передачи IP-пакета















19.

Трансляция полученного значения параметра ТОS на прикладной уровень
















Рис.8. Требования к ГВМ на транспортном уровне для UDP-протокола
§4.2. Протокол управления передачей (ТСР-протокол)

§4.2.1. Предисловие

Протокол управления передачей (Transmission Control Protocol — TCP-протокол, RFC-793) является основным протоколом с установлением соединений транспортного уровня Internet-архитектуры. ТСР-протокол обеспечивает надёжную последовательную доставку полнодуплексного потока октетов (8-битовых последовательностей). Этот протокол используется теми прикладными системами (процессами), которые нуждаются в надёжной канально-ориентированной транспортной службе, например, электронная почта (SMTP-протокол), доставка файлов (FTP-протокол) и служба виртуального терминала (TELNET-протокол).
§4.2.2. Обзор протокола

§4.2.2.1. Хорошо известные по́рты: RFC-793

Программный модуль ТСР-протокола (ТСР-модуль) резервирует номера пóртов в диапазоне от 0 до 255 для так называемых хорошо известных пóртов, используемых для доступа к службам, которые стандартизированы в рамках Internet-архитектуры. Оставшаяся часть диапазона номеров может быть свободно распределена между прикладными системами (процессами). Перечень хорошо известных пóртов можно найти на WEB-сайте IETF (www.iana.org). Необходимые условия для определения нового хорошо известного номера порта представлены в соответствующих RFC-документах.

Некоторые системы расширяют такой подход к распределению пространства номеров путем добавления третьего субдиапазона номеров ТСР-пóртов: так называемых зарезервированных по́ртов, которые используются, как правило, для обозначения специализированных служб, реализуемых операционными системами. Например, зарезервированные пóрты могут занять диапазон между значением 256 и некоторым верхним пределом, зависящим от конкретной системы.

В дальнейшем некоторые системы предпочтут запрет хорошо известных и зарезервированных по́ртов за счёт допуска к открытым ТСР-соединениям с такими номерами по́ртов только привилегированных пользователей. Это вполне приемлемое решение, но только до тех пор, пока ГВМ не будет предполагать, что все ГВМ защищают свои пóрты с малыми значениями номеров именно таким способом.
1   2   3   4   5   6   7   8   9   10   11


написать администратору сайта