Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы на вопросы по сетям.docx
Скачиваний:
8
Добавлен:
21.09.2019
Размер:
566.34 Кб
Скачать

1.7.Протокол ip: адресация, подсети

Начнем изучение сетевого уровня Интернета с формата 1Р-дейтаграмм. IP-дейта- грамма состоит из заголовка и текстовой части. Заголовок содержит обязатель- ную 20-байтную часть, а также необязательную часть переменной длины. Формат заголовка показан на рис. 5.47. Он передается слева направо, то есть старший бит поля Версия передается первым. (В процессоре SPARC байты располагаются сле- ва направо, в процессоре Pentium — наоборот, справа налево.) На машинах, у ко- торых старший байт располагается после младшего, как, например, у семейства процессоров корпорации Intel, требуется программное преобразование как при передаче, так и при приеме.

Поле Версия содержит версию протокола, к которому принадлежит дейта- грамма. Включение версии в каждую дейтаграмму позволяет использовать раз- ные версии протокола на разных машинах. Дело в том, что с годами протокол из- менялся, и на одних машинах сейчас работают новые версии, тогда как на других продолжают использоваться старые. Сейчас происходит переход от версии IPv4 к версии IPv6. Он длится уже много лет, и не похоже, что скоро завершится (Durand, 2001; Wiljakka, 2002; Waddington и Chang, 2002). Некоторые даже счи- тают, что это не произойдет никогда (Weiser, 2001). Что касается нумерации, то ничего странного в ней нет, просто в свое время существовал мало кому извест- ный экспериментальный протокол реального масштаба времени IPv5. Длина заголовка является переменной величиной, для хранения которой вы- делено поле IHL (информация в нем представлена в виде 32-разрядных слов). Минимальное значение длины (при отсутствии необязательного поля) равно 5. Максимальное значение этого 4-битового поля равно 15, что соответствует заго- ловку длиной 60 байт; таким образом, максимальный размер необязательного поля равен 40 байтам. Для некоторых приложений, например, для записи мар- шрута, по которому должен быть переслан пакет, 40 байт слишком мало. В дан- ном случае дополнительное поле оказывается бесполезным. Поле Тип службы — единственное поле, смысл которого с годами несколько изменился. Оно было (впрочем, и до сих пор) предназначено для различения классов обслуживания. Возможны разные комбинации надежности и скорости. Для оцифрованного голоса скорость доставки важнее точности. При передаче файла, наоборот, передача без ошибок важнее быстрой доставки. Изначально 6-разрядное поле Тип службы состояло из трехразрядного поля Precedence и трех флагов — D, Т и R. Поле Precedence указывало приоритет, от 0 (нормальный) до 7 (управляющий сетевой пакет). Три флаговых бита позволяли хосту указать, что беспокоит его сильнее всего, выбрав из набора {Delay, Throughput, Reliability} (Задержка, Пропускная способность, Надежность). Тео- ретически, эти поля позволяют маршрутизаторам выбрать, например, между спутниковой линией с высокой пропускной способностью и большой задержкой и выделенной линией с низкой пропускной способностью и небольшой задерж- кой. На практике сегодняшние маршрутизаторы часто вообще игнорируют поле Тип службы. Поле Полная длина содержит длину всей дейтаграммы, включая как заголо- вок, так и данные. Максимальная длина дейтаграммы 65 535 байт. В настоящий момент этот верхний предел достаточен, однако с появлением гигабитных сетей могут понадобиться дейтаграммы большего размера. Поле Идентификатор позволяет хосту-получателю определить, какой дейта- грамме принадлежат полученные им фрагменты. Все фрагменты одной дейтаграм- мы содержат одно и то же значение идентификатора. Следом идет один неиспользуемый бит и два однобитных поля. Бит DF озна- чает Don't Fragment (He фрагментировать). Это команда маршрутизатору, за- прещающая ему фрагментировать дейтаграмму, так как получатель не сможет восстановить ее из фрагментов. Например, при загрузке компьютера его ПЗУ может запросить образ памяти в виде единой дейтаграммы. Пометив дейтаграмму битом DF, отправитель гарантирует, что дейтаграмма дойдет единым блоком, да- же если для ее доставки придется избегать сетей с маленьким размером пакетов. От всех машин требуется способность принимать фрагменты размером 576 байт и менее. Бит MF означает More Fragments (Продолжение следует). Он устанавливает- ся во всех фрагментах, кроме последнего. По этому биту получатель узнает о прибытии последнего фрагмента дейтаграммы. Поле Смещение фрагмента указывает положение фрагмента в исходной дей- таграмме. Длина всех фрагментов в байтах, кроме длины последнего фрагмента, должна быть кратна 8. Так как на это поле выделено 13 бит, максимальное коли- чество фрагментов в дейтаграмме равно 8192, что дает максимальную длину дей- таграммы 65 536 байт, на 1 байт больше, чем может содержаться в поле Полная длина. Поле Время жизни представляет собой счетчик, ограничивающий время жиз- ни пакета. Предполагалось, что он будет отсчитывать время в секундах, таким образом, допуская максимальное время жизни пакета в 255 с. На каждом мар- шрутизаторе это значение должно было уменьшаться как минимум на единицу плюс время стояния в очереди. Однако на практике этот счетчик просто считает количество переходов через маршрутизаторы. Когда значение этого поля стано- вится равным нулю, пакет отвергается, а отправителю отсылается пакет с преду- преждением. Таким образом удается избежать вечного странствования пакетов, что может произойти, если таблицы маршрутизаторов по какой-либо причине испортятся. Собрав дейтаграмму из фрагментов, сетевой уровень должен решить, что с ней делать. Поле Протокол сообщит ему, какому процессу транспортного уровня ее передать. Это может быть TCP, UDP или что-нибудь еще. Нумерация процессов глобально стандартизирована по всему Интернету. Номера протоколов вместе с некоторыми другими были сведены в RFC 1700, однако теперь доступна интер- нет-версия в виде базы данных, расположенной по адресу www.iana.org. Поле Контрольная сумма заголовка защищает от ошибок только заголовок. Подобная контрольная сумма полезна для обнаружения ошибок, вызванных не- исправными микросхемами памяти маршрутизаторов. Алгоритм вычисления суммы просто складывает все 16-разрядные полуслова в дополнительном коде, преобразуя результат также в дополнительный код. Таким образом, проверяемая получателем контрольная сумма заголовка (вместе с этим полем) должна быть равна нулю. Этот алгоритм надежнее, чем обычное суммирование. Обратите внимание на то, что значение Контрольной суммы заголовка должно подсчиты- ваться заново на каждом транзитном участке, так как по крайней мере одно поле постоянно меняется (поле Время жизни). Для ускорения расчетов применяются некоторые хитрости. Поля Адрес отправителя и Адрес получателя указывают номер сети и номер хоста. Интернет-адреса будут обсуждаться в следующем разделе. Поле Необяза- тельная часть было создано для того, чтобы с появлением новых вариантов прото- кола не пришлось вносить в заголовок поля, отсутствующие в нынешнем форма- те. Оно же может служить пространством для различного рода экспериментов, испытания новых идей. Кроме того, оно позволяет не включать в стандартный заголовок редко используемую информацию. Размер поля Необязательная часть может варьироваться. В начале поля всегда располагается однобайтный идентификатор. Иногда за ним может располагаться также однобайтное поле дли- ны, а затем один или несколько информационных байтов. В любом случае, раз- мер поля Необязательная часть должен быть кратен 4 байтам. Изначально было определено пять разновидностей этого поля, перечисленных в табл. 5.6, однако с тех пор появилось несколько новых. Текущий полный список имеется в Интер- нете, его можно найти по адресу www.iana.org/assignments/ip-parameters.

