Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Глава 4 Адреса Интернета



4.1 Введение

Предыдущая глава определила интернет TCP/IP как виртуальную
сеть, созданную в результате соединения физических сетей шлюзами.
Эта глава описывает адресацию, существенный компонент, который
помогает программному обеспечению TCP/IP скрывать детали
физических сетей и создавать впечатление об интернете как о
единой сущности.

4.2 Универсальные идентификаторы

Говорят, что коммуникационная система обеспечивает
универсальное средство взаимодействия, если она позволяет любой
ГВМ связываться с любой другой ГВМ. Чтобы сделать нашу
коммуникационную систему универсальной, нам нужно определить
приемлемый для всех метод идентификации компьютеров, которые
присоединены к ней.
Часто идентификаторы ГВМ классифицируются как имена, адреса,
или маршруты. Shoch[1978] предложил, чтобы имя идентифицировало,
что такое объект, адреса идентифицировал, где он находится, а
маршрут(путь) определял, как до него добраться. Хотя эти
определения являются интуитивно ясными, они могут ввести в
заблуждение. На самом деле имена, адреса и маршруты определяются
на разных уровнях представления идентификаторов ГВМ, причем имена
на самом верхнем, а маршруты - на самом нижнем. Вообще люди
обычно предпочитают произносимые имена для идентификации машин, в
то время как программное обеспечение лучше работает с более
компактным представлением идентификаторов, которые мы считаем
адресами. Все, что угодно могло бы быть выбрано в качестве
универсальных идентификаторов ГВМ в TCP/IP. Но было принято
решение стандартизовать компактные, двоичные адреса, которые
делают вычисления, такие как выбор маршрута, эффективными. Теперь
мы перейдем к рассмотрению только двоичных адресов, оставив на
потом вопросы о том, как производится отображение между двоичными
адресами и произносимыми именами, и о том, как использовать
адреса для маршрутизации.

4.3 Три основных класса IP-адресов

Думайте об интернете как о большой сети, такой же,как и
любая другая физическая сеть. Разница заключается в том, что
интернет - это виртуальная структура, придуманная его
разработчиками, и реализованная полностью в программном
обеспечении. Поэтому, разработчики могут определить по своему
усмотрению форматы и размеры пакетов,адреса, технологии доставки
и т.д.; аппаратное обеспечение не определяет ничего. Для адресов
разработчики TCP/IP выбрали схему, аналогичную адресации в
физических сетях, в которой каждой ГВМ в интернете назначается
адрес в виде целого числа, называемый межсетевым адресом или
IP-адресом. Самым умным в межсетевой адресации является то, что
целые числа для адресов тщательно выбираются, чтобы сделать
маршрутизацию эффективной. Если говорить более конкретно,
IP-адрес кодирует идентификацию сети, к которой присоединена ГВМ,
а также идентификацию уникальной ГВМ в этой сети. Можно сделать
вывод:

Каждой ГВМ в интернете TCP/IP назначен уникальный 32-битовый
межсетевой адрес, который используется при взаимодействии с этой
ГВМ.

Детали IP-адресов помогут уточнить абстрактные идеи. А пока
мы дадим упрощенное представление, которое будет впоследствии
усложнено. В простейшем случае каждой ГВМ, присоединенной к
интернету, назначается 32-битовый универсальный идентификатор в
качестве его межсетевого адреса. IP-адреса для всех ГВМ данной
сети имеют одинаковый префикс.
Концептуально каждый адрес является парой (идсет,идГВМ), где
идсет идентифицирует сеть, а идГВМ идентифицирует ГВМ в этой
сети. На практике каждый IP-адрес должен иметь одну из первых
трех форм из числа тех, что показаны на рисунке 4.1(четвертая
форма, зарезервированная для межсетевого широковещания, будет
описана позднее; на данный момент мы ограничимся формами,
описывающими адреса для отдельных объектов).

0 1 7 8 31
---------------------------------------------------
Класс А |0|идсет | идГВМ |
---------------------------------------------------

0 1 2 15 16 31
---------------------------------------------------
Класс В |1|0| идсет | идГВМ |
---------------------------------------------------

0 1 2 3 23 24 31
---------------------------------------------------
Класс С |1|1|0| идсет | идГВМ |
---------------------------------------------------

0 1 2 3 4 31
---------------------------------------------------
Класс D |1|1|1|0| групповой адрес |
---------------------------------------------------

0 1 2 3 4 5 31
---------------------------------------------------
Класс Е |1|1|1|1|0| зарезервировано на будущее |
---------------------------------------------------

Рисунок 4.1 Пять форм адресов Интернета(IP). Три основные
формы, классы А,В и С можно различить по первым двум битам.

Класс данного IP-адреса можно определить по первым трем
старшим битам, причем первых двух бит достаточно для определения
принадлежности адреса к одному из трех основных классов. Адреса
класса А, которые используются для сетей, имеющих в своем составе
более чем 2**16(т.е. 65536) ГВМ, выделяют под идсет 7 бит, а под
идГВМ 24 бита. Адреса класса В, которые используются для сетей
промежуточного размера, включающих от 2**8(т.е. 256) до 2**16
ГВМ, выделяют 14 бит под идсет, а 16 бит под идГВМ. И наконец,
сети класса С, состоящие менее чем из 256 ГВМ, выделяют 21 бит
под идсет и только 8 бит под идГВМ. Заметим, что IP-адрес был
определен таким образом, что можно быстро расширить идГВМ или
идсет. Шлюзы используют для маршрутизации поле идсет и полагаются
на его эффективное выделение.

4.4 Адреса описывают сетевые соединения

Для простоты изложения предмета мы говорили, что межсетевой
адрес идентифицирует ГВМ, но это не совсем так. Представим себе
шлюз. присоединенный к двум физическим сетям. Как мы можем
назначить ему один IP-адрес, если адрес кодирует как
идентификатор сети, так и идентификатор ГВМ? Мы не можем это
сделать. Когда обычные компьютеры имеют два или более физических
соединений, они называются многоадресными(multi-homed) ГВМ.
Многоадресные ГВМ и шлюзы требуют нескольких адресов IP. Каждый
адрес соответствует одному из соединений этой машины с сетью.
Учет многоадресных ГВМ приводит нас к следующему важному выводу:

Так как IP-адреса кодируют как сеть, так и ГВМ в этой сети,
они не описывают конкретную машину, а только соединение ее с
сетью.

Поэтому шлюз, соединяющий N сетей, имеет N различных IP
адресов, по одному на каждое сетевое соединение.

4.5 Сетевые и широковещательные адреса

Мы уже отметили основное преимущество кодирования информации
о сети в межсетевых адресах: оно делает возможной эффективную
маршрутизацию. Другим преимуществом является то, что межсетевые
адреса могут указывать как сети, так и отдельные ГВМ. По
соглашению идГВМ, равный 0, никогда не назначается отдельной ГВМ.
Вместо этого IP-адрес с нулевым идГВМ используется для ссылки на
саму сеть. Подведем итоги:

Межсетевые адреса могут использоваться для указания как на
сети, так и на отдельные ГВМ. По соглашению адрес сети имеет поле
идГВМ, равное 0.

