double arrow

Таненбаум Э. Компьютерные сети (4е издание)


Эндрю Таненбаум получил степень бакалавра естественных наук в Массачусетском технологическом институте и степень доктора в Калифорнийском университете в Беркли. В настоящее время является профессором Амстердамского университета, где возглавляет группу разработчиков компьютерных систем. Кроме того, Э. Таненбаум возглавляет факультет вычислительной техники (межвузовскую аспирантуру, занимающуюся исследованиями в области современных параллельных систем, распределенных систем и систем обработки и формирования изображений).

1.4 Основы сетевых технологий

Телекоммуникационные сети представляют собой комплекс аппаратных и программных средств, обеспечивающих передачу информационных сообщений между абонентами с заданными параметрами качества. Сообщение – форма представления информации, удобная для передачи на расстояние. Сообщение отображается изменением какого-либо параметра информационного сигнала (электромагнитные сигналы в сетях).

При создании сетей телекоммуникаций невозможно соединить всех абонентов между собой отдельными (выделенными) линиями связи. Это нецелесообразно экономически и невыполнимо практически. Поэтому соединение многочисленных абонентов (А), находящихся на большом расстоянии, обычно производится через транзитные (телекоммуникационные) узлы (ТУ) связи.




Рис. 1.1. Телекоммуникационная сеть

Таким образом, телекоммуникационная сеть образуется совокупностью абонентов (А) и узлов связи, соединенных линиями (каналами) связи. Узлы ТУ производят коммутацию поступившего сообщения с входного порта (интерфейса) на выходной. Например, в сети на рис. 1.1 при передаче сообщения от абонента А2 абоненту А6 транзитный узел ТУ1 производит коммутацию сообщения с входного интерфейса В на выходной С, транзитный узел ТУ3 – с входного интерфейса В на выходной Е. При этом формируется определенный маршрут, по которому передается сообщение. Процесс формирования маршрута получил название коммутация. Коммутацией также называют передачу (продвижение) сообщения с входного интерфейса на выходной.

В некоторых сетях все возможные маршруты уже созданы и необходимо только выбрать наиболее оптимальный. Процесс выбора оптимального маршрута получил название маршрутизация, а устройство, ее реализующее, – маршрутизатор. Выбор оптимального маршрута узлы производят на основе таблиц маршрутизации (или коммутации) с использованием определенного критерия – метрики.

Таким образом, различают сети с коммутацией каналов, когда телекоммуникационные узлы выполняют функции коммутаторов, и с коммутацией пакетов (сообщений), когда телекоммуникационные узлы выполняют функции маршрутизаторов. В сетях с коммутацией каналов канал создается до передачи сообщения.



Эти два вида сетей используются для передачи двух различных видов трафика. Сети с коммутацией каналов обычно передают равномерный (потоковый) трафик – например, телефонные сети. В сетях передачи данных с пульсирующим трафиком применяется коммутация пакетов (сообщений), например, в компьютерных сетях.

Различие коммутации пакетов или сообщений состоит в том, что сообщение может быть очень большим. Поэтому если в нем обнаруживается ошибка, то повторно нужно передавать все сообщения большого объема. В сетях с коммутацией пакетов большое сообщение предварительно разбивается на сравнительно небольшие пакеты (сегменты). Поэтому при потере или искажении части сообщения повторно передается только потерянный пакет (сегмент).

В настоящее время в соответствии с концепцией Единой сети электросвязи Российской Федерации создаются сети нового (следующего) поколения (Next Generation Network – NGN), в которых все виды трафика передаются по единой сети связи в цифровой форме. Подобные сети также называют мультисервисными (Internet Multi Service – IMS), в отличие от ранее существовавших моносервисных сетей.

В сетях NGN обеспечивается слияние ( конвергенция ) всех существующих сетей в единую информационную сеть для передачи мультимедийной информации. Пользователи такой сети должны иметь широкий выбор услуг с гарантированным качеством, что обеспечивается соответствующим уровнем управления, транспортным уровнем и уровнем доступа пользователей к мультисервисной сети (рис. 1.2).




Рис. 1.2. Уровни мультисервисной сети NGN

Транспортный уровень сети NGN создается на базе IPсетей с распределенной коммутацией пакетов. Доступ к транспортной сети обеспечивается через соответствующие устройства и шлюзы.

Сети следующего поколения NGN обеспечивают широкий набор услуг с гибкими возможностями по их управлению. Телекоммуникационные сети нового поколения используются для передачи различных видов информации: дискретных данных, аудио и видеоинформации. Услуга передачи указанной триады (голоса, данных и видеоинформации) по единой мультисервисной сети получила название Triple Play.

На рис. 1.3 приведен пример структурной схемы сети телекоммуникаций, в которой пользователи (абоненты) через сети доступа подключаются к магистральной сети, обеспечивающей транспорт сообщений. В ряде случаев абонентам удобно объединяться в локальные сети, функционирующие в рамках ограниченного пространства (аудитория, здание, группа зданий).


Рис. 1.3. Структурная схема телекоммуникационной сети

Для создания маршрута в разветвленной сети необходимо задавать адреса источника и получателя сообщения. Различают физические и логические адреса. Логические адреса принадлежат пользователям (абонентам), а физические обычно адресуют соответствующие интерфейсы телекоммуникационных узлов и абонентских устройств.

1.5 Классификация сетей передачи данных

Методы и устройства, используемые в вычислительных (компьютерных) сетях передачи данных, широко применяются при создании сетей NGN. Поэтому в настоящем курсе лекций основное внимание уделено аппаратным и программным средствам вычислительных (компьютерных) сетей, т. е. сетей передачи данных, на базе которых и создаются современные мультисервисные сети. В сетях передачи данных (компьютерных или вычислительных) поток может быть представлен различными информационными единицами: битами, байтами, кадрами, пакетами, ячейками, образующими информационный поток. Сети передачи данных, как правило, относятся к сетям с коммутацией пакетов.

Согласно одной из классификаций сети передачи данных подразделяются на локальные и глобальные (рис. 1.4). Сеть может размещаться на ограниченном пространстве, например, в отдельном здании, в аудитории. При этом она называется локальной вычислительной сетью – ЛВС (Local Area Network – LAN ). Основными технологиями локальных вычислительных сетей, которые применяются в настоящее время, являются Ethernet, Fast Ethernet, Gigabit Ethernet. Другие технологии ЛВС (Token Ring, 100VGAnyLAN, FDDI и др.) используются редко.


Рис. 1.4. Классификация сетей передачи данных

Совокупность нескольких локальных сетей называют составной, распределенной или глобальной сетью (Internetwork, Internet). В составную сеть могут входить подсети (Subnet) различных технологий. Крупные фирмы (корпорации) создают свои собственные корпоративные сети (Intranet), которые используют технологии как глобальных, так и локальных сетей. Таким образом, объединение пользователей, расположенных на широком географическом пространстве, например в разных городах, для совместного использования информационных данных, производится с помощью глобальных вычислительных сетей – ГВС (Wide Area Network – WAN ).

Глобальные сети передачи данных часто классифицируют (рис. 1.4) на:

