Э. Таненбаум - Компьютерные сети. (4-е издание) (DJVU) (1130092), страница 133
Текст из файла (страница 133)
Не стоит портить то, что сделано хорошо и работает в большинстве случаев. Вместо этого имеет смысл переложить все бремя ответственности за «улучшения» проекта на тех, кто предъявляет свои странные требования. 8. Тщательно продумывайте отправку данных, но будьте снисходительны при приеме данных. Другими словами, посылайте пакеты, только убедившись в том, что они полностью соответствуют всем требованиям стандартов.
При этом надо иметь в виду, что приходящие пакеты не всегда столь идеальны и их тоже нужно обрабатывать. Продумайте масштабируемость. Если в системе работают миллионы хостов и миллиарды пользователей, о централизации можно забыть. Нагрузка должна быть распределена максимально равномерно между имеющимися ресурсами. 10. Помните о производительности и цене. Никого не заинтересует сеть низко- производительная или дорогостоящая. Теперь перейдем от общих принципов к деталям построения сетевого уровня Интернета. На сетевом уровне Интернет можно рассматривать как набор подсе- Сетевой уровень в Интернете 497 Европейская магистраль Магистраль Вьщеленные линии в Азию Выделенная 1Р маркерная шина Локальная смь !Р ЕэзелтеГ Рис.
5.46. Интернет лредставлвет собой набор соединенных друг с другом сетей той или автономных систем, соединенных друг с другом. Структуры как таковой Интернет не имеет, но все же есть несколько магистралей. Они собраны из высокопроизводительных линий и быстрых маршрутизаторов. К магистралям присоединены региональные сети (сети среднего уровня), с которыми, в свою очередь, соединяются локальные сети многочисленных университетов, компаний и провайдеров. Схема этой квазииерархической структуры показана на рис.
5 46, Вся эта конструкция ксклеивается» благодаря протоколу сетевого уровня, 1Р ([пгегпег Ргососо1 — протокол сети Интернет). В отличие от большинства ранних протоколов сетевого уровня, 1Р с самого начала разрабатывался как протокол межсетевого обмена. Вот как можно описать данный протокол сетевого уровня: его работа заключается в приложении максимума усилий (тем не менее, без всяких гарантий) по транспортировке дейтаграмм от отправителя к получателю независимо от того, находятся эти машины в одной н той же сети или нет. Соединение в сети Интернет представляет собой следующее.
Транспортный уровень берет поток данных и разбивает его на дейтаграммы. Теоретически размер каждой дейтаграммы может достигать 64 Кбайт, однако на практике они обычно не более 1500 байт (укладываются в один кадр ЕгЬегпег). Каждая дейтаграмма пересылается по Интернету, возможно, разбиваясь при этом на более мелкие фрагменты, собираемые сетевым уровнем получателя в исходную дейтаграмму.
Затем эта дейтаграмма передается транспортному уровню, вставляющему ее во входной поток получающего процесса. На рис. 5А6 видно, что пакет, посланный хостом 1, пересечет на своем пути шесть сетей, прежде чем доберется до хоста 2. На практике промежуточных сетей оказывается гораздо больше. 498 Глава 5. Сетевой уровень Протокол! Р Начнем изучение сетевого уровня Интернета с формата 1Р-дейтаграмм. 1Р-дейтаграмма состоит из заголовка и текстовой части.
Заголовок содержит обязательную 20-байтную часть, а также необязательную часть переменной длины. Формат заголовка показан на рис. 5А7. Он передается слева направо, то есть старший бит поля Версия передается первым. (В процессоре БРАКС байты располагаются слева направо, в процессоре Репг1шп — наоборот, справа налево,) На машинах, у которых старший байт располагается после младшего, как, например, у семейства процессоров корпорации 1пге1, требуется программное преобразование как при передаче, так и при приеме. 32 бита Необиаательиаи часть (О или более слов) Рис.
$.47. Заголовок )Р-дейтаграммы )Рч4 Поле Версия содержит версию протокола, к которому принадлежит дейтаграмма. Включение версии в каждую дейтаграмму позволяет использовать разные версии протокола на разных машинах. Дело в том, что с годами протокол изменялся, и на одних машинах сейчас работают новые версии, тогда как на других продолжают использоваться старые. Сейчас происходит переход от версии 1рч4 к версии 1Рч6. Он длится уже много лет, и не похоже, что скоро завершится (Оигапс), 2001; ЪЧ11)а)с)га, 2002; Маг)41пйгоп и Сйапй, 2002). Некоторые даже считают, что это не произойдет никогда (ЪЧе)зег, 2001). Что касается нумерации, то ничего странного в ней нет, просто в свое время существовал мало кому известный экспериментальный протокол реального масштаба времени 1Рч5. Длина заголовка является переменной величиной, для хранения которой выделено поле 181. (информация в нем представлена в виде 32-разряднгях слов) Минимальное значение длины (при отсутствии необязательного поля) равно 5.
Максимальное значение этого 4-бнтового поля равно 15, что соответствует заголовку длиной 60 байт; таким образом, максимальный размер необязателыюго поля равен 40 байтам. Для некоторых приложений, например, для записи маршрута, по которому должен быть переслан пакет, 40 байт слишком мало. В данном случае дополнительное поле оказывается бесполезным. Сетевой уровень в Интернете 499 Поле Тип службы — единственное поле, смысл которого с годами несколько изменился. Опо было (впрочем, и до сих пор) предназначено для различения классов обслуживания.
Возможны разные комбинации надежности и скорости. ддя оцифрованного голоса скорость доставки важнее точности. При передаче файла, наоборот, передача без ошибок важнее быстрой доставки. Изначально 6-разрядиое поле Тип службы состояло из трехразрядиого поля ргесег7епсе и трех флагов — Р, Т и Я. Поле ргеседепсе указывало приоритет, от 6 (иормальиый) до 7 (управляющий сетевой пакет). Три флаговых бита позволяли хосту указать, что беспокоит его сильнее всего, выбрав из набора (Эе1ау, ТЬгопдЬрпц Ке!1аЫ!1гу) (Задержка, Пропускная способность, Надежность). Теоретически, зги поля позволяют маршрутизаторам выбрать, например, между спутниковой линией с высокой пропускной способностью и большой задержкой и выделенной линией с низкой пропускной способностью и небольшой задержкой.
На практике сегодняшние маршрутизаторы часто вообще игнорируют поле Тип службы. Поле Полная длина содержит длину всей дейтаграммы, включая как заголовок, так и данные. Максимальная длина дейтаграммы 65 535 байт. В настоящий момент этот верхний предел достаточен, однако с появлением гигабитиых сетей могут понадобиться дейтаграммы большего размера. Поле Идентификатор позволяет хосту-получателю определить, какой дейтаграмме принадлежат полученные им фрзгмеитьь Все фрагменты одной дейтаграммы содержат одно и то же значение идентификатора. Следом идет один неиспользуемый бит и два однобитных поля.
Бит РГ означает Роп'г Ггайщепг (Не фрагмеитировать). Это команда маршрутизатору, запрещающая ему фрагмеитировать дейтаграмму, так как получатель ие сможет восстановить ее из фрагментов. Например, при загрузке компьютера его ПЗУ может запросить образ памяти в виде единой дейтаграммы.
Пометив дейтаграмму битом РГ, отправитель гарантирует, что дейтаграмма дойдет единым блоком, даже если для ее доставки придется избегать сетей с маленьким размером пакетов. От всех машин требуется способность принимать фрагменты размером 576 байт и менее. Бит Мрозначает Маге ггайшепсз (Продолжение следует). Ои устанавливается во всех фрагментах, кроме последнего. По атому биту получатель узнает о прибытии последнего фрагмента дейтаграммы. Поле Сиещение фрагмента указывает положение фрагмента в исходной дейтаграмме. Длина всех фрагментов в байтах, кроме длины последнего фрагмента, должна быть кратна 8.
Так как иа зто поле выделено 13 бит, максимальное количество фрагментов в дейтаграмме равно 8192, что дает максимальную длину дейтаграммы 65 536 байт, иа 1 байт больше, чем может содержаться в поле Полная длина. Поле Время жизни представляет собой счетчик, ограничивающий время жизии пакета. Предполагалось, что ои будет отсчитывать время в секундах, таким образом, допуская максимальное время жизни пакета в 255 с. На каждом маршрутизаторе это значение должно было уменьшаться как минимум иа единицу плюс время стояния в очереди. Однако на практике зтот счетчик просто считает 600 Глава 5. Сетевой уровень Таблица Б.б. Некоторые типы необязательного поля !Р-дейтаграммы Тип Олиоение Безопасность Указывает уровень секретности дейтаграммы Задает список маршрутизаторов, которые нельзя миновать Задает полный путь следования дейтаграммы Свободная маршрутизация от источника Строгая маршрутизация от источника количество переходов через маршрутизаторы.
Когда значение этого поля становится равным нулю, пакет отвергается, а отправителю отсылается пакет с предупреждением. Таким образом удается избежать вечного странствования пакетов, что может произойти, если таблицы маршрутизаторов по какой-либо причине испортятся. Собрав дейтаграмму из фрагментов, сетевой уровень должен репшть, что с ней делать. Поле Протокол сообщит ему, какому процессу транспортного уровня ее передать.
Это может быть ТСР, 1)ОР или что-нибудь еще. Нумерация процессов глобально стандартизирована по всему Интернету. Номера протоколов вместе с некоторыми другими были сведены в КРС 1700, однако теперь доступна интернет-версия в виде базы данных, расположенной по адресу апета.1апа.огя Поле Контрольная сумма заголовка защищает от ошибок только заголовок. Подобная контрольная сумма полезна для обнаружения ошибок, вызванных неисправными микросхемами памяти маршрутизаторов.
Алгоритм вычисления суммы просто складывает все 16-разрядные полуслова в дополнительном коде, преобразуя результат также в дополнительный код. Таким образом, проверяемая получателем контрольная сумма заголовка (вместе с этим полем) должна быть равна нулю. Этот алгоритм надежнее, чем обычное суммирование.