Другим важным преимуществом межсетевой схемы адресации
является то, что она включает широковещательный адрес, который
используется для ссылки на все ГВМ в данной сети. Согласно
стандарту, любой идГВМ, состоящий из всех единиц, зарезервирован
для широковещания(К сожалению, в ранней версии кода TCP/IP,
входившего в состав BSD UNIX, все нули некорректно использовались
для широковещания, и хотя впоследствии код BSD был исправлен,
ошибка осталась в некоторых коммерческих системах, созданных на
основе этого кода). Во многих сетевых технологиях(например,
Ethernetе) широковещание может быть таким же эффективным, как
обычная передача; в других(например, Cypress) широковещание
поддерживается сетевым программным обеспечением, но требует
значительно больше времени, чем простая передача. Некоторые сети
не поддерживают широковещание вообще. Поэтому, широковещательный
IP-адрес не гарантирует наличия или эффективности
широковещательной доставки пакетов. Подводя итоги, можно сказать,
что:

IP-адреса могут использоваться для указания широковещания и
отображения его в аппаратное широковещание, если это возможно. По
соглашению, широковещательный адрес имеет поле идГВМ со всеми
битами, равными 1.

4.6 Ограниченное широковещание

Технически, широковещательный адрес, который мы уже описали,
называется направленным(directed) широковещательным адресом, так
как он содержит как корректный идентификатор сети, так и
корректный широковещательный адрес ГВМ. Направленный
широковещательный адрес может однозначно интерпретироваться в
любой точке интернета, так как он идентифицирует уникальным
образом сеть получателя помимо указания на широковещание в этой
сети. Направленные широковещательные адреса обеспечивают мощный(и
чем-то опасный) механизм, который позволяет удаленной системе
посылать один пакет, который будет распространен в режиме
широковещания в указанной сети.
С точки зрения адресации, главным недостатком направленного
широковещания является то, что оно требует знаний об адресе сети.
Другая форма широковещательного адреса, называемая ограниченный
широковещательный адрес или локальный сетевой широковещательный
адрес, обеспечивает широковещательный адрес для локальной
сети(сети отправителя), независимо от назначенного ей IP-адреса.
Локальный широковещательный адрес состоит из 32 единиц(поэтому он
иногда называется широковещательным адресом из всех единиц). ГВМ
может использовать ограниченный широковещательный адрес в
процессе своего запуска, до того, как он узнает свой IP-адрес или
IP-адрес локальной сети. Как только ГВМ узнает IP-адрес своей
сети, он может использовать направленное широковещание.
Как правило, протоколы TCP/IP ограничивают широковещание до
наименьшего возможного набора машин. Мы увидим, как это правило
влияет на группы сетей, разделяющих адреса, в главе 6, когда
будем рассматривать адресацию подсетей.

4.7 Интерпретация нуля как символа "это"

Мы видели, что поле, состоящее из единиц, может
интерпретироваться как "все", как "все ГВМ" в сети. Вообще
межсетевое программное обеспечение интерпретирует поля, состоящие
из нулей, как символ "это". Такая интерпретация встречается
повсеместно в литературе. Поэтому IP-адрес с идГВМ, равным 0,
обозначает "этот ГВМ", а межсетевой адрес с идентификатором сети
0 обозначает "эта сеть". Конечно, использовать эти адреса нужно
только в том контексте, в котором они интерпретируются
однозначно. Например, если машина получила пакет, в котором адрес
отправителя имеет поле идсет, установленное в 0, а идГВМ
соответствует собственному, получатель делает вывод о том, что
поле идсет означает эту сеть(т.е. сеть, из которой прибыл пакет).
Использование идсет 0 особенно важно в тех случаях, когда ГВМ
хочет взаимодействовать с помощью сети, но еще не знает свой
сетевой IP-адрес. ГВМ временно использует идентификатор сети 0, а
другие ГВМ в этой сети интерпретируют этот адрес как означающий
"эта сеть". В большинстве случаев ответы будут содержать полный
сетевой адрес, позволяя первоначальному отправителю запомнить его
на будущее. Главы 9 и 20 рассмотрят в деталях, как ГВМ определяет
свой сетевой адрес и как он использует идентификатор сети 0.

4.7.1 Групповая адресация

Помимо широковещания схема адресов IP поддерживает
специальную форму групповой доставки, известную как групповая
доставка(multicasting). Групповая доставка особенно полезна для
сетей, в которых аппаратная технология поддерживает групповую
доставку. Глава 17 рассматривает групповую адресацию и доставку
более детально.

4.8 Недостатки адресации Интернета

Кодирование информации о сети в межсетевом адресе имеет ряд
недостатков. Самым очевидным недостатком является то, что адреса
описывают соединения, а не ГВМ:

Если ГВМ перемещается из одной сети в другую, его IP-адрес
должен измениться.

Чтобы понять этот вывод, давайте рассмотрим путешественников,
который хотели бы отсоединять свои персональные компьютеры, брать
их с собой в дорогу, а затем присоединять их к интернету после
прибытия в место назначения. Таким персональным компьютерам
нельзя назначить постоянный IP-адрес, так как IP-адрес
идентифицирует сеть, к которой присоединена эта машина.
Другим слабым местом межсетевой схемы адресации является то,
что когда число ГВМ в сетях класса С начинает превышать 255,
нужно изменить ее адрес на адрес класса В. Хотя это может
показаться незначительной проблемой, изменение сетевого адреса
может потребовать большого количества времени и быть
трудноотлаживаемым. Так как большая часть программного
обеспечения не предназначена для работы с несколькими адресами в
одной и той же физической сети, администраторы не могут
спланировать плавный переход, в течение которого они могли бы
медленно изменить адреса. Вместо этого, они должны сразу
запретить использование одного сетевого адреса, изменить адреса
всех машин, а затем возобновить взаимодействие, используя новые
сетевые адреса.
Самый главный недостаток в межсетевой схеме адресации не
будет полностью понятен, пока мы не рассмотрим маршрутизацию. Тем
не менее, его важность требует хотя бы краткого его описания. Мы
говорили, что маршрутизация основывается на межсетевых адресах,
причем для принятия решения о маршруте используется идентификатор
сети. Рассмотрим ГВМ, имеющий два соединения с интернетом. Мы
знаем, что такой ГВМ имеет более чем один IP-адрес. Тогда верно
следующее утверждение:

Так как маршрутизация использует сетевую часть IP-адреса,
путь, проходимый пакетами до ГВМ с несколькими IP-адресами,
зависит от используемого адреса.

Следствия этого утверждения удивительны. Люди думают, что
каждый ГВМ - это одна сущность, и хотят использовать одно имя.
Они часто удивляются, обнаружив, что у ГВМ есть более чем одно
имя, и еще более удивляются, открыв, что разные имена ведут себя
по-разному.
Другим удивительным следствием межсетевой схемы адресации
является то, что знания одного IP-адреса для ГВМ получателя может
оказаться недостаточно; может получиться так, что нельзя будет
достичь получается, используя этот адрес. Рассмотрим
демонстрационную сеть, показанную на рисунке 4.2. На этом рисунке
два ГВМ, А и В, оба присоединены к сети 1, и обычно
взаимодействуют между собой, используя эту сеть. Поэтому,
пользователи на ГВМ А обычно указывают ГВМ В, используя IP-адрес
I4. Существует другой путь от А к В через шлюз G, и он
используется всякий раз, когда А посылает пакеты IP-адресу I5.
Теперь предположим, что соединение В с сетью 1 вышло из строя, но
сама машина продолжает работать(например, оборвался кабель между
В и сетью 1). Пользователи на А, использующие IP-адрес I4, не
смогут достичь В, хотя пользователи, использующие адрес I5,
смогут это сделать. Эти проблемы с именованием и адресацией снова
возникнут в следующих главах, когда мы будем рассматривать
маршрутизацию и связывание имен.

