Глава 3 Понятие межсетевого обмена и архитектурная модель 3.1 Введение Так как мы уже рассмотрели низкоуровневые детали передачи в отдельных сетях, основу, на которой строится взаимодействие компьютеров. Эта глава делает большой концептуальный скачок, описывая схему, которая позволяет нам объединять разнообразные сетевые технологии в единое целое. Нашей главной целью является схема, которая скрывает детали лежащего в ее основе сетевого оборудования, в то же время обеспечивая универсальные средства взаимодействия. Основным результатом является высокоуровневая абстракция, которая обеспечивает основу для всех проектных решений. Последующие главы покажут, как мы используем эту абстракцию для построения необходимых уровней межсетевого коммуникационного математического обеспечения и как это программное обеспечение скрывает лежащие в его основе механизмы физической передачи. Следующие главы также покажут, как приложения используют получившуюся коммуникационную систему. 3.2 Взаимодействие на прикладном уровне Разработчики используют два различных подхода для скрытия деталей сетевого взаимодействия, используя прикладные программы для работы в неоднородной среде или скрывая эти детали в операционной системе. Ранние взаимодействия неоднородных сетей обеспечивали единообразие с помощью прикладных программ. В таких системах прикладная программа, работая на каждой машине в сети, знала детали сетевого взаимодействия для этой машины и взаимодействовала с прикладными программами по этим соединениям. Например, некоторые системы электронной почты состояли из программ-отправителей писем(mailer), которые передавали письма по-одному. Путь от источника до получателя мог включать различные сети, но это не имело значения до тех пор, пока системы электронной почты на всех машинах были способны работать друг с другом. Использование прикладных программ для скрытия сетевых деталей может показаться на первый взгляд естественным, но такой подход приводит к ограниченному, громоздкому взаимодействию. Добавление новых возможностей к этой системе означает создание новой прикладной программы на каждой машине. Добавление нового сетевого оборудования означает модификацию или создание новых программ для всех возможных приложений. На данной машине каждая программа знает сетевые соединения для этой машины, что приводит к дублированию кода. Пользователи, имеющие опыт работы с сетями, знают, что когда-нибудь во взаимодействии будут участвовать сотни или тысячи сетей; тогда никто не будет в состоянии создать все необходимые прикладные программы. Более того, для успешного использования пошаговой схемы взаимодействия требуется корректность всех прикладных программ на всем пути. Если программа на промежуточной машине аварийно завершится, ни отправитель, ни получатель не смогут обнаружить ошибку или исправить ее. Поэтому системы, использующие промежуточные программы, не могут гарантировать надежного взаимодействия. 3.3 Взаимодействие на сетевом уровне Альтернативой обеспечению взаимодействия прикладными программами являются системы, основанные на соединении сетевого уровня. Соединение на сетевом уровне обеспечивает механизм, который доставляет пакеты от их настоящего отправителя к настоящему получателю в реальном масштабе времени. Коммутация для передачи маленьких блоков, а не файлов или больших сообщений имеет ряд преимуществ. Во-первых, она напрямую отображается в базовое сетевое оборудование, что делает ее очень эффективным. Во-вторых, она разделяет процессы передачи данных от прикладных программ, позволяя машинам обрабатывать сетевой траффик, не зная какие приложения передают его. В-третьих, она делает систему гибкой, делая возможным создание сетевых протоколов общего назначения. В-четвертых, она позволяет администраторам сетей добавлять новые сетевые технологии, модифицируя программное обеспечение сетевого уровня или добавляя к нему новую часть и не внося при этом никаких изменений в прикладные программы. Ключевым понятием при разработке универсального взаимодействия сетевого уровня является понятие абстрактной коммуникационной системы, известное как межсетевой обмен(internetworking). Понятие объединенной сети(internetwork или internet) является очень мощным. Оно отделяет понятие взаимодействия от деталей сетевых технологий и скрывает низкоуровневые детали от пользователя. Более того, оно определяет все проектные решения при разработке программного обеспечения и объясняет, как работать с физическими адресами и маршрутами. После перечисления основных причин организации межсетевого обмена мы рассмотрим свойства объединенной сети более детально. Напомним, что мы начали с двух фундаментальных замечаний о разработке коммуникационных систем: -одна сеть не может обслужить всех пользователей -пользователи хотят универсального взаимодействия Первое замечание является техническим. Локальные сети, обеспечивающие наивысшую скорость взаимодействия, ограничены в своих размерах; глобальные сети охватывают большие районы, но не могут обеспечить высокоскоростные соединения. Нет одной сетевой технологии, удовлетворяющей всем нуждам, поэтому мы вынуждены использовать несколько базовых аппаратных технологий. Второе замечание очевидно. В конечном счете, нам хотелось бы иметь возможность организовать взаимодействие между любыми двумя точками. В частности, мы хотели бы иметь коммуникационную систему, не заключенную в границы физических сетей. Нашей целью является создание унифицированного, объединенного взаимодействия сетей, поддерживающих универсальное коммуникационное средство. Внутри каждой сети компьютеры будут использовать базовые коммуникационные примитивы, зависящие от технологии и похожие на те, что описаны в главе 2. Новое программное обеспечение, вставленное между механизмами взаимодействия, зависящими от технологии, и прикладными программами, будет скрывать низкоуровневые детали и сделает так, что группа сетей будет казаться одной большой сетью. Такая схема взаимодействия называется объединенной сетью(internet). Идея создания объединенной сети следует стандартному подходу при разработке систем: разработчики придумывают высокоуровневое вычислительное средство и дорабатывают имеющуюся вычислительную технологию, добавляя уровни программного обеспечения до тех пор, пока они не получат систему, эффективно реализующую придуманное ими высокоуровневое средство. Следующий раздел опишет первый шаг при разработке, более точно определив цель. 3.4 Свойства объединенной сети(интернета) Понятие универсального средства важно, но само по себе оно не охватывает все идеи, подразумевавшиеся нами для унифицированной объединенной сети, так как может существовать много реализаций универсальных средств. В нашем проекте мы хотим скрыть базовую архитектуру объединенной сети от пользователя. То есть, мы не хотим требовать от пользователя или прикладной программы знания деталей аппаратных взаимодействий, используемых в объединенной сети. Мы также не хотим предписывать топологию сетевых взаимодействий. В частности, добавление новой сети к интернету не должно означать ее соединение с центральным маршрутизатором, а также не должно означать добавление прямых физических соединений между новой сетью и всеми существующими сетями. Мы хотим иметь возможность посылать данные через промежуточные сети даже если они не соединены напрямую с машинами отправителя и получателя. мы хотим, чтобы все машины в интернете имели идентификаторы из одного универсального множества машинных идентификаторов(которые могут представляться как имена или адреса). Наше понятие унифицированного интернета также включает идею сетевой независимости для интерфейса с пользователем. То есть, мы хотим, чтобы набор операций, используемых для установления взаимодействия или передачи данных, оставался независимым от базовых сетевых технологий и машины получателя. И конечно, пользователю не следует знать топологию сетевых взаимодействий при написании взаимодействующих прикладных программ. 3.5 Архитектура Интернета Мы уже видели, как машины присоединяются к отдельным сетям. Возникает вопрос: "Как соединяются сети между собой для создания объединенной сети ?" Ответ состоит из двух частей. Физически две сети могут соединяться только с помощью компьютера, присоединенного к каждой из них. Физическое соединение, тем не менее, не обеспечивает подразумевавшееся нами взаимодействие, так как такое соединение не гарантирует, что компьютер сможет взаимодействовать с другими машинами, с которыми он хотел бы это сделать. Чтобы иметь надежный интернет, нам нужно, чтобы компьютеры были согласны передавать пакеты из одной сети в другую. Компьютеры, соединяющие две сети и передающие пакеты из одной в другую, называются межсетевыми шлюзами(gateway) или межсетевыми маршрутизаторами(router). Рассмотрим пример, состоящий из двух физических сетей, показанный на рисунке 3.1. На этом рисунке машина G присоединена как к сети 1, так и к сети 2. Чтобы G работал как шлюз, он должен принимать пакеты из сети 1, предназначенные машинам в сети 2 и передавать их туда. Аналогично, G должен принимать пакеты из сети 2, которые предназначены машинам в сети 1 и передавать их туда. ---------------- ---------------- | | ----- | | | Сеть 1 |--------| G |--------| Сеть 2 | | | ----- | | ---------------- ---------------- Рисунок 3.1 Две сети, соединенные шлюзом G. 3.6 Соединение через IP-шлюзы(маршрутизаторы) Когда соединения интернета становятся более сложными, шлюзам нужно знать о топологии интернета за пределами сетей, к которым они присоединены. Например, рисунок 3.2 показывает три сети, соединенные между собой двумя шлюзами. ---------- ---------- ---------- | | ------ | | ------ | | | Сеть 1 |-| G1 |-| Сеть 2 |-| G2 |-| Сеть 3 | | | ------ | | ------ | | ---------- ---------- ---------- Рисунок 3.2 Три сети, соединенные между собой двумя шлюзами В этом примере шлюз G1 должен перемещать из сети 1 в сеть 2 все пакеты, предназначенные для машин либо в сети 2, либо в сети 3. По мере того, как размер интернета увеличивается, задача шлюза по принятию решений о том, куда посылать пакеты, становится более сложной. Идея шлюза кажется простой, но она важна, потому что она обеспечивает способ взаимного соединения сетей, а не машин. Фактически, мы уже установили принцип взаимного соединения, используемый повсеместно в интернете: В интернете TCP/IP компьютеры, называемые шлюзами, обеспечивают все соединения между физическими сетями. Вы можете ожидать, что шлюзы, которые знают, как направить пакеты к их получателю, являются большими машинами, имеющими достаточное количество основной или внешней памяти для хранения информации о каждой машине в интернете, к которому они присоединены. Тем не менее, шлюзы, используемые в интернетах TCP/IP, обычно являются миникомпьютерами; они часто имеют небольшую дисковую память или не имеют ее вообще, а также имеют ограниченную оперативную память. Причина использования маленьких межсетевых шлюзов заключена в следующем утверждении: Шлюзы маршрутизируют пакеты, основываясь на сети получателя, а не на машине получателя. Если маршрутизация основана на сетях, то количество информации, которую нужно хранить шлюзу, пропорционально количеству сетей в интернете, а не числу машин в нем. Так как шлюзы играют ключевую роль в межсетевом взаимодействии, мы вернемся к ним в следующих главах и рассмотрим детали того, как они работают и как они получают информацию о путях. А пока мы будем предполагать, что существует реальная возможность иметь корректные пути для всех сетей в каждом шлюзе в интернете. Мы будем также предполагать, что только шлюзы обеспечивают соединение между физическими сетями в интернете. 3.7 Взгляд пользователя Напомним, что TCP/IP разработан, чтобы обеспечить универсальное взаимное соединение между машинами, не зависящее от конкретных сетей, к которым они присоединены. Поэтому, мы хотим, чтобы пользователь представлял себе интернет как единую виртуальную сеть, к которой присоединены все машины, не смотря на то, что физически это не так. Рисунок 3.3а показывает, как представление об интернете как об одной большой сети, а не как о группе сетей, упрощает детали и делает легким для пользователя концептуализацию взаимодействия. Помимо шлюзов, соединяющих физические сети, на каждом хосте требуется программное обеспечение доступа к интернету, чтобы прикладные программы могли использовать интернет так, как будто это одна физическая сеть. Преимущество соединения на сетевом уровне становится ясным. Так как прикладные программы, взаимодействующие с помощью интернета, не знают детали организации соединений, они могут запускаться в неизменном виде на любой машине. Так как детали физических сетевых соединений для каждой машины скрыты в межсетевом программном обеспечении, при появлении новых физических соединений или удалении старых требуется менять только это программное обеспечение. Фактически, можно оптимизировать маршрутизацию, изменив физические соединения, но не перекомпилировав при этом прикладные программы. Второе преимущество организации взаимодействия на сетевом уровне менее важное: пользователям не нужно знать или помнить, как соединены сети или какой траффик они передают. Прикладные программы могут быть написаны таким образом, что будут работать независимо от физической связности. Фактически, сетевые администраторы могут свободно изменять внутренние части базовой архитектуры интернета, не меняя прикладные программы в большинстве компьютеров, присоединенных к интернету(конечно, сетевое программное обеспечение должно быть переконфигурировано, когда компьютер перемещается в новую сеть). Как показывает рисунок 3.3б, шлюзы не обеспечивают прямое соединение между всеми парами сетей. Траффику, передающемуся от одной машины к другой, может понадобиться пройти через несколько промежуточных сетей. Поэтому, сети, участвующие в интернете, являются аналогами высокоскоростных магистралей(highway) в США: каждая сеть согласна передавать транзитный траффик в обмен на право посылать траффик через весь интернет. Типичные пользователи даже не ощущают, что по их локальной сети проходит дополнительный траффик. 3.8 Все сети равны В главе 2 был сделан обзор сетевого оборудования, используемого для построения интернетов TCP/IP и проиллюстрировала большое разнообразие технологий. Мы описали интернет как набор взаимодействующих, взаимосвязанных сетей. На данный момент важно уяснить фундаментальное понятие: с точки зрения интернете, любая коммуникационная система, способная передавать пакеты, считается одной сетью, независимо от ее задержек при передаче, пропускной способности, максимального размера пакета или географических размеров. В частности, рисунок 3.3б использует прямоугольник одинаковых размеров для обозначения всех физических сетей, так как TCP/IP считает их равными, несмотря на их разницу. Итак, Межсетевые протоколы TCP/IP считают все сети равными. Локальная сеть, такая как Ethernet, глобальная сеть, такая как магистральная сеть NSFNET, или соединение точка-точка между двумя машинами - каждый из них считается сетью. Читатели, не привыкшие к архитектуре интернета, могут найти неприемлемым такой упрощенный взгляд на сети. По существу, TCP/IP определяет абстрактное понятие "сеть", которое скрывает детали физических сетей; мы увидим, что такие абстракции делают TCP/IP очень мощным. --- --- |Э|-- --|Э| --- | | --- /---------\ --- --- | интернет |----|Э| |Э|-| | --- --- \ | \ / | \------/\ --- --- -|Э| |Э| --- --\ / ---ЭВМ---- (а) --- --- -----интернет |Э|-- --|Э| | --- | | --- V --- /-------------------------\ / --|Э| | | |-----| |/ --- | ++++ __ ++++ / | + +--||--+ +----------/ \ / ++++ -- ++++ физическая \ | -- | | сеть | | ||-| | | | | -- | V | --- --- | | -- | ++++ /---|----|Э| |Э|-|---++++--||---| + +---/ | --- --- \ + + -- ++++ / | ++++ | / | | | | | -- ++++ -- | \ ||-----+ +---||<-шлюз / \ -- ++++ -- / | \----------------------/ --- |Э| |Э| --- --\ / ---ЭВМ----------- (б) Рисунок 3.3 (а) Пользовательское представление об интернете TCP/IP, при котором кажется, что каждый компьютер присоединен к одной большой сети, и (б) структура физических сетей и шлюзов, обеспечивающая соединение 3.9 Вопросы, которые остались без ответа Наш краткий обзор интернетов оставил много вопросов без ответов. Например, вас может интересовать точная форма машинных адресов в интернете или то, как такие адреса соотносятся с физическими аппаратными адресами Ethernetа, proNET-10 или ARPANETа, описанными в главе 2. Следующие три главы ответят на эти вопросы. Они опишут формат адресов IP и проиллюстрируют, как ГВМ осуществляют отображение интернетовских адресов в физические и наоборот. Вы также можете захотеть узнать точно, как выглядит пакет при передаче его через интернет, или что происходит, когда на некоторые ГВМ или шлюзы пакеты прибывают быстрее, чем их можно обработать. Глава 7 ответит на эти вопросы. Наконец, вас может заинтересовать, как несколько прикладных программ, выполняющихся параллельно на одной машине, могут посылать и принимать пакеты из несколько мест сразу, не запутавшись при этом, или как интернетовские шлюзы получают информацию о путях. На все эти вопросы также будут даны ответы. Хотя это сейчас еще не видно, направление, в котором мы двигаемся, позволит нам изучить как структуру, так и применения межсетевого протокольного программного обеспечения. Мы рассмотрим каждую часть, изучая концепции и принципы, а также технические детали. Мы начали с того, что изучили уровень физического взаимодействия, на основе которого строится интернет. Каждая из следующих глав будет рассматривать одну из частей межсетевого программного обеспечения, до тех пор, пока мы не поймем, как все эти части согласованы друг с другом. 3.10 Итоги Интернет - это более чем набор сетей, соединенных с помощью компьютеров. Межсетевой обмен подразумевает, что участвующие в нем системы подчиняются соглашениям, которые позволяют каждому компьютеру взаимодействовать со всеми остальными компьютерами. В частности, интернет позволит двум машинам взаимодействовать, даже если путь при взаимодействии между ними проходит по сети, к которой ни одна из них не присоединена. Такое взаимодействие возможно только в том случае, когда компьютеры подчиняются соглашениям о наборе универсальных идентификаторов и наборе процедур для перемещения данных к их конечному получателю. В интернете соединения между сетями образуются с помощью компьютеров, называемых IP-шлюзами, или маршрутизаторами, которые присоединяются к двум и более сетям. Шлюзы маршрутизируют пакеты между сетями, получая их от одной сети и направляя их в другую. Для дальнейшего изучения Наша модель объединенной сети взята из Cerf и Comer[1983] и Cerf и Kahn[1974], которые описывают интернет как набор сетей, объединенных шлюзами и кратко рассматривают межсетевой протокол, похожий на тот, который был впоследствии разработан для связки протоколов TCP/IP. Более подробная информация об архитектуре объединенного Интернета может быть найдена в Postel[1980]; Postel, Sunshine и Chen[1981]; и в Hinden, Haverty и Sheltzer[1983]. Shoch[1978] рассматривает вопросы межсетевых имен и адресов. Boggs et. al. [1980] описывает интернет, разработанный в XEROX PARC, альтернативу интернету TCP/IP, который мы рассматриваем. Cheriton[1983] описывает межсетевой обмен в связи V-системой. Упражнения 3.1 Изменение таблицы маршрутизации шлюза может быть проблематичным, так как нельзя изменить таблицы во всех шлюзах одновременно. Разработайте алгоритмы, которые гарантируют , что внесение изменений произошло либо на всех машинах, либо нигде. 3.2 В интернете шлюзы периодически обмениваются информацией о своих таблицах маршрутизации, делая возможным появление нового шлюза и передачу ему пакетов. Разработайте алгоритмы, использующиеся для обмена информацией. 3.3 Сравните организацию интернета TCP/IP с интернетом, разработанным Xerox Corporation. 3.4 Какие процессоры использовались в шлюзах объединенного Интернета? Удивлены ли вы размерами и скоростью работы шлюзов? Почему?