· сети с коммутацией каналов;

· сети, использующие выделенные линии;

· сети с коммутацией пакетов.

Сети с коммутацией каналов и с использованием выделенных линий строят на основе различных сетевых технологий. При этом применяются следующие технологии и линии связи:

· цифровые линии, которые бывают постоянные, арендуемые, а также коммутируемые. В цифровых линиях применяют технологии плезиохронной цифровой иерархии (Plesiochronous Digital Hierarchy – PDH ), синхронной цифровой иерархии (Synchronous Digital Hierarchy – SDH ), а также технологии оптических линий связи спектрального уплотнения по длине волны (Wavelength Division Multiplexing – WDM, Dense WDM – DWDM );

· цифровые сети интегральных служб с коммутацией каналов (Integrated Services Digital Network – ISDN );

· цифровые абонентские линии (Digital Subscriber Line – DSL );

· аналоговые выделенные линии и линии с коммутацией каналов (dialup) с применением модемов, т. е. аналоговые АТС.

Технологии PDH и SDH характеризуются высокой скоростью передачи данных. Например, скорость передачи данных по сетям технологии PDH составляет от 2 Мбит/с до 139 Мбит/с; технологии SDH – от 155 Мбит/с до 2,5 Гбит/с и выше. Дальнейшее увеличение скорости передачи данных достигнуто в системах со спектральным уплотнением по длине волны (технологии WDM и DWDM) на волоконнооптических кабелях. Основными аппаратными средствами высокоскоростных технологий с коммутируемыми цифровыми линиями являются мультиплексоры ( MUX ).

Широкое распространение в настоящее время получили сети с коммутацией пакетов, в которых применяются следующие сетевые технологии:

· сети на основе технологии виртуальных каналов (X.25; сети трансляции кадров FR – Frame Relay;

· сети ATM – Asynchronous Transfer Mode);

· сети технологии IP, использующие дейтаграммный метод передачи сообщений.

В сетях с коммутацией пакетов могут использоваться технологии виртуальных каналов, применяемые в сетях X.25, Frame Relay, ATM, или технологии передачи дейтаграммных сообщений – сети IP в зависимости от предъявляемых требований.

Технологии виртуальных каналов предусматривают предварительное соединение конечных узлов (источника и назначения), при этом прокладывается маршрут (виртуальный канал), по которому затем передаются данные. Получение данных подтверждается приемной стороной. Технология X.25 ориентирована на ненадежные аналоговые линии связи, поэтому характеризуется низкой скоростью передачи данных (до 48 Кбит/с). Однако данная технология применяется до настоящего времени, например в сетях банкоматов, изза своей высокой надежности при ненадежных линиях. Технология Frame Relay обеспечивает более высокую по сравнению с Х.25 скорость передачи данных – до 24 Мбит/с. Но линии связи должны быть более надежными по сравнению с Х.25. Наибольшую скорость передачи данных (155 Мбит/c, 620 Мбит/c, а также 2,4 Гбит/c) обеспечивают сети АТМ. Однако развитие этих сетей сдерживает их высокая стоимость.

Сети технологии IP являются дейтаграммными, когда отсутствует предварительное соединение конечных узлов и нет подтверждения приема сообщения. Поэтому отдельные части большого сообщения могут передаваться по разным маршрутам, и потеря отдельной части сообщения может остаться незамеченной. Такой метод характеризуется высокой скоростью передачи, но низкой надежностью, поскольку нет подтверждения принятых данных. Высокую надежность обеспечивает протокол управления передачей TCP (Transmission Control Protocol). Набор (стек) протоколов TCP/IP обеспечивает компромиссное решение по цене, скорости и надежности передачи данных. Поэтому на базе протоколов TCP/IP создается транспортный уровень мультисервисных сетей следующего поколения NGN с распределенной коммутацией пакетов.

Следует отметить еще одну сетевую технологию, которая стремительно развивается в последнее время, – это технология виртуальных частных сетей (Virtual Private Network – VPN ). Данная технология задействует сеть общего пользования Интернет, в которой формирует защищенные каналы связи с гарантированной полосой пропускания. Таким образом, при экономичности и доступности сети VPN обеспечивают безопасность и качество передаваемых сообщений. Используя VPN, сотрудники фирмы могут получить безопасный дистанционный доступ к корпоративной (частной) сети компании через Интернет.

1.6 Простейший случай взаимодействия двух компьютеров

В самом простом случае взаимодействие компьютеров может быть реализовано с помощью тех же самых средств, которые используются для взаимодействия компьютера с периферией, например, через последовательный интерфейс RS232C. В отличие от взаимодействия компьютера с периферийным устройством, когда программа работает, как правило, только с одной стороны со стороны компьютера, в этом случае происходит взаимодействие двух программ, работающих на каждом из компьютеров.

Программа, работающая на одном компьютере, не может получить непосредственный доступ к ресурсам другого компьютера его дискам, файлам, принтеру. Она может только «попросить» об этом программу, работающую на том компьютере, которому принадлежат эти ресурсы. Эти «просьбы» выражаются в виде сообщений, передаваемых по каналам связи между компьютерами. Сообщения могут содержать не только команды на выполнение некоторых действий, но и собственно информационные данные (например, содержимое некоторого файла).

Рассмотрим случай, когда пользователю, работающему с текстовым редактором на персональном компьютере А, нужно прочитать часть некоторого файла, расположенного на диске персонального компьютера В (рис. 1.7). Предположим, что мы связали эти компьютеры по кабелю связи через СОМ-порты, которые, как известно, реализуют интерфейс RS232C (такое соединение часто называют нульмодемным). Пусть для определенности компьютеры работают под управлением MSDOS, хотя принципиального значения в данном случае это не имеет.

Рис. 1.7. Взаимодействие двух компьютеров

Драйвер СОМ-порта вместе с контроллером СОМ-порта работают примерно так же, как и в описанном выше случае взаимодействия ПУ с компьютером. Однако при этом роль устройства управления ПУ выполняет контроллер и драйвер СОМ-порта другого компьютера. Вместе они обеспечивают передачу по кабелю между компьютерами одного байта информации. (В «настоящих» локальных сетях подобные функции передачи данных в линию связи выполняются сетевыми адаптерами и их драйверами.)

Драйвер компьютера В периодически опрашивает признак завершения приема, устанавливаемый контроллером при правильно выполненной передаче данных, и при его появлении считывает принятый байт из буфера контроллера в оперативную память, делая его тем самым доступным для программ компьютера В. В некоторых случаях драйвер вызывается асинхронно, по прерываниям от контроллера.

Таким образом, в распоряжении программ компьютеров А и В имеется средство для передачи одного байта информации. Но рассматриваемая в нашем примере задача значительно сложнее, так как нужно передать не один байт, а определенную часть заданного файла. Все связанные с этим дополнительные проблемы должны решить программы более высокого уровня, чем драйверы СОМ-портов. Для определенности назовем такие программы компьютеров А и В приложением А и приложением В соответственно. Итак, приложение А должно сформировать сообщение-запрос для приложения В. В запросе необходимо указать имя файла, тип операции (в данном случае чтение), смещение и размер области файла, содержащей нужные данные.