Параметр Безопасность указывает уровень секретности дейтаграммы. Теоре- тически, военный маршрутизатор может использовать это поле, чтобы запретить маршрутизацию дейтаграммы через территорию определенных государств. На практике все маршрутизаторы игнорируют этот параметр, так что его единствен- ное практическое применение состоит в помощи шпионам в поиске ценной ин- формации. Параметр Строгая маршрутизация от источника задает полный путь следо- вания дейтаграммы от отправителя до получателя в виде последовательности IP-адресов. Дейтаграмма обязана следовать именно по этому маршруту. Наи- большая польза этого параметра заключается в том, что с его помощью систем- ный менеджер может послать экстренные пакеты, когда таблицы маршрутизато- ра повреждены, или замерить временные параметры сети. Параметр Свободная маршрутизация от источника требует, чтобы пакет про- шел через указанный список маршрутизаторов в указанном порядке, но при этом по пути он может проходить через любые другие маршрутизаторы. Обычно этот параметр указывает лишь небольшое количество маршрутизаторов. Например, чтобы заставить пакет, посылаемый из Лондона в Сидней, двигаться не на вос- ток, а на запад, можно указать в этом параметре IP-адреса маршрутизаторов в Нью-Йорке, Лос-Анджелесе и Гонолулу. Этот параметр наиболее полезен, когда по политическим или экономическим соображениям следует избегать прохожде- ния пакетов через определенные государства. Параметр Запомнить маршрут требует от всех маршрутизаторов, встречаю- щихся по пути следования пакета, добавлять свой IP-адрес к полю Необязатель- ная часть. Этот параметр позволяет системным администраторам вылавливать ошибки в алгоритмах маршрутизации («Ну почему все пакеты, посылаемые из Хьюстона в Даллас, сначала попадают в Токио?»). Когда была создана сеть ARPANET, ни один пакет не проходил больше чем через девять маршрутизато- ров, поэтому 40 байт для этого параметра было как раз достаточно. Как уже гово- рилось, сегодня размер поля Необязательная часть оказывается слишком мал. Наконец, параметр Временной штамп действует полностью аналогично пара- метру Запомнить маршрут, но кроме 32-разрядного IP-адреса, каждый маршру- тизатор записывает также 32-разрядную запись о текущем времени. Этот пара- метр также применяется в основном для отладки алгоритмов маршрутизации. 1Р-адреса У каждого хоста и маршрутизатора в Интернете есть IP-адрес, состоящий из но- мера сети и номера хоста. Эта комбинация уникальна: нет двух машин с одинако- выми IP-адресами. Все IP-адреса имеют длину 32 бита и используются в полях Адрес отправителя и Адрес получателя IP-пакетов. Важно отметить, что IP-ад- рес, на самом деле, не имеет отношения к хосту. Он имеет отношение к сетевому интерфейсу, поэтому хост, соединенный с двумя сетями, должен иметь два IP-ад- реса. Однако на практике большинство хостов подключены к одной сети, следо- вательно, имеют один адрес. В течение вот уже нескольких десятилетий IP-адреса делятся на пять клас- сов, показанных на рис. 5.48. Такое распределение обычно называется полно- классовой адресацией. Сейчас такая адресация уже не используется, но ссылки на нее в литературе встречаются все еще довольно часто. Чуть позже мы обсу- дим то, что пришло ей на смену.

