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

10.5 Псевдозаголовок udр

Для расчета контрольной суммы в UDР требуется больше информации, чем представлено только в UDР-сообщении. Чтобы вычислить контрольную сумму, UDР приписывает псевдозаголовок к дейтаграмме и добавляет в конец октет из нулей для дополнения сообщения до числа бит, кратного шестнадцати и вычисляет контрольную сумму всего этого. Октет из нулей, используемый для дополнения, и псевдозаголовок не передаются вместе с UDР-дейтаграммой и не включается в ее длину. Для вычисления контрольной суммы сначала сохраняется ноль в поле КОНТРОЛЬНАЯ СУММА, затем вычисляется шестнадцатибитная сумма с дополнением целого обьекта, включая псевдо-заголовок, заголовок UDР и данные.

Цель использования псевдозаголовка - проверка того, что UDР-дейтаграмма достигла своего настоящего места назначения. Ключом к пониманию псевдозаголовка является понимание того, что правильное место назначения состоит из конкретного компьютера и конкретного порта в компьютере. Заголовок сам по себе определяет только номер протокольного порта. Таким образом, чтобы проверить место назначения, UDР на компьютере-источнике вычисляет контрольную сумму, которая учитывает IР-адрес назначения, а так же саму UDР-дейтаграмму. При получении дейтаграммы в месте назначения программы UDР проверяют контрольную сумму, используя IР-адрес назначения, полученный из заголовка IР-дейтаграммы, которая содержала UDР-сообщение. Если контрольные суммы одинаковы, дейтаграмма действительно достигла нужного хост - компьютера и нужного порта в нем.

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

Рисунок 115- 12 октетов псевдозаголовка, используемые при расчете контрольной суммы UDР

10.6 Разделение на уровни и вычисление контрольной суммы udр

Можно заметить кажущееся противоречие между правилом разделения на уровни и вычислением контрольной суммы. Напомним, что контрольная сумма UDР включает псевдозаголовок, содержащий поля для IР-адресов отправителя и получателя. Можно доказать, что IР-адрес получателя должен быть известен пользователю при посылке UDР-дейтаграммы, и что пользователь должен передать его на уровень UDР. Поэтому уровень UDР может получить IР-адрес, не взаимодействуя с уровнем IР. Однако IР-адрес источника зависит от выбранного пути для дейтаграммы, так как IР-адрес источника определяет сетевой интерфейс, через который будет передаваться дейтаграмма. Таким образом, UDР не может знать IР-адрес источника без контакта с уровнем IР.

Мы предполагаем, что UDР просит уровень IР определить IР-адрес отправителя и (возможно) получателя, использует их затем для формирования псевдозаголовка, вычисляет контрольную сумму, отбрасывает псевдозаголовок и передает UDР-дейтаграмму IР для посылки по сети. Альтернативный вариант, дающий большую эффективность, состоит в инкапсуляции UDР-дейтаграммы уровнем UDР в IР-дейтаграмму, заполнении полей IР-адресов отправителя и получателя в IР-заголовке, вычислении контрольной суммы UDР и передачи IР-дейтаграммы уровню IР, который заполнит оставшиеся поля IР-заголовка.

Нарушит ли явное взаимодействие между UDР и IР нашу главную предпосылку о том, что разделение на уровни отражает разделение функций? Да. UDР тесно связан с IР протоколом. В данном случае налицо отход от принципа полного разделения, сделанный по совершенно практическим причинам. Мы вынуждены нарушить принцип разделения на уровни, так как невозможно полностью идентифицировать программу-получателя, не указав компьютер получателя, и мы хотим сделать отображение адресов, используемых UDР и IР эффективным. В одном из упражнений в конце главы этот вопрос анализируется с другой точки зрения и в нем спрашивается, должны ли UDР и IР быть разделены.

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