Чтобы передать это сообщение компьютеру В, приложение А обращается к драйверу СОМ-порта, сообщая ему адрес в оперативной памяти, по которому драйвер находит сообщение и затем передает его байт за байтом приложению В. Приложение В, приняв запрос, выполняет его, то есть считывает требуемую область файла с диска с помощью средств локальной ОС в буферную область своей оперативной памяти, а далее с помощью драйвера СОМ-порта передает считанные данные по каналу связи в компьютер А, где они и попадают к приложению А.

Описанные функции приложения А могла бы выполнить сама программа текстового редактора, но включать эти функции в состав каждого приложения текстовых редакторов, графических редакторов, систем управления базами данных и других приложений, которым нужен доступ к файлам, не очень рационально (хотя существует большое количество программ, которые действительно самостоятельно решают все задачи по межмашинному обмену данными, например Kermit программа обмена файлами через СОМ-порты, реализованная для различных ОС, Norton Commander 3.0 с его функцией Link). Гораздо выгоднее создать специальный программный модуль, который будет выполнять функции формирования сообщений-запросов и приема результатов для всех приложений компьютера. Как уже было ранее сказано, такой служебный модуль называется клиентом. На стороне же компьютера В должен работать другой модуль сервер, постоянно ожидающий прихода запросов на удаленный доступ к файлам, расположенным на диске этого компьютера. Сервер, приняв запрос из сети, обращается к локальному файлу и выполняет с ним заданные действия, возможно, с участием локальной ОС.

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

Схема взаимодействия клиента и сервера с приложениями и операционной системой приведена на рис. 1.8. Несмотря на то что мы рассмотрели очень простую схему аппаратной связи компьютеров, функции программ, обеспечивающих доступ к удаленным файлам, очень похожи на функции модулей сетевой операционной системы, работающей в сети с более сложными аппаратными связями компьютеров.

Рис. 1.8. Взаимодействие программных компонентов при связи двух компьютеров

Очень удобной и полезной функцией клиентской программы является способность отличить запрос к удаленному файлу от запроса к локальному файлу. Если клиентская программа умеет это делать, то приложения не должны заботиться о том, с каким файлом они работают (локальным или удаленным), клиентская программа сама распознает и перенаправляет (redirect) запрос к удаленной машине. Отсюда и название, часто используемое для клиентской части сетевой ОС, редиректор. Иногда функции распознавания выделяются в отдельный программный модуль, в этом случае редиректором называют не всю клиентскую часть, а только этот модуль.

1.7 Краткие итоги

· Телекоммуникационная сеть образуется совокупностью абонентов и узлов связи, соединенных линиями (каналами) связи.

· Различают сети: с коммутацией каналов, когда телекоммуникационные узлы выполняют функции коммутаторов, и с коммутацией пакетов (сообщений), когда телекоммуникационные узлы выполняют функции маршрутизаторов.

· Для создания маршрута в разветвленной сети необходимо задавать адреса источника и получателя сообщения. Различают физические и логические адреса.

· Сети передачи данных с коммутацией пакетов подразделяются на локальные и глобальные.

· Сети технологии IP являются дейтаграммными, когда отсутствует предварительное соединение конечных узлов и нет подтверждения приема сообщения.

2. Сетевые службы. Сетевое программное обеспечение

Для конечного пользователя сеть это не компьютеры, кабели и концентраторы и даже не информационные потоки, для него сеть это, прежде всего, тот набор сетевых служб, с помощью которых он получает возможность просмотреть список имеющихся в сети компьютеров, прочитать удаленный файл, распечатать документ на «чужом» принтере или послать почтовое сообщение. Именно совокупность предоставляемых возможностей насколько широк их выбор, насколько они удобны, надежны и безопасны определяет для пользователя облик той или иной сети.

Кроме собственно обмена данными, сетевые службы должны решать и другие, более специфические задачи, например, задачи, порождаемые распределенной обработкой данных. К таким задачам относится обеспечение непротиворечивости нескольких копий данных, размещенных на разных машинах (служба репликации), или организация выполнения одной задачи параллельно на нескольких машинах сети (служба вызова удаленных процедур). Среди сетевых служб можно выделить административные, то есть такие, которые в основном ориентированы не на простого пользователя, а на администратора и служат для организации правильной работы сети в целом. Служба администрирования учетных записей о пользователях, которая позволяет администратору вести общую базу данных о пользователях сети, система мониторинга сети, позволяющая захватывать и анализировать сетевой трафик, служба безопасности, в функции которой может входить среди прочего выполнение процедуры логического входа с последующей проверкой пароля, все это примеры административных служб.

Реализация сетевых служб осуществляется программными средствами. Основные службы файловая служба и служба печати обычно предоставляются сетевой операционной системой, а вспомогательные, например служба баз данных, факса или передачи голоса, системными сетевыми приложениями или утилитами, работающими в тесном контакте с сетевой ОС. Вообще говоря, распределение служб между ОС и утилитами достаточно условно и меняется в конкретных реализациях ОС.

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

Одним из главных показателей качества сетевой службы является ее удобство. Для одного и того же ресурса может быть разработано несколько служб, поразному решающих в общемто одну и ту же задачу. Отличия могут заключаться в производительности или в уровне удобства предоставляемых услуг. Например, файловая служба может быть основана на использовании команды передачи файла из одного компьютера в другой по имени файла, а это требует от пользователя знания имени нужного файла. Та же файловая служба может быть реализована и так, что пользователь монтирует удаленную файловую систему к локальному каталогу, а далее обращается к удаленным файлам как к своим собственным, что гораздо более удобно. Качество сетевой службы зависит и от качества пользовательского интерфейса интуитивной понятности, наглядности, рациональности.

При определении степени удобства разделяемого ресурса часто употребляют термин «прозрачность». Прозрачный доступ это такой доступ, при котором пользователь не замечает, где расположен нужный ему ресурс на его компьютере или на удаленном. После того как он смонтировал удаленную файловую систему в свое дерево каталогов, доступ к удаленным файлам становится для него совершенно прозрачным. Сама операция монтирования также может иметь разную степень прозрачности в сетях с меньшей прозрачностью пользователь должен знать и задавать в команде имя компьютера, на котором хранится удаленная файловая система, в сетях с большей степенью прозрачности соответствующий программный компонент сети производит поиск разделяемых томов файлов безотносительно мест их хранения, а затем предоставляет их пользователю в удобном для него виде, например в виде списка или набора пиктограмм.

Для обеспечения прозрачности важен способ адресации (именования) разделяемых сетевых ресурсов. Имена разделяемых сетевых ресурсов не должны зависеть от их физического расположения на том или ином компьютере. В идеале пользователь не должен ничего менять в своей работе, если администратор сети переместил том или каталог с одного компьютера на другой. Сам администратор и сетевая операционная система имеют информацию о расположении файловых систем, но от пользователя она скрыта. Такая степень прозрачности пока редко встречается в сетях, обычно для получения доступа к ресурсам определенного компьютера сначала приходится устанавливать с ним логическое соединение. Такой подход применяется, например, в сетях Windows NT.