Форматы классов А, В, С и D позволяют задавать адреса до 128 сетей с 16 млн хостов в каждой, 16 384 сетей с 64 тысячами хостов или 2 миллионов се- тей (например, ЛВС) с 256 хостами (хотя некоторые из них могут быть специа- лизированными). Предусмотрен класс для многоадресной рассылки, при кото- рой дейтаграммы рассылаются одновременно на несколько хостов. Адреса, начинающиеся с 1111, зарезервированы для будущего применения. В настоящее время к Интернету подсоединено более 500 000 сетей, и это число растет с каж- дым годом. Во избежание конфликтов, номера сетям назначаются некоммер- ческой корпорацией по присвоению имен и номеров, ICANN (Internet Cor- poration for Assigned Names and Numbers). В свою очередь, ICANN передала полномочия по присвоению некоторых частей адресного пространства регио- нальным органам, занимающимся выделением IP-адресов провайдерам и другим компаниям. Сетевые адреса, являющиеся 32-разрядными числами, обычно записываются в виде четырех десятичных чисел, которые соответствуют отдельным байтам, разделенных точками. Например, шестнадцатеричный адрес С0290614 записы- вается как 192.41.6.20. Наименьший IP-адрес равен 0.0.0.0, а наибольший — 255.255.255.255.