сеть 1
---------------------------------------------------------
| I1 | I3 | I4
+++++ +++++ +++++
| G | | А | | В |
+++++ +++++ +++++
| I2 | I5
---------------------------------------------------------
сеть 2

Рисунок 4.2 Пример интернета с многоадресным ГВМ В, который
демонстрирует проблему со схемой адресации IP. Если интерфейс I4
отсоединится, А должен использовать адрес I5 для достижения В,
направляя пакеты к нему через шлюз G.

4.9 Точечная(dotted) десятичная нотация

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

10000000 00001010 00000010 00011110

записывается как

128.10.2.30

Мы будем использовать точечную десятичную нотацию при описании
IP-адресов на протяжении всей оставшейся части этой книги.

4.10 Адрес обратной связи(loopback)

Сетевой адрес класса А 127.0.0.0 зарезервирован для обратной
связи и введен для тестирования взаимодействия между процессами
на одной машине. Когда какая-либо программа использует адрес
обратной связи для передачи данных, протокольное программное
обеспечение в компьютере возвращает эти данные, ничего не посылая
по сети. В литературе четко сказано, что пакет, посланный в сеть
с адресом 127, не будет передаваться ни по какой сети. Более
того, ГВМ или шлюз никогда не должен распространять информацию о
маршрутах для сети с номером 127; этот адрес не является адресом
сети.

4.11 Список соглашений о специальных адресах

На практике IP использует лишь комбинации из нулей("этот")
или из всех единиц("все"). Рисунок 4.3 показывает все имеющиеся
случаи.

---------------------------------
| все нули | Этот ГВМ*
---------------------------------

---------------------------------
| все нули | ГВМ | ГВМ в этой сети*
---------------------------------

--------------------------------- Ограниченное
| все единицы | широковещание
--------------------------------- (локальная сеть)**

--------------------------------- Направленное
| сеть | все единицы | широковещание
--------------------------------- в сети**

---------------------------------
| 127 | все, что угодно | Обратная связь***
---------------------------------

Замечания:
* Разрешено только при загрузке системы и не
может быть адресом получателя
** Не может быть адресом отправителя
*** Никогда не будет передан в сеть

Рисунок 4.3 Специальные формы IP-адресов, включая допустимые
комбинации нулей("это") и единиц("все"). Длина сетевой части при
направленном широковещании зависит от класса сетевого адреса.

Как указано в замечаниях к рисунку, использование всех нулей
для сети допустимо только во время загрузки системы. Оно
временно позволяет машине взаимодействовать. Как только машина
узнала свой настоящий IP-адрес, она должна перестать использовать
сеть 0.

4.12 Ответственность за адресацию в Интернете

Чтобы быть уверенным в том, что сетевые части Интернетовских
адресов являются уникальными, все Интернетовские адреса
назначаются одним ведомством, Сетевым Информационным
Центром(NIC). Он назначает только сетевую часть адреса и
возлагает ответственность за назначение адресов ГВМ в этой сети
организации, запросившей этот адрес. Локальным сетям с небольшим
числом машин(меньшим чем 255) обычно назначается номера класса С,
так как ожидается появление большого числа локальных сетей.
Большим сетям, таким как ARPANET, назначаются номера класса А,
так как можно ожидать появления лишь небольшого числа больших
сетей.
При назначении IP-адресов сетям NICу важно лишь то, что эта
сеть или присоединена к объединенному Интернету, или собирается к
нему присоединиться. Какая-либо корпорация может взять на себя
ответственность за назначение уникальных сетевых адресов внутри
своего интернета TCP/IP, если она никогда не собирается соединять
свой интернет с внешним миром. На самом деле многие объединенные
группы, использующие протоколы TCP/IP, назначают межсетевые
адреса по своему усмотрению. Например, NIC назначил адрес
10.0.0.0 ARPANETу. Если какой-либо колледж решит использовать
протоколы TCP/IP в своем Ethernete, в состав которого входят лишь
три машины(и нет никаких шлюзов), он может выбрать адрес 10.0.0.0
для этой локальной сети. Тем не менее, как показывает опыт,
нежелательно создание частного интернета, использующего те же
самые сетевые адреса, что и объединенный Интернет, так как это
приведет к невозможности взаимной работы в будущем и может
вызвать проблемы при попытке обменяться программным обеспечением
с другими колледжами. Поэтому, всем, кто использует TCP/IP очень
выгодно потратить некоторое время и получить официальные
Интернетовские адреса у NICа.

4.13 Пример

Для уяснения схемы адресации в IP рассмотрим пример из
рисунка 4.4, который показывает несколько соединений и ГВМ,
соединенных с Интернетом, на факультете компьютерных наук
университета Пурдью в середине 80-х годов. Пример показывает три
сети: ARPANET(10.0.0.0), Ethernet(128.10.0.0) и маркерное кольцо
proNET-10(192.5.48.0). При написании этих адресов в двоичном виде
видно, что эти сети являются соответственно сетями класса А,В и
С.
На рисунке четыре ГВМ, присоединенные к этим сетям,
называются Arthur, Merlin, Guenevere и Lancelot. Машина Taliesyn
служит шлюзом между ARPANET и proNET-10, а машина Glatisant
служит шлюзом между proNET-10 и Ethernet. ГВМ Merlin имеет
соединения как с Ethernetом, так и с proNET-10, поэтому она может
взаимодействовать с ГВМ в обеих сетях напрямую. Хотя
многоадресный ГВМ, такой как Merlin, может также работать как
шлюз, Merlin является прежде всего системой с разделением времени
,и дополнительная работа по маршрутизации пакетов может уменьшить
вычислительную мощность, доступную пользователям. Поэтому,
был установлен выделенный шлюз, Glatisant, чтобы снять нагрузку
передачи траффика с системы с разделением времени. Траффик между
этими двумя сетями имел на самом деле гораздо больший объем, чем
предполагает эта конфигурация, так как здесь показаны далеко не
все имевшиеся ГВМ.


Ethernet 128.10.0.0
============================================================
| 128.10.2.3 | 128.10.2.8 | 128.10.2.70 | 128.10.2.26
------------- ------------- ------------- -------------
|Merlin | |Guenevere | |Glatisant | |Lancelot |
|(многоадр. | |(ГВМ | |(шлюз) | |(ГВМ |
| ГВМ) | | Ethernet)| | | | Ethernet)|
| | | | | | | |
------------- ------------- ------------- -------------
\ 192.5.48.3 / 192.5.48.7
\ / 10.2.0.37
\ ++++++++++++++ / -------------
---------+ proNET-10 +---- |Taliesyn |
------------- + 192.5.48.0+----------- |(шлюз) |------>
|Arthur | ++++++++++++++ 192.5.48.6 | |
|(ГВМ | | | |
| proNET) |--------- -------------
| | 192.5.48.1 к ARPANET
------------- 10.0.0.0


