Сидни Фейт - TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
Протокол Address Resolution Protocol специфицирован для Ethernet в RFC 826. Обратные ARP обсуждаются в RFC 903.
RFC 1112 посвящен многоадресным рассылкам в IP. RFC 1390 определяет трансляцию между IP-адресами многоадресных рассылок и адресами FDDI. RFC 1469 специфицирует трансляцию между IP-адресами многоадресных рассылок и адресами Token-Ring.
RFC 1178 содержит как серьезные, так и не совсем серьезные советы по выбору имени для компьютера. RFC 1034 и 1101 подробно обсуждают именование доменов. RFC 1035 описывает протоколы для создания Domain Name System и реализацию этой системы.
Стандарт Hosts Requirements (Требования к хостам), RFC 1122, предоставляет дополнительные сведения об именовании и адресации, равно как и корректирует неточности в некоторых стандартах.
Глава 6
Протокол интернета
6.1 Введение
Вспомним, что интернет — это набор сетей, соединенных маршрутизаторами (во многих ранних документах RFC использовался термин "шлюз" вместо "маршрутизатор"), a IP — это протокол сетевого уровня, обеспечивающий маршрутизацию данных в интернете. При создании IP исследователи и разработчики руководствовались следующими требованиями Министерства обороны США:
■ Приспособить к взаимодействию хосты и маршрутизаторы различных производителей
■ Объединить расширяющееся множество сетей различного типа
■ Обеспечить расширение сети без прерывания работы сетевых служб
■ Реализовать поддержку высокоуровневых сеансов и служб, ориентированных на сообщения
Всем этим требованиям удовлетворяет архитектура сетевого уровня IP.
Более того, она позволяет интегрировать островки локальных сетей (разбросанных по различным организациям) таким образом, чтобы обеспечить подключение новых островков без изменений в уже объединенных.
Все это сделало IP основным сетевым протоколом для правительственных агентств, университетов и коммерческих организаций.
6.2 Датаграммы IP
Протокол IP предоставляет механизм для пересылки по интернету элементов, называемых датаграммами IP (IP datagram). Как показано на рис. 6.1, датаграмма IP формируется из заголовка IP и перемещаемой по сети порции данных.
Рис. 6.1. Формат датаграммы
Протокол IP можно назвать "протоколом наилучшей попытки". Это означает, что IP гарантирует не целостность доставки датаграммы в пункт назначения, а только наилучшую попытку выполнить доставку (см. рис. 6.2). Датаграмма может разрушиться по следующим причинам:
■ Ошибка в одном из битов во время пересылки в носителе.
■ Перегруженный маршрутизатор отбросил датаграмму, чтобы освободить свое буферное пространство.
■ Временно недоступен путь к точке назначения.
Рис. 6.2. Доставка в IP по принципу наилучшей попытки
Все операции по обеспечению надежности доставки данных осуществляются на уровне TCP. Восстановление испорченных данных зависит от действий на этом уровне.
6.3 Основные функции IP
Основными функциями IP являются: прием данных от TCP или UDP, создание датаграммы, маршрутизация ее по сети и доставка приложению-получателю. Каждая датаграмма IP маршрутизируется отдельно. Для маршрутизации датаграммы в IP существуют два средства:
■ маска подсети
■ таблица маршрутизации IP (таблица маршрутов)
6.4 Использование маски подсети
Предположим, что компьютер имеет IP-адрес 130.15.12.131 и подключен к локальной сети, а данные нужно послать:
Из: 130.15.12.131
В: 130.15.12.22
Можно предположить, что обе системы находятся в одной и той же подсети. Компьютер должен проверить, верно ли такое предположение. Проверка выполняется по маске подсети. Допустим, что хост имеет маску подсети:
255.255.255.0
т.е. есть маска состоит из 24 единиц и 8 нулей:
11111111111111111111111100000000
Вспомним, что единицы в маске подсети идентифицируют сеть и часть адреса для подсетей. Так как части для сети и подсети в адресах источника и назначения — 130.15.12, значит оба хоста находятся в одной подсети.
Компьютер фактически выполняет операцию "логическое И" между маской и каждым из IP-адресов. В результате нули маски подсети очищают часть адреса для хоста, оставляя только части для сети и подсети.
В этом примере маршрутизация является прямой. Это означает, что датаграмма должна быть помещена в кадр и передана непосредственно в точку назначения локальной сети, как показано на рис. 6.3.
Рис. 6.3. Обрамление кадром и передача датаграммы
Адрес назначения, помещенный в заголовок кадра, должен быть физическим адресом системы назначения. Чтобы определить существование элемента для физического адреса 130.15.12.22, проверяется таблица протокола ARP. Если в таблице нет нужной записи, для ее формирования используется протокол ARP.
6.5 Хост в таблице маршрутизации IP
Предположим, что нужно переслать данные:
Из: 130.15.12.131
В: 192.45.89.5
Быстрая проверка маски подсети показывает, что система назначения не принадлежит локальной подсети. В этом случае IP должен обратиться к локальной таблице маршрутизации.
Таблица маршрутизации хоста обычно очень проста. На рис. 6.4 показана локальная сеть, которая связана с удаленными сайтами посредством единственного маршрутизатора. Если точка назначения не находится в локальной сети, у хоста нет другого выбора, как обратиться к маршрутизатору.
Рис. 6.4. Перенаправление трафика через маршрутизатор по умолчанию
Каждый настольный компьютер или хост локальной сети имеет таблицу маршрутизации, которая сообщает IP, как маршрутизировать датаграммы к системам, не подключенным к локальной сети. Для указания пути к удаленному месту эта таблица нуждается в единственной записи (для маршрутизации по умолчанию):
default 130.15.12.1
Другими словами, нужно направлять любые нелокальные датаграммы на маршрутизатор по умолчанию с IP-адресом 130.15.12.1 (отметим, что адрес назначения 0.0.0.0 используется в таблице маршрутизации для значения по умолчанию).
6.6 Маршрутизация по следующему попаданию
Для сохранения простоты таблицы маршрутизации хоста IP может не анализировать полный маршрут к точке назначения. Требуется только выяснить следующее попадание (next hop иногда переводится как следующий участок. — Прим. пер.) и направить датаграмму туда.
Чтобы отправить датаграмму на интерфейс маршрутизатора 130.15.12.1, ее надо поместить в кадр, заголовок которого содержит физический адрес сетевого адаптера этого маршрутизатора.
Когда маршрутизатор получит кадр, он удалит заголовок и завершающую часть кадра, а также исследует заголовок датаграммы IP, чтобы решить, куда ее нужно направить далее.
6.7 Еще один пример таблицы маршрутизации хоста
Иногда таблицы маршрутизации хостов не столь просты. Рассмотрим, например, два маршрутизатора подсети 128.121.50.0 (см. рис. 6.5). Второй маршрутизатор управляет небольшой локальной сетью с несколькими рабочими станциями.
Рис. 6.5. Выбор маршрутизатора
Маршрутизатор tigger управляет локальной сетью, и его таблицу маршрутизации можно вывести командой netstat -nr. В выводе используется термин шлюз — gateway, а не маршрутизатор — router. (Другие компьютеры могут выводить таблицу в несколько ином формате. Она будет содержать похожую, но не идентичную информацию. Например, некоторые системы могут выводить столбец со сведениями о расстоянии до следующей точки назначения.)
> netstat -nr
Routing tables
Destination Gateway Flags Refcnt Use Interface
127.0.0.1 127.0.0.1 UH 6 62806 lo0
Default 128.121.50.50 UG 62 2999087 le0
128.121.54.0 128.121.50.2 UG 0 0 le0
128.121.50.0 128.121.50.145 U 33 1406799 le0
Командой netstat выводятся сведения о том, где и как будет маршрутизироваться трафик tigger.
■ Первое место назначения в таблице — это кольцевой адрес 127.0.0.1, который служит обозначением для трафика между клиентами и серверами в пределах системы tigger.
■ Запись default используется для выполнения маршрутизации к любой точке назначения, которая не указана в таблице. Трафик должен быть направлен на интерфейс маршрутизатора по IP-адресу 128.121.50.50.
■ Датаграммы к любой системе подсети 128.121.54.0 должны быть направлены на интерфейс маршрутизатора по IP-адресу 128.121.50.2.
■ Последняя запись не обеспечивает получения новой информации для маршрутизации, но позволяет получить интересную статистику о местном трафике. Чтобы маршрутизировать трафик к любой системе подсети 128.121.50.0, нужно направить его на адрес 128.121.50.145. При этом 128.121.50.145 — это собственный адрес tigger, а 128.121.50.0 — собственный адрес локальной сети tigger.