Как видно из рис. 5.49, числа 0 и -1 (единицы во всех разрядах) имеют осо- бое назначение. Число 0 означает эту сеть или этот хост. Значение -1 использу- ется для широковещания и означает все хосты указанной сети.

IP-адрес 0.0.0.0 используется хостом только при загрузке. IP-адреса с нуле- вым номером сети обозначают текущую сеть. Эти адреса позволяют машинам обращаться к хостам собственной сети, не зная ее номера (но они должны знать ее класс и количество используемых нулей). Адрес, состоящий только из еди- ниц, обеспечивает широковещание в пределах текущей (обычно локальной) сети. Адреса, в которых указана сеть, но в поле номера хоста одни единицы, обес- печивают широковещание в пределах любой удаленной локальной сети, соеди- ненной с Интернетом. Наконец, все адреса вида 127.xx.yy.zz зарезервированы для тестирования сетевого программного обеспечения методом обратной передачи. Отправляемые по этому адресу пакеты не попадают на линию, а обрабатываются локально как входные пакеты. Это позволяет пакетам перемещаться по локаль- ной сети, когда отправитель не знает номера. Подсети Как было показано ранее, у всех хостов сети должен быть один и тот же номер се- ти. Это свойство IP-адресации может вызвать проблемы при росте сети. Напри- мер, представьте, что университет создал сеть класса В, используемую факульте- том информатики в качестве Ethernet. Год спустя факультету электротехники понадобилось подключиться к Интернету, для чего был куплен повторитель для расширения сети факультета информатики и проложен кабель из его здания. Од- нако время шло, число компьютеров в сети росло, и четырех повторителей (мак- симальный предел для сети Ethernet) стало не хватать. Понадобилось создание новой архитектуры. Получить второй сетевой адрес университету довольно сложно, потому что сетевые адреса — ресурс дефицитный, к тому же в одном сетевом адресе адресно- го пространства достаточно для подключения более 60 000 хостов. Проблема за- ключается в следующем: правилом установлено, что адрес одного класса (А, В или С) относится только к одной сети, а не к набору ЛВС. С этим столкнулось множество организаций, в результате чего были произведены небольшие изме- нения в системе адресации. Проблема решилась предоставлением сети возможности разделения на не- сколько частей с точки зрения внутренней организации. При этом с точки зре- ния внешнего представления сеть могла оставаться единой сущностью. Типич- ная сеть университетского городка в наши дни выглядит так, как показано на рис. 5.50. Здесь главный маршрутизатор соединен с провайдером или региональ- ной сетью, а на каждом факультете может быть установлена своя локальная сеть Ethernet. Все сети Ethernet с помощью своих маршрутизаторов соединяются с главным маршрутизатором университетской сети (возможно, с помощью маги- стральной ЛВС, однако здесь важен сам принцип межмаршрутизаторной связи).

В литературе, посвященной интернет-технологиям, части сети называются подсетями. Как уже упоминалось в главе 1, подобное использование этого тер- мина конфликтует со старым понятием «подсети», обозначающим множество всех маршрутизаторов и линий связи в сети. К счастью, по контексту обычно бы- вает ясно, какой смысл вкладывается в это слово. По крайней мере, в данном разделе «подсеть» будет употребляться только в новом значении. Как центральный маршрутизатор узнает, в какую из подсетей (Ethernet) на- править пришедший пакет? Одним из способов является поддержание маршру- тизатором таблицы из 65 536 записей, говорящих о том, какой из маршрутизато- ров использовать для доступа к каждому из хостов. Эта идея будет работать, но потребуется очень большая таблица и много операций по ее обслуживанию, вы- полняемых вручную, при добавлении, перемещении и удалении хостов. Была изобретена альтернативная схема работы. Вместо одного адреса клас- са В с 14 битами для номера сети и 16 битами для номера хоста было предло- жено использовать несколько другой формат — формировать адрес подсети из нескольких битов. Например, если в университете существует 35 подразделе- ний, то 6-битным номером можно кодировать подсети, а 10-битным — номера хостов. С помощью такой адресации можно организовать до 64 сетей Ethernet по 1022 хоста в каждой (адреса 0 и -1 не используются, как уже говорилось, поэто- му не 1024 (2 Ш ), а именно 1022 хоста). Такое разбиение может быть изменено, если окажется, что оно не очень подходит. Все, что нужно маршрутизатору для реализации подсети, это наложить маску подсети, показывающую разбиение адреса на номер сети, подсети и хоста (рис. 5.51). Маски подсетей также записываются в виде десятичных чисел, раз- деленных точками, с добавлением косой черты, за которой следует число битов номера сети и подсети. Например, на рис. 5.51 маску подсети можно записать в виде 255.255.252.0. Альтернативная запись будет включать /22, показывая, что маска подсети занимает 22 бита.