2.1 Топология сетей

Как только компьютеров становится больше двух, возникает проблема выбора конфигурации физических связей или топологии. Под топологией сети понимается конфигурация графа, вершинам которого соответствуют конечные узлы сети (например, компьютеры) и коммуникационное оборудование (например, маршрутизаторы), а ребрам – электрические и информационные связи между ними.

Число возможных конфигураций резко возрастает при увеличении числа связываемых устройств. Так, если три компьютера мы можем связать двумя способами, то для четырех компьютеров (рис. 2.1) можно предложить уже шесть топологически различных конфигураций (при условии неразличимости компьютеров).

Рис. 2.1. Варианты связи компьютеров.

Мы можем соединять каждый компьютер с каждым или же связывать их последовательно, предполагая, что они будут общаться, передавая друг другу сообщения "транзитом". При этом транзитные узлы должны быть оснащены специальными средствами, позволяющими выполнять эту специфическую посредническую операцию. В роли транзитного узла может выступать как универсальный компьютер, так и специализированное устройство.

От выбора топологии связей зависят многие характеристики сети. Например, наличие между узлами нескольких путей повышает надежность сети и делает возможной балансировку загрузки отдельных каналов. Простота присоединения новых узлов, свойственная некоторым топологиям, делает сеть легко расширяемой. Экономические соображения часто приводят к выбору топологий, для которых характерна минимальная суммарная длина линий связи. Среди множества возможных конфигураций различают полносвязные и неполносвязные:

Рис. 2.1. Типы конфигураций

Полносвязная топология (рис. 2.2) соответствует сети, в которой каждый компьютер непосредственно связан со всеми остальными. Несмотря на логическую простоту, это вариант громоздкий и неэффективный. Действительно, каждый компьютер в сети должен иметь большое количество коммуникационных портов, достаточное для связи с каждым из остальных компьютеров. Для каждой пары компьютеров должна быть выделена отдельная физическая линия связи. (В некоторых случаях даже две, если невозможно использование этой линии для двусторонней передачи.) Полносвязные ; топологии в крупных сетях применяются редко, так как для связи N узлов требуется N(N1)/2 физических дуплексных линий связи, т.е. имеет место квадратичная зависимость. Чаще этот вид топологии используется в многомашинных комплексах или в сетях, объединяющих небольшое количество компьютеров.

Рис. 2.2. Полносвязная конфигурация.

Все другие варианты основаны на неполносвязных топологиях, когда для обмена данными между двумя компьютерами может потребоваться промежуточная передача данных через другие узлы сети.

Ячеистая топология ( mesh1) ) получается из полносвязной путем удаления некоторых возможных связей. Ячеистая топология допускает соединение большого количества компьютеров и характерна для крупных сетей (рис 2.3).

Рис. 2.3. Ячеистая топология.

В сетях с кольцевой конфигурацией (рис. 2.4) данные передаются по кольцу от одного компьютера к другому. Главное достоинство "кольца" в том, что оно по своей природе обладает свойством резервирования связей. Действительно, любая пара узлов соединена здесь двумя путями – по часовой стрелке и против. "Кольцо" представляет собой очень удобную конфигурацию и для организации обратной связи – данные, сделав полный оборот, возвращаются к узлуисточнику. Поэтому отправитель в данном случае может контролировать процесс доставки данных адресату. Часто это свойство "кольца" используется для тестирования связности сети и поиска узла, работающего некорректно. В то же время в сетях с кольцевой топологией необходимо принимать специальные меры, чтобы в случае выхода из строя или отключения какой-либо станции не прерывался канал связи между остальными станциями "кольца".

Рис. 2.4. Топология "кольцо".

Топология "звезда" (рис.2.5) образуется в том случае, когда каждый компьютер с помощью отдельного кабеля подключается к общему центральному устройству, называемому концентратором2) . В функции концентратора входит направление передаваемой компьютером информации одному или всем остальным компьютерам сети. В роли концентратора может выступать как компьютер, так и специализированное устройство, такое как многовходовый повторитель, коммутатор или маршрутизатор. К недостаткам топологии типа "звезда" относится более высокая стоимость сетевого оборудования, связанная с необходимостью приобретения специализированного центрального устройства. Кроме того, возможности наращивания количества узлов в сети ограничиваются количеством портов концентратора.

Рис. 2.5. Топология "звезда".

Иногда, имеет смысл строить сеть с использованием нескольких концентраторов, иерархически соединенных между собой связями типа "звезда" (рис. 2.6). Получаемую в результате структуру называют также деревом. В настоящее время дерево является самым распространенным типом топологии связей, как в локальных, так и в глобальных сетях.

Рис. 2.6. Топология "иерархическая звезда" или "дерево".

Особым частным случаем конфигурации звезда является конфигурация "общая шина" (рис. 2.7). Здесь в роли центрального элемента выступает пассивный кабель, к которому по схеме "монтажного ИЛИ" подключается несколько компьютеров (такую же топологию имеют многие сети, использующие беспроводную связь – роль общей шины здесь играет общая радиосреда). Передаваемая информация распространяется по кабелю и доступна одновременно всем присоединенным к нему компьютерам.

Рис. 2.7. Топология "общая шина".

Основными преимуществами такой схемы являются низкая стоимость и простота наращивания, т.е. присоединения новых узлов к сети.

Самым серьезным недостатком "общей шины" является ее недостаточная надежность: любой дефект кабеля или какого-нибудь из многочисленных разъемов полностью парализует всю сеть. Другой недостаток "общей шины" – невысокая производительность, так как при таком способе подключения в каждый момент времени только один компьютер может передавать данные по сети, поэтому пропускная способность канала связи всегда делится между всеми узлами сети. До недавнего времени "общая шина" являлась одной из самых популярных топологий для локальных сетей.

В то время как небольшие сети, как правило, имеют типовую топологию – "звезда", "кольцо" или "общая шина", для крупных сетей характерно наличие произвольных связей между компьютерами. В таких сетях можно выделить отдельные произвольно связанные фрагменты (подсети), имеющие типовую топологию, поэтому их называют сетями со смешанной топологией (рис. 2.8).

Рис. 2.8. Смешанная топология.

2.2 Адресация узлов сети

Еще одной проблемой, которую нужно учитывать при объединении трех и более компьютеров, является проблема их адресации, точнее сказать адресации их сетевых интерфейсов. Один компьютер может иметь несколько сетевых интерфейсов. Например, для образования физическогокольца каждый компьютер должен быть оснащен как минимум двумя сетевыми интерфейсами для связи с двумя соседями. А для создания полносвязной структуры из N компьютеров необходимо, чтобы у каждого из них имелся N-1 интерфейс.

Адреса могут быть числовыми (например, 129.26.255.255) и символьными (site.domain.ru). Один и тот же адрес может быть записан в разных форматах, скажем, числовой адрес в предыдущем примере 129.26.255.255 может быть записан и в шестнадцатеричном формате цифрами – 81.1a.ff.ff.