Рисунок 4.4 Пример назначения IP-адресов для ГВМ и шлюзов в
Ethernetе, маркерном кольце и ARPANETе.

Рисунок 4.4 показывает IP-адреса для каждого сетевого
соединения. Lancelot, соединенный только с Ethernet, имеет адрес
128.10.2.26. Merlin имеет адрес 128.10.2.3 для соединения с
Ethernetом и 192.5.48.3 для соединения с proNET-10. Выбор
одинакового значения для младшего байта этих двух адресов
позволяет системным программистам легче запомнить все межсетевые
адреса Merlinа.

4.14 Порядок байт в сети

Чтобы создать интернет, независимый от архитектуры конкретной
машины или от сетевого оборудования, мы должны определить
стандартное представление данных. Посмотрим, что происходит,
когда одна машина посылает 32-битовое целое число другой машине.
Физическое оборудование передает последовательность бит от первой
машины ко второй, не меняя их порядка. Тем не менее, не все
машины хранят 32-битовые целые числа одинаково. В одних
(называемых "с наименьшего конца") младший адрес памяти содержит
самый младший байт целого числа. В других (называемых "с
наибольшего конца") младшая ячейка памяти хранит старший байт
числа. А некоторые все еще запоминают целые числа в группах
16-битовых слов, причем младшие адреса содержат младшее слово
числа, но байты в этих словах поменялись своими местами. Поэтому,
прямое копирование байт с одной машины на другую может изменить
значение числа.
Стандартизация порядка байт для целых чисел особенно важна
для интернета, так как межсетевые пакеты содержат двоичные числа,
указывающие такую информацию, как адрес назначения и длина
пакета. Такие числа должны пониматься как отправителем, так и
получателем. Протоколы TCP/IP решают проблему порядка байт,
определяя стандартный сетевой порядок байт, который должны
использовать все машины для двоичных полей в межсетевых пакетах.
Каждый ГВМ преобразует двоичные элементы из локального
представления в стандартный сетевой порядок перед передачей
пакета; он преобразует сетевой порядок байт в свой порядок при
приеме пакета. Естественно поле данных пользователя в пакете не
обрабатывается по этому стандарту - пользователи вольны
форматировать свои данные так, как они пожелают. Конечно,
большинство пользователей полагается на стандартные прикладные
программы и не сталкивается с проблемой порядка байт напрямую.
Межсетевой стандарт порядка байт определяет, что целые числа
посылаются таким образом, что самый старший(значимый) байт
передается первым(т.е. в стиле "с наибольшего конца"). Если
посмотреть на последовательность байт пакета тогда, когда он
передается от одной машины к другой, то у двоичного целого в этом
пакете самый старший байт находится ближе всего к началу пакета,
а самый младший байт находится ближе всего к концу пакета. Было
выдвинуто много аргументов в пользу использования того или иного
представления данных, и межсетевой стандарт до сих пор время от
времени подвергается критике. Тем не менее, все согласились с
тем, что такой стандарт необходим, и точная форма его не так уж и
важна.

4.15 Итоги

TCP/IP использует 32-битовые двоичные адреса в качестве
универсальных идентификаторов машин. Называемые межсетевыми или
IP-адресами, эти идентификаторы разделены на три основных класса,
и допускают существование сотни сетей с миллионами ГВМ в каждой,
тысяч сетей с тысячами ГВМ в каждой и свыше миллиона сетей с 254
ГВМ в каждой. Чтобы сделать эти адреса более легкими для
понимания людей, они записываются в точечной десятичной нотации,
в которой значения четырех октетов записываются в десятичном виде
и разделяются десятичными точками.
Так как IP-адреса кодируют как идентификацию сети, так и
идентификацию ГВМ в этой сети, эффективно реализуется
маршрутизация. Важным свойством IP-адресов является то, что они
обозначают сетевые соединения. ГВМ с несколькими соединениями
имеют несколько адресов. Одним из преимуществ межсетевой схемы
адресации является то, что одинаковая форма адреса может
использоваться для обозначения ГВМ, сетей и всех ГВМ в
сети(широковещания). Самый большой недостаток схемы адресации в
IP заключается в том, что если машина имеет несколько адресов,
знания одного адреса может оказаться недостаточно для
взаимодействия с ней, если некоторые сети выйдут из строя.
Для возможности обмена двоичными данными между машинами
протоколы TCP/IP устанавливают стандартный порядок байт для целых
чисел в полях пакета. Вообще ГВМ должен преобразовать все
двоичные данные из своего внутреннего формата в стандартный
сетевой порядок байт перед передачей пакета, а после приема
пакета должен наоборот преобразовать стандартный сетевой порядок
байт в свой внутренний.

Глава 5 Отображение адресов Интернета в физические
адреса(ARP)


5.1 Введение

Мы описали схему адресации TCP/IP, в которой каждому ГВМ
назначается 32-битовый адрес и сказали, что интернет ведет себя
как виртуальная сеть при использовании этих назначенных адресов
для посылки и приема пакетов. Мы также рассмотрели несколько
физических сетевых технологий и заметили, что две машины в данной
физической сети могут взаимодействовать только в том случае, если
каждая из них знает физический сетевой адрес другой машины. О чем
мы не упоминали, так это о том, как ГВМ или шлюз отображает
IP-адрес в корректный физический адрес, когда ему нужно послать
пакет по физической сети. Эта глава рассматривает это
отображение, показывая, как оно реализуется для двух самых
распространенных схем физических адресов.

5.2 Проблема разрешения адресов

Рассмотрим две машины А и В, которые присоединены к одной
физической сети. Каждая из них имеет назначенный IP-адрес Ia и
Ib, а также физический адрес Pa и Pb. Нашей целью является
разработка низкоуровневого программного обеспечения, которое
скрывало бы физические адреса и позволяло бы программам более
высокого уровня работать только с межсетевыми адресами. Тем не
менее, в конечном счете взаимодействие реализуется физическими
сетями, использующими какую-либо схему физических адресов.
Предположим, что машина А хочет послать пакет машине В по
физической сети, к которой они обе присоединены, но А знает
только межсетевой адрес Ib. Возникает вопрос: как может А
отобразить этот адрес в физический адрес Pb?
Проблема отображения высокоуровневых адресов в физические
адреса известна как проблема разрешения адресов и решается
несколькими способами. Некоторые связки протоколов хранят на
каждой машине таблицы, содержащие пары высокоуровневых и
физических адресов. Другие решают проблему, кодируя аппаратные
адреса в высокоуровневых адресах. Использование только одного из
этих подходов в лучшем случае делает проблему высокоуровневой
адресации неудобной. Эта глава рассматривает две технологии для
разрешения адресов, используемые протоколами TCP/IP.

5.3 Два типа физических адресов

Существуют два основных типа физических адресов: характерным
представителем первого типа является Ethernet, использующий
большие, фиксированные физические адреса, а второго - proNET-10,
использующий маленькие легко изменяемые физические адреса.
Разрешение адресов трудно для сетей типа Ethernetа, но легко для
сетей типа proNET-10. Мы рассмотрим первым легкий случай.

5.4 Разрешение с помощью прямого отображения

Рассмотрим сеть с маркерным кольцом proNET-10. Как вы
помните, из главы 2 мы знаем, что она использует небольшие целые
числа в качестве физических адресов и позволяет пользователю
выбрать аппаратный адрес при установке платы интерфейса в
компьютер. Главной причиной, делающей разрешение адресов легким
для сети proNET-10, является то, что раз можно назначать как
IP-адреса, так и физические адреса, то можно выбрать их такими,
что их части будут совпадать. Обычно при назначении IP-адресов
поле идГВМ делается равным 1,2,3 и т.д., а затем при установке
сетевого интерфейсного оборудования выбирается физический адрес,
совпадающий с полем идГВМ в IP-адресе. Например, можно выбрать
физический адрес 3 для машины, имеющей IP-адрес 192.5.48.3, так
как 192.5.48.3 является адресом класса С, у которого поле идГВМ
равно 3.
Для сетей, таких как proNET-10, вычисление физического адреса
на основе IP-адреса тривиально. Вычисление состоит из выделения
полу идентификатора ГВМ из IP-адреса. Это вычислительно
эффективно, так как требует выполнения нескольких машинных
команд. Это легко осуществить, так как может быть выполнено без
обращения к внешним данным. И,наконец, новые машины могут быть
добавлены к сети без изменения данных или перекомпиляции кода.
Концептуально выбор схемы нумерации, делающей разрешение
адресов эффективным, означает выбор функции F, которая отображает
IP-адреса в физические адреса. Разработчик может также выбрать
схему нумерации физических адресов. Разрешение IP-адреса Ia
означает вычисление

Pa=F(Ia)

Мы хотим, чтобы вычисление F было эффективным. Если множество
физических адресов ограничено, можно по-другому эффективно
сделать это отображение. Например, при использовании X.25 нельзя
выбрать физические адреса. Обычно, шлюзы в сетях X.25 хранят пары
IP-адресов и физических адресов X.25 в таблице и осуществляют
поиск в этой таблице при разрешении IP-адресов. Чтобы сделать
разрешение адресов эффективным в таких случаях, программное
обеспечение может использовать хэш-функцию для поиска в таблице.
Упражнение 5.1 предлагает еще один подход.

5.5 Разрешение с помощью динамического связывания

Чтобы понять, почему разрешение адресов так трудно в
некоторых сетях, рассмотрим технологию Ethernetа. Как вы знаете
из главы 2, Ethernet имеет 48-битовые физические адреса,
назначаемые производителями при изготовлении интерфейсных плат.
Как следствие, при выходе оборудования из строя и замене
интерфейсной платы физический адрес машины меняется. Более того,
так как адрес в Ethernetе имеет длину 48 бит, не стоит и
рассчитывать, что его можно закодировать в 32-битном IP-адресе.
Разработчики протоколов TCP/IP нашли конструктивное решение
проблемы разрешения адресов для сетей, таких как Chaosnet или
Ethernet, которые имеют возможность широковещания. Это решение
позволяет добавлять машины к сети без перекомпиляции кода и без
создания центральной базы данных. Чтобы избежать создания таблиц
отображения разработчики решили использовать низкоуровневый
протокол для динамической связки адресов. Названный Протокол
Разрешения Адресов(ARP), он обеспечивает механизм, который
является как эффективным, так и легким для реализации.
Как показывает рисунок 5.1, идея, лежащая в основе
динамического разрешения в ARP, проста: когда ГВМ А хочет
разрешить IP-адрес Ib, он широковещательно распространяет
специальный пакет, который просит ГВМ с IP-адресом Ib ответить
ему, указав свой физический адрес Pb. Все ГВМ, включая В,
получают этот запрос, но только ГВМ В узнает свой IP-адрес и
посылает ответ, содержащий свой физический адрес. Когда А
получает ответ, он использует физический адрес для посылки
межсетевого пакета прямо к В. Итоги всего вышесказанного можно
изложить так:

Протокол Разрешения Адресов,ARP, позволяет ГВМ установить
физический адрес ГВМ назначения в той же самой физической сети,
имея только IP-адрес назначения.

<---|---------------------------------------->
===============|==========|==========|====================
| | | | | | |
| V | V | V |
----- ----- ----- -----
| А | | X | | B | | Y |
| | | | | | | |
----- ----- ----- -----

(а)

---------------------
======|===================|===============================
| | | | | |
| V | | | |
----- ----- ----- -----
| А | | X | | B | | Y |
| | | | | | | |
----- ----- ----- -----

(б)

Рисунок 5.1 Протокол ARP. Чтобы определить физический адрес
В, Pb, по его IP-адресу, Ib, (а) ГВМ А широковещательно
распространяет запрос ARP, содержащий Ib, по всем машинам, и (б)
ГВМ В отвечает на него ответом ARP, содержащим пару (Ib,Pb).

5.6 Кэш разрешения адресов

Может показаться глупым то, что А, посылая пакет к В, сначала
посылает широковещательный пакет, который достигает В. Или может
показаться еще глупее, что А широковещательно задает вопрос:"Как
я могу связаться с вами?" вместо того, чтобы просто
широковещательно послать пакет, который он хочет передать. Но
есть важная причина для таких передач. Широковещание слишком
дорого, чтобы использовать его всякий раз, когда одной машине
требуется передать пакет другой машине, так как оно требует от
каждой машины в сети обработки широковещательного пакета. Чтобы
уменьшить затраты на взаимодействие, ГВМ, использующие ARP,
создают кэш недавно узнанных связок между физическим адресом и
IP-адресом, и поэтому они не должны повторно использовать ARP.
Всякий раз, когда ГВМ получает ответ ARP, он сохраняет IP-адрес
машины и соответствующий ему аппаратный адрес в своем кэше для
последующих обращений. При передаче пакета ГВМ ищет связку в кэше
перед тем, как послать запрос ARP. Если ГВМ нашел нужную связку в
своем кэше, ему не надо передавать широковещательный пакет в
сеть. Опыт показывает, что так как большинство сетевых
взаимодействий включает передачу более чем одного пакета, даже
небольшой кэш будет полезен.

5.7 Уточнение ARP

Можно сделать несколько уточнений ARP. Во-первых, заметим,
что если ГВМ А использует ARP, так как ему нужно послать запрос к
В, то существует большая вероятность того, что ГВМ В в ближайшем
будущем тоже потребуется послать пакеты к А. Если мы учтем
потребности В, мы можем избежать передачи лишнего траффика по
сети, заставив А включить связку своего IP-адреса с физическим в
пакет при посылке запроса к В. Во-вторых, отметим, что так как А
широковещательно передает свой начальный запрос, все машины в
сети получают его и могут выделить и сохранить в своих кэшах
связку между IP-адресом и физическим адресом для А. В-третьих,
когда новая машина появляется в сети(например, когда загружается
операционная система), мы можем избежать того, что какая-либо
другая машина будет запускать ARP, если широковещательно
распространим пару IP-адреса и физического адреса новой машины.
Следующее правило обобщает уточнения:

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

5.9 Реализация ARP

Функционально ARP состоит из двух частей. Одна часть
определяет физические адреса при посылке пакета, а другая
отвечает на запросы от других машин. Разрешение адресов для
выходящих пакетов кажется элементарным, но некоторые детали
усложняют реализацию. Получив IP-адрес назначения, ГВМ
просматривает кэш ARP, чтобы проверить, не знает ли он уже
физического адреса для этого IP-адреса. Если ГВМ знает его, он
выделяет физический адрес, помещает данные в кадр, используя этот
адрес, и посылает этот кадр. Если же он не знает отображения, он
должен широковещательно передать запрос ARP и ждать ответа.
Широковещание запроса ARP для нахождения отображения адреса
может оказаться сложным. Машина получателя может быть выключена
или быть слишком занята, чтобы принять запрос. Если такое
случится, отправитель может не получить ответа или ответ может
задержаться. Так как Ethernet является системой с
негарантированной доставкой, то исходный широковещательный запрос
ARP тоже может быть потерян(в этом случае отправитель должен
будет повторно отправлять его по крайней мере еще один раз).
Между тем ГВМ должен хранить исходный передаваемый пакет, чтобы
его можно было послать, когда будет разрешен адрес(если задержка
становится значительной, ГВМ может уничтожить передаваемый
пакет). Фактически, ГВМ должен решить, можно ли работать другим
прикладным программам, пока он обрабатывает запрос
ARP(в большинстве случаев можно). Если можно, то он должен
учитывать случай, когда приложение будет генерировать
дополнительные запросы ARP для того же адреса, не посылая
широковещательный запрос несколько раз для одного и того же
получателя.
Наконец, рассмотрим случай, когда машина А получила связку
для машины В, но оборудование В вышло из строя и было заменено.
Хотя адрес В изменился, не изменилась связка в кэше А, поэтому А
будет использовать несуществующий аппаратный адрес, делая
успешный прием невозможным. Этот случай показывает, почему важно,
чтобы программное обеспечение ARP рассматривало свою таблицу
связок как кэш и удаляло ее элементы по истечении фиксированного
промежутка времени. Конечно, таймер для каждого элемента кэша
должен сбрасываться всякий раз, когда принимается широковещание
ARP, содержащее эту связку(но не сбрасывается, когда этот
элемент, используется для посылки пакета).
Вторая часть кода ARP обрабатывает пакеты ARP, прибывающие из
сети. Когда появляется пакет ARP, это программное обеспечение
должно выделить пару IP-адреса и аппаратного адреса отправителя,
и проверить свой кэш на наличие в нем элемента для этого
отправителя. Если в кэше есть элемент для указанного IP-адреса,
обработчик обновит этот элемент, заменив физический адрес тем,
что получен из пакета. Получатель затем обрабатывает оставшуюся
часть пакета ARP.
Получатель должен обрабатывать два типа входящих пакетов ARP.
Если входящий пакет ARP - запрос, принимающая машина должна
проверить, не является ли она назначением для этого запроса(т.е.
какая-то другая машина широковещательно выдала запрос о
физическом адресе приемника). Если это так, то программное
обеспечение ARP формирует ответ, указывая в нем свой физический
адрес, и посылает ответ прямо тому, кто запрашивал. Получатель
также добавляет пару адресов отправителя к своему кэшу, если там
нет такой пары. если IP-адрес, указанный в запросе ARP, не
совпадает с локальным адресом IP, то этот пакет является запросом
на отображение между адресами для какой-то другой машины в сети и
может игнорироваться.
Другой интересный случай возникает, когда приходит ответ ARP.
В зависимости от реализации обработчику может понадобиться
создание элемента кэша или такой элемент может уже существовать.
В любом случае, как только кэш был обновлен, получатель пытается
сопоставить ответ ранее выданному запросу. Обычно ответу
соответствует запрос, сгенерированный в связи с тем, что машина
имеет пакет, который нужно доставить. В промежуток времени между
широковещательной передачей ARP-запроса и получением ответа
прикладные программы или высокоуровневые протоколы могли
сгенерировать дополнительные запросы для этого адреса;
программное обеспечение должно помнить, что оно уже послало
запрос и не посылать его больше. Обычно, оно помещает
дополнительные запросы в очередь. Как только пришел ответ и
физический адрес стал известен, программное обеспечение ARP
удаляет элементы из очереди и отвечает на каждый из них
полученной связкой. Если машина не выдавала запрос для IP-адреса,
указанного в ответе, она прекращает обработку этого пакета.

5.10 Инкапсуляция и идентификация ARP

Когда сообщения ARP пересылаются от одной машины к другой,
они должны передаваться в физических кадрах. Рисунок 5.2
показывает, что сообщение ARP передается как поле данных кадра.

-------------------------------------
| сообщение ARP |
-------------------------------------
| |
V V
-----------------------------------------------------------
| заголовок кадра | поле данных кадра |
-----------------------------------------------------------

Рисунок 5.2 Сообщение ARP, заключенное в кадре физической
сети

Чтобы идентифицировать, что кадр содержит запрос или ответ
ARP, отправитель присваивает специальное значение полю типа в
заголовке кадра и помещает сообщение ARP в поле данных кадра.
Когда кадр прибывает на ГВМ, система смотрит тип кадра, чтобы
определить его содержимое. Например, в Ethernete, кадры, несущие
сообщения ARP, имеют в поле типа значение 0806 в
шестнадцатиричном формате. Это стандартное значение, назначенное
ведомством, устанавливающим стандарты Ethernetа.

5.11 Формат протокола ARP


В отличие от большинства протоколов, данные в пакетах ARP не
имеют фиксированного формата заголовка. Вместо этого его
сообщения были разработаны так, чтобы их можно было использовать
для различных сетевых технологий. Поэтому, первые поля заголовка
содержат счетчики, которые указывают длину следующих полей.
Фактически, ARP можно использовать с произвольными физическими
адресами и произвольными протокольными адресами. Пример на
рисунке 5.3 показывает 28-октетный формат сообщения ARP,
используемый для оборудования Ethernetа(у которого физические
адреса являются 48-битовыми или 6-октетными) при разрешении
протокольных адресов IP(имеющих длину 4 октета).
Рисунок 5.3 показывает сообщение ARP по 4 байта в строке, в
формате, который будет стандартным на протяжении всей книги. К
сожалению, в отличие от большинства остальных протоколов, поля
переменной длины в пакетах ARP не выровнены на границу 32 бит,
что приводит к трудности восприятия диаграммы. Например,
аппаратный адрес отправителя, помеченный как ОТПРАВИТЕЛЬ АА,
занимает 6 непрерывных октетов, что приводит к появлению его на
двух строках диаграммы.


0 8 16 24 31
-----------------------------------------------------------
| ТИП ОБОРУДОВАНИЯ | ТИП ПРОТОКОЛА |
-----------------------------------------------------------
| HLEN | PLEN | ОПЕРАЦИЯ |
-----------------------------------------------------------
| ОТПРАВИТЕЛЬ АА (октеты 0-3) |
-----------------------------------------------------------
|ОТПРАВИТЕЛЬ АА(октеты 4-5)|ОТПРАВИТЕЛЬ IP(октеты 0-1) |
-----------------------------------------------------------
|ОТПРАВИТЕЛЬ IP(октеты 2-3)|ПОЛУЧАТЕЛЬ АА(октеты 0-1) |
-----------------------------------------------------------
| ПОЛУЧАТЕЛЬ АА(октеты 2-5) |
-----------------------------------------------------------
| ПОЛУЧАТЕЛЬ IP(октеты 0-3) |
-----------------------------------------------------------

Рисунок 5.3 Пример формата сообщения ARP/RARP для разрешения
адресов IP-Ethernet. Длины полей зависят от длин аппаратных и
протокольных адресов, которые имеют значение соответственно 6
октетов для адреса Ethernetа и 4 октета для IP-адреса.

Поле ТИП ОБОРУДОВАНИЯ определяет тип аппаратного интерфейса,
для которого отправитель ищет ответ; оно содержит значение 1 для
Ethernetа. Аналогичным образом, поле ТИП ПРОТОКОЛА указывает тип
адреса протокола более высокого уровня, который использует
отправитель; оно содержит 0800 в шестнадцатиричном формате для
IP-адреса. Поле ОПЕРАЦИЯ указывает запрос ARP(1), ответ ARP(2),
запрос RARP(3), или ответ RARP(4)(RARP, другой протокол,
использующий тот же самый формат сообщения, будет рассмотрен в
следующей главе). Поля HLEN и PLEN позволяют использовать ARP в
любых сетях, так как они указывают длину аппаратного адреса и
адреса протокола верхнего уровня. Отправитель передает свой
аппаратный адрес и IP-адрес, если они известны ему, в полях
ОТПРАВИТЕЛЬ АА и ОТПРАВИТЕЛЬ IP.
При посылке запроса отправитель также указывает IP-адреса
назначения(ARP) или аппаратного адреса назначения(RARP),
используя поля ПОЛУЧАТЕЛЬ АА и ПОЛУЧАТЕЛЬ IP. Отвечающая машина
перед передачей ответа заполняет отсутствующие адреса, меняет
местами пары отправителя и получателя и меняет код операции на
ответ. Поэтому ответ содержит IP- и аппаратный адреса исходного
отправителя, а также IP- и аппаратный адреса машины, которая
разрешила эту связку.

5.12 Итоги

IP-адреса назначаются независимо от физического аппаратного
адреса машины. Чтобы доставить межсетевой пакет, сетевое
программное обеспечение должно отобразить IP-адрес в физический
аппаратный адрес и использовать этот аппаратный адрес для
передачи кадра. Если аппаратные адреса являются небольшими
числами, которые могут быть легко изменены, можно реализовать
прямое отображение, закодировав физические адреса машин в их
IP-адресах. Иначе, отображение должно выполняться динамически.
Протокол Разрешения Адресов(ARP) выполняет динамическое
разрешение адресов, используя только низкоуровневую сетевую
коммуникационную систему. ARP позволяет машинам разрешать адреса,
не храня постоянно информации о связках адресов.
Машина использует ARP, чтобы найти аппаратный адрес другой
машины с помощью широковещания запроса ARP. Запрос содержит
IP-адрес машины, для которой нужно узнать аппаратный адрес.
Каждая машина отвечает на запросы, соответствующие ее IP-адресу,
посылая ответы, содержащие требуемый аппаратный адрес.
Чтобы сделать ARP эффективным, каждая машина кэширует связки
(IP-адрес;аппаратный адрес). Так как межсетевой траффик имеет
тенденцию состоять из последовательности взаимодействий между
парами машин, кэш приводит к ненужности большинства
широковещательных запросов ARP.

Глава 6 Определение межсетевого адреса при начальной
загрузке(RARP)


6.1 Введение

Мы уже знаем, что физические сетевые адреса являются как
низкоуровневыми, так и аппаратно зависимыми, и мы знаем, что
каждой машине, использующей TCP/IP, назначен один или несколько
32-битовых IP-адресов, которые независимы от аппаратных адресов
машины. прикладные программы всегда используют IP-адрес при
указании назначения. ГВМ и шлюзы должны использовать физические
адреса для передачи дейтаграмм по базовым сетям; они полагаются
на схемы разрешения адресов, такие как ARP, при выполнении
связывания.
Обычно IP-адрес машины хранится во внешней памяти, откуда
операционная система и берет его при начальной загрузке.
Возникает вопрос: "Как бездисковая машина, не имея доступа к
внешней памяти, определяет свой IP-адрес?" Эта проблема является
критической для бездисковых станций, использующих IP-адрес для
взаимодействия с файл-сервером. Более того, так как много
бездисковых машин используют стандартные протоколы передачи
файлов TCP/IP для получения начального образа при загрузке, они
должны получать и использовать IP-адреса до начала работы
операционной системы. Эта глава изучает вопрос о том, как
получить IP-адреса, и описывает протокол, который используют
бездисковые машины.
Чтобы одна программа могла использоваться на нескольких
машинах, в состав ее исполняемого образа не должен входить
IP-адрес машины. В частности, разработчики пытаются не включать
конкретные IP-адреса как в код начальной загрузки, так и в
операционную систему, чтобы один и тот же код мог работать на
нескольких машинах. Когда такая программа начинает выполняться на
бездисковой машине, она должна использовать сеть для
взаимодействия с сервером, чтобы получить от него свой IP-адрес.
Эта процедура кажется парадоксальной: машина взаимодействует с
удаленным сервером для получения адреса, необходимого для
взаимодействия.
Но парадокс здесь только кажущийся, так как машина знает, как
взаимодействовать. Она может использовать свой физический адрес
для взаимодействия в локальной сети. Поэтому машина должна
временно применять физическую сетевую адресацию аналогично тому,
как операционные системы применяют физическую адресацию памяти
при установке таблиц для виртуальной адресации. Как только машина
узнает свой межсетевой адрес, она может взаимодействовать со всем
интернетом.
Идея, лежащая в основе нахождения IP-адреса, проста:
бездисковая машина посылает запрос другой машине, называемой
сервером(глава 18 более детально описывает серверы), и ждет, пока
сервер не пошлет ответ. Мы будем предполагать, что сервер имеет
диск, на котором он хранит базу данных межсетевых адресов. В этом
запросе машина, которой нужно узнать свой межсетевой адрес,
должна идентифицировать себя уникальным образом, сервер мог найти
ее межсетевой адрес и послать ответ. Как посылающая запрос
машина, так и отвечающий ей сервер используют физические сетевые
адреса в ходе своего короткого взаимодействия. Но откуда
бездисковая машина знает физический адрес сервера? Обычно она
его и не знает - она просто широковещательно передает запрос ко
всем машинам в локальной сети. Ей отвечают один или более
серверов.
Когда бездисковая машина широковещательно передает запрос,
она должна уникальным образом идентифицировать себя. Но какую
информацию можно включить в запрос, которая бы уникально
идентифицировала машину? Для этой цели может подойти любая
уникальная аппаратная идентификация(например, последовательный
номер ЦП). Тем не менее, нам нужна идентификация, которую может
получить работающая программа. Наша цель - создать один
исполняемый код, который может выполняться на любом процессоре.
Более того, длина или формат информации, идентифицирующей ЦП,
могут отличаться у различных моделей процессоров, а нам хотелось
бы иметь сервер, который принимает запросы от всех машин в
физической сети, используя один формат.

6.2 Протокол обратного разрешения адресов(RARP)

Разработчики протоколов TCP/IP сообразили, что есть другая
уникально идентифицирующая информация, которая всегда доступна,
короче, физический сетевой адрес машины. Использование этого
физического адреса как уникальной идентификации имеет два
преимущества. Так как ГВМ получает свои физические адреса от
сетевого интерфейсного оборудования, такие адреса всегда
доступны и не входят в состав кода операционной системы. Так как
идентифицирующая информация зависит от сети, а не от модели ЦП,
все машины в сети будут поддерживать единообразные, уникальные
идентификаторы. Поэтому задача становится обратной по отношению к
разрешению адресов: имеется физический сетевой адрес; разработать
схему, которая позволяла бы серверу отображать его в межсетевой
адрес.
Бездисковая машина использует протокол интернета TCP/IP,
называемы RARP(протокол обратного разрешения адресов), для
получения своего IP-адреса от сервера. RARP создан на основе
протокола ARP из предыдущей главы и использует тот же самый
формат сообщений, который приведен на рисунке 5.3. На практике
сообщение RARP, посылаемое при запросе межсетевого адреса,
является несколько более общим, чем то, что описано выше: оно
позволяет машине запрашивать IP-адрес не только себе, но и другим
машинам. Оно также допускает несколько типов физических сетей.
Как и сообщение ARP, сообщение RARP пересылается с одной
машины на другую в поле данных кадра Ethernetа. Кадр Ethernetа,
несущий запрос RARP, имеет обычную преамбулу, адреса отправителя
и получателя Ethernetа, и поле типа пакета в начале себя. Поле
типа содержит значение 8035, что идентифицирует содержимое этого
кадра как сообщение RARP. Поле данных кадра содержит 28-октетное
сообщение RARP.
Рисунок 6.1 иллюстрирует, как ГВМ использует RARP.
Отправитель широковещательно передает запрос RARP, в котором
указывает свой адрес в качестве как машины отправителя, так и
машины получателя, заполняя поле аппаратного адреса назначения
своим физическим сетевым адресом. Все машины в сети принимают
запрос, но только те из них, кто отвечает за поддержку RARP,
обрабатывают запрос и посылают ответ; такие машины называют
серверами RARP. Для успешного использования RARP в сети должен
быть по крайней мере один сервер RARP.


-<==-===============================================>--------
^ | | |
| V V V
+++++++ +++++++ +++++++ +++++++
+ А + + B + + C + + D +
+++++++ +++++++ +++++++ +++++++

(a)

-----=========================================---------------
| | ^ ^
V | | |
+++++++ +++++++ +++++++ +++++++
+ А + + B + + C + + D +
+++++++ +++++++ +++++++ +++++++

(

Рисунок 6.1 Пример обмена, используя протокол RARP. (a)
Машина А посылает широковещательный запрос RARP, указывая себя
как машину получателя, и ( машины, ответственные за поддержку
средства RARP(C и D), отвечают прямо А.

Серверы отвечают на запросы, заполняя поля протокольного
адреса назначения, меняя тип сообщения на ответ, и посылая ответ
прямо машине, выдавшей запрос. Эта исходная машина принимает
ответы от всех серверов RARP, несмотря на то, что ей нужен только
первый ответ.
Помните, что все взаимодействия между машиной, ищущей свой
IP-адрес, и сервером, знающим его, должны осуществляться,
используя только одну физическую сеть. Более того, этот протокол
позволяет ГВМ запрашивать IP-адрес произвольной машины. Поэтому
отправитель указывает свой аппаратный адрес помимо аппаратного
адреса получателя, а сервер учитывает это при отправке ответа по
аппаратному адресу отправителя. В Ethernetе наличие поля для
аппаратного адреса отправителя может показаться лишним, так как
эта же информация содержится в заголовке кадра Ethernetа. Тем не
менее, не все оборудование Ethernetа позволяет операционной
системе получать доступ к заголовку физического кадра.

6.3 Повторение транзакций RARP

Как и любое взаимодействие в сети с негарантированной
доставкой, запросы RARP могут потеряться или исказиться. Так как
RARP использует физическую сеть напрямую, никакое другое
протокольное программное обеспечение не будет измерять время до
получения ответа или повторно передавать запрос; само программное
обеспечение RARP должно решать эти задачи. Вообще RARP
используется только для локальных сетей, таких как Ethernet, где
вероятность сбоя мала. Тем не менее, если сеть имеет только один
сервер RARP, то эта машина может не справиться с такой большой
нагрузкой, и ряд пакетов может быть потерян.
Многие бездисковые машины рассчитывают на RARP при загрузке и
могут повторять запрос до тех пор, пока они не получат ответа.
Другие реализации сообщают, что обнаружена неисправность в сети
после нескольких неудачных попыток, чтобы избежать переполнения
сети ненужным широковещательным траффиком(т.е. в случае, когда
сервер недоступен). В Ethernetе сетевая ошибка менее вероятна,
чем перегрузка сервера. Заставляя программное обеспечение RARP
часто повторять запрос, можно добиться того, что сервер будет
буквально захлестнут волной избыточного траффика. В то же время
использование большого времени ожидания ответа гарантирует, что у
серверов будет достаточно времени для приема запроса и выдачи
ответа.

6.4 Основные и дублирующие серверы RARP.

Главным преимуществом использования группы машин как серверов
RARP является то, что это делает систему более надежной. Если
один сервер вышел из строя или перегружен и не может ответить,
другой ответит на запрос. Поэтому существует большая вероятность
того, что средство будет постоянно доступно. Главный же
недостаток использования нескольких серверов заключается в том,
что когда машина передает широковещательный запрос RARP, сеть
становится перегруженной из-за того, что все серверы пытаются на
него ответить. В Ethernetе, например, использование нескольких
серверов RARP приводит к высокой вероятности возникновения
коллизии.
Как разместить средство RARP так, чтобы оно было надежным и
доступным, и при этом не было бы нескольких одновременных
ответов? Существует по крайней мере две возможности, и обе они
используют паузы при ответе. В первом случае, каждой машине,
выдающей запросы RARP, назначается основной сервер. Обычно только
основной сервер машины отвечает на ее запросы RARP. Все
неосновные серверы принимают запрос, но лишь запоминают время его
поступления. Если основной сервер недоступен, пославшая запрос
машина будет ждать определенное время ответа, а затем повторно
пошлет запрос. А неосновной сервер, получив вторую копию запроса
RARP вскоре после первой, ответит на него.
Во втором случае используется аналогичная схема, но делается
попытка избежать одновременного ответа всеми неосновными
серверами. Каждая неосновная машина, принимающая запрос, выжидает
случайное время, а затем посылает ответ. При нормальных условиях
основной сервер отвечает сразу же, а последующие ответы будут
передаваться через некоторое время, поэтому их появление в одно и
то же время маловероятно. Когда основной сервер недоступен,
запрашивающая машина подбирает небольшое время для паузы перед
приемом ответа. При умелом подборе паузы разработчик может
добиться того, что запрашивающие машины не будут повторно
передавать широковещательного запроса до получения ответа.

6.5 Итоги

При загрузке системы бездисковая машина должна
связаться с сервером, чтобы определить свой IP-адрес перед тем,
как она начнет взаимодействие, используя TCP/IP. Мы рассмотрели
протокол RARP, который использует физическую сетевую адресацию
для получения межсетевого адреса машины. Механизм RARP применяет
физический аппаратный адрес машины для уникальной идентификации
процессора и широковещательной передачи запросов RARP. Серверы в
сети принимают сообщение, ищут отображение для него в
таблице(предварительно загруженной с диска), и отвечают
отправителю. Как только машина принимает свой IP-адрес, она
запоминает его в памяти и не использует RARP до тех пор, пока она
снова не будет загружать систему





Дата публикования: 2014-11-28; Прочитано: 392 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.028 с)...