За пределами сети разделение на подсети незаметно, поэтому нет нужды с по- явлением каждой подсети обращаться в ICANN или изменять какие-либо внеш- ние базы данных. В данном примере первая подсеть может использовать IP-ад- реса, начиная с 130.50.4.1; вторая — начиная с 130.50.8.1; третья — 130.50.12.1, и т. д. Чтобы понять, почему на каждую подсеть уходит именно четыре единицы в адресе, вспомните двоичную запись этих адресов:

Подсеть 1: 10000010 00110010 000001|00 00000001

Подсеть 2: 10000010 00110010 000010100 00000001

Подсеть 3: 10000010 00110010 000011|00 00000001

Здесь вертикальная черта (|) показывает границу номера подсети и хоста. Слева расположен 6-битный номер подсети, справа — 10-битный номер хоста. Чтобы понять, как функционируют подсети, следует рассмотреть процесс об- работки IP-пакетов маршрутизатором. У каждого маршрутизатора есть таблица, содержащая IP-адреса сетей (вида <сетъ, 0>) и IP-адреса хостов (вида <эта_ сеть, хост>). Адреса сетей позволяют получать доступ к удаленным сетям, а ад- реса хостов — обращаться к локальным хостам. С каждой таблицей связан сете- вой интерфейс, применяющийся для получения доступа к пункту назначения, а также другая информация. Когда IP-пакет прибывает на маршрутизатор, адрес получателя, указанный в пакете, ищется в таблице маршрутизации. Если пакет направляется в удаленную сеть, он пересылается следующему маршрутизатору по интерфейсу, указанному в таблице. Если пакет предназначен локальному хосту (например, в локальной сети маршрутизатора), он посылается напрямую адресату. Если номера сети, в которую посылается пакет, в таблице маршрутизатора нет, пакет пересылается маршрутизатору по умолчанию, с более подробными таблицами. Такой алгоритм означает, что каждый маршрутизатор должен учитывать только другие сети и локальные хосты, а не пары <сеть, хост>, что значительно уменьшает размер таблиц маршрутизатора. При разбиении сети на подсети таблицы маршрутизации меняются — добав- ляются записи вида <эта_сеть, подсеть, 0> и <эта_сетъ, эта_подсеть, хост>. Таким образом, маршрутизатор подсети k знает, как получить доступ ко всем другим подсетям и как добраться до всех хостов своей подсети. Ему нет нужды знать детали адресации хостов в других подсетях. На самом деле, все, что для этого требуется от маршрутизатора, это выполнить двоичную операцию И над маской подсети, чтобы избавиться от номера хоста, а затем найти получившийся адрес в таблицах (после определения класса сети). Например, пакет, адресован- ный хосту с IP-адресом 130.50.15.6 и прибывающий на центральный маршрути- затор, после выполнения операции И с маской 255.255.252.0/22 получает адрес 130.50.12.0. Это значение ищется в таблицах маршрутизации, и с его помощью определяется выходная линия маршрутизатора к подсети 3. Итак, разбиение на подсети уменьшает объем таблиц маршрутизаторов путем создания трехуровне- вой иерархии, состоящей из сети, подсети и хоста.