Адреса могут использоваться для идентификации не только отдельных интерфейсов, но и их групп (групповые адреса). С помощью групповых адресов данные могут направляться сразу нескольким узлам. Во многих технологиях компьютерных сетей поддерживаются так называемые широковещательные адреса. Данные, направленные по такому адресу, должны быть доставлены всем узлам сети.

Множество всех адресов, которые являются допустимыми в рамках некоторой схемы адресации, называется адресным пространством. Адресное пространство может иметь плоскую (линейную) (рис. 2.9) или иерархическую (рис. 2.10) организацию. В первом случае множество адресов никак не структурировано.

Рис. 2.9. Плоское адресное пространство.

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

Рис. 2.10. Иерархическая структура адресного пространства.

На рис. 2.10 показана трехуровневая структура адресного пространства, при которой адрес конечного узла задается тремя составляющими: идентификатором группы (K), в которую входит данный узел, идентификатором подгруппы (L) и, наконец, идентификатором узла (n), однозначно определяющим его в подгруппе. Иерархическая адресация во многих случаях оказывается более рациональной, чем плоская. В больших сетях, состоящих из многих тысяч узлов, использование плоских адресов может привести к большим издержкам – конечным узлам и коммуникационному оборудованию придется работать с таблицами адресов, состоящими из тысяч записей. А иерархическая система адресации позволяет при перемещении данных до определенного момента пользоваться только старшей составляющей адреса, затем для дальнейшей локализации адресата следующей по старшинству частью, и в конечном счете – младшей частью. Примером иерархически организованных адресов служат обычные почтовые адреса, в которых последовательно уточняется местонахождение адресата: страна, город, улица, дом, квартира.

К адресу сетевого интерфейса и схеме его назначения можно предъявить несколько требований:

· адрес должен уникально идентифицировать сетевой интерфейс в сети любого масштаба;

· схема назначения адресов должна сводить к минимуму ручной труд администратора и вероятность дублирования адресов;

· желательно, чтобы адрес имел иерархическую структуру, удобную для построения больших сетей;

· адрес должен быть удобен для пользователей сети, а это значит, что он должен допускать символьное представление, например Server3 или www.cisco.com;

· адрес должен быть по возможности компактным, чтобы не перегружать память коммуникационной аппаратуры – сетевых адаптеров, маршрутизаторов и т.п.

Нетрудно заметить, что эти требования противоречивы – например, адрес, имеющий иерархическую структуру, скорее всего, будет менее компактным, чем плоский. Символьные имена удобны, но изза переменного формата и потенциально большой длины их передача по сети не очень экономична. Так как все перечисленные требования трудно совместить в рамках какой-либо одной схемы адресации, на практике обычно используется сразу несколько схем, так что сетевой интерфейс компьютера может одновременно иметь несколько адресов-имен. Каждый адрес используется в той ситуации, когда соответствующий вид адресации наиболее удобен. А для преобразования адресов из одного вида в другой используются специальные вспомогательные протоколы, которые называют иногда протоколами разрешения адресов (address resolution) .

Примером плоского числового адреса является МАС-адрес, используемый для однозначной идентификации сетевых интерфейсов в локальных сетях. Такой адрес обычно применяется только аппаратурой, поэтому его стараются сделать по возможности компактным и записывают в виде двоичного или шестнадцатеричного значения, например 0081005e24a8. Когда задаются МАС-адреса, вручную ничего делать не нужно, так как они обычно встраиваются в аппаратуру компаниейизготовителем; их называют еще аппаратными (hardware) адресами . Использование плоских адресов является жестким решением – при замене аппаратуры, например сетевого адаптера, изменяется и адрес сетевого интерфейса компьютера.

Типичными представителями иерархических числовых адресов являются сетевые IP-адреса. В них поддерживается двухуровневая иерархия, адрес делится на старшую часть – номер сети – и младшую – номер узла. Такое разделение позволяет передавать сообщения между сетями только на основании номера сети, а номер узла используется после доставки сообщения в нужную сеть; точно так же, как название улицы используется почтальоном только после того, как письмо доставлено в нужный город. В последнее время, чтобы сделать маршрутизацию в крупных сетях более эффективной, предлагаются более сложные варианты числовой адресации, в соответствии с которыми адрес имеет три и более составляющих. Такой подход, в частности, реализован в новой версии протокола IPv6, предназначенного для работы в Internet.

Символьные адреса или имена предназначены для запоминания людьми и поэтому обычно несут смысловую нагрузку. Символьные адреса можно использовать как в небольших, так и в крупных сетях. Для работы в больших сетях символьное имя может иметь иерархическую структуру, например ftparch1.ucl.ac.uk. Этот адрес говорит о том, что данный компьютер поддерживает FTPархив в сети одного из колледжей Лондонского университета (University College London – ucl), и данная сеть относится к академической ветви (ac) Internet Великобритании (United Kingdom – uk). При работе в пределах сети Лондонского университета такое длинное символьное имя явно избыточно и вместо него можно пользоваться кратким символьным именем, на роль которого хорошо подходит самая младшая составляющая полного имени, то есть ftparch1.

В современных сетях для адресации узлов, как правило, применяются все три приведенные выше схемы одновременно. Пользователи адресуют компьютеры символьными именами, которые автоматически заменяются в сообщениях, передаваемых по сети, на числовые номера. С помощью этих числовых номеров сообщения передаются из одной сети в другую, а после доставки сообщения в сеть назначения вместо числового номера используется аппаратный адрес компьютера. Сегодня такая схема характерна даже для небольших автономных сетей, где, казалось бы, она явно избыточна – это делается для того, чтобы при включении сети в большую сеть не нужно было менять состав операционной системы.

Проблема установления соответствия между адресами различных типов, которой занимаются протоколы разрешения адресов, может решаться как централизованными, так и распределенными средствами. В случае централизованного подхода в сети выделяется один или несколько компьютеров (серверов имен), в которых хранится таблица соответствия друг другу имен различных типов, например символьных имен и числовых номеров. Все остальные компьютеры обращаются к серверу имен, чтобы по символьному имени найти числовой номер компьютера, с которым необходимо обменяться данными.

При распределенном подходе каждый компьютер сам решает задачу установления соответствия между адресами. Например, если пользователь указал для узла назначения числовой номер, то перед началом передачи данных компьютеротправитель посылает всем компьютерам сети широковещательное сообщение с просьбой опознать это числовое имя. Все компьютеры, получив такое сообщение, сравнивают заданный номер со своим собственным. Тот компьютер, у которого обнаружилось совпадение, посылает ответ, содержащий его аппаратный адрес, после чего становится возможной отправка сообщений по локальной сети.

Распределенный подход хорош тем, что не предполагает выделения специального компьютера, на котором к тому же часто приходится вручную вводить таблицу соответствия адресов. Недостатком распределенного подхода является необходимость широковещательных сообщений – такие сообщения перегружают сеть, так как они требуют обязательной обработки всеми узлами, а не только узлом назначения. Поэтому распределенный подход используется только в небольших локальных сетях. В крупных сетях распространение широковещательных сообщений по всем ее сегментам становится практически нереальным, поэтому для них характерен централизованный подход. Наиболее известной службой централизованного разрешения адресов является система доменных имен (Domain Name System, DNS) сети Internet.

