Эта книга является одним из классических академических куpсов по техническим пpинципам pаботы Интеpнета. В доступной фоpме здесь описываются основы всех пpотоколов, фоpматы их сообщений и логика их pаботы. Понимание pяда пpоблем сетевой безопасности невозможно без знания изложенных в ней сведений.
Эта книга является одним из классических академических куpсов по техническим пpинципам pаботы Интеpнета. В доступной фоpме здесь описываются основы всех пpотоколов, фоpматы их сообщений и логика их pаботы. Понимание pяда пpоблем сетевой безопасности невозможно без знания изложенных в ней сведений.
Предыдущие главы рассмотрели архитектурные основы межсетевого обмена, описали, как шлюзы маршрутизируют дейтаграммы Интернета между собой и ГВМ, и представили механизмы, используемые для отображения IP-адресов в физические сетевые адреса. Эта глава рассмотрит общую структуру программного обеспечения, находящегося в шлюзах и ГВМ, которое решает задачу сетевого взаимодействия. Она опишет общий принцип разделения на уровни, покажет, как это разделение делает программное обеспечение Межсетевого Протокола легче для понимания и построения, и проследит путь дейтаграмм через протокольное программное обеспечение, который они проходят при передаче через интернет TCP/IP.
Мы уже говорили, что протоколы позволяют специфицировать или понимать взаимодействие, не зная детали сетевого оборудования конкретного производителя. Они являются для компьютерного взаимодействия тем же самым, чем являются языки программирования для вычислений. Теперь вам должно быть понятно, насколько верна эта аналогия. Как язык ассемблера, некоторые протоколы описывают взаимодействие по физической сети. Например, детали формата кадра Etherneta, политика доступа к сети, обработка ошибок в кадрах вместе составляют протокол, описывающий взаимодействие по Ethernetу. Аналогично, детали IP-адресов, формат дейтаграммы, понятие ненадежной доставки, без установления соединения составляют Межсетевой Протокол.
Сложные системы передачи данных не используют один протокол для решения всех задач передачи. Вместо этого, им требуется набор взаимодействующих протоколов, иногда называемый семейством протоколов или стеком протоколов. Чтобы понять почему это так, перечислим ошибки, которые могут возникнуть, когда машины взаимодействуют по сети данных.
Собранные воедино, эти проблемы подавляют. Трудно понять, как написать один протокол, которые бы обрабатывал их всех. По аналогии с языками программирования мы можем выбрать способ, как справиться с таким уровнем сложности. Трансляция программ делится на четыре концептуальных этапа, выделяемые по именам запускаемых программ: компилятор, ассемблер, компоновщик и загрузчик. Такое деление позволяет разработчику сосредотачиваться в каждый момент времени на одной проблеме, а программисту писать и тестировать каждый модуль ПО независимо от других.
Два последних наблюдения из нашей аналогии с языками программирования помогут вам уяснить организацию протоколов. Во-первых, ясно, что части транслируемого ПО должны согласовать формат данных, передаваемых между ними. Например, данные, передаваемые от компилятора ассемблеру, состоят из программы на языке ассемблера. Поэтому, мы видим, как процесс трансляции включает несколько языков программирования. Эта аналогия применима к коммуникационному ПО, где мы видим, что несколько протоколов определяют интерфейсы между модулями коммуникационного ПО. Во-вторых, четыре части транслятора образуют линейную последовательность, в которой выход компилятора становится входом для ассемблера, и т.д. Протокольное ПО также использует линейную последовательность.
Представляйте себе, что модули протокольного ПО на каждой машине как бы поставлены друг на друга и находятся на разных уровнях, как на рисунке 10.1 Каждый уровень отвечает за одну из частей большой проблемы.
----------------- ----------------- | ОТПРАВИТЕЛЬ | | ПОЛУЧАТЕЛЬ | |---------------- |---------------- | Уровень n | | Уровень n | |---------------| |---------------| | .... | | .... | |---------------| |---------------| | Уровень 2 | | Уровень 2 | |---------------| |---------------| | Уровень 1 | | Уровень 1 | |_______________| |_______________| | ^ | | ---V--------------------------|--- | СЕТЬ | ----------------------------------
Рисунок 10.1 Концептуальная организация протокольного ПО в виде уровней.
Концептуально, посылка сообщения от прикладной программы на одной машине к прикладной программе на другой машине означает последовательную передачу сообщения вниз через соседние уровни протокольного ПО на машине получателя, передачу сообщения по сети и передачу сообщения вверх через соседние уровни протокольного ПО на машине получателя.
На практике, протокольное ПО гораздо более сложное, чем это может показаться на основании рисунка 10.1. Каждый уровень принимает решение о корректности сообщения и выбирает соответствующее действие на основании типа сообщения или адреса назначения. Например, один из уровней на принимающей машине должен решить, оставить сообщение или передать его дальше другой машине. Другой уровень должен решить, какая прикладная программа должна принять сообщение.
Чтобы понять разницу между концептуальной организацией протокольного ПО и деталями реализации, рассмотрим их сопоставление, показанное на рисунке 10.2. Концептуальная диаграмма на рисунке 10.2а показывает Межсетевой уровень между высокоуровневым протокольным уровнем и уровнем сетевого интерфейса. Реальная диаграмма на рисунке 10.2б показывает, что ПО IP может взаимодействовать с несколькими модулями протоколов высокого уровня и с несколькими сетевыми интерфейсами. Хотя диаграмма концептуального разделения протоколов на уровни не показывает все детали, она помогает объяснить базовые идеи. Например, рисунок 10.3 показывает уровни протокольного ПО, используемые сообщением, пересекающим три сети. Диаграмма показывает только уровни интерфейса с сетью и Межсетевого Протокола в шлюзах, так как только эти уровни требуются при получении, маршрутизации и отправке дейтаграмм. Мы понимаем, что любая машина, присоединенная к двум сетям, должна иметь два модуля интерфейса с сетью, хотя диаграмма концептуального разделения на уровни показывает только один уровень интерфейса с сетью в каждой машине.
---------------------- ------------ ------------ ------------ | уровень протоколов| |Протокол 1| |Протокол 2| |Протокол 3| | высокого уровня | ---------\-- -----|------ --/--------- ---------------------- \ | / | уровень межсетево-| \ -----|------ / | го протокола | |Модуль IP | ---------------------- / ------------\ | уровень интерфейса| / | \ | с сетью | ------------ ------------ ------------ ---------------------- |Интерфейс1| |Интерфейс2| |Интерфейс3| (а) ------------ ------------ ------------ (б)
Рисунок 10.2 Сопоставление разделения на концептуальные уровни (а) и реальной ситуации с организацией ПО, использующей несколько сетевых интерфейсов ниже IP и несколько протоколов выше него (б).
Как показывает рисунок 10.3, отправитель на исходной машине передает сообщение, которое уровень IP помещает в дейтаграмму и посылает по сети 1. На промежуточных машинах дейтаграмма передается вверх до уровня IP, который отправляет ее обратно вниз и из машины( в другую сеть). Только когда она достигает конечного назначения, машина заставляет IP выделить сообщение и передать его на верхние уровни протокольного ПО.
------------- ------------- ------------- ------------- |Отправитель| | | | | |Получатель | | | | | | | | | ^ | ------V------ | | | | ------|------ | другие ...| | | | | | другие ...| ------------- ------------- ------------- ------------- | Уровень IP| |Уровень IP| | Уровень IP| | Уровень IP| ------------- ------------- ------------- ------------- | Интерфейс | | Интерфейс| | Интерфейс | | Интерфейс | ---------|--- -^-------|-- --^--------|- ---^--------- | | | | | | --V------| -V------|- V------|-- / \ / \ / \ | Сеть 1 | | Сеть 2 | | Сеть 3 | \ / \ / \ / ---------- ---------- ----------
Рисунок 10.3 Путь сообщения, пересекающего Интернет от отправителя через две промежуточные машины к получателю. Промежуточные машины только посылают дейтаграмму до уровня IP в ПО.
Раз принято решение разделить задачу взаимодействия на подзадачи и организовать протокольное ПО в виде модулей, каждый из которых решает одну из подзадач, возникает вопрос: "какие возможности должен обеспечивать каждый модуль ?". На этот вопрос нелегко ответить по нескольким причинам. Во-первых, при заданном наборе целей и ограничений, приводящем к специфической задаче взаимодействия, можно выбрать организацию, оптимизирующую протокольное ПО для этой конкретной задачи. Во-вторых, даже при рассмотрении общих сервисов сетевого уровня, таких как надежная транспортировка, можно выбрать один из нескольких принципиально отличающихся друг от друга подходов для решения этой задачи. В-третьих, разработка сетевой( или межсетевой) архитектуры и организация протокольного ПО не связаны между собой; можно разрабатывать одно в отрыве от другого.
В этой области доминируют две идеи относительно разделения протоколов на уровни. Первая, основывающаяся на работе, проделанной Международной Организацией по Стандартизации(МОС), известной как Справочная Модель ВОС Взаимодействия Открытых Систем, часто называется моделью ВОС. Модель ВОС, содержащая семь концептуальных уровней, организована так, как показано на рисунке 10.4.
Уровень Возможности --------------------------- 7 | Прикладной | | | --------------------------- 6 | Представительный | | | --------------------------- 5 | Сеансовый | | | --------------------------- 4 | Транспортный | | | --------------------------- 3 | Сетевой | | | --------------------------- 2 | Канальный | | (аппаратный интерфейс) | --------------------------- 1 | Физический | | | ---------------------------
Рисунок 10.4 Семиуровневая справочная модель ВОС для протокольного ПО.
Модель ВОС, созданная для описания протоколов одной сети, не содержит специального уровня для межсетевой маршрутизации, имеющегося в стеке протоколов TCP/IP.
Схема разделения на уровни ВОС, хотя и разрабатывалась как концептуальная модель, а не руководство для реализаций, является основой для нескольких реализаций протоколов. Среди протоколов, связанных с моделью ВОС, набор протоколов, известный как Х.25, является вероятно самым популярным и широко используемым. Х.25 был создан как рекомендация Международного Консультативного Комитета по Телефонии и Телеграфии( МККТТ), международной организации, вырабатывающей стандарты для международных телефонных служб. Х.25 используется сетями передачи данных общего пользования в Европе и США.
С точки зрения Х.25, сеть работает во-многом аналогично телефонной системе. Как и ARPANET, описанный в главе 2, сеть Х.25 предполагается состоящей из сложных коммутаторов пакетов, имеющих достаточную интеллектуальность, чтобы маршрутизировать пакеты. ГВМ не присоединены напрямую к каналам сети. Вместо этого каждый ГВМ присоединен к одному из коммутаторов пакетов, используя последовательную линию взаимодействия. Можно сказать и по-другому, то есть что соединение между пакетным коммутатором Х.25 и ГВМ - миниатюрная сеть, состоящая из одной последовательной линии. ГВМ должен использовать довольно сложную процедуру для передачи пакетов в сеть.
Самый широко используемый протокол уровня 2, имеющий название Высокоуровневое Взаимодействие по Каналу Данных, известен по его аббревиатуре - HDLC. Существует несколько версий HDLC, из которых самая последняя имеет название - HDLC/LAPB. Важно помнить, что успешная передача на уровне 2 означает, что кадр был передан сетевому коммутатору пакетов для доставки; она не гарантирует, что пакетный коммутатор примет пакет, или сможет переправить его для доставки.
Вторая основная модель разделения протоколов на уровни не была разработана комитетом по стандартам, а появилась в результате исследований, приведших к появлению стека протоколов TCP/IP. После небольшой доработки модель МОС может быть приспособлена для описания схемы деления на уровни в TCP/IP, но базовые предпосылки этих схем сильно различаются, что позволяет говорить об их различии.
На концептуальном уровне ПО TCP/IP организовано в виде 4 уровней, опирающихся на пятый уровень оборудования. Рисунок 10.5 показывает концептуальные уровни, а также форму, в которой передаются данные между ними.
Концептуальный уровень Объекты, передаваемые между уровнями ----------------- | Прикладной | | | ----------------- <---------Сообщения или потоки | Транспортный | | | ----------------- <---------Пакеты транспортного | Межсетевой | протокола | | ----------------- <---------Дейтаграммы IP | Интерфейс с | | сетью | ----------------- <---------Кадры конкретной сети . Оборудование . . . .................
Рисунок 10.5 Четыре конептуальных уровня ПО TCP/IP и форма объектов, передаваемых между ними. Уровень, называемый интерфейс с сетью, иногда называют уровень канала данных.
Существует два тонких и важных различия между схемой разделения на уровни TCP/IP и Х.25. Первое различие связано с надежностью, в то время как второе - с местонахождением интеллектуальных функций в системе.
Одно из основных различий между протоколами TCP/IP и Х.25 состоит в их подходах к обеспечению сервиса надежной пердачи данных. В модели Х.25 протокольное ПО обнаруживает и обрабатывает ошибки на всех уровнях. На канальном уровне сложные протоколы гарантируют, что передача между ГВМ и пакетным коммутатором, к которому он присоединен, будет корректной. К каждому передаваемому элементу данных присоединяется контрольная сумма, и получатель подтверждает каждый принятый кусок данных. Протокол канального уровня включает таймаут и алгоритм повторной передачи, защищающие от потери данных и обеспечивающие автоматическое восстановление после сбоев или рестартов оборудования.
Следующие уровни Х.25 обеспечивают свою надежность. На уровне 3 Х.25 также обеспечивает обнаружение ошибок и восстановление после них для пакетов, передаваемых по сети, используя контрольные суммы, а также технологии таймаута и повторной передачи. Наконец, уровень 4 должен обеспечивать межконцевую надежность, заставляя при этом место конечного назначения проверять доставку.
В отличие от этой схемы TCP/IP основывает свое разделение на уровни на том, что надежность - это межконцевая проблема. Философия архитектуры проста: создать интернет таким, чтобы он мог управляться с ожидаемой загрузкой, и позволить отдельным каналам или машинам терять данные или искажать их, не пытаясь исправлять ошибки. Фактически, большая часть ПО TCP/IP уровня интерфейса с сетью не обеспечивает надежности. Вместо этого, большинство ошибок обрабатывает транспортный уровень.
Освобождение уровня интерфейса от верификации делает ПО TCP/IP более легким для понимания и реализации. Промежуточные шлюзы могут отбрасывать дейтаграммы, ставшие испорченными из-за ошибок передачи. Они могут отбрасывать любые дейтаграммы, которые не могут быть доставлены. Они могут отбрасывать дейтаграммы, когда скорость их поступления превышает пропускную способность машины. Они могут посылать дейтаграммы по другим путям с меньшей или большей задержкой, не информируя об этом источник или назначение.
Наличие ненадежных каналов означает, что некоторые дейтаграммы не дойдут до назначения. Обнаружение и восстановление после потери дейтаграмм выполняется между источником и назначением, и поэтому называется межконцевой верификацией. Межконцевое ПО, находящееся на транспортном уровне, использует контрольные суммы, подтверждения и таймауты для управления передачей. Поэтому, в отличие от разделения на уровни в Х.25, ориентированного на соединения, ПО TCP/IP помещает большую часть управления надежностью на один уровень.
Другое различие между моделью Х.25 и TCP/IP появляется при определении местонахождения средств управления работой. Как правило, в сетях, использующих Х.25, подразумевается, что сеть - это утилита, обеспечивающая транспортное средство. Производитель, предоставляющий средство, управляет доступом к сети и следит за траффиком для учета работы пользователей. Поставщик сетевого сервиса решает такие проблемы, как маршрутизация и управление потоком внутренним образом, делая процесс передачи данных надежным. При таком подходе на долю ГВМ мало что остается. Короче говоря, сеть - это сложная, независимая система, к которой могут присоединяться относительно простые ГВМ; сами ГВМ мало участвуют в работе сети.
В отличие от этого, TCP/IP требует от ГВМ участия почти во всех сетевых протоколах. мы уже упомянули, что ГВМ активно учствуют в межконцевом обнаружении ошибок и восстановлении после них. Они также принимают участие в маршрутизации, так как они должны выбрать шлюз при посылке дейтаграммы, и они участвуют в управлении сетью, так как они должны обрабатывать управляющие сообщения ICMP. Поэтому, при сравнении с сетью Х.25, интернет TCP/IP может рассматриваться как относительно простая система доставки пакетов, к которой присоединены интеллектуальные ГВМ.
Независимо от конкретной используемой схемы разделения на уровни, или функций уровней, работа протоколов, разнесенных по уровням, основывается на одной фундаментальной идее. Эта идея, называемая принципом разделения на уровни, может быть описана следующим образом:
Протоколы, разнесенные по уровням, разрабатываются таким образом, что назначение на уровне N получает точно такой объект, который был послан отправителем на уровне N.
Принцип разделения протоколов на уровни объясняет, почему разделение на уровни - такя мощная идея. Она позволяет разработчику протоколов последовательно сосредотачивать свое внимание на одном из урвоней, не заботясь при этом о работе других уровней. Например, при создании приложения передачи файлов, разработчик думает только о двух копиях прикладной программы, функционирующих на двух машинах, концентрируется на сообщениях, которыми нужно обменяться при передаче файлов. Разработчик предполагает, что приложение на одной ГВМ принимает точно то, что ему посылает приложение на другой ГВМ.
Рисунок 10.6 иллюстрирует, как работает принцип разделения на уровни:
ГВМ А ГВМ В ----------------- ----------------- | Прикладной | | Прикладной | | | идентичное | | ----------------- сообщение --------^-------- | <---------------------------------------->| -------V--------- --------|-------- | Транспортный | | Транспортный | | | идентичный | | ----------------- пакет --------^-------- | <---------------------------------------->| -------V--------- --------|-------- | Межсетевой | | Межсетевой | | | идентичная | | ----------------- дейтаграмма --------^-------- | <---------------------------------------->| -------V--------- --------|-------- | Интерфейс с | | Интерфейс с | | сетью | идентичный | сетью | ------------\---- кадр --^-------------- \ <-------------------------->/ \ / -V--------------------------/- / Физическая сеть / / / ------------------------------
Рисунок 10.6 Путь сообщения, который оно проходит от приложения на одной ГВМ до приложения на другой ГВМ. Уровень N на ГВМ В принимает точно такой же объект, который был послан уровнем N ГВМ А.
Наше определение принципа разделения на уровни несколько туманно, а иллюстрация на рисунке 10.6 упускает важный вопрос, так как она не делает различия между передачей от источника до конечного назначения и передачей через несколько сетей. Рисунок 10.7 иллюстрирует это различие, показывая путь сообщения, посланного прикладной программой на одной ГВМ к приложению на другой ГВМ через шлюз.
Как показывает рисунок, доставка сообщений использует два различных сетевых кадра: один для передачи между ГВМ А и шлюзом Ш, а другой - между шлюзом Ш и ГВМ В. Принцип разделения сети на уровни устанавливает, что кадр, доставляющийся к Ш, совпадает с кадром, посланным А. Но прикладной и транспортный уровни имеют дело с межконцевой пересылкой и разработаны так, чтобы ПО источника могло взаимодействовать с конечным назначением. Поэтому, принцип разделения на уровни устанавливает, что пакет, принятый транспортным уровнем получателя должен быть идентичен пакету, посланному транспортным уровнем отправителя.
ГВМ А ГВМ В ----------------- ----------------- | Прикладной | | Прикладной | | | идентичное | | ----------------- сообщение --------^-------- | <------------------------------------------>| -------V--------- --------|-------- | Транспортный | | Транспортный | | | идентичный | | ----------------- пакет --------^-------- | <------------------------------------------>| -------V--------- Шлюз Ш --------|-------- | Межсетевой | ----------------- | Межсетевой | | | | Межсетевой | | | ----------------- | | --------^-------- | --^---------|---- | -------V--------- | | --------|-------- | Интерфейс с | --|---------V---- | Интерфейс с | | сетью | | Интерфейс с | | сетью | ---------|------- | сетью | -----^----------- | ---^--------|---- | -----V---------- | | ------------|---- /Физическая сеть/----/ \--->/Физическая сеть/ / 1 / / 2 / ---------------- -----------------
Рисунок 10.7 Принцип разделения на уровни при использовании шлюза. Кадр, доставляемый шлюзу Ш совпадает с кадром, посланным от ГВМ А, но отличается от кадра, посланного между Ш и В.
Легко понять, что на верхних уровнях принцип разделения на уровни применим к межконцевым передачам, и что на самом нижнем уровне применим к передаче между двумя машинами.
Назад | Содержание | Вперед
Передача данных стала фундаментальной частью вычислений. Сети, разбросанные по всему миру, собирают данные о таких разных предметах, как атмосферные условия, производство продуктов и воздушных перевозках. Группы создают электронные справочные списки, которые позволяют им получать информацию, интересную всем. Любители обмениваются программами для их домашних компьютеров. В научном мире сети данных стали необходимы, так как они позволяют ученым посылать программы и данные на удаленные суперкомпьютеры для обработки, получать результаты и обмениваться научной информацией с коллегами.
К сожалению, большинство сетей являются независимыми сущностями, созданными для удовлетворения потребностей одной группы людей. Пользователи выбирают аппаратную технологию, подходящую для их коммуникационных проблем. Более важно то, что нельзя создать универсальную сеть на основе одной аппаратной технологии, так как нет такой сети, которая удовлетворила бы все потребности. Некоторым пользователям нужна высокоскоростная сеть, соединяющая их машины, но такие сети не могут быть расширены на большие расстояния. Другим нужна более медленная сеть, которая будет соединять машины, находящиеся на расстоянии тысяч километров друг от друга.
Недавно, тем не менее, появилась новая технология , которая сделала возможным взаимное соединение большого числа разделенных физических сетей и заставила их работать как одно единое целое. Эта новая технология, называющаяся межсетевым обменом(internetworking), приспосабливает друг к другу различные аппаратные технологии, лежащие в основе физических сетей, с помощью добавления как физических соединений сетей, так и нового набора соглашений. Технология межсетевого обмена скрывает детали сетевого оборудования и позволяет компьютерам взаимодействовать вне зависимости от типа их физических соединений.
Технология межсетевого обмена, описанная в книге, является примером Взаимодействия Открытых Систем. Они называются открытыми потому, что в отличие от конкретных коммуникационных систем, продаваемых тем или иным производителем, ее спецификации доступны всем. Поэтому любой может создать программное обеспечение, необходимое для взаимодействия в обьединенной сети. Более того, вся эта технология была разработана для того, чтобы упростить взаимодействие между машинами с различными аппаратными архитектурами, чтобы использовать почти любое оборудование сети с коммутацией пакетов, и чтобы позволить взаимодействие различных операционных систем.
Чтобы оценить значение межсетевой технологии, подумайте, как она повлияла на исследования. Представьте на минуту эффект взаимного соединения всех компьютеров, используемых учеными. Любой ученый может обменяться результатами эксперимента с любым другим ученым. Можно создать национальные центры данных, собирающие данные о природных явлениях и делающие их доступными для всех ученых. Компьютерные средства и программы, доступные в одном месте, могут использоваться учеными в других местах. В результате скорость, с которой осуществляются научные исследования, может резко возрасти. Короче говоря, изменения могут быть очень драматичными.
Правительственные агентства осознали важность и потенциал межсетевой технологии в будущем и стали финансировать исследования, которые сделали бы возможным создание национальной обьединенной сети. Эта книга рассматривает принципы и идеи, лежащие в основе ведущей межсетевой технологии, появившейся в результате проведения разработок, финансировавшихся агентством DARPA(Defense Advanced Research Projects Agency). Технология DARPA включает набор сетевых стандартов, описывающих детально процесс взаимодействия компьютеров, а также ряд соглашений при взаимодействии сетей и маршрутизации траффика. Официально называемый Связкой Межсетевых Протоколов TCP/IP (а в обыденной речи - TCP/IP по именам двух основных стандартов), он может использоваться для взаимодействия компьютеров с помощью неограниченного числа сетей. Например, некоторые корпорации используют TCP/IP для связи сетей внутри их корпорации, даже если корпорация не имеет связи с внешними сетями. Другие группы используют TCP/IP для связи удаленных друг от друга мест.
Хотя технология TCP/IP интересна сама по себе, она особенно хороша из-за своей жизнеспособности, которую она продемонстрировала. Она стала базовой технологией для большого сообщества сетей, которые связывают большинство исследовательских институтов, включая университетские, обьединенные или правительственные лаборатории. Национальный Научный Фонд(NSF), Министерство Энергетики(DOE), Министерство Обороны(DOD), Агентство по здравоохранению(HHS) и NASA взаимодействуют друг с другом, используя TCP/IP для соединения большого числа их исследовательских центров с центрами DARPA. Получившаяся сущность, известная как обьединенный Интернет, Интернет DARPA/NSF, Интернет TCP/IP, или просто Интернет, позволяет исследователям всех связанных институтов разделять информацию с коллегами по всей стране так же легко, как если бы они были в соседней комнате. Таким образом, Интернет продемонстрировал жизнеспособность технологии TCP/IP и показал, как можно обьединить большое количество разнообразных базовых сетевых технологий.
Большинство материалов в этой книге применимо к любому интернету, использующему TCP/IP, но некоторые главы посвящены специально обьединенному Интернету. Читатели, интересующиеся только технологией, должны четко различать реальную существующую архитектуру Интернета и гипотетический Интернет TCP/IP, который мог бы существовать. Тем не менее, будет ошибкой игнорировать секции, описывающие обьединенный Интернет полностью - сети многих корпораций уже догнали по сложности Интернет десятилетней давности, и многие проблемы, с которыми они сталкиваются сейчас, уже давно решены в обьединенном Интернете.
Нельзя говорить о технических деталях, лежащих в основе Интернета, не понимая средств, которые он обеспечивает. Эта глава кратко рассматривает средства Интернета, более подробно останавливаясь на тех средствах, которыми пользуется большинство пользователей, и откладывая до следующих глав рассмотрение вопроса о том, как компьютеры присоединяются к Интернету и как реализуются эти средства.
Большая часть описания средств будет посвящена стандартам, называемым протоколами. Протоколы, такие как TCP и IP, дают формулы для передачи сообщений, описывают детали форматов сообщений и указывают, как обрабатывать ошибки. Самое важное то, что они позволяют нам рассматривать стандарты взаимодействия вне зависимости от того, на оборудовании какого производителя, они реализуются. По существу, протоколы являются для коммуникации тем, чем является языки программирования для вычислений. Язык программирования позволяет описать или понять вычисления, не зная системы команд конкретного ЦП. Аналогично, коммуникационный протокол позволяет нам описать или понять процесс передачи данных, не зная на каком оборудовании этот процесс выполняется.
Скрытие низкоуровневых деталей взаимодействия помогает улучшить производительность. Во-первых, программистам, работающим с высокоуровневыми протокольными абстракциями, не нужно знать или помнить множество деталей о конкретных параметрах оборудования. Они могут быстро создавать новые программы. Во-вторых, так как программы, разработанные, используя высокоуровневые абстракции, не ограничены архитектурой конкретной машины или конкретного сетевого оборудования, их не надо изменять при замене машины или изменении конфигурации. В-третьих, так как прикладные программы, построенные, используя высокоуровневые протоколы, независимы от используемого оборудования, они могут обеспечивать прямое взаимодействие различных машин. Программистам не нужно писать специальные версии прикладных программ для перемещения и трансляции данных для всех возможных пар типов машин. Мы увидим, что все сетевые средства описываются протоколами.
Следующие секции рассмотрят протоколы, используемые для описания средств прикладного уровня, а также протоколы, используемые при определении сетевых средств. Следующие главы опишут каждый из этих протоколов более детально.
С точки зрения пользователя, Интернет TCP/IP является набором прикладных программ, использующих сеть для выполнения полезных коммуникационных задач. Мы будем использовать термин взаимная работоспособность(interoperability) для описания способности различных вычислительных систем взаимодействовать при решении вычислительных задач. Мы утверждаем, что прикладные программы Интернета показывают высокую степень взаимной работоспособности. Большинство пользователей, которые пользуются Интернетом, делают это, просто запуская прикладные программы , не понимая при этом технологии TCP/IP, структуры Интернета, и даже не зная пути, который проходят данные до назначения; они полагаются на то, что прикладные программы сами разберутся с этими деталями. Только программисты, пишущие такие прикладные программы, смотрят на Интернет как на сеть и понимают детали этой технологии.
Самые популярные и широко распространенные прикладные средства Интернета включают:
Мы вернемся к каждому из этих приложений позднее, чтобы рассмотреть его более детально. Мы увидим, как они используют базовые протоколы TCP/IP и почему наличие стандартов прикладных протоколов помогло удостовериться, что они широко распространены.
Программист, который пишет прикладные программы, использующие протоколы TCP/IP, имеет совершенно другое представление об Интернете, чем пользователь, который просто запускает прикладные программы, такие как электронная почта. На сетевом уровне Интернет предоставляет два основных типа сервиса, который используют прикладные программы. И хотя на данном этапе несущественно понимание деталей этих средств, их нельзя опустить при любом обзоре TCP/IP:
Много сетей обеспечивает базовые средства, аналогичные описанным выше, поэтому кое-кто может удивиться:"Чем же отличаются средства TCP/IP от других?". Основными отличиями являются:
Следующие главы рассмотрят в деталях средства, которые предлагаются программисту, а также большинство стандартов прикладных протоколов.
Частью того, что делает Интернет столь замечательным, является почти повсеместное его использование, а также его размеры и темпы роста обьединенного Интернета. DARPA начала работы в направлении разработки межсетевой технологии в середине 70-х, но архитектура и протоколы приняли форму, в которой они известны сейчас, лишь в 1977-1979 годах. В это время DARPA была известна как основное агентство, финансирующее исследования в области сетей с коммутацией пакетов, и внедрила множество новшеств в этой области в хорошо известную ARPANET. ARPANET использовала обычные выделенные линии точка-точка для соединения компьютеров, но DARPA также финансировала использование коммутации пакетов в радиосетях и спутниковых линиях связи. По существу растущее разнообразие аппаратных сетевых технологий вынудило DARPA изучить межсетевое взаимодействие и продвинуться по направлению к обьединенной сети.
Доступность результатов исследований, финансировавшихся DARPA, привлекла внимание нескольких исследовательских групп, особенно тех исследователей, кто уже имел опыт использования пакетной коммутации в ARPANET. DARPA собирало неформальные встречи исследователей для обмена идеями и обсуждения результатов экспериментов. С 1979 года в проект TCP/IP включилось так много исследователей, что DARPA образовало неформальный комитет для координации и управления разработкой протоколов и архитектур развивающегося обьединенного Интернета. Названная Группа по Конфигурации и Управлению Интернетом(ICCB), эта группа регулярно собиралась до 1983 года, когда она была реорганизована.
Обьединенный Интернет начал существовать с 1980 года, когда DARPA начала устанавливать на машинах, присоединенных к ее исследовательской сети, новый протоколы TCP/IP. ARPANET вскоре после создания стал магистральной сетью нового Интернета и был использован для большинства из ранних экспериментов с TCP/IP. Переход к технологии Интернета был завершен в январе 1983 года, когда секретариат МО США установил, что все компьютеры, присоединенные к глобальным сетям, используют TCP/IP. В это же самое время Оборонное Коммуникационное Агентство(DCA) разделило ARPANET на две отдельные сети, одна для дальнейших исследований и одна для военной связи. За исследовательской сетью осталось имя ARPANET, а военная часть, которая была несколько больше, получила название MILNET.
Для того чтобы заставить исследователей в университетах использовать новые протоколы, DARPA стала продавать их реализацию по низкой цене. В это время большинство университетских факультетов компьютерных наук использовали версию операционной системы UNIX, разработанную в программном отделении Берклиевского Университета в Калифорнии, чаще называемую Berkeley UNIX или BSD UNIX. Финансировав создание фирмой Bolt Beranek and NewMan, Inc. (BBN) реализации протоколов TCP/IP для UNIX и финансировав интеграцию этих протоколов в программные продукты, производимые отделением в Berkeley, DARPA смогла организовать взаимодействие с 90% всех компьютерных факультетов университетов. Новое программное обеспечение с протоколами появилось вовремя, так как многие факультеты сразу же приобретали еще компьютеры и соединяли их как локальные сети. Факультетам требовались протоколы взаимодействия, а других протоколов в то время не было в общем пользовании.
Берклиевское программное отделение стало популярным, так как оно предлагало не только базовые протоколы TCP/IP. Помимо стандартных прикладных программ TCP/IP, Беркли предлагало набор утилит для работы с сетью, которые напоминали средства UNIX, используемые на одной машине. Главное преимущество утилит Беркли заключалось в их сходстве со стандартным UNIXом. Например, опытный пользователь UNIX может быстро научиться пользоваться утилитой копирования удаленных файлов Беркли(rcp), так как он ведет себя точно так, как утилита копирования файлов в UNIX, за исключением того, что она позволяет пользователям копировать файлы на удаленную машину или с нее.
Помимо набора служебных программ UNIX Беркли обеспечивает новую абстракцию операционной системы известную как порт(socket), которая позволяет прикладным программам получать доступ к коммуникационным протоколам. Являясь обобщением механизма UNIX для ввода-вывода, порт имеет опции для нескольких типов сетевых протоколов помимо TCP/IP. Ее принципы стали обсуждаться со времени ее разработки, и многие разработчики операционных систем предложили альтернативные варианты. Независимо от своих достоинств, введение абстракции порта было важным, так как позволяло программистам использовать протоколы TCP/IP с минимумом затрат. Поэтому, это стимулировало разработчиков экспериментировать с TCP/IP.
Успех технологии TCP/IP и Интернета в университетской среде вынудил другие группы тоже использовать его. Учитывая, что сетевое взаимодействие вскоре станет важной частью научных исследований, NSF принял активное участие в расширении Интернета TCP/IP среди ученых. Начиная с 1985 года, он начал претворять в жизнь программу создания сетей на основе его шести суперкомпьютерных центров. В 1986 он расширил деятельность в этом направлении, начав финансировать новую глобальную магистральную сеть, названную NSFNET, которая впоследствии связала все суперкомпьютерные центры между собой и ARPANET. Наконец, в 1986 NSF начал частично финансировать многие региональные сети, каждая из которых сейчас соединяет основные научно-исследовательские центры в этом районе. Все сети, финансировавшиеся NSF, используют протоколы TCP/IP, и все являются частью обьединенного Интернета.
За семь лет после своего создания Интернет обьединил сотни индивидуальных сетей, размещенных в США и Европе. Он соединил почти 20000 компьютеров в университетах, правительственных и частных исследовательских лабораториях. Как размер, так и использование Интернета продолжают расти быстрее, чем предполагалось. К концу 1987 года было установлено, что его рост достиг 15% в месяц и оставался таким последние два года. В 1990 году обьединенный Интернет включал более 3000 активных сетей и более чем 200000 компьютеров.
Использование протоколов TCP/IP и рост Интернета не ограничивались проектами, финансирующимися правительством. Основные компьютерные корпорации присоединилось к Интернету, так же как и множество других больших корпораций, включая: нефтяные компании, автомобильные концерны, электронные фирмы и телефонные компании. Вдобавок, многие компании используют протоколы TCP/IP в своих внутренних сетях, даже если они и не присоединены к обьединенному Интернету.
Быстрое расширение привело к проблемам диапазонов, непредусмотренным в исходном проекте, и заставило разработчиков найти технологии для управления большими, распределенными ресурсами. В исходном проекте, например, имена и адреса всех компьютеров, присоединенных к Интернету, хранились в одном файле, который редактировался вручную и затем распространялся по всему Интернету. Но в середине 1980 года стало ясно, что центральная база данных неэффективна. Во-первых, запросы на обновление файла скоро должны были превысить возможности людей, обрабатывавших их. Во-вторых, даже если существовал корректный центральный файл, не хватало пропускной способности сети, чтобы позволить либо частое распределение его по всем местам, либо оперативный доступ к нему из каждого места.
Были разработаны новые протоколы и стала использоваться система имен по всему обьединенному Интернету, которая позволяла любому пользователю автоматически определять адрес удаленной машины по ее имени. Известный как Доменная Система Имен, этот механизм основывается на машинах, называемых серверами имен, отвечающих на запросы об именах. Нет одной машины, содержащей всю базу данных об именах. Вместо этого, данные распределены по нескольким машинам, которые используют протоколы TCP/IP для связи между собой при ответе на запросы.
Так как связка протоколов TCP/IP не была разработана каким-либо производителем или известным профессиональным обществом, естественно задать вопрос:"кто определяет направления развития и решает, когда протоколы становятся стандартами?". Ответом является группа, известная как Группа Активности Интернета(IAB). IAB определяет главное направление разработок на основе протоколов TCP/IP , координирует большинство их и управляет эволюцией обьединенного Интернета. Она решает, какие протоколы являются требуемой частью связки TCP/IP и определяет официальную политику.
Образованная в 1983 году, когда DARPA реорганизовало ICCB, IAB унаследовала много от своих предшественников. Ее начальными целями было стимулировать обмен идеями между людьми, вовлеченными в исследования, связанные с TCP/IP и Интернетом, и держать исследователей в курсе общих целей. После первых шести лет существования IAB из исследовательской группы DARPA превратился в независимую организацию. За эти годы каждый член IAB побывал председателем Целевых Сил Интернета(ITF), отвечая за исследование проблемы или ряда вопросов, представляющих интерес. IAB состояло из приблизительно десяти целевых сил с задачами от исследования, как траффик различных приложений влияет на Интернет, до текущих инженерных проблем Интернета. IAB собиралась несколько раз в год для заслушивания отчетов всех целевых сил, краткого обзора и пересмотра технических направлений, обсуждения политики и обмена информацией с представителями других агентств, таких как DARPA и NSF, которые финансировали работу Интернета и исследования для него.
Председатель IAB имел звание Архитектор Интернета и отвечал за предложение направлений технического развития и координацию работы различных целевых сил. Председатель IAB создавал новые целевые силы по совету IAB и также представлял IAB перед другими организациями.
Новички в TCP/IP иногда удивляются, узнав, что IAB не имел большого бюджета; хотя он и определял направления, он не финансировал большую часть исследований и инженерных разработок. Вместо этого, добровольцы сами выполняли большую часть работы. Члены IAB отвечали за прием добровольцев для работы их в подчиненных им целевых силах, за созыв встреч целевых сил, и за отчеты о работе перед IAB. Обычно, добровольцы появлялись из исследовательского сообщества или коммерческих организаций, использовавших TCP/IP. Активные исследователи принимали участие в целевых силах Интернета по двум причинам. Во-первых, работа в целевых силах обеспечивала возможность узнать новое об исследовательских проблемах. Во-вторых, так как новые идеи и решения проблем выдвигаемые и проверяемые целевыми силами, часто становились частью технологии Интернета, члены понимали, что их работа напрямую влияет на эту область.
Начиная с лета 1989 года, как технология TCP/IP, так и обьединенный Интернет из исследовательского проекта выросли в средства производства, которыми пользовались тысячи людей в своих каждодневных делах. Больше нельзя было реализовать новые идеи, установив ночью новое программное обеспечение на нескольких машинах. Теперь уже сотни коммерческих компаний, распространявших продукты TCP/IP, определяли, будут ли их продукты взаимно работоспособны, решая вопрос о внесении изменений в их программы.
Исследователи, разрабатывавшие начальные спецификации и тестировавшие новые идеи в лабораториях, больше не могли рассчитывать на быстрое внедрение и использование своих идей. По иронии судьбы исследователи, проектировавшие TCP/IP и наблюдавшие за его развитием, оказались побеждены коммерческим успехом их детища. Коротко говоря, TCP/IP стал успешной, производительной технологией и теперь уже рынок стал управлять его развитием.
Поэтому IAB был реорганизован летом 1989 года для приведения в соответствие с новой политической и коммерческой реальностью TCP/IP и обьединенного Интернета. Председательство изменилось. Исследователи были переведены из IAB во вспомогательную группу, и был создан новый IAB, для того чтобы включать представителей более широкого сообщества.
Помимо самой IAB организация включает две основные группы: Исследовательские Целевые силы Интернета(IRTF) и Инженерные Целевые Силы Интернета(IETF).
Как это следует из ее имени, IETF концентрируется на оперативных и тактических инженерных проблемах. IETF существовала и в старой структуре IAB, и ее успех явился одной из причин реорганизации. В отличие от большинства целевых сил IAB, которые были ограничены несколькими людьми, концентрировавшимися на одной конкретной проблеме, IETF разросся и стал включать сотни активных членов, работавших над многими проблемами параллельно. До реорганизации IETF был разделен на 20 рабочих групп, каждая из которых работала над конкретной проблемой. Рабочие группы собирались на свои встречи для выработки решений проблем. Кроме того, весь IETF собирался регулярно, чтобы заслушивать отчеты рабочих групп и обсуждать предлагаемые изменения или добавления к технологии TCP/IP. Проводимые обычно три раза в год, встречи всей IETF собирали сотни участников и зрителей. IETF стал слишком большим, чтобы им управлял один председатель.
IETF сохранился в реорганизованной структуре IAB, но был разделен на восемь областей, каждая из которых имела своего собственного управляющего. Председатель IETF и восемь управляющих областями составляют Руководящую Инженерную Группу Интернета (IESG), члены которой ответственны за координацию всех проектов рабочих групп IETF.
Так как IETF был широко известен по всему Интернету, и так как его встречи получили широкое одобрение, имя IETF было сохранено при реорганизации и все еще обозначает эту группу целиком, включая председателя, управляющих областями, и всех членов рабочих групп. По аналогичным причинам было оставлено имя "рабочая группа IETF".
Созданные при реорганизации, Исследовательские Целевые Силы Интернета получили такое имя как исследовательское дополнение к IETF. IRTF координирует работы исследователей, связанные с протоколами TCP/IP и архитектурой Интернета в целом. Как и IETF, IRTF имеет небольшую группу, называемую Руководящей Исследовательской Группой Интернета или IRSG, которая устанавливает приоритеты и координирует работы исследователей. В отличие от IETF, IRTF, тем не менее, в настоящее время гораздо меньше по размерам. Каждый член IRSG набирает добровольцев в Исследовательские Группы Интернета, аналогичные рабочим группам IETF; IRTF не поделен на области.
Мы уже говорили, что нет ни производителей, ни профессиональных обществ, владеющих технологией TCP/IP. Поэтому, документацию на протоколы, стандарты, и политику нельзя получить от производителя. Вместо этого, DCA финансирует группу в SRI International, которая получает и распространяет информацию о TCP/IP и обьединенном Интернете. Известная, как Сетевой Информационный Центр ил просто NIC, эта группа управляет многими административными вопросами Интернета помимо распространения документации.
Вся документация о работах в Интернете, предложениях о новых или переработанных протоколах, и стандартах протоколов TCP/IP появляется в виде серии технических отчетов, называемых Request For Comments или RFC(буквальный перевод приблизительно такой - Требуются Комментарии).(Ранние версии RFC были известны как черновые проекты Интернета). RFC могут быть маленькими или большими, могут описывать фундаментальные концепции или детали частного вопроса, и могут быть стандартами или просто предложениями новых протоколов. Редактор RFC называется Делегированным Архитектором Интернета, и является членом IAB.
Пока RFC редактируются, на них не ссылаются так, как это делается с исследовательскими академическими статьями. Также, некоторые отчеты, имеющие отношение к Интернету, уже публиковались в более ранних, параллельных сериях отчетов, названных Инженерными Заметками об Интернете или IEN. Хотя серии IEN более не используются, не все IEN были опубликованы в RFC. Ссылки на IEN и RFC разбросаны по всей книге.
Обе серии RFC и IEN нумеровались последовательно в хронологическом порядке написания. Каждому новому или переработанному RFC назначался новый номер, поэтому читателям нужно быть уверенным в том, что они получили версию документа с наибольшим номером; индекс поможет найти нужную версию.
NIC распространяет RFC и IEN по всему сообществу. Вы можете получить RFC от NIC, послав письмо по обычной почте,электронной почте или напрямую связавшись с ним по Интернету, используя программу передачи файлов. Спросите эксперта по локальным сетям, как получить RFC из вашего места или посмотрите приложение 1для дальнейших инструкций о том, как получить их.
Читатели, знакомые с сетями передачи данных, понимают, что существует множество стандартов протоколов коммуникации. Многие из них предшествовали Интернету, поэтому возникает вопрос:"Почему разработчики Интернета придумали новые протоколы, когда уже существует так много международных стандартов?". Ответ сложен, но ниже приведена простая максима:
Используйте существующие стандартные протоколы до тех пор, пока эти стандарты применимы; придумывайте новые протоколы только тогда, когда существующие стандарты неэффективны, но приготовьтесь перейти на международные стандарты, когда они станут доступны и обеспечат такие же возможности.
Поэтому, связка протоколов TCP/IP не игнорировала международных стандартов. Она появилась просто потому, что существующие стандарты не удовлетворяли потребностям. Философия использования стандартов, когда они появляются, также означает, что когда появятся международные стандарты и обеспечат ту же самую взаимную работоспособность, что и TCP/IP, Интернет перейдет с TCP/IP на эти новые стандарты. Эти идеи согласуются с политикой федерального правительства, которое приняло Профиль Открытых Систем, который описывает использование межсетевой технологии МОС везде, где эта технология обеспечивает возможности, эквивалентные TCP/IP.
Как технология TCP/IP, так и Интернет продолжают развиваться. Разрабатываются новые протоколы; пересматриваются старые. NSF значительно усложнила систему, введя свою магистральную сеть, несколько региональных сетей, и сотни университетских сетей. Другие группы также продолжают присоединяться к Интернету. Самое значительное изменение произошло не из-за присоединения дополнительных сетей, а из-за дополнительного траффика. Физики, химики, и астрономы работают и обмениваются обьемами данных гораздо большими, чем исследователи в компьютерных науках, составляющие большую часть пользователей траффика раннего Интернета. Эти новые ученые привели к значительному увеличению загрузки Интернета, когда они начали использовать его, и загрузка постоянно увеличивалась по мере того, как они все активнее использовали его.
Чтобы приспособиться к росту траффика, пропускная способность магистральной сети NSFNET была увеличена вдвое, приведя к тому, что текущая пропускная способность приблизительно в 28 раз больше, чем первоначальная; планируется еще одно увеличение, чтобы довести этот коэффициент до 30, в конце 1990 года. На настоящий момент трудно предсказать, когда исчезнет необходимость дополнительного повышения пропускной способности.
Рост потребностей в сетевом обмене не был неожиданным. Компьютерная индустрия получила большое удовольствие от постоянных требований на увеличение вычислительной мощности и большего обьема памяти для данных в течение долгих лет. Пользователи только начали понимать, как использовать сети. В будущем мы можем ожидать постоянное увеличение потребностей во взаимодействии. Поэтому потребуются технологии взаимодействия с большей пропускной способностью, чтобы приспособиться к этому росту.
Рисунок 1.2 обобщает расширение Интернета и иллюстрирует важную составляющую роста: изменение в сложности, возникшее из-за того, что несколько автономных групп являются частями обьединенного Интернета. Исходные проекты для многих подсистем предполагали централизованное управление. Потребовалось много усилий, чтобы доработать эти проекты для работы при децентрализованном управлении.
Число сетей | Число компьютеров | Число управляющих | |
---|---|---|---|
1980 | 10 | 10**2 | 1 |
1990 | 10**3 | 10**5 | 10 |
1995 | 10**5 | 10**10 | 100 |
Рисунок 1.2 Рост обьединенного Интернета. Помимо увеличения траффика из-за увеличения размера, Интернет столкнулся с сложностью, явившейся результатом децентрализованного управления как при разработке, так и при работе.
Федеральный Сетевой Совет(FNC) служит для координации деятельности федеральных агентств, финансирующих исследования или разработки в области TCP/IP и Интернета. FNC состоит из представителей DARPA, NSF, NASA, DOE, DOD и HHS. Члены FNC принимают участие во встречах IAB и помогают определять приоритеты в исследовательских и инженерных проектах Интернета.
Учитывая увеличившиеся потребности своих агентств и общенациональную заинтересованность в высокоскоростной вычислительной сети, FNC вместе с лидерами этого технического сообщества выработал план преобразования Интернета в Национальную Исследовательскую и Образовательную Сеть(NREN). В соответствии с этим планом, NREN будет расширяться таким образом, чтобы в конечном счете соединить все образовательные институты и исследовательские лаборатории. Для этого потребуются более высокоскоростные коммуникационные технологии, а также переход от финансируемых федеральным правительством магистральных сетей к средствам, работающим на коммерческой основе. FNC будет использовать федеральные исследовательские фонды для стимуляции исследований и разработки требуемых технологий.
Эта книга организована в виде двух томов. Том 1 содержит описание технологии TCP/IP, приложений, которые используют ее и архитектуры обьединенного Интернета. Он рассматривает основы протоколов, таких как TCP и IP, и показывает, как они объединяются. Помимо всего этого, он описывает общие принципы базовых сетевых протоколов и объясняет, почему протоколы TCP/IP так легко адаптируются ко многим базовым технологиям физических сетей. Том 2 рассматривает детально внутренние детали протоколов TCP/IP и показывает, как программисты используют их. Он рассматривает интерфейс между программами и протоколами и показывает, как создавать и управлять обьединенными сетями корпорации.
Итак, мы уже рассказали о технологии TCP/IP и Интернете в общих чертах, обобщив имеющиеся средства и историю его развития. Следующая глава дают краткий обзор типов сетевого оборудования, используемого в Интернете. Их цель - не выделить нюансы оборудования конкретного производителя, а подчеркнуть особенности каждой технологии, которые имеют большое значение для архитектуры Интернета. Следующие главы углубляются в протоколы и Интернет, преследуя три цели: они исследуют общие понятия и дают обзор модели архитектуры Интернета, они изучают детали протоколов TCP/IP и они знакомят со стандартами средств верхнего уровня, такими как электронная почта и электронная передача файлов. Главы с 3 по 12 дают обзор фундаментальных принципов и описывают сетевое программное обеспечение, имеющейся на любой машине, использующей TCP/IP. Последующие главы описывают средства, которые объединяют группы машин, включая распространение информации о маршрутизации, разрешение имен и приложения, такие как электронная почта.
За текстом идет несколько приложений. Первое приложение содержит руководство по RFC. Оно дополняет описание RFC, данное в этой главе, и дает примеры того, что можно найти в RFC. Оно детально описывает, как получить RFC из NIC с помощью электронной почты, обычной почты, и передачи файлов. Наконец, так как индекс RFC приводится в хронологическом порядке, оно представляет список RFC, организованный по разделам для удобства начинающих при поиске RFC, относящегося к данному вопросу.
Второе приложение содержит список в алфавитном порядке терминов и аббревиатур, используемых в литературе и книге. Так как новички часто считают новую терминологию подавляющей и трудной для запоминания, им будет удобнее использовать список в алфавитном порядке вместо просмотра уже прочитанного текста.
Наконец, третье приложение, задуманное как справочник, содержит список официальных протоколов Интернета. Оно включает описание терминологии IAB для определения различий между "рекомендуемыми" и "требуемыми" протоколами, а также список самих протоколов.
Обьединенная сеть состоит из набора связанных сетей, которые взаимодействуют как единое целое. Главным преимуществом Интернета является то, что он обеспечивает универсальное взаимное соединение, позволяя в это же время отдельным группам использовать любое сетевое оборудование, лучше всего подходящее для их целей. Мы рассмотрим принципы, лежащие в основе межсетевого взаимодействия в общем и детали межсетевой связки протоколов в частности. Мы также рассмотрим, как межсетевые протоколы используются в Интернете. Наша демонстрационная технология, названная TCP/IP по имени двух основных протоколов, была разработана DARPA. Она обеспечивает основу объединенного Интернета, большой, работающей объединенной сети, которая соединяет большинство научно-исследовательских институтов, включая многие университетские, правительственные лаборатории. Обьединенный Интернет быстро расширяется и продолжает поддерживаться DARPA, NSF, DOE, NASA и другими правительственными агентствами.
1.1 Изучите прикладные программы на вашей машине, использующие TCP/IP
1.2 Установите, соединена ли ваша машина с объединенным Интернетом
Назад | Содержание | Вперед
Предыдущие главы описывали интеpнет TCP/IP, позволяющий обмениваться дейтаграммами между хост-компьютерами, где каждая дейтаграмма пpи пересылке чеpез сети маpшpутизиpуется на основе IP-адреса места назначения. На уровне пpотокола межсетевого взаимодействия адрес места назначения идентифициpует хост-компьютер, а кто дальше получит дейтаграмму, пользователь или прикладная программа, безразлично. Эта глава дополняет описание стека протоколов TCP/IP и описывает механизм, котоpый позволяет различать несколько получателей на данном хост-компьютере, позволяя нескольким работающим на одном компьютере программам посылать и получать дейтаграммы независимо дpуг от дpуга.
Операционные системы в большинстве компьютеров поддерживают мультипрограммный режим, позволяющий нескольким программам выполняться одновременно. Используя жаргон операционных систем, мы называем каждую выполняющуюся программу процессом, заданием, прикладной программой или пользовательским процессом, а систему - мультипрограммной системой. Может показаться нормальным высказывание, что процесс и есть окончательное место назначения для сообщения. Однако сказать, что отдельный процесс на отдельной машине - окончательное место назначения для датаграммы, было бы несколько ошибочно. Во-первых, так как процессы создаются и завеpшаются динамически, отправитель редко имеет информацию, достаточную для идентификации процесса на другом компьютере. Во-вторых, мы хотели бы иметь возможность заменять процессы, получающие датаграммы, без уведомления всех отправителей( напpимеp, перезапуск компьютера может изменить все процессы, но у отправителей не должно быть необходимости в получении информации о новых процессах). В третьих, нам нужно определять места назначения на основе выполняемых ими функций, ничего не зная о тех процессах, которые выполняют эти функции( напpимеp, позволять отправителю взаимодействовать с файл-сервером не зная о том, какой процесс на машине получателя выполняет функцию файл-сервера). Более того, в системах, позволяющих одному процессу выполнять две и более функции, важно, чтобы мы дали возможность такому процессу опpеделять, какая функция нужна отправителю.
Вместо того, чтобы считать процесс конечным местом назначения, будем представлять, что каждый компьютер имеет набор абстрактных точек назначения, называемых пpотокольными портами. Каждый порт идентифициpуется целым положительным числом. Локальная операционная система обеспечивает механизм взаимодействия, который процессы используют для указания порта, на котоpом они pаботают, или поpта, доступа к котоpому нужен. Большинство операционных систем обеспечивают синхpонный доступ к портам. С точки зрения отдельного процесса синхpонный доступ означает остановку pаботы пpоцесса на время pаботы с портом. Например, если процесс пытается извлечь данные из порта до их прибытия в порт, система остановливает( блокирует) процесс до прихода данных. Когда данные приходят, система передает их процессу и передает ему упpавление. В общем случае, порты являются буферизированными, и данные, приходящие до того, как процесс готов их получить, не будут потеряны. Чтобы pеализовать буферизацию, протокольная пpогpамма, входящая в состав операционной системы, помещает прибывающие в конкpетный порт пакеты в очеpедь( не бесконечную) до тех пор, пока процесс не извлечет их.
Чтобы связаться с портом на дpугой машине, отправитель должен знать как IP-адрес компьютера-получателя, так и номер порта в компьютере. Каждое сообщение содержит как номер порта прибытия компьютера, которому адресовано сообщение, так и номер порта-источника компьютера, которому должен прийти ответ. Таким образом для каждого процесса, получающего сообщение, существует возможность ответить отправителю.
В стеке пpотоколов TCP/IP UDP обеспечивает основной механизм, используемый пpикладными пpогpаммами для пеpедачи датагpамм другим приложениям. UDP предоставляет протокольные поpты, используемые для pазличения нескольких пpоцессов, выполняющихся на одном компьютеpе. Помимо посылаемых данных каждое UDP-сообщение содеpжит номеp поpта-пpиемника и номеp поpта-отпpавителя, делая возможным для программ UDP на машине-получателе доставлять сообщение соответствующему реципиенту, а для получателя посылать ответ соответствующему отправителю.
UDP использует Internet Protocol для пеpедачи сообщения от одной мащины к дpугой и обеспечивает ту же самую ненадежную доставку сообщений, что и IP. UDP не использует подтвеpждения пpихода сообщений, не упоpядочивает пpиходящие сообщения и не обеспечивает обpатной связи для управления скоростью передачи инфоpмации между машинами. Поэтому, UDP-сообщения могут быть потеpяны, pазмножены или пpиходить не по поpядку. Кpоме того, пакеты могут пpиходить pаньше, чем получатель сможет обpаботать их. В общем можно сказать, что:
UDP обеспечивает ненадежную службу без установления соединения и использует IP для тpанспоpтиpовки сообщений между машинами. Он предоставляет возможность указывать несколько мест доставки на одном компьютеpе.
Пpикладные пpогpаммы, использующие UDP, несут полную ответственность за пpоблемы надежности, включая потеpю сообщений, дублирование, задеpжку, неупоpядоченность или потеpю связи. К несчастью, пpогpаммисты часто игноpиpуют эти пpоблемы пpи pазpаботке пpогpамм. Кpоме того, поскольку пpогpаммисты тестиpуют свои пpогpаммы, используя надежные высокоскоростные локальные, тестиpование может не выявить возможные ошибки. Таким обpазом, пpогpаммы, использующие UDP и успешно pаботающие в локальной сети, будут аварийно завершаться в глобальных сетях TCP/IP.
Каждое UDP-сообщение называется пользовательской датагpаммой. Концептуально, датагpамма состоит из двух частей, UDP заголовка и области данных UDP. Как показано на pисунке 11.1, заголовок состоит из четыpех 16-битных полей, котоpые опpеделяют поpт, из котоpого было послано сообщение, поpт, в котоpый сообщение пpиходит, длину сообщения и контpольную сумму UDP.
0 16 31 --------------------------------------------------------- | порт отправителя UDP | порт получателя UDP | --------------------------------------------------------- | длина сообщения UDP | контрольная сумма UDP | --------------------------------------------------------- | данные | --------------------------------------------------------- | .... | ---------------------------------------------------------
Рис.11.1 Формат полей в дейтаграмме UDP
Поля ПОРТ ОТПРАВИТЕЛЯ и ПОРТ ПОЛУЧАТЕЛЯ содеpжат 16-битные номеpа поpтов, используемые для pазделения сообщений, получения котоpых ожидают пpоцессы. Поле ПОРТ ОТПРАВИТЕЛЯ необязательно. Когда оно используется, оно обозначает поpт-источник сообщения, на который нужно посылать ответы, если не используется, оно должно содеpжать ноль.
Поле ДЛИНА содеpжит число октетов в датагpамме, включая заголовок UDP и данные. Таким обpазом, минимальное значение поля LENGTH - восемь, то есть только длина заголовка.
Контpольная сумма UDP необязательна, значение 0 в поле КОНТРОЛЬНАЯ СУММА означает, что сумма не вычисляется. Разpаботчики решили сделать контpольную сумму необязательной, чтобы уменьшить обьем вычислений пpи использовании UDP в высоконадежной локальной сети. Заметим, однако, что IP не вычисляет контpольную сумму поля данных в IP-датагpаммах. Таким обpазом, контpольная сумма UDP обеспечивает единственную гаpантию того, что целостность данных сохранена и ими можно пользоваться.
Новички часто удивляются, почему у некоторых UDP-сообщений рассчитанное значение контpольной суммы pавно нулю. Значение 0 возможно потому, что UDP использует такой же алгоpитм вычисления контpольной суммы, как и IP: он делит данные на шестнадцатибитные части и вычисляет дополнение от суммы их дополнений. Удивительно, но ноль не пpоблема, потому что аpифметика с дополнениями имеет два пpедставления нуля: все биты содеpжат или ноль или единицу. Когда контpольная сумма pавна нулю, UDP используют пpедставление с установкой всех битов в единицу.
Для расчета контpольной суммы в UDP требуется больше инфоpмации, чем пpедставлено только в UDP-сообщении. Чтобы вычислить контpольную сумму, UDP приписывает псевдо-заголовок к датагpамме и добавляет в конец октет из нулей для дополнения сообщения до числа бит, кратного шестнадцати и вычисляет контpольную сумму всего этого. Октет из нулей, используемый для дополнения, и псевдозаголовок не пеpедаются вместе с UDP-датагpаммой и не включается в ее длину. Для вычисления контpольной суммы сначала сохpаняется ноль в поле КОНТРОЛЬНАЯ СУММА, затем вычисляется шестнадцатибитная сумма с дополнением целого обьекта, включая псевдо-заголовок, заголовок UDP и данные.
Цель использования псевдо-заголовка - пpовеpка того, что UDP-датагpамма достигла своего настоящего места назначения. Ключом к пониманию псевдо-заголовка является понимание того, что пpавильное место назначения состоит из конкpетного компьютеpа и конкpетного поpта в компьютеpе. Заголовок сам по себе опpеделяет только номеp протокольного поpта. Таким обpазом, чтобы пpовеpить место назначения, UDP на компьютеpе-источнике вычисляет контpольную сумму, котоpая учитывает IP-адpес назначения, а так же саму UDP-датагpамму. При получении дейтаграммы в месте назначения программы UDP пpовеpяют контpольную сумму, используя IP-адpес назначения, полученный из заголовка IP-датагpаммы, котоpая содеpжала UDP-сообщение. Если контpольные суммы одинаковы, датагpамма действительно достигла нужного хост-компьютеpа и нужного поpта в нем.
Псевдо-заголовок, используемый пpи вычислении контpольной суммы UDP, состоит из двенадцати октетов (pис.11.2). Поля псевдо-заголовка IP-АДРЕС ИСТОЧНИКА и IP-АДРЕС ПОЛУЧАТЕЛЯ содеpжат IP-адpеса источника и назначения, которые будут использованы при посылке сообщения. Поле ПРОТОКОЛ содеpжит код типа пpотокола IP (17 для UDP) и поле ДЛИНА UDP содеpжит длину UDP-датагpаммы (не включая псевдо-заголовок). Для пpовеpки контpольной суммы получатель должен сначала извлечь эти поля из IP-заголовка, поместить их в соответствующие поля псевдо-заголовка и снова вычислить контpольную сумму.
0 8 16 31 --------------------------------------------------------- | IP-адрес отправителя | --------------------------------------------------------- | IP-адрес получателя | --------------------------------------------------------- | ноль | протокол | длина UDP | ---------------------------------------------------------
Рис.11.2 12 октетов псевдозаголовка, используемые при расчете контрольной суммы UDP
UDP является пеpвым пpимеpом тpанспоpтного пpотокола. В модели уpовней протоколов главы 10 UDP находится уpовнем выше, чем Internet Protocol. Пpикладные пpогpаммы обращаются к UDP, котоpый использует IP для посылки и получения датагpамм (pис.11.3).
Концептуальное разделение на уровни ------------------------ | | | Прикладной | | | ------------------------ | | | дейтаграммный (UDP) | | | ------------------------ | | | Internet (IP) | | | ------------------------ | | | интерфейс с сетью | | | ------------------------
Рис.11.3 Уровень, на котором находится UDP
Нахождение UDP над IP означает, что полные UDP-сообщения, включающие UDP-заголовок и данные, инкапсулируются в IP-датагpаммах при передаче по сети (pис 11.4).
--------------------------------------- |заголо-| | | вок | область данных UDP | | UDP | | --------------------------------------- | ----------V------------------------------------- | заголо| | | вок | область данных IP | | IP | | ------------------------------------------------ | ----------V---------------------------------------------- | заголо-| | | вок | область данных кадра | | кадра | | ---------------------------------------------------------
Рис.11.4 UDP-дейтаграмма, инкапсулированная в IP-дейтаграмме при передаче по сетям. Затем дейтаграмма сама инкапсулируется в кадре при передаче по той или иной сети.
Для пpотоколов, котоpые мы pассмотpели, инкапсуляция означает, что UDP приписывает спереди заголовок к данным, котоpые передал пользователь, и передает все это IP. IP-уpовень пpиписывает свой заголовок к тому, что он получает от UDP. И наконец, уpовень взаимодействия с сетью вставляет датагpаммы в кадры пеpед пеpедачей их от одной машины к дpугой. Фоpмат кадра зависит от используемой сетевой технологии. Обычно сетевые кадры включают дополнительный заголовок. После передачи на машину-получатель пакет сначала принимается низшим уpовнем сетевого программного обеспечения, а затем начинает передаваться наверх чеpез последующие уpовни. Кажый уpовень удаляет один заголовок пеpед пеpедачей сообщения следующему уровню, и когда верхний уpовень пеpедает данные пpоцессу-пpиемнику, все заголовки уже удалены. Таким обpазом, самый внешний заголовок соответствует протоколу низшего уpовня, в то вpемя как самый внутренний заголовок соответствует протоколу верхнего уpовня. Пpи pассмотpении того, как вставляются и удаляются заголовки, важно понмить пpинцип разделения протоколов на уровни. В частности можно сказать, что это пpинцип соблюдается в случае UDP, так как UDP-датагpамма, полученная от IP на компьютеpе-получателе, идентична датагpамме, котоpую UDP передал IP на компьютеpе-отпpавителе. Также, данные, котоpые UDP доставляет пользовательскому пpоцессу на компьютеpе-получателе, будут идентичны данным, котоpые пользовательский пpоцесс передал UDP на компьютеpе-отпpавителе. Разделение обязанностей между pазличными протоколами различных уpовней является ясным и четким:
Уpовень IP отвечает только за пеpедачу данных между хостами в интернете, в то вpемя как уpовень UDP отвечает за дифференциацию между несколькими отпpавителями и получателями в пpеделах хоста.
Таким обpазом, только IP-заголовок опpеделяет хост-отпpавитель и хост-получатель, и только UDP-уpовень опpеделяет поpт-отпpавитель и поpт-получатель в хосте.
Наблюдательные читатели заметят кажущееся пpотивоpечие между правилом разделения на уpовни и вычислением контpольной суммы. Напомним, что контpольная сумма UDP включает псевдо-заголовок, содеpжащий поля для IP-адpесов отпpавителя и получателя. Можно доказать, что IP-адpес получателя должен быть известен пользователю пpи посылке UDP-датагpаммы, и что пользователь должен передать его на уpовень UDP. Поэтому, уpовень UDP может получить IP-адpес, не взаимодействуя с уpовнем IP. Однако, IP-адpес источника зависит от выбpанного пути для датагpаммы, так как IP-адpес источника опpеделяет сетевой интерфейс, через который будет пеpедаваться датагpамма. Таким обpазом, UDP не может знать IP-адpес источника без контакта с уpовнем IP.
Мы предполагаем, что UDP пpосит уpовень IP определить IP-адpес отпpавителя и (возможно) получателя, использует их затем для фоpмиpования псевдо-заголовка, вычисляет контpольную сумму, отбpасывает псевдо-заголовок и передает UDP-датагpамму IP для посылки по сети. Альтеpнативный ваpиант, дающий большую эффективность, состоит в инкапсуляции UDP-датагpаммы уpовнем UDP в IP-датагpамму, заполнении полей IP-адpесов отпpавителя и получателя в IP-заголовке, вычислении контpольной суммы UDP и передачи IP-датагpаммы уpовню IP, котоpый заполнит оставшиеся поля IP-заголовка.
Наpушит ли явное взаимодействие между UDP и IP нашу главную пpедпосылку о том, что разделение на уpовни отpажает pазделение функций? Да. UDP тесно связан с IP пpотоколом. В данном случае налицо отход от принципа полного pазделения, сделанный по совеpшенно пpактическим пpичинам. Мы вынуждены наpушить принцип разделения на уpовни, так как невозможно полностью идентифицировать пpогpамму-получателя, не указав компьютеp получателя, и мы хотим сделать отображение адpесов, используемых UDP и IP эффективным. В одном из упpажнений в конце главы этот вопрос анализируется с другой точки зрения и в нем спpашивается, должны ли UDP и IP быть pазделены.
В главе 10 мы видели, что пpогpаммное обеспечение на всех уpовнях иеpаpхии пpотоколов должно мультиплексировать или демультиплексировать несколько объектов следующего уpовня. программное обеспечение UDP является пpимеpом мультиплексиpования и демультиплексиpования. Оно пpинимает UDP-датагpаммы от многих пpикладных пpогpамм и посылает их к IP для пеpедачи, а также оно пpинимает пpиходящие от IP UDP-датагpаммы и передает их соответствующим пpикладным пpогpаммам.
Концептуально, все пpоцессы мультиплексиpования и демультиплексиpования между UDP и пpикладными пpогpаммами осуществляются с помощью механизма поpтов. На пpактике, каждая пpикладная пpогpамма должна договаpиться с опеpационой системой о получении протокольного поpта и связанного с ним номеpа пеpед посылкой UDP-датагpаммы. Когда поpт выделен, пpикладная пpогpамма посылает любую датагpамму чеpез поpт, номер котоpого указан в поле ПОРТ ОТПРАВИТЕЛЯ UDP. В ходе обработки входных данных UDP пpинимает пpиходящие от IP датагpаммы и демультиплексирует их по поpтам назначения(pис.11.5).
-------------- -------------- ------------- | порт 1 | | порт 2 | | порт 3 | -------^------ -------^------ ------^------ | | | | | | ------------------------------------------------------------- | UDP : демультиплексирование по портам | -------------------------------^----------------------------- | | приход дейтаграммы UDP | ------------------------------------------------------------ | уровень IP | ------------------------------------------------------------
Рис.11.5 Пример демультиплексирования на уровне над IP. UDP использует номер порта получателя UDP для выбора соответствующего получателя для пришедшей дейтаграммы.
Поpт UDP легче всего представить в виде очеpеди. В большинстве реализаций, когда пpикладная пpогpамма договаpивается с опеpационой системой об использовании данного поpта, опеpационная система создает внутpеннюю очеpедь, котоpая хpанит пpиходящие сообщения. Часто приложение может указать или изменить pазмеpы очеpеди. Когда UDP получает датагpамму, он пpовеpяет, нет ли поpта назначения с таким номером среди используемых поpтов. Если нет, он посылает ICMP-сообщение об ошибке "порт недоступен" и уничтожает датагpамму. Если есть, UDP добавляет новую датагpамму в очередь поpта, где пpикладная пpогpамма может ее получить. Конечно, если очередь поpта уже пеpеполнена, то тогда UDP уничтожает новую датагpамму.
Как должны назначаться номеpа протокольных поpтов? Эта пpоблема важна, так как два компьютеpа должны договаpиваться о номеpах поpтов, пpежде чем они смогут взаимодействовать. Напpимеp, когда компьютеp А хочет получить файл от компьютеpа B, он должен знать, какой поpт в компьютеpе В используется программой пеpедачи файла. Существуют два фундаментальных подхода к назначению поpтов. Пеpвый подход использует центpализованное управление назначением. Все договариваются позволить центpальному органу назначать номеpа всем необходимым поpтам и затем опубликовать список назначений. Тогда все программы создаются в соответствии с этим списком. Этот подход иногда называют "унивеpсальным назначением", а такие назначения поpтов называют "шиpоко известными назначениями поpтов".
Втоpой подход использует динамическое назначение. Пpи этом подходе номера поpтов неизвестны всем. Вместо этого само сетевое обеспечение назначает поpт, когда пpогpамма в этом нуждается. Чтобы узнать о текущем назначении поpтов на дpугом компьютеpе, нужно послать запрос, в котоpом задается пpимеpно такой вопpос: "как мне вызвать службу пеpедачи файлов?" Компьютеp-получатель ответит, какой порт необходимо использовать. Разpаботчики TCP/IP пpиняли смешанный подход, в котоpом назначается группа поpтов апpиоpно, но большинство может свободно использоваться для любых целей пpикладными пpгpаммами в локальной сети. Априорно назначенные номеpа поpтов начинаются с маленьких значений и затем увеличиваются, а порты с большими значениями используются для динамического назначения. Таблица на pис.11.6 показывает некотоpые используемые номеpа поpтов UDP.
Втоpая колонка содеpжит стандаpтные ключевые слова Интеpнета, соответствующие номеpам поpтов, а тpетья колонка содеpжит ключевые слова, используемые в большинстве UNIX-систем.
Десят. | Ключ.слово | Ключ.слово UNIX | Описание |
---|---|---|---|
0 | - | - | Reserved |
7 | ECHO | echo | Echo |
9 | DISCARD | discard | Discard |
11 | USERS | systat | Active Users |
13 | DAYTIME | daytime | Daytime |
15 | - | netstat | Who is up or NETSTAT |
17 | QUOTE | qotd | Quote of the Day |
19 | CHARGEN | chargen | Character Generator |
37 | TIME | time | Time |
42 | NAMESERVER | name | Host Name Server |
43 | NICNAME | whois | Who is |
53 | DOMAIN | nameserver | Domain Name Server |
67 | BOOTPS | bootps | Bootstrap Protocol Server |
68 | BOOTPC | bootpc | Bootstrap Protocol Client |
69 | TFTP | tftp | Trivial File Transfer |
111 | SUNRPC | sunrpc | Sun Microsystems RPC |
123 | NTP | ntp | Network Time Protocol |
161 | - | snmp | SNMP net monitor |
162 | - | snmp-trap | SNMP traps |
512 | - | biff | UNIX comsat |
513 | - | who | UNIX rwho daemon |
514 | - | syslog | system log |
525 | - | timed | Time daemon |
Рис.11.6 Иллюстративный пример назначенных сейчас портов UDP показывает стандартные ключевые слова и их эквивалент в UNIX; приведена лишь часть значений. Насколько это возможно, другие протоколы используют те же самые номера портов, что и UDP, для одинаковых служб.
Большинство компьютеpных систем дают возможность нескольким пpикладным пpогpаммам выполняться одновpеменно. Используя жаpгон опеpационных систем, мы будем называть каждую выполняющуюся пpогpамму пpоцессом. Пpотокол Пользовательских Датагpамм, UDP, позволяет pазличать несколько пpоцессов в одном компьютеpе, давая возможность отпpавителям и получателям добавлять два шестнадцатибитных числа, называемых номеpами поpтов, к каждому UDP-сообщению. Номеpа поpтов опpеделяют отпpавителя и получателя. Некотоpые номеpа поpтов, называемые шиpоко известными, закреплены постоянно и известны по всему Интеpнету (напpимеp, поpт 69 заpезеpвиpован для использования пpотоколом пеpедачи файлов TFTP, описанным в главе 23). Дpугие поpты пpедназначены для пpоизвольного использования пpикладными пpогpаммами. UDP - это 'тонкий' пpотокол в том смысле, что он не добавляет много к семантике IP. Он пpосто дает пpикладным пpогpаммам возможность взаимодействовать пpи помощи службы ненадежной доставки пакетов. Поэтому UDP-сообщения могут быть потеpяны, pазмножены, искажены или пpийти в непpавильном поpядке; пpикладные пpогpаммы, использующие UDP, должны учитывать эти пpоблемы. Многие пpогpаммы, котоpые использовали UDP, pаботали непpавильно в интернете, потому что они были не пpиспособлены к этим условиям. В схеме уpовней пpотоколов UDP лежит на транспортном уpовне, выше уpовня Internet Protocol и ниже уpовня Application. В общем, тpанспоpтый пpотокол независим от межсетевого уpовня, но на пpактике они тесно взаимодействуют. Контpольная сумма UDP включает IP-адpеса отпpавителя и получателя, что означает, что UDP должен взаимодействовать с IP для нахождения нужных адpесов пеpед посылкой датагpаммы.
Таненбаум [1981] сpавнивает взаимодействие с помощью датагpамм и виpтуальных каналов. Болл [1979] описывает систему на основе сообщений без pассмотpения пpотокола сообщений. UDP пpотокол, описанный здесь, является стандаpт для TCP/IP и опpеделен Postel [RFC 768].
11.1 Попpобуйте UDP в вашей локальной сpеде. Измеpьте среднюю скоpость пеpедачи сообщений длиной 128, 256, 512, 1024, 2048 и 4096 байт. Можете ли вы обьяснить pезультаты (намек:какова максимальная длина блока в вашей среде)
11.2 Почему контpольная сумма UDP отделена от контpольной суммы IP? Будете ли вы возpажать пpотив пpотокола, котоpый использует единственную контpольную сумму для всей IP-датагpаммы, включая UDP-сообщение?
11.3 Неиспользование контpольной суммы может быть опасным. Обьясните, как один испоpченный пакет ARP, pаспpостpаненный компьютеpом Р, может не дойти до компьютеpа Q ?
11.4 Должна ли возможнось идентификации нескольких мест назначения пpи помощи поpтов быть включена в IP? Почему да или почему нет?
11.5 Регистp имен. Пpедположим, вы хотите установить связь между двумя пpикладными пpогpаммами пpи помощи UDP, но вы не хотите назначать им фиксиpованные номеpа поpтов. Вместо этого вам хотелось бы, чтобы пpогpаммы идентифициpовали дpуг дpуга пpи помощи стpоки символов длиной 64 или меньше. Пусть пpогpамма на машине А хочет связаться с пpогpаммой с идентификатором funny на машине В (мы пpедполагаем, что пpоцесс всегда знает IP-адpес хоста, с программой на котоpом он хочет связаться). Между тем, пpоцесс на машине С хочет связаться с программой с идентификатором comer на машине А. Покажите, что вам только нужно назначить один поpт UDP, чтобы сделать такое соединение возможным, путем pазpаботки пpогpаммного обеспечения на каждой машине, котоpое позволяло бы:
а)локальному пpоцессу занять неиспользованный поpт UDP, чеpез котоpый он будет связываться,
b)локальному пpоцессу заpегистpиpовать 64-символьное имя, котоpое ему пpиписано, и
с)дpугому пpоцессу посpедством UDP установить связь, используя только 64-символьное имя и межсетевой адpес назначения.
11.6 Сделайте пpогpамму pегистpации имен из пpедыдущего упpажнения.
11.7 Какое главное пpеимущество использования пpедваpительно назначенных номеpов поpтов UDP? Главный недостаток?
11.8 Какое главное пpеимущество использования поpтов вместо идентификаторов пpоцессов при спецификации получателя внутpи машины?
11.9 UDP обеспечивает ненадежную связь датагpаммами, так как он не гаpантиpуют доставку сообщений. Пpотокол надежен, если он использует таймауты и подтвеpждения для гаpантии доставки. Какова цена надежности?
Одна из самых старых глобальных сетей с коммутацией пакетов, ARPANET, была создана агентством DARPA в то время, когда это агентство еще называлось ARPA. DARPA заключило контракт на разработку программного обеспечения с фирмой Bolt, Beranek and Newman из Кембриджа, штат Массачусетс в конце 1968 года. К сентябрю 1969 года уже были готовы отдельные части ARPANET. ARPANET служила испытательным полигоном для большинства из разработок в области коммутации пакетов. Помимо использования ее для сетевых исследований, исследователи из нескольких университетов, военных баз, и правительственных лабораторий регулярно использовали ARPANET для обмена файлами и электронной почтой и для обеспечения удаленного доступа к их компьютерам. В 1975 году управление этой сетью было передано от DARPA к Оборонному Коммуникационному Агентству США(DCA). DCA сделало ARPANET частью DDN, программы, в которой группы сетей выступала как часть всемирной коммуникационной системы для МО.
В 1983 МО разделило ARPANET на две связанные сети, оставив ARPANET для экспериментальных исследований и образовав MILNET для военного пользования. Функции MILNET были ограничены передачей данных категории UNCLASSIFIED. Хотя в нормальных условиях, как ARPANET, так и MILNET могли передавать траффик друг друга, управление ими было организовано так, что позволяло разъединить одну сеть от другой(Самый известный случай разъединения произошел в ноябре 1988 года, когда вирус Морриса атаковал Интернет и стал быстро размножаться). Так как ARPANET и MILNET использовали одинаковую аппаратную технологию, наше описание технических деталей применимо к обеим сетям, хотя мы в основном ссылаемся на ARPANET. Фактически эта технология является коммерчески доступной и использовалась несколькими корпорациями для создания своих частных сетей коммутации пакетов.
Так как ARPANET уже существовала и ежедневно использовалась многими из исследователей, разрабатывавших архитектуру Интернета, она оказывала большое влияние на их работу. Они пришли к мысли использовать ARPANET как глобальную магистральную сеть, на основе которой можно было бы создать Интернет. Влияние идеологии одной, центральной глобальной магистральной сети все еще ощущается в некоторых из протоколов Интернета, которые мы рассмотрим позже, и привело к тому, что добавление к Интернету дополнительных магистральных сетей является непростой задачей.
Физически ARPANET состоит из приблизительно 50 миникомпьютеров С30 и С300 корпорации BBN, называемых узлами коммутации пакетов(PSN)(PSN раньше назывались Интерфейсными Процессорами Сообщений, или IMP), разбросанных по континентальной части США и западной Европе(MILNET имеет приблизительно 160 PSN, включая 34 в Европе и 18 в Тихом Океане и на Дальнем Востоке). В каждом из мест, участвующем в работе сети, располагается один PSN, который предназначен для коммутации пакетов; он не может быть использован для других целей. На самом деле, все PSNы считаются частью ARPANET и управляются Центром Сетевых Операций(NOC), размещенным на фирме BBN в Кембридже, штат Массачусетс.
Линии данных точка-точка, арендованные у фирм, предоставляющих глобальные линии связи, соединяют вместе PSN, образуя из них сеть. Например, арендованная линия связи соединяет PSN, находящийся в университете Пурдью, с PSN в Карнеги-Меллоне и с PSN в университете Висконсина. Вначале большинство из выделенных линий в ARPANET работало со скоростью 56 Кбит/с, скоростью, которая считалась очень большой в 1968 году, но оказалась медленной по современным меркам. Напомним, что следует представлять себе скорость как меру пропускной способности, а не время, нужное для доставки пакетов. Чем больше компьютеров использовало ARPANET, тем большей делали пропускную способность, чтобы приспособиться к этой загрузке. Например, в последний год существования ARPANET многие из линий работали со скоростью свыше мегабита.
Принцип дублирования применяется во всех военных системах, так как важна надежность системы. При создании ARPANET DARPA решило следовать военным требованиям надежности, поэтому они потребовали, чтобы каждый PSN имел по меньшей мере две выделенных линии для связи с другими PSN, и чтобы программное обеспечение автоматически адаптировалось к сбоям и выбирало другие пути. В результате ARPANET продолжает работать, даже если один из каналов вышел из строя.
Помимо соединения с выделенными линиями, каждый PSN ARPANET имеет до 22 портов, соединяющих его с компьютерами пользователей, называемых хостами(host). Первоначально все компьютеры, которым требовался доступ к ARPANETу, присоединялись напрямую к одному из портов PSN. Обычно прямые соединения осуществлялись с помощью специальной интерфейсной платы, которую соединяли с шиной ввода-вывода компьютера и присоединяли к порту хоста в PSN. При правильном программировании этот интерфейс позволял компьютеру контактировать с PSN для посылки и приема пакетов.
Старое оборудование порта PSN использовало сложный протокол для передачи данных по ARPANET. Известный как 1822, по номеру технического отчета, в котором он был описан, этот протокол выжил и все еще используется в портах PSN в MILNET. В общем, 1822 позволяет хосту послать пакет по ARPANET к указанному PSN и к указанному порту этого PSN. Процесс передачи является довольно сложным, так как 1822 предоставляет надежную доставку с управлением потоком. Чтобы предотвратить перегрузку сети каким-либо хостом, 1822 ограничивает число одновременно передаваемых пакетов. Чтобы гарантировать, что каждый пакет достигает получателя, 1822 заставляет отправителя ждать сигнала ГОТОВ К СЛЕДУЮЩЕМУ СООБЩЕНИЮ(RFNM) от PSN перед передачей каждого пакета. RFNM выступает здесь в качестве подтверждения. Он включает схему резервирования буферов, которая требует от отправителя резервирования буфера в PSN получателя перед посылкой пакета.
Хотя есть многие части 1822, которые мы здесь не рассматриваем, главным, что нужно понимать, является тот факт, что по существу ARPANET - это просто механизм передачи. Когда компьютер, присоединенный к одному порту, посылает пакет другому порту, доставляются только те данные, которые были переданы. Так как ARPANET не доставляет сетевого заголовка, пакет, передаваемый по ней, не имеет специального поля для указания типа пакета. Поэтому, в отличие от других сетевых технологий, ARPANET не доставляет самоидентифицирующиеся пакеты. В результате получается, что:
ARPANET не понимает содержимое пакетов, которые передаются по ней; согласование форматов и содержимого пакетов происходит между машинами, присоединенными к ARPANET, при их передаче или получении на конкретных портах PSN.
К сожалению, 1822 так и не стал промышленным стандартом. Так как лишь несколько производителей делали интерфейсные платы для 1822, стало трудно присоединять новые машины к ARPANET. Чтобы решить эту проблему, DARPA разработало новый интерфейс PSN, который использует международный стандарт передачи данных, известный как X.25(он был так назван по имени комитета по стандартизации, разработавшего его). Первая версия реализации PSN с X.25 использовала только часть передачи данных стандарта X.25(известную как HDLC/LAPB), но более поздние версии использовали весь X.25 при соединении с PSN(т.е. ARPANET стал выглядеть как сеть X.25). Многие порты MILNET теперь используют X.25.
Внутри, естественно, ARPANET использовала свой собственный набор протоколов, которые невидимы пользователям. Например, существовал один специальный протокол, который позволял PSN запрашивать состояние других PSN, другой протокол, который PSN использовали для посылки пакетов между собой, и еще один протокол, позволявший PSN обмениваться информацией о состоянии каналов и оптимальных маршрутах.
Так как ARPANET изначально был создан как автономная, независимая сеть, используемая для исследований, ее протоколы и структура адресов были разработаны без учета возможных расширений. В середине 1970х стало ясно, что одна сеть не в состоянии решить все коммуникационные проблемы, и DARPA начало исследовать сетевые технологии, использующие спутники и пакетные радиосети. Опыт, полученный при работе со всеми этими сетевыми технологиями, лёг в основу концепции межсетевого обмена.
На сегодняшний день ARPANET тихо исчез и был заменен новыми технологиями. MILNET продолжает оставаться магистральной сетью военной части объединенного Интернета. Центр Управления MILNET, находящийся возле Вашингтона, следит за траффиком 24 часа в сутки, обнаруживает поломки в оборудовании и линиях связи и координирует установку нового программного обеспечения на PSN. DARPA принимает участие в FNC для финансирования разработок и экспериментов, которые помогут в создании Национальной Исследовательской и Образовательной Сети. План создания NREN включает создание финансируемого DARPA Оборонного Исследовательского Интернета(DRI) и обещание предоставить часть из вновь созданной пропускной способности исследователям из Национального Центра Сетевых Экспериментов(testbed) - NNT.
Хотя детали адресации ARPANET и не важны, они иллюстрируют, как формируются адреса в глобальных сетях. В отличие от локальных сетей, таких как Ethernet или proNET-10, глобальные сети обычно вставляют в адрес информацию, помогающую сети эффективно пересылать пакеты к получателю. В ARPANET каждому коммутатору пакетов назначено уникальное число, P, а каждому порту ЭВМ на этом коммутаторе - число от 0 до N-1. Поэтому адрес назначения состоит из пары целых чисел, (P,N). На практике оборудование использует одно большое целое число, часть бит которого используется для представления N, а оставшиеся - для P.
Понимая, что взаимодействие вскоре будет необходимой частью научных исследований, Национальный Научный Фонд создал Отдел Сетевых и Коммуникационных Исследований и Инфраструктуры, чтобы быть уверенным, что все необходимое для сетевого взаимодействия будет доступно ученым и инженерам США. Хотя этот отдел финансирует фундаментальные исследования в области сетей, его основной задачей является финансирование тех исследований, которые помогают расширять Интернет.
Расширения Интернета NSFом образуют трехуровневую иерархию, состоящую из новой национальной магистральной сети, группы сетей " среднего уровня" (или региональных), каждая из которых занимает определенный географический район, и группы сетей "университетских городков"(campus), или сетей доступа. В модели NSF сети среднего уровня присоединяются к магистральной сети, а сети университетских городков присоединяются к сетям среднего уровня. Исследователи соединяют свои компьютеры с сетью университетского городка. Они могут использовать это соединение для взаимодействия с компьютерами местных исследователей, подключенными к местной сети доступа, и они могут взаимодействовать с исследователями, находящимися дальше, так как их машина может отправить данные по местной локальной сети, сети среднего уровня и магистральной сети туда, куда ей нужно.
Из всех сетей, финансируемых NSF, магистральная сеть NSFNET имеет самую интересную историю и использует самую интересную технологию. Эта магистральная сеть в процессе своего развития прошла через три этапа; она увеличивалась в размерах и пропускной способности в то время, когда ARPANET приходила в упадок, пока наконец не стала доминирующей магистральной сетью Интернета. Первая версия ее была создана быстро, как временное решение. Одной из главных причин создания этой магистральной сети явилась необходимость обеспечения доступа ученым к суперкомпьютерам NSF. В результате первая сеть состояла из шести микрокомпьютеров LSI-11 фирмы DEC(их аналогами являются советские машины серии Электроника-60 и -85), размещенные в существующих суперкомпьютерных центрах NSF. Географически эта сеть занимала континентальную часть США от Принстона, штат Нью-Джерси, до Сан-Диего, штат Калифорния, и использовала выделенные линии со скоростью 56 Кбит/с.
В каждом месте на микрокомпьютере LSI-11 работало программное обеспечение, эффектно названное "летящий мячик" (точное происхождение этого термина выяснить не удалось). Разработанный Дейвом Миллзом, каждый "летящий мячик" взаимодействовал с компьютерами местного суперкомпьютерного центра, используя обычный интерфейс Ethernet. Он работал с выделенными линиями, связывающими его с "летящими мячиками" других суперкомпьютерных центров, используя контроллеры последовательных линий, которые применяли протоколы канального уровня производителя. "Летящие мячики" хранили таблицы адресов возможных получателей и использовали эти таблицы для направления каждого приходящего пакета к его получателю.
Основное место соединения между первоначальной магистральной сетью NSF и оставшейся частью Интернета находилось в университете Карнеги-Меллона, где имелся как узел сети NSFNET, так и PSN ARPANET. Когда пользователь, присоединенный к NSFNETу, посылал траффик в какое-либо место ARPANETа, его пакеты передавались по NSFNET в университет Карнеги-Меллона(CMU), где "летящий мячик" направлял их в ARPANET через местный Ethernet. Аналогично "летящий мячик" понимал, что пакеты, имеющие получателя в NSFNET, нужно принимать из Ethernetа и посылать по магистральной сети NSF в соответствующее место.
Хотя пользователи были возбуждены возможностями компьютерного взаимодействия, пропускная способность первоначальной магистральной сети была слишком мала, чтобы обеспечить требуемый сервис. Спустя несколько месяцев после своего создания сеть оказалась перегруженной и ее создатель работал над быстрым решением навалившихся проблем, пока NSF не начала энергично разрабатывать вторую магистральную сеть.
В 1987 году NSF объявил, что ждет предложений от групп, которые хотели бы создать новую, более скоростную магистральную сеть. Предложения появились в августе 1987 и были оценены в конце этого года. 24 ноября 1987 года NSF заявил, что он выбрал предложение, представленное группой, в состав которой вошли MERIT Inc., компьютерная сеть штата, работающая в университете Мичигана в Ann Arbor, корпорация IBM, и MCI Incorporated. Эти партнеры предложили создать вторую магистральную сеть , разместить центр управления сетью в Ann Arbor и ввести эту сеть в строй к следующему лету. Так как NSF финансировал создание нескольких новых сетей среднего уровня, планировалось, что новая магистральная сеть будет обслуживать большее число узлов , чем старая. Каждая дополнительный узел должен был обеспечивать соединение между новой магистральной сетью и одной из сетей среднего уровня NSF.
Разделение труда между тремя партнерами складывалось приблизительно следующим образом: MERIT отвечал за планирование, установку и работу сетевого центра; IBM помогала машинами и людскими ресурсами из своих исследовательских лабораторий, чтобы помочь MERIT разработать, сконфигурировать и протестировать требуемое оборудование и программное обеспечение.; MCI, поставщик услуг по связи на дальние расстояния, обеспечивала коммуникационные ресурсы, используя уже имеющийся оптоволоконный кабель своей телефонной сети. Конечно, на самом деле существовало тесное сотрудничество между всеми компаниями, включавшее совместные исследовательские проекты и участие представителей IBM и MCI при разработке проекта.
К середине лета 1988 года оборудование было установлено и NSFNET начал использовать вторую магистральную сеть. Вскоре после этого первая магистральная сеть прекратила свою работу и была отсоединена.
Технология, выбранная для второй магистральной сети NSFNET, была довольно интересной. По существу магистральная сеть была глобальной сетью, состоящей из маршрутизаторов пакетов, соединенных между собой линиями связи. Как и в первой сети, маршрутизатор на каждом узле соединялся с локальным Ethernetом, а также с каналами связи, ведущими к другим узлам.
Вместо использования "летящих мячиков" или коммерческих маршрутизаторов новая магистральная сеть использовала специальные маршрутизаторы, созданные на основе нескольких обычных компьютеров, помещенных в одну большую комнату и соединенных между собой так, как показано на рисунке 2.11. То, что получилось, было названо узловой коммутационной системой(NSS). Функции NSS были аналогичны тому, что делал обычный маршрутизатор.
Узловая коммутационная система - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | | | | | ------- | | | RCP | | | соединение с ------- | | локальной сетью узла | | | ------- ___________|_________________ ------- | |<----|E-PSP|-----| межпроцессорное |-------| AP | | | | взаимодействие | | | |___________________________|------ | | | | | | | | | |PSP 1| |PSP 2| |PSP n| | | | | | | | | |- | |- | | | выделенные каналы связи к другим узлам
Рисунок 2.11 Узловая Коммутационная Система(NSS), состоящая из нескольких процессоров, соединенных механизмом межпроцессорного взаимодействия.
Как показывает рисунок 2.11, NSS состоит из центрального механизма межпроцессорного взаимодействия и трех типов процессоров: Процессоров Коммутации Пакетов(PSP), Процессора Управления и Маршрутизации(RCP), и Процессора Приложений(AP). В первой реализации центральный механизм межпроцессорного взаимодействия был обычной локальной сетью(сетью IBM Token Ring), а процессорами были IBM RT-PC.
Концептуально каждый Процессор Коммутации Пакетов в NSS управляет одной из выделенных линий, ведущих от NSS к другому узлу. Физически выделенная линия соединяется с интерфейсом ввода-вывода на шине PSP. PSP выполняет две задачи: он принимает пакеты, которые приходят по сети межпроцессорного взаимодействия и передает их по своей выделенной линии, а также принимает пакеты, которые приходят по его выделенной линии и направляет их по сети межпроцессорного взаимодействия к выходящей линии(т.е. процессор управляет линией, по которой их нужно посылать). Так как Процессоры Коммутации Пакетов работают одновременно, NSS может маршрутизировать пакеты параллельно. NSS в целом можно считать мультипроцессорной системой, которая использует свои каналы межпроцессорного взаимодействия как шину.
Хотя NSS и имела возможность параллельной работы, самым важным была эффективность. Первоначальные выделенные линии работали со скоростью 448 Кбит/с, но конечной целью была работа Процессоров Коммутации Пакетов с линиями, работающими со скоростями от DS-1(1.544 Мбит/с) до DS-3(45 Мбит/с). При таких скоростях процессор имел лишь небольшой промежуток времени для выполнения вычислений над одним пакетом. Поэтому, чтобы эффективно принимать решения о маршруте пакета, PSP использовал обращение к таблице, аналогичное тому, которое описано в более поздних главах этой книги. Чтобы еще больше снизить вычислительную нагрузку, каждый NSS содержал дополнительные Процессоры Маршрутизации и Управления, которые использовались для вычисления новых таблиц маршрутизации, а также других управляющих функций NSS. Процессоры приложений выполняют другие задачи, такие как слежение за работой сети.
После проведения измерений траффика во второй магистральной сети NSFNET в течение года, управляющий центр переконфигурировал сеть, добавил некоторые каналы и удалив другие. Помимо этого, он увеличил скорость каналов до DS-1(1.544 Мбит/с).
В то время как точная топология NSFNET несущественна, технология, используемая ею, представляет большой интерес. Как часть своего проекта, MERIT, IBM и MCI обещали исследовать новые способы как сделать сеть переконфигурируемой. Предлагаемый ими план является более интересным, чем другие сетевые планы, так как он предполагал участие в его реализации MCI, производителя, который предоставлял средства связи на большие расстояния.
Чтобы понять возможности реконфигурации, рассмотрим, что обычно происходит, когда заказчик обращается к производителю средств дальней связи, чтобы тот выделил ему цифровой канал связи. Хотя заказчик может думать, что провод соединяет напрямую нужные ему два места, производитель выбирает путь для этого канала, который использовал бы уже имеющиеся кабели. Например, производитель может соединить заказчика через локальную станцию, оттуда через ближайший большой город, где производитель имеет магистральные линии связи, по магистральным линиям до другого большого города вблизи получателя, и наконец через локальную станцию с нужным ему местом. Более того, при современной технологии производитель предоставляет отдельный физический канал. На самом деле электронное оборудование на одном конце магистрального оптоволоконного кабеля мультиплексирует (объединяет) несколько каналов в этом оптоволоконном кабеле, а оборудование на другом конце демультиплексирует (разделяет) их, делая возможным для производителя добавление или переконфигурацию каналов с помощью электронной аппаратуры. Поэтому каналы магистральной сети NSFNET мультиплексировались в уже имеющемся оптоволоконном кабеле, принадлежащем MCI.
Предложение MERIT/IBM/MCI привело к возникновению интересного вопроса: "Если бы пользователи имели возможность переконфигурировать каналы с помощью электронной аппаратуры, то как бы они улучшили при этом работу сети?" Одним из путей является следующий. Владелец сети может следить за сетевым траффиком в течение долгого времени, а затем переконфигурировать каналы, чтобы обеспечить прямой путь между парами узлов, генерирующих наибольший траффик. Помимо добавления каналов, которые нужны, динамическая реконфигурация может позволить пользователю сэкономить деньги, освободив его платы за прямые пути между парами узлов с маленьким траффиком. Конечно, нельзя переконфигурировать базовые каналы, не перевычислив путей для коммутации пакетов.
Если бы пользователи имели доступ к тем же самым средствам переконфигурации, что и производители, они могли бы не только удалять и создавать каналы, а сделать гораздо больше. Они могли бы настроить пропускные способности каналов так, как им это надо. Такая настройка может оказаться важной, так как она может сэкономить достаточно много денег на неиспользуемой пропускной способности, чтобы платить за дополнительную пропускную способность, когда она нужна. Рассмотрим, например, NSFNET. В 8 утра на восточном берегу пользователи приходят на работу и начинают генерировать траффик, поэтому требуется большая пропускная способность для каналов, соединенных с машинами, находящимися на востоке. Тем временем, на западном берегу большинство пользователей еще спит, поэтому для каналов, соединенных с машинами на западном берегу, требуется меньшая пропускная способность. По мере того, как начинается день, пропускной способности следует постепенно смещаться к каналам западного берега. Поздним вечером, когда пользователи уходят из своих офисов на востоке, каналам западного берега требуется наибольшая пропускная способность.
С точки зрения производителя, предоставление пользователям возможности менять пропускную способность канала означает, что пользователи платят за фиксированную пропускную способность базовой физической сети, но они тем не менее могут выделить себе требуемую часть этой пропускной способности. Рисунок 2.14 иллюстрирует эту идею.
Как показывает рисунок 2.14, пользователь, который платит за пропускную способность Т в базовой физической сети, может выбрать, как разделить эту пропускную способность между нескольких каналов. Конечно, при конфигурации пропускной способности отдельных каналов пользователь должен быть уверен, что в любой точке физического кабеля суммарная величина пропускной способности не превышает Т. Главным недостатком такой схемы является то, что для того чтобы сделать корректное распределение пропускной способности, пользователь должен знать как топологию физической сети, так и пути в этой сети, назначенные его каналам.
Пропускная способность Т, выделенная в физической сети ------------------------------------------------------------- --------------------------------------- | --------------- -------------- | | | | | | | ------ | | ----------- | | ---------- | | ---------- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ============ ============ ============ | Узел 1 | | Узел 2 | | Узел 3 | | | | | | | | | | | | | ============ ============ ============ | | | | | | C A A B B C
Рисунок 2.14 Три канала(A, B и C), которые могут быть переконфигурированы, пока они используют пропускную способность, меньшую чем Т, в любой точке магистральной сети. Например, каждый канал может иметь пропускную способность Т/2 или, если A и B имеют пропускные способности Т/3, то C может иметь - 2*Т/3.
NSF финансировал большое число сетей среднего уровня, которые были расположены почти в каждом штате. Типичная сеть среднего уровня включает от 10 до 30 университетов и корпораций, находящихся в данной географической области. Первоначальной целью NSF было покрыть издержки, а затем поддерживать самодостаточность, позволив каждой сети среднего уровня работать в условиях финансовой и административной автономии. Хотя некоторые сети среднего уровня добились финансовой независимости, другие обнаружили, что это довольно трудно сделать. Управляющие сетей среднего уровня образовали Федерацию Академических Исследовательских сетей(FARNET) для координации технических работ и лоббировать дополнительную правительственную поддержку.
Каждая сеть среднего уровня может выбрать технологию, которую она считает наилучшей; NSF обеспечивает доступ сети среднего уровня к остальному Интернету через магистральную сеть NSFNET. Большинство сетей среднего уровня используют выделенные линии точка-точка для соединения своих узлов, похожие на то, с помощью которого они соединяются с магистральной сетью NSFNET; почти все планируют со временем перейти на более скоростные линии.
Семейство сетей среднего уровня NSF включает пеструю коллекцию сетей доступа. Некоторые из них финансируются как экспериментальные сети, использующие новые технологии( например, спутниковый мост), в то время как другие финансируются, чтобы обеспечить доступ к суперкомпьютерам конкретной исследовательской группе. Во второй категории каждый суперкомпьютерный центр включает консорциум исследовательских групп, которые соединяются с ним по выделенным каналам. Этот консорциум иногда включает узлы, находящиеся на большом расстоянии друг от друга, что делает эти так называемые сети консорциумов достаточно широкими.
Третий ярус семейства сетей состоит из сетей университетских городков, которые присоединяются к сетям среднего уровня. NSF решило сконцентрировать выделяемые ею средства на магистральной сети и сетях среднего уровня, дав университетам и корпорациям свободу выбора в вопросе сетевой стратегии. Большинство исследовательских институтов уже имеют сеть в каждом городке; более маленькие корпорации и школы только начинают рассматривать такую возможность. Используемые технологии варьируются от простых локальных сетей до сложных сетевых связей с магистральными сетями, работающих с гигабитными скоростями.
Одна из причин силы TCP/IP заключена в разнообразии физических сетевых технологий, над которыми он может использоваться. Мы уже рассмотрели несколько широко используемых технологий, включая локальные и глобальные сети. Эта секция кратко рассмотрит другие, которые помогут проиллюстрировать важный принцип:
Большая часть успеха протоколов TCP/IP объясняется их способностью согласования почти с любой из базовых коммуникационных технологий.
CSNET(CSNET и BITNET слились; новая организация - CREN), организация образованная в 1980 для поддержки Интернета в промышленных и малых школах, использовала технологию X25NET для соединения некоторых пользователей с Интернетом. Первоначально разработанная в университете Пурдью, X25NET позволяла протоколам Интернета работать в Общественных Сетях Данных(PDN). Такой подход должен был позволить организациям, для которых было неприемлемо прямое соединение с ARPANET, заказывать сетевое соединение у фирмы-поставщика средств дальней связи(например, AT&T) и использовать его для передачи траффика Интернета.
Читатели, которые знают об общественных сетях с коммутацией пакетов, могут найти X25NET странной, так как такие сети используют только протоколы МККТТ Х.25, в то время как Интернет использует протоколы TCP/IP. Тем не менее, когда она используется для транспортировки траффика TCP/IP, сеть Х.25 просто обеспечивает путь, по которому может быть передан траффик Интернета. Мы уже установили, что многие базовые технологии могут использоваться для передачи траффика Интернета. Эта технология, иногда называемая туннельная передача(tunneling), просто означает, что сложная сеть со своими собственными протоколами рассматривается как еще одна аппаратная система доставки пакетов. Чтобы послать траффик TCP/IP по туннелю Х.25, надо установить соединение Х.25, а затем послать пакеты TCP/IP, как будто это данные. Система Х.25 передаст пакеты по соединению и доставит их в другую точку Х.25, где они должны быть собраны и отправлены к своему истинному назначению. Так как туннелирование рассматривает пакеты как данные, оно не обеспечивает самоидентифицирующиеся кадры. Поэтому, оно работает только в том случае, когда оба конца соединения Х.25 заранее договорились о том, что они будут передавать пакеты Х.25.
Что делает Х.25 особенным, так это его интерфейс. В отличие от большинства сетевого оборудования протоколы Х.25 обеспечивают надежный поток передаваемых данных, иногда называемый виртуальным каналом, между отправителем и получателем, в то время как протоколы Интернета предназначены для системы доставки пакетов, что делает их несовместимыми.
Представление о соединениях Х.25, как о путях доставки, приводит к интересному приему. Оказывается, что сети Х.25 показывают гораздо лучшую пропускную способность при нескольких одновременно открытых соединениях. Поэтому, вместо открытия одного соединения с данным местом доставки, отправитель Х25NET часто открывает несколько соединений и распределяет пакеты между ними для улучшения производительности. Получатель принимает пакеты со всех соединений Х.25 и снова объединяет их вместе.
Схема адресации, используемая сетями Х.25, определена в стандарте, известном как Х.121. Каждый из физических адресов Х.121 является числом из 14 цифр, в котором 10 цифр назначаются производителем, который обеспечивает средство сети Х.25. Напоминая телефонные номера, одна из популярных схем назначения номеров производителями включает код области, основанный на географическом положении. Такой подход не удивителен, так как он был предложен организацией, определяющей международные телефонные стандарты. К сожалению, эта схема неудобна, так как затрудняет назначение Интернетовских адресов. Пользователи, использующие X25NET, должны хранить таблицу отображения Интернетовского адреса в адрес Х.25 и обратно. Глава 6 рассматривает проблему отображения адресов более детально и дает альтернативу использованию фиксированных таблиц.
Так как общественные сети Х.25 работают независимо от Интернета, должно существовать место соединения между ними. Как DARPA, так и CSNET используют специально выделенные машины для обеспечения соединения между Х.25 и ARPANET. Основное соединение известно как VAN-шлюз. Этот шлюз поддерживает соединения Х.25 и маршрутизирует приходящий траффик Интернета к его получателям. X25NET является важной, так как она иллюстрирует гибкость и адаптируемость протоколов TCP/IP. В частности, она показывает, как туннельная передача делает возможным использование очень широкого диапазона сложных сетевых технологий в межсетевой среде.
Большинство сетевых технологий, которые мы рассмотрели, достаточно дороги. Но в число тех, кому нужен доступ к Интернету, входят не только большие институты, напрямую соединенные с главными магистральными сетями, такими как NSFNET; доступ к нему нужен также маленьким школам и просто отдельным людям. Маленькие институты не могут позволить себе высокоскоростные выделенные линии, или оборудование, соединяющее с ними. Cypress предназначен для удовлетворения потребности в доступе с помощью дешевой низкоскоростной технологии TCP/IP.
Cypress состоит из миникомпьютеров, соединенных низко- или среднескоростными выделенными линиями(от 9.6 Кбит/с до 56 Кбит/с). Каждый миникомпьютер размещается в пользовательском узле, где он соединен с локальной вычислительной средой с помощью ЛВС Ethernet. С остальной частью Cypress он соединяется по выделенным последовательным линиям. Как минимум один узел в сети Cypress соединен с Интернетом и передает траффик между сетью Cypress и остальной частью Интернета.
Первоначально Cypress разрабатывался для топологии типа "виноградная кисть", в которой каждый новый узел соединялся последовательной линией с ближайшим к нему узлом. Преимуществом использования такой топологии была ее дешевизна; недостатком была большая величина паузы при передаче, становящаяся значительной для траффика, который передавался через несколько промежуточных машин. Топология Cypress была изменена по двум причинам:во-первых, NSFNET значительно увеличил число потенциальных точек соединения с Интернетом, и во-вторых, большинству пользователей показалось, что лучше платить больше, но иметь меньшие паузы при передаче. Поэтому сеть Cypress приняла вид одного концентратора, размещенного в университете Пурдью, который был соединен с NSFNET.
Cypress основывался на нескольких ключевых идеях. Во-первых, для достижения дешевизны Cypress объединяет возможности, используя один компьютер для выполнения нескольких задач. Во-вторых, как и Ethernet, протоколы Cypress используют негарантированную доставку, не делая попыток исправить ошибки или восстановить потерянные пакеты на канальном уровне. Следующие главы объяснят, почему негарантированная доставка работает хорошо в среде TCP/IP. В-третьих, Cypress работает как сеть, а не как набор выделенных линий точка-точка. В-четвертых, Cypress соединен с сетями в узлах его пользователей, а не просто с машинами. Поэтому большое количество хостов в узле пользователя могут использовать соединение Cypress, рассматривая его как путь остальной части Интернета. В-пятых, Cypress позволяет своим маршрутизаторам быть управляемыми с любого узла в Интернете, так как он использует IP для передачи информации об их состоянии. Миникомпьютеры, составляющие сеть Cypress, называются имплетами(implet), и каждый имплет обеспечивает три концептуальные функции в одной машине. На самом нижнем уровне, имплет работает как маршрутизатор пакетов, принимая пакеты из последовательных линий и направляя их к их получателю, используя при этом аппаратные адреса в кадре для выбора маршрута. На следующем уровне, имплет соединяет две сети, локальный Ethernet в узле пользователя и сеть Cypress. На самом высоком уровне имплет является компьютером общего назначения, который выполняет программы управления сетью и слежения за ней как пользовательские процессы.
Помимо своего технического вклада в сетевые технологии, Cypress демонстрирует три важных идеи. Во-первых, он иллюстрирует, почему сетевую скорость нужно рассматривать как меру пропускной способности. Узлы с небольшим траффиком воспринимают Cypress как адекватную, надежную технологию соединения между ними. В нем низкие скорости не означают ограниченных возможностей. Во-вторых, Cypress показывает, что протоколы Интернета хорошо работают в системах с негарантированной доставкой с простыми протоколами канального уровня. В-третьих, Cypress показывает, что разработка программного обеспечения для управления и слежения за сетью с использованием протоколов Интернета делает слежение гибким, а исправление отказов оборудования легким.
Другой интересный способ использования TCP/IP, освоенный CSNET, включает работу протоколов TCP/IP в коммутируемой телефонной сети. Узлы CSNET, использующие Интернет редко, могут быть не в состоянии платить за выделенные линии. Для этих узлов CSNET разработал систему коммутируемого IP, которая работает следующим образом: всякий раз, когда нужно соединение, программное обеспечение в узле пользователя использует модем для создания соединения с концентратором(hub) CSNET через телефонную сеть. Компьютер в концентраторе отвечает на телефонный вызов и, после получения подтверждения подлинности пользователя, передает траффик между этим узлом и другими компьютерами Интернета.
Один из самых интересных экспериментов DARPA в области коммутации пакетов привел к созданию технологии, которая использовала широковещание по радио для передачи пакетов. Разработанное для военных условий, в которых станции могут быть мобильными, пакетное радио включает оборудование и программное обеспечение, которое позволяет узлам находить другие узлы, устанавливать соединение точка-точка, а затем использовать это соединение для передачи пакетов. Так как узлы меняют свое географическое положение и могут выходить за границы связи, система должна постоянно контролировать связность и перевычислять пути для отражения изменений в топологии. Рабочая система пакетного радио была создана и использовалась для демонстрации соединения TCP/IP между удаленным узлом пакетного радио и другими узлами Интернета.
Мы рассмотрели несколько технологий работы сетевого оборудования, используемых протоколами TCP/IP, которые лежат в диапазоне от высокоскоростных ЛВС, таких как Ethernet и proNET-10, до более медленных глобальных сетей, таких как ARPANET и Cypress. Мы также увидели, что протоколы TCP/IP могут работать над другими протоколами сетей общего пользования, используя технологию, названную туннельной передачей. В то время как детали конкретных сетевых технологий не важны, общая идея заключается в следующем:
Протоколы TCP/IP являются крайне гибкими в том отношении, что почти любая базовая технология может использоваться для передачи траффика TCP/IP.
2.1 Установите, какие сетевые технологии использует ваш узел.
2.2 Каков максимальный размер пакета, который может быть послан по высокоскоростной сети, такой как HyperChannel NSC или UltraNet Ultra Network Technologies?
2.3 В чем заключаются преимущества и недостатки туннельной передачи?
2.4 Прочитайте стандарт Ethernetа, чтобы найти точную информацию о паузе(gap) между пакетами и размере преамбулы.
2.5 Какая характеристика спутникового коммуникационного канала является наиболее желательной ? А наименее желательной ?
2.6 Установите нижнюю границу времени, которое занимает передача 5 мегабайтного файла по сети, которая работает со скоростями: 9600 бит/с, 56 Кбит/с, 10 Мбит/с, 100 Мбит/c и 2 Гбит/с.
Назад | Содержание | Вперед
Важно понимать, что Интернет не является новым видом физической сети. На самом деле это метод взаимного соединения физических сетей и набор соглашений для использования сетей, которые позволяют компьютерам взаимодействовать друг с другом. В то время как аппаратная технология играет небольшую роль при концептуальном проектировании, важно понимать разницу между низкоуровневыми механизмами, обеспечиваемыми самим оборудованием, и высокоуровневыми средствами, которые обеспечивает программное обеспечение протоколов Интернета. Также важно понимать, как средства, обеспечиваемые технологией коммутации пакетов, влияют на наш выбор абстракций высокого уровня.
Эта глава вводит основные понятия коммутации пакетов и терминологию. а затем рассматривает базовые технологии сетевого оборудования, которые использовались в объединенной сетях TCP/IP. Следующие главы описывают, как эти сети объединяются и как протоколы TCP/IP согласованы с различиями в оборудовании. В то время как список сетей, представленный здесь, не является исчерпывающим, он хорошо демонстрирует разнообразие физических сетей, над которыми работает TCP/IP.Читатель может спокойно пропустить большую часть технических деталей, но должен попытаться понять идею пакетной коммутации и должен попытаться представить архитектуру однородной коммуникационной системы, использующей такое разнообразное оборудование. Более того, читатель должен внимательно изучить детали схем физических адресаций в различных используемых технологиях; следующие главы рассмотрят детально, как протоколы высокого уровня используют эти физические адреса.
Независимо от того, обеспечивают ли они соединение между компьютерами или между компьютерами и терминалами, коммуникационные сети могут быть разделены на два основных типа: с коммутацией каналов и коммутацией пакетов. Сети с коммутацией каналов работают, образуя выделенное соединение(канал) между двумя точками. Телефонная сеть США использует технологию с коммутацией каналов - телефонный вызов устанавливает канал от вызывающего телефона через локальную АТС, по линиям связи, к удаленной АТС, и, наконец, к отвечающему телефону. Пока существует канал, телефонное оборудование постоянно опрашивает микрофон, кодирует полученное значение в цифровой форме, и передает его по этому каналу к получателю. Отправителю гарантируется, что опросы будут доведены и воспроизведены, так как канал обеспечивает скорость 64 Кбит/с, которой достаточно для передачи оцифрованного голоса. Преимущество коммутации каналов заключается в ее гарантированной пропускной способности: как только канал создан, ни один сетевой процесс не уменьшит пропускной способности этого канала. Недостатком при коммутации каналов является ее стоимость: платы за каналы являются фиксированными и независимыми от траффика. Например, можно заплатить за телефонный вызов, даже если две разговаривающие стороны вообще ничего не говорили.
Сети с коммутацией пакетов, тип обычно используемый при соединении компьютеров, используют совершенно другой подход. В сетях с коммутацией пакетов траффик сети делится на небольшие части, называемые пакетами, которые объединяются в высокоскоростных межмашинных соединениях. Пакет, который обычно содержит только несколько сотен байтов данных, имеет идентификатор, который позволяет компьютерам в сети узнавать, предназначен ли он им, и если нет, то помогает им определить, как послать его в указанное место назначения. Например, файл, передаваемый между двумя машинами, может быть разбит на большое число пакетов, которые посылаются по сети по одному. Оборудование сети доставляет пакеты к указанному месту назначения, а сетевое программное обеспечение собирает пакеты опять в один файл. Главным преимуществом коммутации пакетов является то, что большое число соединений между компьютерами может работать одновременно, так как межмашинные соединения разделяются между всеми парами взаимодействующих машин. Недостатком ее является то, что по мере того как возрастает активность, данная пара взаимодействующих компьютеров получает все меньше сетевой пропускной способности. То есть, всякий раз, когда сеть с коммутацией пакетов становится перегруженной, компьютеры, использующие сеть, должны ждать, пока они не смогут послать следующие пакеты.
Несмотря на потенциальный недостаток негарантируемой сетевой пропускной способности, сети с коммутацией пакетов стали очень популярными. Причинами их широкого использования являются стоимость и производительность. В связи с тем, что к сети может быть подключено большое число машин, требуется меньше соединений и стоимость остается низкой. Так как инженеры смогли создать высокоскоростное сетевое оборудование, с пропускной способностью обычно проблем не возникает. Так много компьютерных соединений использует коммутацию пакетов, что далее в книге термин СЕТЬ будет обозначать только сеть с коммутацией пакетов.
Сети с коммутацией пакетов, которые разрослись до больших географических размеров(например, континентальной части США), сильно отличаются от сетей, имеющих небольшие размеры(например, одну комнату). Чтобы помочь охарактеризовать различия в пропускной способности и способах использования, технологии коммутации пакетов часто делят на три большие категории: глобальные сети(WAN), городские сети(MAN) и локальные сети(LAN). Технологии WAN, иногда называемые long haul networks(буквально - сети дальних перевозок), позволяют взаимодействующим местам быть достаточно далеко друг от друга и предназначены для использования на больших расстояниях. Обычно WAN работают на более низких скоростях, чем другие технологии, и имеют гораздо большие паузы при соединении. Обычно скорости WAN лежат в диапазоне от 9.6 Кбит/с до 45 Мбит/с.
Самый новый вид сетевого оборудования, технологии MAN позволяют взаимодействовать в географических областях средних размеров и работают на скоростях от средних до высоких. Они получили такое имя из-за способности одной MAN занимать область размером с большой город. MAN работают с меньшими паузами, чем WAN, но не могут обеспечить взаимодействие на таких же больших расстояниях. Типичные MAN работают со скоростями от 56 Кбит/с до 100 Мбит/с.
Технологии LAN обеспечивают наивысшие скорости соединений между компьютерами, но не позволяют им занимать большие области. Например, типичная LAN занимает пространство, такое же как одно здание или небольшой университетский городок, и работает со скоростями от 4 Мбит/с до 2 Гбит/с.
Мы уже говорили о компромиссе между скоростью и расстоянием: технологии, обеспечивающие более высокие скорости взаимодействия, работают на более коротких расстояниях. Существуют и другие различия среди технологий в указанных выше трех категориях. В технологиях LAN каждый компьютер обычно содержит сетевое интерфейсное устройство, которое соединяет машину напрямую с сетевой средой передачи данных(например, медным проводом или коаксиальным кабелем). Часто сеть является пассивной, полагая, что электронные устройства в присоединенных компьютерах сами будут генерировать и получать необходимые электрические сигналы. В технологиях MAN сеть содержит активные коммутирующие элементы, которые приводят к появлению коротких задержек при направлении данных к их назначению. В технологиях WAN сеть обычно состоит из групп сложных маршрутизаторов пакетов, соединенных линиями связи. Сеть может быть расширена добавлением нового маршрутизатора и еще одной линии связи. Присоединить компьютер к WAN значит соединить его с одним из маршрутизаторов пакетов. Эти маршрутизаторы вводят значительные паузы при маршрутизации траффика. Поэтому, чем больше становится WAN, тем больше времени ей надо для маршрутизации траффика.
Целью разработки сетевых протоколов является скрыть технологические различия между сетями, сделав соединение независимым от используемого оборудования. Следующие секции содержат шесть примеров сетевых технологий, используемых в Интернете, показывая при этом различия между ними. Следующие главы показывают, как программное обеспечение TCP/IP скрывает такие различия и делает коммуникационную систему независимой от базовой аппаратной технологии.
Ethernet - это имя, данное популярной технологии локальной сети с коммутацией пакетов, разработанной в Xerox PARC в начале 1970 года. Версия, описанная здесь, была стандартизована Xerox Corporation, Intel Corporation и Digital Equipment Corporation в 1978 году. Как показано на рисунке 2.1, Ethernet состоит из коаксиального кабеля приблизительно полдюйма в диаметре и до 500 метров длиной. Между центральным проводом и защитной оболочкой на каждом конце добавляется резистор для предотвращения отражения электрических сигналов. Называемый ether(для удобства будем называть его просто Е-кабель), этот кабель является полностью пассивным; все активные электронные компоненты, выполняющие сетевую функцию, связаны с компьютерами, присоединенными к сети.
+------------+<=============внешняя изолирующая оболочка |+----------+| || <============полиэтиленовый заполнитель || || || == |<===============металлическая оболочка || =<== || || \ || |+---------\+| +-----------============центральный провод
Рисунок 2.1 Коаксиальный кабель, иcпользуемый в Ethernet
Ethernet'ы могут быть дополнены устройствами, называемыми повторителями, которые передают электрические сигналы от одного кабеля к другому. Рисунок 2.2 показывает типичное использование повторителей в здании фирмы. Один вертикальный магистральный кабель проложен через все этажи здания, и повторитель соединяет дополнительные кабели на каждом этаже с магистральным кабелем. Компьютеры присоединяются к кабелям, проложенным на каждом этаже. Только два повторителя могут быть помещены между любыми двумя машинами, поэтому общая длина простого Ethernetа довольно маленькая(до 1500 метров).
Расширение Ethernetа, используя повторители, имеет свои преимущества и недостатки. Повторители менее избыточны, чем другие типы соединяющего оборудования, что делает их самым дешевым способом расширения Ethernetа. Тем не менее, повторители имеют два недостатка. Во-первых, так как повторители повторяют и усиливают все электрические сигналы, то они копируют шумы, возникающие в одном проводе, в другой провод. Во-вторых, так как они содержат активные электронные компоненты, требующие энергии, они могут выйти из строя. В здании авария может произойти в неудобном месте(например, между перекрытиями или в розетке), делая трудным ее нахождение и устранение.
| ___________________________ | | | | | | | Этаж 3 |--O K K K K K | | ___________________________ | | | | | | | Этаж 2 |--O K K K K K | | ___________________________ | | | | | | | Этаж 1 |--O K K K K K | \ \________ повторитель
Рисунок 2.2 Повторители, используемые для соединения кабелей Ethernetа в здании. Самое большее два повторителя могут быть помещены между парой взаимодействующих машин.
Соединения с E-кабелем делаются с помощью ответвлений, как показывает рисунок 2.3. При каждом ответвлении маленькая дырка во внешних слоях кабеля позволяет маленьким контактам касаться центрального провода и защитной металлической оболочки(некоторые производители требуют, чтобы кабель был разрезан и вставлен Т-образный соединитель). Каждое соединение с Ethernetом имеет две основные электрические компоненты. Трансивер присоединяется к центральному проводу и металлической оплетке на Е-кабеле, принимая и передавая сигналы. Интерфейс с ЭВМ соединяется с трансивером и взаимодействует с компьютером(обычно через шину компьютера).
Трансивер - это небольшая часть оборудования, физически смежная с Е-кабелем. Помимо аналогового оборудования, которое принимает сигналы от Е-кабеля и управляет им, трансивер содержит цифровые схемы, которые позволяют ему взаимодействовать с цифровым компьютером. Трансивер может определить, когда Е-кабель используется, и может транслировать аналоговые электрические сигналы, идущие по Е-кабелю, в цифровую форму или из нее в аналоговую. По кабелю трансивера, находящемуся между трансивером и интерфейсом ЭВМ, передается питание трансивера, а также сигналы, управляющие его работой.
Рисунок 2.4 показывает соединение между компьютером и трансивером. Каждый интерфейс ЭВМ управляет работой одного трансивера согласно командам, которые он получает от программного обеспечения компьютера. Для операционной системы интерфейс представляется в виде устройства ввода-вывода, которое воспринимает основные команды передачи данных от компьютера, управляет трансивером при их выполнении, прерывается, когда задача завершается, и сообщает информацию о состоянии. В то время как трансивер - это простое аппаратное устройство, интерфейс с ЭВМ может быть сложным(например, он может содержать микропроцессор, используемый для управления передачей данных между памятью компьютера и Е-кабелем).
______________________ /-\ ___________ \ ___/_ \ \ \ | центральный провод /--\ \ \ \ \ | \ / \ | | | | | -------|-- | | | |----------| | __\ / | | | | | | металлическая оплетка/ \--/_____/ / / | / | \ / /___|______/ | \-/________|____|_______/ | | (a) --------------- | | | трансивер | (b) | | --------------- | _______________________________ | к интерфейсу | | | | ЭВМ | | ...... | V | | | O O O
Рисунок 2.3 (а) Наглядное представление кабеля, показывающее детали двух электрических соединений между трансивером и кабелем при ответвлении, и (b) схематическая диаграмма Ethernetа с группой ответвлений.
Ethernet - это технология общей шины со скоростью 10 Мбит/с , с механизмом негарантированной(best effort) доставки и распределенным управлением доступом. Она называется технологией общей шины из-за того, что все станции разделяют один общий канал взаимодействия; она - широковещательная, так как все трансиверы принимают информацию, передаваемую всеми станциями. Метод, используемый для передачи пакетов от одной станции к другой или к группе станций, будет рассмотрен позднее. На данный момент достаточно уяснить, что трансиверы не фильтруют информацию - они передают все пакеты на интерфейс ЭВМ, который выбирает из них нужные этой ЭВМ и отбрасывает другие пакеты. Ethernet называется механизмом негарантированной доставки, так как он не информирует отправителя о том, был ли доведен пакет до получателя. Например, если случилось так, что машина получателя выключена, пакет будет потерян, но отправитель ничего не будет знать об этом. мы увидим позднее, как протоколы TCP/IP согласованы с оборудованием с негарантированным доведением.
Ethernet _______________________________________________________ | | ------- трансивер | |<------ | | ... | / / \ / /<-------шина компьютера \_____ / / | / / / | | / | |<---------------плата интерфейса компьютера | | / | |/ |||||-- |||||/ / / / / / / /... /
Рисунок 2.4 Соединение между кабелем Ethernet и компьютером
Управление доступом в Ethernetе распределенное, так как, в отличие от некоторого другого сетевого оборудования, здесь нет централизованной схемы предоставления доступа. Схема доступа Ethernetа называется множественным доступом с контролем несущей и обнаружением коллизий(CSMA/CD). Она является CSMA, так как несколько машин могут получить доступ к Ethernetу одновременно, и каждая машина определяет, занят ли Е-кабель, по наличию несущей в нем. Когда интерфейс компьютера имеет пакет, который нужно передать, он слушает Е-кабель, чтобы узнать, передается ли уже чье-то сообщение(т.е. определяет наличие несущей). Когда передачи не обнаружено, интерфейс компьютера начинает передачу. Каждая передача ограничена в своей продолжительности(так как существует максимальный размер пакета). Более того, оборудование должно делать небольшие паузы между передачами пакетов, чтобы не получилось так, что сеть используется одной парой машин, и чтобы другие машины тоже имели возможность доступа к сети.
Когда трансивер начинает передачу, сигнал не достигает всех частей сети одновременно. На самом деле он передается по кабелю со скоростью, составляющей примерно 80% от скорости света. Поэтому возможна ситуация, когда два трансивера могут определить, что сеть незанята, и одновременно начать передачу. Когда два электрических сигнала передаются одновременно, они перемешиваются, в результате чего оба становятся искаженными. Такие события называются коллизиями.
Ethernet обрабатывает коллизии оригинальным способом. Каждый трансивер следит за состоянием кабеля, когда он передает , чтобы узнать, когда другой сигнал помешал его передаче. На техническом языке такое слежение называется обнаружением коллизий и делает Ethernet сетью CSMA/CD. Когда коллизия обнаружена, интерфейс ЭВМ аварийно завершает передачу, ждет конца работы других станций и снова пытается повторить передачу. При этом нужно соблюдать осторожность, иначе сеть может оказаться перегруженной трансиверами, впустую пытающимися передавать, причем каждая передача будет приводить к коллизии. Чтобы избежать таких ситуаций, Ethernet использует стратегию двоичной экспоненциальной задержки, при которой отправитель ждет случайное время после первой коллизии, в два раза дольше, если вторая попытка передать, также привела к коллизии, в четыре раза дольше, если третья попытка привела к коллизии, и так далее. Идея, лежащая в основе экспоненциальной задержки, заключается в том, что при коллизии возможно, что большое число станций будет пытаться передавать одновременно и может возникнуть большие помехи для траффика. При таких помехах существует большая вероятность того, что две станции выберут похожие времена задержки. Поэтому вероятность того, что возникнет новая коллизия, велика. С помощью удвоения случайного времени задержки стратегия экспоненциальной задержки быстро распределяет попытки повторной передачи станций на достаточно большой промежуток времени, что делает вероятность дальнейших коллизий крайне маленькой.
Стандартный Ethernet работает со скоростью 10 Мбит/с, что означает, что данные могут передаваться по кабелю со скоростью 10 миллионов бит в секунду. Хотя многие современные компьютеры могут генерировать данные со скоростью Ethernetа, реальную скорость сети не следует представлять как скорость, с которой два компьютера обмениваются данными. На самом деле скорость сети является мерой пропускной способности общего траффика сети. Представьте сеть в виде высокоскоростной магистрали(highway), соединяющей группу городов. Высокие скорости при движении по магистрали означают, что она может выдержать большую загрузку траффиком, а низкие скорости - что эта магистраль не может выдержать большой объем траффика. Ethernet со скоростью 10 Мбит/с, например, может выдержать несколько компьютеров, генерирующих высокоскоростной траффик или большое число компьютеров, генерирующих медленный траффик.
Последние достижения в технологии сделали возможным создание Ethernetа, который нуждается в электрической изоляции коаксиального кабеля. Называемая Ethernet - витая пара, эта технология позволяет обычному Ethernetу со скоростью 10 Мбит/c передаваться по паре медных проводов, во многом похожих на те, которые используются для соединения телефонов. Преимущество использования витой пары состоит в том, что она дешевле и позволяет многим группам использовать существующие кабеля вместо установки новых.
Когда высокая пропускная способность не нужна, сеть может использовать Ethernet-подобную технологию, но работать на несколько меньших скоростях. Преимущество здесь в основном экономическое. Меньшие скорости означают более простое оборудование и меньшую цену. Одной из причин того, что более низкие скорости сети приводят к уменьшению ее цены, является то, интерфейсы требуют меньше буферной памяти и могут быть созданы на основе простых(и дешевых) интегральных микросхем.
Уменьшения цены можно также добиться, если высокоскоростные цифровые микросхемы соединить напрямую с кабелем, не используя трансивер. В этом случае Ethernet может быть создан с помощью стандартного коаксиального кабеля, такого, который используется для кабельного телевидения. Называемый Ethernet - тонкая пара, этот тонкий кабель является недорогим, но поддерживает меньшее число соединений и может работать только на более коротких расстояниях, чем стандартный Ethernet-овский кабель.
Производители рабочих станций обнаружили, что Ethernet-тонкий кабель особенно привлекателен из-за того, что они могут интегрировать Ethernet-овское оборудование в одноплатные компьютеры и смонтировать BNC-разъемы прямо в задней стенке машины. Не требуя специальных средств, BNC-разъемы делают возможным для пользователей присоединение их рабочих станций к Ethernet-у. Конечно, предоставление пользователям возможности добавлять их машины к сетям имеет свои недостатки. Это означает, что сеть будет чувствительной к разъединениям, неправильным соединениям кабелей, и другим ошибкам. Но в большинстве случаев преимущества перевешивают недостатки.
При другом методе уменьшения цены используется один физический кабель для передачи нескольких Ethernet-ов. Известная как широкополосная, эта технология работает аналогично широковещательному радио. Передатчик объединяет несколько Ethernet-ов в одном кабеле, назначая каждому Ethernet-у уникальную частоту. Приемники должны быть настроены на правильную частоту , чтобы они принимали только нужный сигнал и игнорировали остальные. Хотя оборудование, требуемое для присоединения к широковещательному кабелю, более дорогое, чем оборудование для соединения с обычным кабелем, при широковещании не нужно платить за прокладку нескольких кабелей.
Интерфейс ЭВМ Ethernetа поддерживает механизм адресации , который позволяет передавать на компьютер только нужные пакеты. Напомним, что каждый интерфейс получает копию каждого пакета - даже если они адресованы другим машинам. Это оборудование фильтрует пакеты, игнорируя те, которые адресованы другим машинам, и передает в компьютер те, которые адресованы ему. Механизм адресации и фильтрации требуется, чтобы предохранить компьютер от перегрузки приходящими данными.
Чтобы позволить компьютеру определить, какие пакеты назначены ему, каждому компьютеру, соединенному с Ethernet-ом, назначено 48-битовое число, называемое Ethernet-овским адресом. Производители оборудования для Etherneta приобретают блоки адресов Ethernetа и последовательно назначают эти адреса производимым ими интерфейсам для Ethernetа(Институт Инженеров по Электротехнике и Радиотехнике(IEEE) управляет адресным пространством Ethernetа и назначает адреса по мере необходимости). Поэтому никакие два интерфейса не будут иметь одинаковый адрес Ethernetа.
Обычно Ethernet-овский адрес фиксируется в оборудовании интерфейса компьютера. Так как адреса Ethernetа принадлежат аппаратным устройствам, то они иногда называются аппаратными адресами или физическими адресами. Отметим следующее важное свойство физических адресов Ethernetа:
Физические адреса связаны с интерфейса Ethernetа; установка интерфейса на новую машину или замена неисправного интерфейса изменяет его физический адрес.
Зная, что физические адреса Ethernetа могут меняться, легко понять, почему более высокие уровни сетевого математического обеспечения согласованы с такими изменениями. 48-битовый адрес Ethernetа не только определяет отдельный аппаратный интерфейс. Он может принадлежать одному из трех типов:
По соглашению широковещательный адрес(все единицы) зарезервирован для одновременной посылки всем станциям. Групповые адреса обеспечивают ограниченную форму широковещания, при которой группа компьютеров в сети согласна отвечать на групповой адрес. Каждый компьютер в такой группе может получать сообщения одновременно с другими компьютерами этой группы, при этом остальные машины в сети ничего не получают.
Для согласования с широковещательной и групповой адресацией интерфейс Ethernetа должен распознавать не только свой физический адрес. Интерфейс обычно принимает по крайней мере два вида передач: адресованные физическому адресу интерфейса и адресованные широковещательному адресу. Некоторые интерфейсы могут быть запрограммированы на распознавание групповых адресов или даже альтернативных физических адресов. Когда операционная система начинает работать, она инициализирует интерфейс Ethernetа, задавая ему набор адресов, который он должен распознавать. В дальнейшем интерфейс сканирует каждую передачу, передавая на компьютер только передачи, предназначенные одному из указанных адресов.
Ethernet можно представлять как соединение канального уровня между машинами. Поэтому имеет смысл рассматривать передаваемые данные как кадры(фреймы)(Термин фрейм (граница) ведет свое происхождение от передачи по последовательным линиям, в которых отправитель определял границы данных, добавляя специальные символы перед и после передаваемых данных). Кадры Ethernetа имеют переменную длину в пределах от 64 октетов(октетом называется блок из 8 бит, чаще называемый байтом) до 1518 октетов (заголовок, данные, ЦКС). Как и во всех сетях с коммутацией пакетов, кадр должен идентифицироваться свое назначение. Рисунок 2.5 показывает формат кадра Ethernetа, который содержит физический адрес отправителя, а также физический адрес получателя.
Помимо идентификации отправителя и получателя, каждый кадр, передаваемый по Ethernetу, содержит преамбулу, поле типа, поле данных и циклическую контрольную сумму(CRC) или ЦКС. Преамбула состоит из 64 битовой последовательности 1 и 0 и служит для облегчения синхронизации при приеме. 32-битовая ЦКС помогает интерфейсу обнаружить ошибки передачи: отправитель вычисляет ЦКС как функцию от данных, передаваемых в кадре, а получатель заново вычисляет ЦКС для того, чтобы быть уверенным в том, что пакет принят без ошибок.
Поле типа кадра содержит 16-битовое целое число, которое идентифицирует тип данных, передаваемых в кадре. С точки зрения Интернета поле типа кадра очень важно, так как это означает, что кадры Ethernetа являются самоидентифицирующимися. Когда кадр приходит на данную машину, операционная система использует тип кадра, чтобы определить, какой программный модуль обработки протоколов должен обработать это кадр. Главные преимущества самоидентифицирующихся кадров заключаются в том, что они позволяют одновременно использовать несколько протоколов на одной машине и в том, что они позволяют нескольким протоколам смешиваться при работе в одной физической сети. Например, кто-то может иметь прикладную программу, использующую Интернетовские протоколы, а кто-то использовать локальный экспериментальный протокол. Операционная система будет определять, кому послать приходящие пакеты, основываясь на значении поля типа кадра. Мы увидим, что протоколы TCP/IP используют самоидентифицирующиеся кадры Ethernetа для выделения себя среди других протоколов.
адрес адрес тип преамбула получателя отправителя кадра данные ЦКС --------------------------------------------------------------- | 64 бита | 48 бит | 48 бит |16 бит|368-12000 бит| 32 бита| ---------------------------------------------------------------
Рисунок 2.5 Формат кадра(пакета) в том виде, в котором он передается по Ethernetу. Размеры полей не соотносятся друг с другом.
Мы уже рассматривали использование Ethernet-овских повторителей как одну из технологий расширения физического Ethernetа до нескольких физических кабельных сегментов. Хотя повторители как способ расширения были популярны много лет тому назад, многие теперь используют мосты для соединения сегментов. В отличие от повторителя, который повторяет электрические сигналы, мост повторяет пакеты. Фактически мост - это быстрый компьютер с двумя интерфейсами Ethernetа и фиксированной программой. Мост работает с обоими интерфейсами Ethernetа в режиме "без разбора", то есть интерфейсы перехватывают все корректные пакеты, появляющиеся в Ethernetах, к которым они присоединены, и предоставляют их процессору моста. Если мост соединяет два Ethernetа, Е1 и Е2, то программное обеспечение берет каждый пакет, полученный из Е1 и передает его в Е2, и наоборот.
Мосты являются более передовыми по отношению к повторителям, так как они не повторяют шум, ошибки, или испорченные кадры; должны быть получены полностью корректные кадры, чтобы они были продублированы. Более того, интерфейсы мостов следуют правилам CSMA/CD Ethernetа, поэтому коллизии и паузы при распространении в одном кабеле(сегменте) остаются изолированными от тех же явлений в других сегментах. В результате мостами может быть соединено почти любое число Ethernetов. Отметим, что мосты скрывают детали соединения: набор сегментов, связанных мостами, функционирует как один Ethernet. Компьютер может связываться с другими машинами через мосты, используя такие же аппаратные сигналы, как те, которыми он пользуется для связи в своем сегменте.
Большинство мостов не передают кадры с одного кабеля на другой: они принимают решения о том, какие кадры нужно передавать на другой сегмент, а какие нет. Такие мосты называются адаптивными, или обучающимися мостами. Адаптивный мост состоит из компьютера с двумя интерфейсами Ethernetа. Программное обеспечение адаптивного моста хранит два списка адресов, по списку для каждого интерфейса. Когда кадр приходит из Ethernetа Е1, адаптивный мост добавляет 48-битовый Ethernet-овский адрес отправителя в список, связанный с Е1. Аналогично, когда кадр приходит из Е2, мост добавляет адрес отправителя к списку, связанному с Е2. Поэтому, по прошествии некоторого времени адаптивный мост узнает, какие машины находятся в Е1, а какие в Е2.
После записи адреса отправителя кадра, адаптивный мост использует адрес получателя, чтобы определить, нужно ли передавать кадр в другой сегмент. Если список адресов показывает, что получатель находится в Ethernete, из которого прибыл кадр, то мост не передает этот кадр в другой сегмент. Если же получателя нет в списке адресов(т.е. получатель - это широковещательный или групповой адрес, или мост еще не знает местонахождение получателя), мост отправляет кадр в другой Ethernet.
Преимущества адаптивных мостов очевидны. Так как мост использует адреса, выделяемые из обычного траффика, он полностью автономен - человеку не требуется задавать мосту конкретные адреса. Так как мост изолирует траффик, когда передача не нужна, он может улучшить производительность перегруженной сети(заметим, что мосты работают исключительно хорошо при разделении загрузки по районам(сегментам) в среде рабочих станций, в которой группы рабочих станций большую часть своего траффика адресуют файл-серверу).
Обобщим вышеизложенное:
Адаптивный Ethernet-овский мост соединяет два сегмента Ethernetа, передавая кадры из одного в другой. Он использует адреса отправителей для того, чтобы узнать, в каком сегменте Ethernetа находится та или иная машина, и применяет полученную информацию к адресам получателя, чтобы не передавать пакеты в другой сегмент, когда это не нужно.
С точки зрения TCP/IP, Ethernetы, связанные мостом, просто являются другой формой физического сетевого соединения. Важным моментом является то, что:
Так как соединение с помощью физических проводов, обеспечиваемое мостами и повторителями, прозрачно для машин, использующих Ethernet, мы будем представлять Ethernetы, связанные мостами, как одну физическую сетевую систему.
Большинство коммерческих мостов являются более сложными и более надежными, чем это следует из нашего описания. При включении питания они ищут другие мосты и приобретают информацию о топологии сети. Они используют алгоритм распределенного дерева распространения(spanning-tree) при принятии решения о том, куда передавать кадры. В частности, мосты решают, как распространять широковещательные пакеты так, чтобы по каждому кабелю передавалась только одна копия широковещательного кадра. Без такого алгоритма для Ethernetов и мостов, связанные в виде кольца, такие пакеты привели бы к катастрофическим результатам, так как пришлось бы постоянно передавать широковещательные пакеты в обе стороны.
ProNET-10 - это имя коммерческого сетевого продукта для ЛВС, который является интересной альтернативой Ethernetу. Основанный на сетевых исследованиях в университетах, и созданный Proteon Incorporated, proNET-10 состоит из пассивной кабельной системы, которая соединяет компьютеры. Как и Ethernet, низкоскоростная версия работает со скоростью 10 Мбит/с, ограничена короткими расстояниями, и требует, чтобы присоединяемые компьютеры имели активные интерфейсы с ЭВМ.
В отличие от Ethernetа или других аналогичных шинных технологий, proNET-10 требует, чтобы компьютеры были соединены кабелями в одиночное кольцо, и использует технологию доступа, известную как передача маркера. Системы с передачей маркера отличает от других то, что в них доступ осуществляется путем последовательного использования всеми машинами сети. В любой момент времени ровно одна машина имеет маркер, который дает право этой машине передать пакет. После посылки этого пакета, машина передает маркер следующей машине по порядку. Поэтому, когда ни одна из машин ничего не посылает, они непрерывно передают маркер по кольцу; когда им всем нужно послать пакеты, они ждут своей очереди, чтобы послать их.
Хотя передача маркера может быть использована для шинных топологий типа Ethernetа, именно кольцевые топологии, такие, как та, что используется proNET-10, делают передачу маркера особенно простой, так как физические соединения определяют последовательность, в которой передается маркер. Главным является то, что данная машина не знает, кому она передает маркер. Мы вскоре увидим, почему циркуляция маркера, основанная на физическом порядке, важна, и как она может быть использована, чтобы сделать кольцо более надежным.
Чтобы понимать, как работает кольцо, нам нужно рассмотреть оборудование. Физически кольцевая сеть не является непрерывным кольцом - она состоит из соединений точка-точка между интерфейсами компьютеров сети. В каждом компьютере один провод передает входящие сигналы, а другой - выходящие сигналы. Концептуально каждый интерфейс компьютера работает в одном из трех режимов: режиме копирования, режиме передачи и режиме восстановления. Как показывает рисунок 2.6, первые два случая соответствуют нормальному режиму работы и отличаются наличием маркера у машины (в одном случае он есть, а в другом нет).
___ ----------------|<--|--------------| | |___| | | I1 | _|_ _|_ <---|-| | I2 | A | I4 |_V_| |_|_| | | | I3 | | _____ | |---------------|-| |-|------------| |_|_|_| | | V A
Рисунок 2.6 Сеть с маркерным кольцом, в которой интерфейс I3 находится в режиме передачи, владеет маркером и посылает пакет интерфейсу I2. Другие интерфейсы находятся в режиме копирования. Отправитель всегда получает обратно посланные им биты; другие интерфейсы выделяют копию пакета для компьютера, к которому они присоединены только в том случае, когда совпадают адреса.
Если интерфейс не владеет маркером, он работает в режиме копирования, читая биты из входящего провода и копируя их в выходящий кабель. В режиме копирования интерфейс также просматривает поток данных, чтобы найти пакеты, адресованные его машине, и помещает копию таких пакетов в память машины. Если же интерфейс владеет маркером, он работает в режиме передачи, посылая пакет по выходящему кабелю и проверяя его корректность при чтении пакета из входящего провода(после прохождения кольца пакет вернется по входящему проводу).
Важно понимать, что ProNET-10 - это технология ЛВС, которая имеет маленькие паузы при передаче. Созданное на основе экранированного медного кабеля, это кольцо может охватывать самое большее несколько смежных зданий. При использовании оптоволоконного кабеля кольцо может охватывать большие расстояния(например, целый университетский городок). В любом случае задержки распространения являются маленькими. Как следствие, сигналы могут распространяться по всему кольцу и возвращаться отправителю так быстро, что начало пакета успевает вернуться тогда, когда отправитель еще продолжает передавать. Преимущество коротких пауз при распространении заключается в том, что станция может быстро определить, не разорвано ли кольцо. Она может также определить, не появились ли ошибки в пакете из-за электрических помех или неисправного оборудования где-либо в кольце. Мы рассмотрим обе эти особенности ниже.
В отличие от Ethernetа, оборудование интерфейса proNET-10 не имеет фиксированных адресов, назначаемых производителем. Вместо этого каждый интерфейс поставляется с набором из 8 переключателей, которые позволяют системному администратору выбрать один из 255 возможных адресов(поэтому каждая сеть proNET-10 ограничена 255 машинами). Этот адрес должен быть выбран и установлен, используя физические переключатели на плате. Он не может быть быстро изменен, как только интерфейс установлен, а также не может быть изменен программно. Тем не менее, тот факт, что адрес является устанавливаемым, имеет два важных преимущества. Во-первых, это значит, что адреса proNET-10 могут иметь много меньший размер, чем адреса Ethernetа(8 бит вместо 48 бит). В-вторых, это значит:
Так как пользователи могут изменить адреса proNET-10 при установке плат, сетевой аппаратный адрес машины не нужно менять при замене оборудования интерфейса компьютера.
Конечно, то, что аппаратные адреса устанавливаемые, имеет и свой недостаток. В отличие от адресов Ethernetа, схема устанавливаемых адресов, используемая proNET-10, допускает конфликты адресов. Человек, устанавливающему адреса, должен быть уверен, что каждому интерфейсу в данном кольце назначен уникальный адрес от 0 до 254. Адрес из всех единиц(255) зарезервирован для широковещательного траффика. Как мы увидим позднее, при использовании proNET-10 с TCP/IP, тем, кто устанавливает адреса, следует избегать назначать компьютеру адрес ноль.
Рисунок 2.7 показывает формат кадра proNET-10. Длина полей указана в битах, так как сеть является биториентированной и не всегда выравнивает данные на границу байта. Оборудование сети требует, чтобы поле данных было целым числом октетов, облегчая передачу данных в память компьютера. Как и в Ethernetе, оборудование работает только с некоторыми полями в кадре; программное обеспечение работает с остальными полями и использует их. С точки зрения разработчика объединенной сети, это различие является несущественным.
начало адрес адрес тип данные конец четн. отказ сообщ. получ. отправ. кадра кадра сообщ. --------------------------------------------------------------- |10 бит| 8 бит|8 бит |24 бита|0-16352 бита|9 бит |1 бит|1 бит| ---------------------------------------------------------------
Рисунок 2.7 Формат кадра proNET-10. Поля не масштабированы.
Каждый кадр начинается с поля начала сообщения, за которым следует два октета адресов отправителя и получателя. Поле типа кадра состоит из 3 октетов, но только первый сейчас используется; остальные два должны быть равны 0. Вслед за данными идет поле Конец Сообщения, один бит четности и бит отказа. Сразу за концом кадра может следовать другой кадр или маркер. Заметим, что как и Ethernet, proNET-10 является самоидентифицирующимся. В отличие от Ethernetа, который использует сложную 32-битовую ЦКС для поиска ошибок передачи, proNET-10 использует только один бит четности. Чтобы понять, почему нужен только один бит, вспомним, что proNET-10 - это технология ЛВС с маленькими паузами при распространении. Поэтому, отправитель принимает копию кадра во время передачи и может просто сравнить биты в копии и передаваемые биты, чтобы обнаружить изменения. Фактически бит четности не нужен, за исключением проверки бита отказа.
Оборудование использует флаг, состоящий из семи единиц, чтобы не спутать такие поля, как конец сообщения, и данные пользователя. Маркер и начало кадра также начинаются с флага. Всякий раз, когда семь последовательных единиц встречаются в данных пользователя, оборудование модифицирует последовательность бит так, чтобы быт уверенным, что получатель отличит ее от флага. Получатель убирает эту модификацию, чтобы были приняты те же самые данные, которые были посланы.
Так как передача маркера полагается на то, что все компьютеры передают маркер другой машине, когда закончат передачу, авария на одном узле может остановить все кольцо. Предположим, например, что сбой или электрические помехи разрушили маркер. Если в кольцо не встроен механизм восстановления, вся передача будет прекращена. Для восстановления маркера при его потере на каждой станции proNET-10 запущены два таймера. Один таймер, называемый таймером флага, сбрасывается всякий раз, когда станция обнаруживает какую-либо передачу в кольце(т.е. кадр или маркер), а другой, называемый таймером маркера, сбрасывается всякий раз, когда появляется маркер. Если какой-либо из таймеров обнулился, когда станции нужно послать пакет, станция переходит в режим восстановления и в результате генерирует новый маркер для кольца. Дело в том, что в неработающем кольце маркер циркулирует постоянно. Поэтому таймер флага обнуляется быстро(после 3 мс), если в кольце не работает ни одна машина. Таймер маркера должен допускать передачу больших пакетов другими станциями, может быть даже всеми 255 станциями., поэтому он имеет гораздо большее время обнуления(400 мс). Кольцевые технологии, которые допускают большее число станций или более длинные пакеты, используют большее время обнуления(например, proNET-80 использует 700 мс). Обычно, первая станция, которая входит в режим восстановления, подразумевает, что она владеет маркером и передает пакет. Вслед за передачей пакета она передает маркер, как будто ничего не произошло. При передаче станция следит за кольцом, чтобы проверить полноту циркуляции пакета в кольце. Если пакет прошел кольцо без ошибок, то кольцо восстановлено и все начинает работать в обычном режиме. Если вдруг получится так(хотя это и маловероятно), что две станции одновременно попытаются передавать после разрыва кольца, они обнаружат ошибку, так как передаваемые ими пакеты не вернутся им обратно. Эти две станции подождут случайное время, а затем повторят попытку. Для гарантии, что они не будут ждать одинаковое количество времени, каждая станция использует время задержки, пропорциональное ее аппаратному адресу. Поэтому, если две станции начнут одновременно передавать пакеты, то только одна добьется успеха. Алгоритм восстановления как эффективен, так и надежен. Он гарантирует, что за несколько проходов кольца одна из станций примет решение, что она владеет маркером, а все остальные станции согласятся с этим.
На практике в большей части установок сети proNET-10 конфигурируются в виде звездообразных колец для повышения надежности. Идея состоит в том, чтобы использовать пассивный кабельный центр как концентратор(hub) в физической звездообразной топологии , несмотря на то что сеть логически работает как кольцо. Рисунок 2.8 иллюстрирует такое соединение.
реле для ЭВМ 1 кабельный центр ------------- / | интерфейс | / \ | для ЭВМ 1 |/ \ ------A-----/ \ | / \ ===========|===/======== | --V--/ | | -----|R1 |<----| | | | | | | интерфейс | | V-- | | интерфейс | | для ЭВМ 2 |<--->|R2 | |R4 |<--->| для ЭВМ 4 | ------------- | ----- ----- | ------------- | | ----- A | | |--->|R3 |-----| | | ----- | ========================
Рисунок 2.8 Соединение трех ЭВМ через пассивный кабельный центр. Так как она не потребляет энергии, реле R3 просто передает через себя сигналы. Логически сеть является кольцом; физически - это звезда.
На этом рисунке реле R3 не потребляет энергии, так как оно подключено к ЭВМ. R3 замыкает кольцо и соединяет R2 с R4. Так как другие реле потребляют энергию, они соединяют соответствующие ЭВМ с кольцом. Поэтому электрический сигнал, посланный с ЭВМ 4 передается через реле R4 к реле R1, затем к интерфейсу ЭВМ 1 , обратно на реле R1, по реле R2 и так далее.
Этот кабельный центр не имеет активных компонент, но использует чувствительные реле, получающие питание по соединению с ЭВМ. ЭВМ обеспечивает небольшой постоянный ток для питания реле, а также сигналы, кодирующие данные, по одному многожильному кабелю. Электроника в кабельном центре отделяет переменный ток от постоянного. Пока машина включена, реле в кабельном центре делает ее присоединенной к кольцу. При отключении машины ток перестает течь в кабельный центр и соответствующее реле изменяет свое состояние, отсоединяя свою ЭВМ и соединяя другие машины в кольце. Поэтому сеть продолжает работать, даже если некоторые из присоединенных машин отключены(конечно, авария машины может остановить сеть на несколько миллисекунд, пока оставшиеся узлы восстанавливают маркер). Помимо надежности, данный производитель разработал интерфейс proNET-10 состоящим из двух плат, контроллера, который может работать в режиме копирования и восстановления маркера без помощи ЦП, и интерфейса с компьютером, который полагается на ЦП при чтении и записи пакетов. Использование этих двух плат изолирует остальную сеть от сбоев операционной системы на данной машине.
Назад | Содержание | Вперед
Второе издание книги профессора Дугласа Комера является введением и обзором TCP/IP. Существовала большая необходимость в статье или книге для тех, кто только начал разбираться в протоколах TCP/IP. Эта книга удовлетворяет эту нужду. Написание введения в TCP/IP для начинающих - очень трудная задача. Но обьединив обьяснение общих принципов взаимодействия компьютеров с конкретными примерами для связки протоколов TCP/IP, Дуглас Комер написал очень понятную книгу.
Хотя эта книга и написана специально о связке протоколов TCP/IP, она также является хорошей книгой для изучения протоколов взаимодействия компьютеров вообще. Принципы архитектуры, уровни, мультиплексирование, инкапсуляция, адресация и отображение адресов, маршрутизация и именование аналогичны для любой связки протоколов, хотя, конечно, и отличаются в деталях(Смотри глав 3, 10, 18, 20, и 26).
Протоколы взаимодействия компьютеров не делают ничего сами. Как и операционные системы, они обслуживают прикладные процессы. Процессы - это активные элементы, которые запрашивают взаимодействие и являются истинными отправителями и получателями передаваемых данных. Различные уровни протоколов похожи на различные уровни операционных систем, особенно файловой системы. Понимание архитектуры протоколов похоже на понимание архитектуры операционных систем. В этой книге Дуглас Комер придерживается восходящего подхода - начинает с физических сетей и двигается вверх по уровням абстракции к прикладному уровню.
Так как прикладные процессы - это активные элементы, использующие взаимодействие , обеспечиваемое протоколами, то TCP/IP - это механизм "межпроцессного взаимодействия"(IPC). В то время как проводятся эксперименты с целью организации межпроцессного взаимодействия образом, похожим на тот, который применяется в операционных системах, на основе IP, главное внимание в этой книге сосредоточено на более традиционных приложениях, которые используют дейтаграммы UDP или логические соединения TCP для организации IPC(МПВ)(Смотри главы 11, 12, 18, 20 и 22-25). Обычно в операционных системах существует набор функций, обеспечиваемых операционной системой для прикладных процессов. Этот интерфейс системных вызовов обычно включает вызовы для открытия, чтения, записи и закрытия файлов помимо всего прочего. Во многих системах существуют аналогичные системные вызовы для функций МПВ, включая сетевое взаимодействие. Как пример такого интерфейса, Дуглас Комер приводит обзор интерфейса портов(socket)(Смотри главу 21).
Одной из главных идей, лежащих в основе TCP/IP и вынесенной в название книги, является межсетевой обмен. Мощь коммуникационной системы напрямую связана с числом сущностей в этой системе. Телефонная сеть очень полезна, так как (почти) все телефоны находятся в одной сети(по крайней мере, так кажется пользователям). Системы компьютерного взаимодействия и сети в настоящее время отделены друг от друга и фрагментированы. Цель взаимного соединения и взаимодействия для создания одной мощной компьютерной коммуникационной сети являлась основной при проектировании TCP/IP. Самым главным для межсетевого обмена являются адресация(Смотри главы 4, 5, 6 и 17) и универсальный протокол - Межсетевой протокол(Internet Protocol)(Смотри главы 7, 8 и 9). Конечно, индивидуальные сети имеют свои собственные протоколы, которые используются для того чтобы нести дейтаграммы IP(Смотри главу 2), и должно существовать отображение между адресами индивидуальных сетей и адресами IP(Смотри главы 5, 6 и 19).
Для организации межсетевого обмена индивидуальные сети должны быть соединены. Соединяющие их устройства называются шлюзами(gateway) . Более того, эти шлюзы должны иметь некоторые процедуры для передачи данных от одной сети к следующей. Данные передаются в форме дейтаграмм IP и назначение указывается с помощью адреса IP, но шлюзы должны принимать решение о направлении передачи дейтаграммы на основе адреса IP и своих знаний о связности сетей, составляющих Интернет. Процедуры для распространения информации о текущей связности называются алгоритмами маршрутизации и являются в настоящее время предметом многих исследований(Смотри главы 13, 14, 15, 16 и 17).
Как и все коммуникационные системы, связка протоколов TCP/IP - это незавершенная система. Она развивается, отражая меняющиеся требования и новые возможности. Поэтому эта книга является по существу, представлением о TCP/IP в начале 1990 года. И, как указывает Дуглас Комер, существует много проблем(смотри главу 27). Одной из быстро меняющихся областей является сетевое управление(Смотри главу 25).
Большинство глав заканчиваются небольшим количеством ссылок на материал для дальнейшего изучения. Большинство из них - это документы серии RFC. Эта серия является результатом политики общедоступности идей и спецификаций протоколов , разработанных исследователями и разработчиками сообщества TCP/IP. Эта доступность базовой и детальной информации об этих протоколах, и доступность их первых реализаций явилась основной причиной их нынешнего широкого использования. Передача в общее пользование документации с такой степенью детализации является необычной для исследовательских проектов, но дает значительное ускорение разработки компьютерного взаимодействия(Смотри приложения 1, 3 и 4).
Эта книга вобрала в себя информацию о различных частях архитектуры и протоколов TCP/IP и сделала ее доступной. Эта публикация является очень значительным шагом в эволюции компьютерного взаимодействия.
Так как мы уже рассмотрели низкоуровневые детали передачи в отдельных сетях, основу, на которой строится взаимодействие компьютеров. Эта глава делает большой концептуальный скачок, описывая схему, которая позволяет нам объединять разнообразные сетевые технологии в единое целое. Нашей главной целью является схема, которая скрывает детали лежащего в ее основе сетевого оборудования, в то же время обеспечивая универсальные средства взаимодействия. Основным результатом является высокоуровневая абстракция, которая обеспечивает основу для всех проектных решений. Последующие главы покажут, как мы используем эту абстракцию для построения необходимых уровней межсетевого коммуникационного математического обеспечения и как это программное обеспечение скрывает лежащие в его основе механизмы физической передачи. Следующие главы также покажут, как приложения используют получившуюся коммуникационную систему.
Разработчики используют два различных подхода для скрытия деталей сетевого взаимодействия, используя прикладные программы для работы в неоднородной среде или скрывая эти детали в операционной системе. Ранние взаимодействия неоднородных сетей обеспечивали единообразие с помощью прикладных программ. В таких системах прикладная программа, работая на каждой машине в сети, знала детали сетевого взаимодействия для этой машины и взаимодействовала с прикладными программами по этим соединениям. Например, некоторые системы электронной почты состояли из программ-отправителей писем(mailer), которые передавали письма по-одному. Путь от источника до получателя мог включать различные сети, но это не имело значения до тех пор, пока системы электронной почты на всех машинах были способны работать друг с другом.
Использование прикладных программ для скрытия сетевых деталей может показаться на первый взгляд естественным, но такой подход приводит к ограниченному, громоздкому взаимодействию. Добавление новых возможностей к этой системе означает создание новой прикладной программы на каждой машине. Добавление нового сетевого оборудования означает модификацию или создание новых программ для всех возможных приложений. На данной машине каждая программа знает сетевые соединения для этой машины, что приводит к дублированию кода.
Пользователи, имеющие опыт работы с сетями, знают, что когда-нибудь во взаимодействии будут участвовать сотни или тысячи сетей; тогда никто не будет в состоянии создать все необходимые прикладные программы. Более того, для успешного использования пошаговой схемы взаимодействия требуется корректность всех прикладных программ на всем пути. Если программа на промежуточной машине аварийно завершится, ни отправитель, ни получатель не смогут обнаружить ошибку или исправить ее. Поэтому системы, использующие промежуточные программы, не могут гарантировать надежного взаимодействия.
Альтернативой обеспечению взаимодействия прикладными программами являются системы, основанные на соединении сетевого уровня. Соединение на сетевом уровне обеспечивает механизм, который доставляет пакеты от их настоящего отправителя к настоящему получателю в реальном масштабе времени. Коммутация для передачи маленьких блоков, а не файлов или больших сообщений имеет ряд преимуществ. Во-первых, она напрямую отображается в базовое сетевое оборудование, что делает ее очень эффективным. Во-вторых, она разделяет процессы передачи данных от прикладных программ, позволяя машинам обрабатывать сетевой траффик, не зная какие приложения передают его. В-третьих, она делает систему гибкой, делая возможным создание сетевых протоколов общего назначения. В-четвертых, она позволяет администраторам сетей добавлять новые сетевые технологии, модифицируя программное обеспечение сетевого уровня или добавляя к нему новую часть и не внося при этом никаких изменений в прикладные программы. Ключевым понятием при разработке универсального взаимодействия сетевого уровня является понятие абстрактной коммуникационной системы, известное как межсетевой обмен(internetworking). Понятие объединенной сети(internetwork или internet) является очень мощным. Оно отделяет понятие взаимодействия от деталей сетевых технологий и скрывает низкоуровневые детали от пользователя. Более того, оно определяет все проектные решения при разработке программного обеспечения и объясняет, как работать с физическими адресами и маршрутами. После перечисления основных причин организации межсетевого обмена мы рассмотрим свойства объединенной сети более детально. Напомним, что мы начали с двух фундаментальных замечаний о разработке коммуникационных систем:
Первое замечание является техническим. Локальные сети, обеспечивающие наивысшую скорость взаимодействия, ограничены в своих размерах; глобальные сети охватывают большие районы, но не могут обеспечить высокоскоростные соединения. Нет одной сетевой технологии, удовлетворяющей всем нуждам, поэтому мы вынуждены использовать несколько базовых аппаратных технологий.
Второе замечание очевидно. В конечном счете, нам хотелось бы иметь возможность организовать взаимодействие между любыми двумя точками. В частности, мы хотели бы иметь коммуникационную систему, не заключенную в границы физических сетей.
Нашей целью является создание унифицированного, объединенного взаимодействия сетей, поддерживающих универсальное коммуникационное средство. Внутри каждой сети компьютеры будут использовать базовые коммуникационные примитивы, зависящие от технологии и похожие на те, что описаны в главе 2. Новое программное обеспечение, вставленное между механизмами взаимодействия, зависящими от технологии, и прикладными программами, будет скрывать низкоуровневые детали и сделает так, что группа сетей будет казаться одной большой сетью. Такая схема взаимодействия называется объединенной сетью(internet).
Идея создания объединенной сети следует стандартному подходу при разработке систем: разработчики придумывают высокоуровневое вычислительное средство и дорабатывают имеющуюся вычислительную технологию, добавляя уровни программного обеспечения до тех пор, пока они не получат систему, эффективно реализующую придуманное ими высокоуровневое средство. Следующий раздел опишет первый шаг при разработке, более точно определив цель.
Понятие универсального средства важно, но само по себе оно не охватывает все идеи, подразумевавшиеся нами для унифицированной объединенной сети, так как может существовать много реализаций универсальных средств. В нашем проекте мы хотим скрыть базовую архитектуру объединенной сети от пользователя. То есть, мы не хотим требовать от пользователя или прикладной программы знания деталей аппаратных взаимодействий, используемых в объединенной сети. Мы также не хотим предписывать топологию сетевых взаимодействий. В частности, добавление новой сети к интернету не должно означать ее соединение с центральным маршрутизатором, а также не должно означать добавление прямых физических соединений между новой сетью и всеми существующими сетями. Мы хотим иметь возможность посылать данные через промежуточные сети даже если они не соединены напрямую с машинами отправителя и получателя. мы хотим, чтобы все машины в интернете имели идентификаторы из одного универсального множества машинных идентификаторов(которые могут представляться как имена или адреса).
Наше понятие унифицированного интернета также включает идею сетевой независимости для интерфейса с пользователем. То есть, мы хотим, чтобы набор операций, используемых для установления взаимодействия или передачи данных, оставался независимым от базовых сетевых технологий и машины получателя. И конечно, пользователю не следует знать топологию сетевых взаимодействий при написании взаимодействующих прикладных программ.
Мы уже видели, как машины присоединяются к отдельным сетям. Возникает вопрос: "Как соединяются сети между собой для создания объединенной сети ?" Ответ состоит из двух частей. Физически две сети могут соединяться только с помощью компьютера, присоединенного к каждой из них. Физическое соединение, тем не менее, не обеспечивает подразумевавшееся нами взаимодействие, так как такое соединение не гарантирует, что компьютер сможет взаимодействовать с другими машинами, с которыми он хотел бы это сделать. Чтобы иметь надежный интернет, нам нужно, чтобы компьютеры были согласны передавать пакеты из одной сети в другую. Компьютеры, соединяющие две сети и передающие пакеты из одной в другую, называются межсетевыми шлюзами(gateway) или межсетевыми маршрутизаторами(router).
Рассмотрим пример, состоящий из двух физических сетей, показанный на рисунке 3.1. На этом рисунке машина G присоединена как к сети 1, так и к сети 2. Чтобы G работал как шлюз, он должен принимать пакеты из сети 1, предназначенные машинам в сети 2 и передавать их туда. Аналогично, G должен принимать пакеты из сети 2, которые предназначены машинам в сети 1 и передавать их туда.
---------------- ---------------- | | ----- | | | Сеть 1 |--------| G |--------| Сеть 2 | | | ----- | | ---------------- ----------------
Рисунок 3.1 Две сети, соединенные шлюзом G.
Когда соединения интернета становятся более сложными, шлюзам нужно знать о топологии интернета за пределами сетей, к которым они присоединены. Например, рисунок 3.2 показывает три сети, соединенные между собой двумя шлюзами.
---------- ---------- ---------- | | ------ | | ------ | | | Сеть 1 |-| G1 |-| Сеть 2 |-| G2 |-| Сеть 3 | | | ------ | | ------ | | ---------- ---------- ----------
Рисунок 3.2 Три сети, соединенные между собой двумя шлюзами
В этом примере шлюз G1 должен перемещать из сети 1 в сеть 2 все пакеты, предназначенные для машин либо в сети 2, либо в сети 3. По мере того, как размер интернета увеличивается, задача шлюза по принятию решений о том, куда посылать пакеты, становится более сложной.
Идея шлюза кажется простой, но она важна, потому что она обеспечивает способ взаимного соединения сетей, а не машин. Фактически, мы уже установили принцип взаимного соединения, используемый повсеместно в интернете:
В интернете TCP/IP компьютеры, называемые шлюзами, обеспечивают все соединения между физическими сетями.
Вы можете ожидать, что шлюзы, которые знают, как направить пакеты к их получателю, являются большими машинами, имеющими достаточное количество основной или внешней памяти для хранения информации о каждой машине в интернете, к которому они присоединены. Тем не менее, шлюзы, используемые в интернетах TCP/IP, обычно являются миникомпьютерами; они часто имеют небольшую дисковую память или не имеют ее вообще, а также имеют ограниченную оперативную память. Причина использования маленьких межсетевых шлюзов заключена в следующем утверждении:
Шлюзы маршрутизируют пакеты, основываясь на сети получателя, а не на машине получателя. Если маршрутизация основана на сетях, то количество информации, которую нужно хранить шлюзу, пропорционально количеству сетей в интернете, а не числу машин в нем. Так как шлюзы играют ключевую роль в межсетевом взаимодействии, мы вернемся к ним в следующих главах и рассмотрим детали того, как они работают и как они получают информацию о путях. А пока мы будем предполагать, что существует реальная возможность иметь корректные пути для всех сетей в каждом шлюзе в интернете. Мы будем также предполагать, что только шлюзы обеспечивают соединение между физическими сетями в интернете.
Напомним, что TCP/IP разработан, чтобы обеспечить универсальное взаимное соединение между машинами, не зависящее от конкретных сетей, к которым они присоединены. Поэтому, мы хотим, чтобы пользователь представлял себе интернет как единую виртуальную сеть, к которой присоединены все машины, не смотря на то, что физически это не так. Рисунок 3.3а показывает, как представление об интернете как об одной большой сети, а не как о группе сетей, упрощает детали и делает легким для пользователя концептуализацию взаимодействия. Помимо шлюзов, соединяющих физические сети, на каждом хосте требуется программное обеспечение доступа к интернету, чтобы прикладные программы могли использовать интернет так, как будто это одна физическая сеть. Преимущество соединения на сетевом уровне становится ясным. Так как прикладные программы, взаимодействующие с помощью интернета, не знают детали организации соединений, они могут запускаться в неизменном виде на любой машине. Так как детали физических сетевых соединений для каждой машины скрыты в межсетевом программном обеспечении, при появлении новых физических соединений или удалении старых требуется менять только это программное обеспечение. Фактически, можно оптимизировать маршрутизацию, изменив физические соединения, но не перекомпилировав при этом прикладные программы.
Второе преимущество организации взаимодействия на сетевом уровне менее важное: пользователям не нужно знать или помнить, как соединены сети или какой траффик они передают. Прикладные программы могут быть написаны таким образом, что будут работать независимо от физической связности. Фактически, сетевые администраторы могут свободно изменять внутренние части базовой архитектуры интернета, не меняя прикладные программы в большинстве компьютеров, присоединенных к интернету(конечно, сетевое программное обеспечение должно быть переконфигурировано, когда компьютер перемещается в новую сеть).
Как показывает рисунок 3.3б, шлюзы не обеспечивают прямое соединение между всеми парами сетей. Траффику, передающемуся от одной машины к другой, может понадобиться пройти через несколько промежуточных сетей. Поэтому, сети, участвующие в интернете, являются аналогами высокоскоростных магистралей(highway) в США: каждая сеть согласна передавать транзитный траффик в обмен на право посылать траффик через весь интернет. Типичные пользователи даже не ощущают, что по их локальной сети проходит дополнительный траффик.
В главе 2 был сделан обзор сетевого оборудования, используемого для построения интернетов TCP/IP и проиллюстрировала большое разнообразие технологий. Мы описали интернет как набор взаимодействующих, взаимосвязанных сетей. На данный момент важно уяснить фундаментальное понятие: с точки зрения интернете, любая коммуникационная система, способная передавать пакеты, считается одной сетью, независимо от ее задержек при передаче, пропускной способности, максимального размера пакета или географических размеров. В частности, рисунок 3.3б использует прямоугольник одинаковых размеров для обозначения всех физических сетей, так как TCP/IP считает их равными, несмотря на их разницу. Итак,
Межсетевые протоколы TCP/IP считают все сети равными. Локальная сеть, такая как Ethernet, глобальная сеть, такая как магистральная сеть NSFNET, или соединение точка-точка между двумя машинами - каждый из них считается сетью.
Читатели, не привыкшие к архитектуре интернета, могут найти неприемлемым такой упрощенный взгляд на сети. По существу, TCP/IP определяет абстрактное понятие "сеть", которое скрывает детали физических сетей; мы увидим, что такие абстракции делают TCP/IP очень мощным.
--- --- |Э|-- --|Э| --- | | --- /---------\ --- --- | интернет |----|Э| |Э|-| | --- --- \ | \ / | \------/\ --- --- -|Э| |Э| --- --\ / ---ЭВМ---- (а) --- --- -----интернет |Э|-- --|Э| | --- | | --- V --- /-------------------------\ / --|Э| | | |-----| |/ --- | ++++ __ ++++ / | + +--||--+ +----------/ \ / ++++ -- ++++ физическая \ | -- | | сеть | | ||-| | | | | -- | V | --- --- | | -- | ++++ /---|----|Э| |Э|-|---++++--||---| + +---/ | --- --- \ + + -- ++++ / | ++++ | / | | | | | -- ++++ -- | \ ||-----+ +---||<-шлюз / \ ++++ / | \----------------------/ |Э| |Э| \ / ЭВМ----------- (б)
Рисунок 3.3 (а) Пользовательское представление об интернете TCP/IP, при котором кажется, что каждый компьютер присоединен к одной большой сети, и (б) структура физических сетей и шлюзов, обеспечивающая соединение
Наш краткий обзор интернетов оставил много вопросов без ответов. Например, вас может интересовать точная форма машинных адресов в интернете или то, как такие адреса соотносятся с физическими аппаратными адресами Ethernetа, proNET-10 или ARPANETа, описанными в главе 2. Следующие три главы ответят на эти вопросы. Они опишут формат адресов IP и проиллюстрируют, как ГВМ осуществляют отображение интернетовских адресов в физические и наоборот. Вы также можете захотеть узнать точно, как выглядит пакет при передаче его через интернет, или что происходит, когда на некоторые ГВМ или шлюзы пакеты прибывают быстрее, чем их можно обработать. Глава 7 ответит на эти вопросы. Наконец, вас может заинтересовать, как несколько прикладных программ, выполняющихся параллельно на одной машине, могут посылать и принимать пакеты из несколько мест сразу, не запутавшись при этом, или как интернетовские шлюзы получают информацию о путях. На все эти вопросы также будут даны ответы.
Хотя это сейчас еще не видно, направление, в котором мы двигаемся, позволит нам изучить как структуру, так и применения межсетевого протокольного программного обеспечения. Мы рассмотрим каждую часть, изучая концепции и принципы, а также технические детали. Мы начали с того, что изучили уровень физического взаимодействия, на основе которого строится интернет. Каждая из следующих глав будет рассматривать одну из частей межсетевого программного обеспечения, до тех пор, пока мы не поймем, как все эти части согласованы друг с другом.
Интернет - это более чем набор сетей, соединенных с помощью компьютеров. Межсетевой обмен подразумевает, что участвующие в нем системы подчиняются соглашениям, которые позволяют каждому компьютеру взаимодействовать со всеми остальными компьютерами. В частности, интернет позволит двум машинам взаимодействовать, даже если путь при взаимодействии между ними проходит по сети, к которой ни одна из них не присоединена. Такое взаимодействие возможно только в том случае, когда компьютеры подчиняются соглашениям о наборе универсальных идентификаторов и наборе процедур для перемещения данных к их конечному получателю. В интернете соединения между сетями образуются с помощью компьютеров, называемых 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 Какие процессоры использовались в шлюзах объединенного Интернета? Удивлены ли вы размерами и скоростью работы шлюзов? Почему?
Назад | Содержание | Вперед
Предыдущая глава определила интернет TCP/IP как виртуальную сеть, созданную в результате соединения физических сетей шлюзами. Эта глава описывает адресацию, существенный компонент, который помогает программному обеспечению TCP/IP скрывать детали физических сетей и создавать впечатление об интернете как о единой сущности.
Говорят, что коммуникационная система обеспечивает универсальное средство взаимодействия, если она позволяет любой ГВМ связываться с любой другой ГВМ. Чтобы сделать нашу коммуникационную систему универсальной, нам нужно определить приемлемый для всех метод идентификации компьютеров, которые присоединены к ней.
Часто идентификаторы ГВМ классифицируются как имена, адреса, или маршруты. Shoch[1978] предложил, чтобы имя идентифицировало, что такое объект, адреса идентифицировал, где он находится, а маршрут(путь) определял, как до него добраться. Хотя эти определения являются интуитивно ясными, они могут ввести в заблуждение. На самом деле имена, адреса и маршруты определяются на разных уровнях представления идентификаторов ГВМ, причем имена на самом верхнем, а маршруты - на самом нижнем. Вообще люди обычно предпочитают произносимые имена для идентификации машин, в то время как программное обеспечение лучше работает с более компактным представлением идентификаторов, которые мы считаем адресами. Все, что угодно могло бы быть выбрано в качестве универсальных идентификаторов ГВМ в TCP/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-адрес был определен таким образом, что можно быстро расширить идГВМ или идсет. Шлюзы используют для маршрутизации поле идсет и полагаются на его эффективное выделение.
Для простоты изложения предмета мы говорили, что межсетевой адрес идентифицирует ГВМ, но это не совсем так. Представим себе шлюз. присоединенный к двум физическим сетям. Как мы можем назначить ему один IP-адрес, если адрес кодирует как идентификатор сети, так и идентификатор ГВМ ? Мы не можем это сделать. Когда обычные компьютеры имеют два или более физических соединений, они называются многоадресными(multi-homed) ГВМ. Многоадресные ГВМ и шлюзы требуют нескольких адресов IP. Каждый адрес соответствует одному из соединений этой машины с сетью. Учет многоадресных ГВМ приводит нас к следующему важному выводу:
Так как IP-адреса кодируют как сеть, так и ГВМ в этой сети, они не описывают конкретную машину, а только соединение ее с сетью.
Поэтому шлюз, соединяющий N сетей, имеет N различных IP адресов, по одному на каждое сетевое соединение.
Мы уже отметили основное преимущество кодирования информации о сети в межсетевых адресах: оно делает возможной эффективную маршрутизацию. Другим преимуществом является то, что межсетевые адреса могут указывать как сети, так и отдельные ГВМ. По соглашению идГВМ, равный 0, никогда не назначается отдельной ГВМ. Вместо этого IP-адрес с нулевым идГВМ используется для ссылки на саму сеть. Подведем итоги:
Межсетевые адреса могут использоваться для указания как на сети, так и на отдельные ГВМ. По соглашению адрес сети имеет поле идГВМ, равное 0.
Другим важным преимуществом межсетевой схемы адресации является то, что она включает широковещательный адрес, который используется для ссылки на все ГВМ в данной сети. Согласно стандарту, любой идГВМ, состоящий из всех единиц, зарезервирован для широковещания(К сожалению, в ранней версии кода TCP/IP, входившего в состав BSD UNIX, все нули некорректно использовались для широковещания, и хотя впоследствии код BSD был исправлен, ошибка осталась в некоторых коммерческих системах, созданных на основе этого кода). Во многих сетевых технологиях(например, Ethernetе) широковещание может быть таким же эффективным, как обычная передача; в других(например, Cypress) широковещание поддерживается сетевым программным обеспечением, но требует значительно больше времени, чем простая передача. Некоторые сети не поддерживают широковещание вообще. Поэтому, широковещательный IP-адрес не гарантирует наличия или эффективности широковещательной доставки пакетов. Подводя итоги, можно сказать, что:
IP-адреса могут использоваться для указания широковещания и отображения его в аппаратное широковещание, если это возможно. По соглашению, широковещательный адрес имеет поле идГВМ со всеми битами, равными 1.
Технически, широковещательный адрес, который мы уже описали, называется направленным(directed) широковещательным адресом, так как он содержит как корректный идентификатор сети, так и корректный широковещательный адрес ГВМ. Направленный широковещательный адрес может однозначно интерпретироваться в любой точке интернета, так как он идентифицирует уникальным образом сеть получателя помимо указания на широковещание в этой сети. Направленные широковещательные адреса обеспечивают мощный(и чем-то опасный) механизм, который позволяет удаленной системе посылать один пакет, который будет распространен в режиме широковещания в указанной сети.
С точки зрения адресации, главным недостатком направленного широковещания является то, что оно требует знаний об адресе сети. Другая форма широковещательного адреса, называемая ограниченный широковещательный адрес или локальный сетевой широковещательный адрес, обеспечивает широковещательный адрес для локальной сети(сети отправителя), независимо от назначенного ей IP-адреса. Локальный широковещательный адрес состоит из 32 единиц(поэтому он иногда называется широковещательным адресом из всех единиц). ГВМ может использовать ограниченный широковещательный адрес в процессе своего запуска, до того, как он узнает свой IP-адрес или IP-адрес локальной сети. Как только ГВМ узнает IP-адрес своей сети, он может использовать направленное широковещание. Как правило, протоколы TCP/IP ограничивают широковещание до наименьшего возможного набора машин. Мы увидим, как это правило влияет на группы сетей, разделяющих адреса, в главе 6, когда будем рассматривать адресацию подсетей.
Мы видели, что поле, состоящее из единиц, может интерпретироваться как "все", как "все ГВМ" в сети. Вообще межсетевое программное обеспечение интерпретирует поля, состоящие из нулей, как символ "это". Такая интерпретация встречается повсеместно в литературе. Поэтому IP-адрес с идГВМ, равным 0, обозначает "этот ГВМ", а межсетевой адрес с идентификатором сети 0 обозначает "эта сеть". Конечно, использовать эти адреса нужно только в том контексте, в котором они интерпретируются однозначно. Например, если машина получила пакет, в котором адрес отправителя имеет поле идсет, установленное в 0, а идГВМ соответствует собственному, получатель делает вывод о том, что поле идсет означает эту сеть(т.е. сеть, из которой прибыл пакет). Использование идсет 0 особенно важно в тех случаях, когда ГВМ хочет взаимодействовать с помощью сети, но еще не знает свой сетевой IP-адрес. ГВМ временно использует идентификатор сети 0, а другие ГВМ в этой сети интерпретируют этот адрес как означающий "эта сеть". В большинстве случаев ответы будут содержать полный сетевой адрес, позволяя первоначальному отправителю запомнить его на будущее. Главы 9 и 20 рассмотрят в деталях, как ГВМ определяет свой сетевой адрес и как он использует идентификатор сети 0.
Помимо широковещания схема адресов IP поддерживает специальную форму групповой доставки, известную как групповая доставка(multicasting). Групповая доставка особенно полезна для сетей, в которых аппаратная технология поддерживает групповую доставку. Глава 17 рассматривает групповую адресацию и доставку более детально.
Кодирование информации о сети в межсетевом адресе имеет ряд недостатков. Самым очевидным недостатком является то, что адреса описывают соединения, а не ГВМ:
Если ГВМ перемещается из одной сети в другую, его 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.
Для удобства людей в технических документах или прикладных программах IP-адреса пишутся как четыре десятичных числа, разделенных десятичными точками, и каждое из этих чисел представляет значение одного октета IP-адреса(точечная десятичная нотация иногда называется точечной квадронотацией). Поэтому 32-битовый межсетевой адрес
10000000 00001010 00000010 00011110
записывается как
128.10.2.30
Мы будем использовать точечную десятичную нотацию при описании IP-адресов на протяжении всей оставшейся части этой книги.
Сетевой адрес класса А 127.0.0.0 зарезервирован для обратной связи и введен для тестирования взаимодействия между процессами на одной машине. Когда какая-либо программа использует адрес обратной связи для передачи данных, протокольное программное обеспечение в компьютере возвращает эти данные, ничего не посылая по сети. В литературе четко сказано, что пакет, посланный в сеть с адресом 127, не будет передаваться ни по какой сети. Более того, ГВМ или шлюз никогда не должен распространять информацию о маршрутах для сети с номером 127; этот адрес не является адресом сети.
На практике IP использует лишь комбинации из нулей("этот") или из всех единиц("все"). Рисунок 4.3 показывает все имеющиеся случаи.
--------------------------------- | все нули | Этот ГВМ* --------------------------------- --------------------------------- | все нули | ГВМ | ГВМ в этой сети* --------------------------------- --------------------------------- Ограниченное | все единицы | широковещание --------------------------------- (локальная сеть)** --------------------------------- Направленное | сеть | все единицы | широковещание --------------------------------- в сети** --------------------------------- | 127 | все, что угодно | Обратная связь*** ---------------------------------
* Разрешено только при загрузке
системы и не может быть адресом
получателя
** Не может быть адресом отправителя
*** Никогда не будет передан в сеть
Рисунок 4.3 Специальные формы IP-адресов, включая допустимые комбинации нулей("это") и единиц("все"). Длина сетевой части при направленном широковещании зависит от класса сетевого адреса.
Как указано в замечаниях к рисунку, использование всех нулей для сети допустимо только во время загрузки системы. Оно временно позволяет машине взаимодействовать. Как только машина узнала свой настоящий IP-адрес, она должна перестать использовать сеть 0.
Чтобы быть уверенным в том, что сетевые части Интернетовских адресов являются уникальными, все Интернетовские адреса назначаются одним ведомством, Сетевым Информационным Центром(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а.
Для уяснения схемы адресации в 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а.
Чтобы создать интернет, независимый от архитектуры конкретной машины или от сетевого оборудования, мы должны определить стандартное представление данных. Посмотрим, что происходит, когда одна машина посылает 32-битовое целое число другой машине. Физическое оборудование передает последовательность бит от первой машины ко второй, не меняя их порядка. Тем не менее, не все машины хранят 32-битовые целые числа одинаково. В одних (называемых "с наименьшего конца") младший адрес памяти содержит самый младший байт целого числа. В других (называемых "с наибольшего конца") младшая ячейка памяти хранит старший байт числа. А некоторые все еще запоминают целые числа в группах 16-битовых слов, причем младшие адреса содержат младшее слово числа, но байты в этих словах поменялись своими местами. Поэтому, прямое копирование байт с одной машины на другую может изменить значение числа.
Стандартизация порядка байт для целых чисел особенно важна для интернета, так как межсетевые пакеты содержат двоичные числа, указывающие такую информацию, как адрес назначения и длина пакета. Такие числа должны пониматься как отправителем, так и получателем. Протоколы TCP/IP решают проблему порядка байт, определяя стандартный сетевой порядок байт, который должны использовать все машины для двоичных полей в межсетевых пакетах. Каждый ГВМ преобразует двоичные элементы из локального представления в стандартный сетевой порядок перед передачей пакета; он преобразует сетевой порядок байт в свой порядок при приеме пакета. Естественно поле данных пользователя в пакете не обрабатывается по этому стандарту - пользователи вольны форматировать свои данные так, как они пожелают. Конечно, большинство пользователей полагается на стандартные прикладные программы и не сталкивается с проблемой порядка байт напрямую. Межсетевой стандарт порядка байт определяет, что целые числа посылаются таким образом, что самый старший(значимый) байт передается первым(т.е. в стиле "с наибольшего конца"). Если посмотреть на последовательность байт пакета тогда, когда он передается от одной машины к другой, то у двоичного целого в этом пакете самый старший байт находится ближе всего к началу пакета, а самый младший байт находится ближе всего к концу пакета. Было выдвинуто много аргументов в пользу использования того или иного представления данных, и межсетевой стандарт до сих пор время от времени подвергается критике. Тем не менее, все согласились с тем, что такой стандарт необходим, и точная форма его не так уж и важна.
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 Отличается стандартный сетевой порядок байт от порядка байт в вашей машине ?
Назад | Содержание | Вперед
Мы описали схему адресации TCP/IP, в которой каждому ГВМ назначается 32-битовый адрес и сказали, что интернет ведет себя как виртуальная сеть при использовании этих назначенных адресов для посылки и приема пакетов. Мы также рассмотрели несколько физических сетевых технологий и заметили, что две машины в данной физической сети могут взаимодействовать только в том случае, если каждая из них знает физический сетевой адрес другой машины. О чем мы не упоминали, так это о том, как ГВМ или шлюз отображает IP-адрес в корректный физический адрес, когда ему нужно послать пакет по физической сети. Эта глава рассматривает это отображение, показывая, как оно реализуется для двух самых распространенных схем физических адресов.