Новые книги

Это захватывающая и практически полная история крупнейшей IT-компании России, основанная на десятках авторских интервью с теми, кто строил главный поисковик Рунета начиная с 90-х и заканчивая сегодняшним днем.
Фундаментальный учебник по основам объектно-ориентированного программирования и инженерии программ. В книге подробно излагаются основные понятия объектной технологии – классы, объекты, управление памятью, типизация, наследование, универсализация. Большое внимание уделяется проектированию по контракту и обработке исключений, как механизмам, обеспечивающим корректность и устойчивость программных систем.

В книге Бертрана Мейера рассматриваются основы объектно-ориентированного программирования. Изложение начинается с рассмотрения критериев качества программных систем и обоснования того, как объектная технология разработки может обеспечить требуемое качество. Основные понятия объектной технологии и соответствующая нотация появляются как результат тщательного анализа и обсуждений. Подробно рассматривается понятие класса - центральное понятие объектной технологии. Рассматривается абстрактный тип данных, лежащий в основе класса, совмещение классом роли типа данных и модуля и другие аспекты построения класса. Столь же подробно рассматриваются объекты и проблемы управления памятью. Большая часть книги уделена отношениям между классами – наследованию, универсализации и их роли в построении программных систем. Важную часть книги составляет введение понятия контракта, описание технологии проектирования по контракту, как механизма, обеспечивающего корректность создаваемых программ. Не обойдены вниманием и другие важные темы объектного программирования – скрытие информации, статическая типизация, динамическое связывание и обработка исключений. Глубина охвата рассматриваемых тем делает книгу Бертрана Мейера незаменимой для понимания основ объектного программирования.

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


Глава 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 устанавливают стандартный порядок байт для целых чисел в полях пакета. Вообще ГВМ должен преобразовать все двоичные данные из своего внутреннего формата в стандартный сетевой порядок байт перед передачей пакета, а после приема пакета должен наоборот преобразовать стандартный сетевой порядок байт в свой внутренний.

Для дальнейшего изучения

Межсетевая схема адресации, представленная здесь, может быть найдена в Reynolds и Postel[RFC 990 и 997].

Официальные адреса Интернета назначаются NIC(смотри в Приложении 1 его адрес и телефонный номер).

Глава 16 описывает важную часть стандарта межсетевых адресов, называемую адресацией подсетей. Адресация подсетей позволяет использовать один сетевой адрес для нескольких физических сетей.

Глава 17 показывает, как адреса класса D назначаются для межсетевой групповой передачи.

Cohen[1981] объясняет проблему порядка бит и байт и вводит термины "с наименьшего конца" и "с наибольшего конца".

Упражнения

4.1 Сколько точно может существовать сетей класса А, В и С ? Сколько точно может быть ГВМ в сети каждого класса ? Будьте осторожны с сетями класса D и Е.

4.2 Список адресов, назначенных машинам, в читабельной форме называется межсетевой таблицей ГВМ. Если в вашем узле есть таблица ГВМ, установите точно, сколько номеров сетей класса А, В и С уже выделено.

4.3 Сколько ГВМ присоединено к каждой из локальных сетей в вашем узле ? Есть ли в вашем узле локальные сети, для которых недостаточно адреса класса С ?

4.4 Каково главное отличие схемы адресации в IP от схемы нумерации телефонов в США ?

4.5 Одно центральное ведомство не может достаточно быстро назначать адреса Интернета. Можете вы предложить схему, позволяющую центральному ведомству распределить его задачу среди нескольких групп, но все еще гарантирующую, что каждый назначенный адрес будет уникальным ?

4.6 Отличается стандартный сетевой порядок байт от порядка байт в вашей машине ?

Назад | Содержание | Вперед