Адреса могут использоваться для идентификации:

· отдельных интерфейсов;

· их групп (групповые адреса);

· сразу всех сетевых интерфейсов сети ( широковещательные адреса ).

· Адреса могут быть:

· числовыми и символьными;

· аппаратными и сетевыми;

· плоскими и иерархическими.

Для преобразования адресов из одного вида в другой используются протоколы разрешения адресов (address resolution).

До сих пор мы говорили об адресах сетевых интерфейсов, которые указывают на порты узлов сети (компьютеров и коммуникационных устройств), однако конечной целью пересылаемых по сети данных, являются не компьютеры или маршрутизаторы, а выполняемые на этих устройствах программы – процессы. Поэтому в адресе назначения наряду с информацией, идентифицирующей порт устройства, должен указываться адрес процесса, которому предназначены посылаемые данные. После того, как эти данные достигнут указанного в адресе назначения сетевого интерфейса, программное обеспечение компьютера должно их направить соответствующему процессу. Понятно, что адрес процесса не обязательно должен задавать его однозначно в пределах всей сети, достаточно обеспечить его уникальность в пределах компьютера. Примером адресов процессов могут служить номера портов TCP и UDP, используемые в стеке TCP/IP.

Еще одной важнейшей задачей построения сетей является создание эффективного механизма коммутации. В следующей лекции мы рассмотрим это фундаментальное понятие с самых общих позиций.

2.3 Иерархия протоколов

Для упрощения структуры большинство сетей организуются в наборы уровней или слоев, каждый последующий из которых возводится над предыдущим. Количество уровней, их названия, содержание и назначение разнятся от сети к сети. Однако во всех сетях целью каждого уровня является предоставление неких сервисов для вышестоящих уровней. При этом от них скрываются детали реализации предоставляемого сервиса.

Такая концепция не нова и используется в computer science уже давно. Ее ва­риации известны как сокрытие информации, абстрактные типы данных, свойство инкапсуляции и объектно-ориентированное программирование. Фундаментальной идеей является предоставление неким программным или аппаратным уровнем сервисов своим пользователям без раскрытия деталей своего внутрен­него состояния и подробностей алгоритмов.

Уровень п одной машины поддерживает связь с уровнем п другой машины. Правила и соглашения, используемые в данном общении, называются протоколом уровня п. По сути протокол является договоренностью общающихся сторон о том, как должно происходить общение. По аналогии, когда женщину представляют мужчине, она может протянуть ему свою руку. Он, в свою очередь, может принять решение либо пожать, либо поцеловать эту руку в зависимости от того, является ли эта женщина американским адвокатом на деловой встрече или же европейской принцессой на официальном балу. Нарушение протокола создаст затруднения в общении, а может, и вовсе сделает общение невозможным.

На рис. 1.10 показана пятиуровневая сеть. Объекты, включающие в себя соот­ветствующие уровни на разных машинах, называются равноранговыми, или рав­ноправными, узлами, или сущностями, сети. Именно они общаются при помощи протокола.

Междууровневый интерфейс 4/5

Междууровневый интерфейс 3/4

Междууровневый интерфейс 2/3

Междууровневый интерфейс 1/2

Физический уровень Рис. 1.10. Уровни, протоколы и интерфейсы

Хост 1 Хост 2

В действительности данные не пересылаются с уровня п одной машины на уровень п другой машины. Вместо этого каждый уровень передает данные и управление уровню, лежащему ниже, пока не достигается самый нижний уровень. Ниже первого уровня располагается физическая среда, по которой и производится обмен информацией. На рис. 1.10 виртуальное общение показано пунктиром, тогда как физическое – сплошными линиями.

Между каждой парой смежных уровней находится интерфейс, определяющий набор примитивных операций, предоставляемых нижним уровнем верхнему. Когда разработчики сетей решают, сколько уровней включить в сеть и что на каждом уровне по мере продвижения сообщения. Заголовки нижних уровней более высоким уровням не передаются.

Уровень

Машина источник Машина приемник

Рис. 1.12. Пример потока информации на уровне 5

Необходимо понять соотношение между виртуальным и реальным общением и разницу между протоколом и интерфейсом. Одноранговые процессы уровня 4, например, считают свое общение горизонтальным, использующим протокол 4го уровня. У каждого из них имеется процедура с названием вроде SendToOtherSide (Отправить другой стороне) и GetFromOtherSide (Получить от другой стороны), даже если на самом деле эти процедуры общаются не друг с другом, а с нижними уровнями при помощи интерфейсов 3/4.

Абстракция одноранговых процессов является ключевой для проектирования сетей. С ее помощью невыполнимая задача разработки целой сети может быть разбита на несколько меньших по размеру и вполне разрешимых проблем разработки, а именно разработки индивидуальных уровней.

Хотя этот раздел называется «Сетевое программное обеспечение», следует отметить, что нижние уровни в иерархии протоколов часто реализуются аппаратно или программноаппаратно. Тем не менее при этом используются слож­ные алгоритмы протоколов, хотя они и внедряются в аппаратуру частично или целиком.

2.4 Разработка уровней

Некоторые из ключевых аспектов разработки, возникающие при создании компьютерных сетей, присутствуют на нескольких уровнях. Далее мы кратко опишем наиболее важные из них.

Каждый уровень нуждается в механизме идентификации отправителей и получателей. В сети обычно работает довольно много компьютеров, на них одновременно могут выполняться сразу несколько процессов, каждому из которых необходимо средство, позволяющее указать, с кем он хочет поговорить. Следовательно, нужна система адресации.

Также необходимо выработать правила для переноса данных. В некоторых системах данные могут перемещаться только в одном направлении, в других – в любом направлении. Протокол также должен определять количество логических каналов, относящихся к соединению, и их приоритеты. Многие сети обеспечивают минимум по два логических канала на соединение: один для обычных данных и еще один – для срочных.

Важным аспектом является контроль ошибок, поскольку физические каналы связи несовершенны. Известно множество кодов, опознающих и исправляющих ошибки, однако обе стороны соединения должны договориться между собой о том, какой именно код будет выбран. Кроме того, получатель должен иметь возможность сообщить отправителю, какие из сообщений были получены правильно, а какие – нет.

Не все каналы связи сохраняют последовательность посылаемых по ним сообщений. Чтобы исправить возможную потерю порядка сообщений, протокол должен явно снабжать получателя номерами пакетов, чтобы получаемые фрагменты сообщений могли быть собраны в правильном порядке. Очевидным решением Проблемы является нумерация пакетов, однако остается открытым вопрос: что делать с пакетами, приходящими в неверном порядке?

Кроме того, на каждом уровне возникает вопрос: как организовать пересылку данных так, чтобы быстрая передающая сторона не завалила пакетами медленную принимающую сторону? Для разрешения данной проблемы существуют различные решения, которые будут обсуждаться далее. Некоторые из них предполагают прямые или косвенные ответы получателя посылающей стороне, информирующие ее о текущем состоянии получателя. Другим решением может быть ограничение скорости передачи до некоторого договорного уровня. В целом это называется управлением потоком.

Еще одна проблема, которую необходимо разрешать на различных уровнях, – это неспособность всех процессов принимать сколь угодно длинные сообщения. С этим может быть связан вопрос: что делать, если процесс настаивает на передаче данных столь малыми порциями, что передача становится неэффективной? Для решения подобной проблемы можно объединять посылаемые сообщения в Один большой пакет и снова разбивать его после пересылки на отдельные сообщения.

Когда неудобно или неэффективно устанавливать отдельное соединение для Каждой пары общающихся процессов, располагающийся ниже уровень может принять решение использовать одно и то же соединение для различных не связанных друг с другом разговоров. Пока это уплотнение каналов, или мультиплексирование, происходит прозрачно, оно может использоваться любым уровнем. Мультиплексирование, например, необходимо на физическом уровне, где вся связь должна осуществляться по ограниченному числу контуров.

Когда между отправителем и получателем существует несколько возможных путей следования сообщения, возникает задача выбора пути. Иногда она может быть разделена между несколькими уровнями. Например, при посылке сообще­ния из Лондона в Рим верхний уровень может выбрать путь через Францию или Германию, основывая свой выбор на знании законов, касающихся тайны пере­писки в данных странах, тогда как выбор нижнего уровня может основываться на текущей загруженности линий связи. Эта задача называется маршрутизацией.

2.5 Службы на основе соединений и службы без установления соединений

Уровни могут предлагать вышестоящим уровням услуги двух типов: с наличием или отсутствием установления соединения. В этом разделе мы рассмотрим, что означает каждый из этих типов и в чем состоит разница между ними.

Типичным примером сервиса с установлением соединения является телефонная связь. Чтобы поговорить с кем-нибудь, необходимо поднять трубку, набрать номер, а после окончания разговора положить трубку. Нечто подобное происходит и в компьютерных сетях: при использовании сервиса с установлением соединения абонент сперва устанавливает соединение, а после окончания сеанса разрывает его. Это напоминает трубу: биты сообщения влетают в один ее конец, а вылетают с другого. В большинстве случаев не возникает путаницы с последовательностью передачи этих битов.

В некоторых случаях перед началом передачи отправляющая и получающая машины обмениваются приветствиями, отсылая друг другу приемлемые параметры соединения: максимальный размер сообщения, необходимое качество сервиса и др. В большинстве случаев одна из сторон посылает запрос, а другая его принимает, отвергает или же выставляет встречные условия.

Что касается сервисов без установления соединения, то типичный пример такой технологии – почтовые системы. Каждое письмо содержит полный адрес назначения и проходит по некоему маршруту, который совершенно не зависит от других писем. Обычно то письмо, которое отправлено раньше, в место назначения приходит раньше.

Каждая служба характеризуется качеством обслуживания. Некоторые службы являются надежными в том смысле, что они никогда не теряют данных. Обычно надежная служба реализуется при помощи подтверждений, посылаемых получа­телем в ответ на каждое принятое сообщение, так что отправитель знает, дошло очередное сообщение или нет. Процесс пересылки подтверждений требует некоторых накладных расходов и снижает пропускную способность канала. Впрочем, подобные затраты обычно не очень велики и окупаются, хотя иногда могут быть нежелательными.

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

Надежные службы на основе соединений бывают двух типов: последовательности сообщений и байтовые потоки. В первом варианте сохраняются границы между сообщениями. Когда посылаются два сообщения размером по 1 Кбайт, то они прибывают в виде двух сообщений размером по 1 Кбайт и никогда – как одно двух-килобайтное сообщение. При втором варианте связь представляет собой просто поток байтов, без разделения на отдельные сообщения. Когда 2048 байт прибывают к получателю, то нет никакой возможности определить, было это од­но сообщение длиной 2 Кбайт, два сообщения длиной 1 Кбайт или же 2048 однобайтных сообщений. Если страницы книги посылаются по сети фотонаборной машине в виде отдельных сообщений, то, возможно, необходимо сохранить границы между сообщениями. С другой стороны, при регистрации с удаленного терминала в системе разделения времени вполне достаточно потока байтов с терминального компьютера.

Как уже упоминалось ранее, существуют системы, для которых задержки, связанные с пересылкой подтверждений, неприемлемы. В качестве примера такой системы можно назвать цифровую голосовую связь. В данном случае предпочтительнее допустить шумы на линии или искаженные слова, нежели большие паузы, вызванные отсылкой подтверждений и повторной передачей блоков данных. Аналогично, при проведении видеоконференции отдельные неправильные пикселы окажутся меньшей проблемой, нежели дергающиеся и останавливающиеся кадры.

Не все приложения требуют установки соединения. Например, при рассылке рекламы по электронной почте установка связи для пересылки каждого отдельного сообщения нежелательна. Также не требуется в этом случае и 100 процентная надежность, особенно, если это существенно увеличит стоимость. Все, что нужно, – это способ переслать сообщение с высокой вероятностью его получения, но без гарантии. Ненадежная (то есть без подтверждений) служба без установления соединения часто называется службой дейтаграмм, или дейтаграммной службой – по аналогии с телеграфной службой, также не предоставляющей подтверждений отправителю.

В других ситуациях бывает желательно не устанавливать соединение для пересылки коротких сообщений, но надежность, тем не менее, существенна. Та­кая служба называется службой дейтаграмм с подтверждениями. Она подобна отправке заказного письма с подтверждением получения. Получив подтвержде­ние, отправитель уверен, что письмо доставлено адресату, а не потеряно по дороге.

Ориентированная на соединение

Без установления соединения

Кроме того, существует служба запросов и ответов, в которой отправитель посылает дейтаграммы, содержащие запросы, и получает ответы от получателя. Например, к данной категории можно отнести вопрос к библиотеке о том, где говорят по-уйгурски. Обычно модель запросов и ответов применяется для реализации общения в модели «клиент-сервер»: клиент посылает запрос, а сервер отвечает на него. Обсуждавшийся ранее типы служб сведены в таблицу на рис. 1.13.

Служба Пример
Надежный поток сообщений Последовательность страниц
Надежный поток байт Удаленная регистрация
Ненадежное соединение Цифровая голосовая связь
Ненадежная дейтаграмма Рассылка рекламы электронной почтой
Дейтаграмма с подтверждениями Заказные письма
Запрос – ответ Запрос к базе данных

Концепция использования ненадежной связи поначалу может показаться несколько странной. В самом деле, почему это может возникать такая ситуация, когда выгоднее предпочесть ненадежную связь надежной? Во-первых, надежное соединение (в том смысле, который был оговорен ранее, то есть с подтверждением) не всегда можно установить. Скажем, Ethernet не является «надежным» средством коммуникации. Пакеты при передаче могут искажаться, но решать эту проблему должны протоколы более высоких уровней. Во-вторых, задержки, связанные с отсылкой подтверждения, в некоторых случаях неприемлемы, особенно при передаче мультимедиа в реальном времени. Именно благодаря этим факто­рам продолжают сосуществовать надежные и ненадежные соединения.

2.6 Примитивы служб

Служба (сервис) формально описывается набором примитивов или операций, доступных пользователю или другой сущности для получения сервиса. Эти примитивы заставляют службу выполнять некоторые действия или служат ответами на действия сущности того же уровня. Если набор протоколов входит в состав операционной системы (как часто и бывает), то примитивы являются системными вызовами. Они приводят к возникновению системных прерываний в привилегированном режиме, в результате чего управление машиной передается операци­онной системе, которая и отсылает нужные пакеты.

Набор доступных примитивов зависит от природы сервиса. Скажем, примитивы сервисов с установлением соединения и без него различаются. В табл. 1.3 приведен минимальный набор примитивов, обеспечивающий надежную передачу битового потока в среде типа «клиент-сервер».

Эти примитивы могут использоваться следующим образом. Вначале сервер исполняет LISTEN, показывая тем самым, что он готов устанавливать входящие соединения. Этот примитив обычно реализуется в виде блокирующего систем­ного вызова. После его исполнения процесс сервера приостанавливается до тех пор, пока не будет установлено соединение.

Таблица 1.3. Пять сервисных примитивов, обеспечивающих простую передачу с установлением соединения

Примитив Значение
LISTEN (ожидание) Блок ожидает входящего соединения
CONNECT (соединение) Установка соединения с ожидающей сущностью того же ранга
RECEIVE (прием) Блок ожидает входящего сообщения
SEND (отправка) Отправка сообщения ожидающей сущности того же ранга
DISCONNECT (разрыв) Разрыв соединения

Затем процесс клиента выполняет примитив CONNECT, устанавливая соединение с сервером. В системном вызове должно быть указано, с кем именно необходимо установить связь. Для этого может вводиться специальный параметр, содержащий адрес сервера. Далее операционная система клиента посылает равноранговой сущности пакет с запросом на соединение, как показано на рис. 1.14 стрелочкой с пометкой (1). Процесс клиента приостанавливается в ожидании ответа. Пакет, пришедший на сервер, обрабатывается его операционной системой. Если в пакете обнаруживается запрос на соединение, начинается поиск того кли­ента, который отправил этот запрос. При его обнаружении производятся два дей­ствия: клиент разблокируется и ему отсылается подтверждение (2). Реальное разблокирование происходит по прибытии подтверждения на клиентскую машину. Начиная с этого момента считается, что сервер и клиент установили соединение. Важно отметить здесь то, что подтверждение (2) генерируется самим кодом протокола и не является ответом на примитив пользователя, содержащий запрос. Может возникнуть ситуация, когда запрос на соединение есть, а клиента нет. В этом случае результат будет неопределенным. В некоторых системах пакет может быть отложен на короткое время, в течение которого ожидается LISTEN.

Рис. 1.14. Простейшее взаимодействие клиента и сервера при передаче пакетов по сети с установлением соединения

Самым очевидным жизненным примером такого взаимодействия может служить звонок покупателя (клиента) в сервисный центр компании. Менеджер сервисного центра должен находиться у телефона, чтобы иметь возможность ответить в том случае, если он зазвонит. Клиент совершает звонок. Когда менеджер поднимает трубку, считается, что соединение установлено.

Следующим шагом будет выполнение сервером примитива RECEIVE, подготавливающего систему к принятию первого запроса. В нормальной ситуации это происходит сразу же после прекращения ожидания (LISTEN), даже до того, как клиент получает подтверждение соединения. Системный вызов RECEIVE вновь блокирует сервер.

Клиент выполняет SEND, передает запрос (3) и сразу же выполняет RECEIVE, ожидая ответ.

Прием пакета с запросом разблокирует процесс сервера, благодаря чему он может обработать запрос. По окончании обработки выполняется примитив SEND, и ответ отсылается клиенту (4). Прием пакета разблокирует клиента, теперь наступает его очередь обрабатывать пакет. Если у клиента есть еще запросы к серверу, он может отослать их. В противном случае соединение разрывается с помощью DISCONNECT. Обычно первый примитив DISCONNECT отсылает пакет, уведомляющий сервер об окончании сеанса, и блокирует клиента (5). В ответ сервер генерирует свой примитив DISCONNECT, являющийся подтверждением для клиента и командой, разрывающей связь. Клиент, получив его, разблокируется, и соединение считается окончательно разорванным. Именно так в двух словах можно описать схему коммуникации с установлением соединения.

Конечно, жизнь не настолько проста. Описанный алгоритм работы весьма схематичен, а коечто просто неправильно (например, CONNECT на самом деле выполняется до LISTEN). При этом пакеты, бывает, теряются, возникают и другие проблемы. Позднее мы рассмотрим все это гораздо более подробно, но на данный момент можно получить лишь общее представление о работе клиентсерверной системы с установлением соединения. Для этого полезно внимательно изучить рис. 1.14.

Увидев эти шесть пакетов, необходимых для работы протокола, можно удивиться, почему же не используется протокол без установления соединения? Ответ таков: в идеальном мире, где нужны всего два пакета – один для запроса и один для ответа, – это, возможно, имело бы смысл. Но стоит представить себе передачу большого сообщения (скажем, мегабайтного файла), причем в обе стороны, причем с ошибками при передаче, потерянными пакетами и т. д., как ситуация меняется. Если ответ сервера состоит из нескольких сотен пакетов, парочка из которых затерялась по пути, то как клиент узнает, что он получил сообщение не в полном объеме? Как он узнает о том, что последний принятый пакет является действительно последним? Допустим, клиент запросил второй файл. Как он отличит пакет 1 из второго файла от потерянного пакета 1 из первого файла, который вдруг нашелся? Короче говоря, в реальном мире простой протокол запрос-ответов без подтверждений часто не подходит. Далее мы обсудим протоколы, позволяющие решать самые разные проблемы, возникающие при передаче данных. А сейчас поверьте на слово: наличие надежной связи с упорядоченным байтовым потоком между процессами – это удобно

3. Стандартизация сетей.

3.1 Эталонная модель OSI

Эталонная модель OSI (за исключением физической среды) показана на рисунке. Эта модель основана на разработке Международной организации по стандартизации (International Organization for Standardization, ISO) и является первым шагом к международной стандартизации протоколов, используемых на различных уровнях (Day и Zimmerman, 1983). Затем она была пересмотрена в 1995 году (Day, 1995). Называется эта структура эталонной моделью взаимодействия открытых систем ISO (ISO OSI (Open System Interconnection) Reference Model), поскольку она связывает открытые системы, то есть системы, открытые для связи с другими системами. Для краткости мы будем называть эту модель просто «модель OSI».

Модель OSI имеет семь уровней. Появление именно такой структуры было обусловлено следующими соображениями.

1. Уровень должен создаваться по мере необходимости отдельного уровня абстракции.

2. Каждый уровень должен выполнять строго определенную функцию.

3. Выбор функций для каждого уровня должен осуществляться с учетом создания стандартизированных международных протоколов.

4. Границы между уровнями должны выбираться так, чтобы поток данных межд







Сейчас читают про: