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

Топология «шина»

   Согласно топологии «шина», или, как ее еще часто называют, «общая шина» или «магистраль», все участники сети подключаются к центральному кабелю (рис. 4.1). Для предотвращения дальнейшего распространения и возможного отражения сигнала на концах кабеля устанавливаются специальные заглушки – терминаторы, один из которых обязательно заземляется.
   Рис. 4.1. Пример топологии «шина»
 
   Данные в такой сети передаются сразу всем компьютерам, поэтому задача каждого компьютера – проверить, не ему ли адресовано сообщение. Только компьютер, которому адресовано сообщение, может обработать его. При этом пока данные не будут обработаны, никакие сообщения больше не отправляются. Как только данные обработаны, сигнал об этом поступает в сеть и работа возобновляется.
   Достоинство такой сети в том, что создать ее просто и достаточно дешево. При ее построении используется минимальное количество кабеля и не требуется никакого управляющего оборудования: в обмене данными участвуют только сетевые адаптеры компьютеров. В случае если количество компьютеров уже достаточно велико, сеть часто разбивается на сегменты, для соединения которых используются повторители – концентраторы, коммутаторы, мосты и т. п.
   Главный минус сети – прямая зависимость скорости передачи данных от количества подключенных компьютеров: чем больше компьютеров и других устройств, тем ниже скорость передачи данных. Кроме того, обрыв центрального кабеля или нарушение контакта в любом из разъемов парализует работу всей сети, при этом обнаружить причину порой бывает очень сложно.

Топология «кольцо»

   Согласно топологии «кольцо» все компьютеры сети подключаются последовательно и образуют своего рода замкнутую кольцевую структуру (рис. 4.2).
   Для передачи данных в сети используется маркерная система, то есть в конкретный момент времени передавать данные может только компьютер, захвативший маркер. При этом данные передаются только следующему по кругу компьютеру (справа налево). Это позволяет избежать коллизий и увеличивает надежность сети в целом.
   Рис. 4.2. Пример топологии «кольцо»
 
   Когда компьютеру, обладающему маркером, необходимо передать данные, маркер дополняется адресом компьютера, которому эти данные предназначены, и маркерный блок отправляется в сеть по кругу. Каждый компьютер, который лежит на пути следования маркерного блока, считывает из него адрес получателя и сравнивает его со своим адресом: если адреса не совпадают, то компьютер отправляет маркерный блок далее по кругу, предварительно усилив сигнал. Если адреса совпали, то есть отправитель найден, формируется подтверждающий блок, который передается далее по кругу, к отправителю: в дальнейшем данные уже передаются по найденному пути до тех пор, пока они не будут переданы в полном объеме. Как только передача данных заканчивается, маркер освобождается и идет далее по кругу до первого компьютера, который также хочет передавать данные.
   Использование топологии «кольцо» обладает рядом преимуществ. Например, каждый компьютер сети одновременно выступает повторителем, поэтому уменьшение уровня сигнала возможно только между соседними компьютерами, что напрямую зависит от расстояния между ними. Кроме этого, сеть способна справляться с очень большими объемами трафика за счет отсутствия коллизий и центрального управляющего узла.
   Существуют, однако, и недостатки. К примеру, подключение нового компьютера требует остановки работы всей сети. Аналогичная ситуация случается, если один из компьютеров выходит из строя: сеть становится неработоспособной. Кроме того, поиск неисправности в такой сети сопряжен с множеством сложностей.

Топология «звезда»

   Топология «звезда» на сегодня является наиболее распространенным способом объединения компьютеров в сеть. Согласно этой топологии каждый компьютер или устройство сети подключается к центральному узлу, тем самым образуя сегмент сети (рис. 4.3).
   Сегменты сети общаются между собой посредством того же центрального узла либо промежуточного узла, образуя более сложную сеть или входя в состав комбинированной сети.
   Рис. 4.3. Пример топологии «звезда»
 
   В качестве центрального узла используется любое активное сетевое устройство с достаточным количеством портов. В самом простом случае в роли центрального узла выступает концентратор, при этом поступившие ему данные пересылаются сразу же всем подключенным к концентратору устройствам. Если на концентратор в один момент времени поступают данные от двух разных отправителей, оба пакета игнорируются.
   В случае с более интеллектуальным узлом, например коммутатором, данные одновременно могут передаваться сразу несколькими компьютерами, что значительно увеличивает скорость передачи данных.
   Несмотря на то что использование топологии «звезда» самое дорогостоящее (по сравнению с использованием других топологий), надежность сети и высокая скорость передачи данных делают ее применение практически стандартом. Кроме того, принятый уже достаточно давно стандарт АТХ подразумевает наличие на материнской плате персонального компьютера интегрированного сетевого адаптера, который изначально «заточен» под работу с этой топологией.

Глава 5
Эталонная модель взаимодействия открытых систем

   Теоретической основой функционирования сети является свод правил и стандартов, которые описывают так называемую модель взаимодействия открытых систем (Open System Interconnection, OSI). Основным разработчиком модели является Международная организация по стандартизации (International Organization for Standardization, ISO), поэтому очень часто используется более короткое название – модель ISO/OSI.
   Согласно модели ISO/OSI существует семь уровней, пройдя через которые данные от одного компьютера могут быть переданы другому компьютеру, и абсолютно не важно, какая операционная система или оборудование при этом используется и каким образом данные попадают от источника к адресату.
   Уровни имеют названия и расположены в следующем порядке: физический, канальный, сетевой, транспортный, сеансовый, уровень представления данных и прикладной уровень. Данные могут передаваться как в указанном, так и в обратном порядке. Так, при передаче данные начинают свое движение с прикладного уровня и доходят до физического уровня, который непосредственно связан со средой передачи данных. Если же данные принимаются, то они проходят путь от физического до прикладного уровня (рис. 5.1).
 
   Рис. 5.1. Схематическое отображение модели ISO/OSI
 
   Описанная модель является стандартом для любой среды передачи данных, которых на сегодня используется три: кабель, радиоволны и инфракрасное излучение. Однако, учитывая особенности среды передачи данных, имеются определенные различия в работе физического и канального уровней модели ISO/OSI, в чем вы сможете убедиться далее.
   Каждый уровень отвечает только за свою часть подготовки данных к приему или передаче, что в результате позволяет сделать процесс передачи/приема максимально эффективным и, самое главное, независимым от среды передачи данных. Кроме того, что немаловажно, это позволяет забыть о вопросе совместимости оборудования, которое используется для приема и передачи данных.
   Как уже было упомянуто выше, модель ISO/OSI состоит из семи уровней, а именно:
   ▪ физический — передача и прием электрических сигналов;
   ▪ канальный — управление каналом связи и доступом к среде передачи данных;
   ▪ сетевой — определение оптимальных маршрутов передачи данных;
   ▪ транспортный — контроль целостности и правильности данных в процессе передачи и приема данных;
   ▪ сеансовый — создание, сопровождение и поддержание сеанса связи;
   ▪ уровень представления — кодирование и шифрование данных с помощью требуемых алгоритмов;
   ▪ прикладной — взаимодействие с клиентскими программами.
   Данные между разными уровнями модели передаются посредством стандартных интерфейсов и протоколов передачи данных, главная задача которых – обработка полученных данных и приведение их к тому виду, который необходим для работы следующего уровня. Более подробно о разных протоколах передачи данных вы сможете узнать далее.

Физический уровень

   Физический уровень (Physical Layer) является самым нижним в модели ISO/OSI. Он работает непосредственно с имеющимся каналом связи. Его главная задача – преобразование поступивших от вышестоящего уровня данных и передача соответствующих им электрических сигналов по каналу связи получателю, а также прием данных от отправителя и их конвертирование согласно существующим таблицам кодирования сигналов с передачей данных вышестоящему уровню.
   Прежде чем начать передачу электрических сигналов, алгоритмы физического уровня определяют тип канала связи и его свойства: электротехнические и механические характеристики, величину напряжений, расстояние между отправителем и получателем, скорость передачи данных и т. д., то есть все, что является критичным для передачи данных. Именно на этом этапе определяется, сеть какого типа используется (проводная или беспроводная), а также выясняется топология сети.
   Функции физического уровня выполняют сетевые адаптеры на отправителе и получателе, а также повторители сигнала, например концентратор.
   Стандартизация на уровне модели ISO/OSI позволяет использовать в сети оборудование разных производителей, не заботясь при этом об их совместимости, что дает возможность сосредоточиться только на процессе передачи и приема данных.

Канальный уровень

   Задача канального уровня (Data Link Layer) – обеспечить гарантированную передачу данных через физический канал, параметры и особенности которого уже установлены и «приняты во внимание» на физическом уровне. При этом решаются вопросы физической адресации, корректности отправленной и полученной информации, контроля возникающих ошибок, управления потоком информации и т. д.
   Данные передаются блоками, которые называются кадрами. К каждому кадру добавляется несколько бит информации о типе кадра, а также контрольная сумма, которая сверяется при его получении адресатом. При несовпадении контрольных сумм запрашивается повторная передача кадра и данные синхронизируются.
   За работу канального уровня локальных сетей отвечают два подуровня:
   ▪ MAC (Medium Access Control) – уровень доступа к разделяемой среде;
   ▪ LLC (Logical Link Control) – уровень управления логическим каналом.
   Уровень MAC отвечает за получение доступа к общей среде передачи данных, в связи с чем каждый протокол передачи данных имеет соответствующую процедуру доступа. Кроме того, MAC отвечает за согласование режимов работы канального и физического уровней (дуплексный и полудуплексный режим соответственно), буферизацию кадров и т. д.
   Уровень LLC использует три разные процедуры, отвечающие за качество доставки данных.
   ▪ LLC1 – без установления соединения и без подтверждения доставки. Данная процедура управления каналом позволяет передавать данные с максимальной скоростью, для чего используются датаграммы.
   ▪ LLC2 – с установлением соединения и подтверждением доставки. Этот вид управления каналом наиболее надежный. Он позволяет гарантированно доставлять данные и получать подтверждения о доставке. На этом уровне работает система контроля ошибок, которая дает возможность восстанавливать поврежденные блоки данных и упорядочивать их последовательность. Подобная система функционирует благодаря нумерации кадров, что позволяет запрашивать ошибочные кадры и упорядочивать их.
   ▪ LLC3 – без установления соединения, но с подтверждением доставки. Данный тип управления каналом достаточно специфичен и часто используется в процессах, которые требуют быстрой передачи данных, но с подтверждением доставки. Как правило, это необходимо для разного рода процессов, происходящих в режиме реального времени, когда временные затраты очень критичны. В этом случае передача следующего кадра осуществляется только после подтверждения доставки предыдущего.
   Таким образом, LLC-уровень может передавать данные либо с помощью датаграмм, либо с использованием одной из процедур, уровень качества доставки которой позволяет достичь необходимого компромисса между качеством и скоростью передачи данных.
   Канальный уровень может реализовываться как на аппаратном уровне, например с помощью коммутаторов, так и с применением программного обеспечения, допустим, драйвера сетевого адаптера.

Сетевой уровень

   Сетевой уровень (Network Layer) – один из важнейших уровней модели взаимодействия открытых систем. Поскольку для построения сети могут использоваться различные технологии, а то и вовсе сеть может состоять из нескольких сегментов с абсолютно разными сетевыми топологиями, чтобы «подружить» эти сегменты, требуется специальный механизм. В качестве такого механизма и выступает сетевой уровень.
   Кроме определения физических адресов всех участников сети, данный уровень отвечает за нахождение кратчайших путей доставки данных, то есть умеет выполнять маршрутизацию пакетов. При этом постоянно отслеживается состояние сети и определяются новые маршруты, если возникают «заторы» на пути следования данных. Благодаря маршрутизации данные всегда доставляются с максимальной скоростью.
   Сетевой уровень для доставки данных между разными сетевыми сегментами использует особую адресацию. Так, вместо MАC-адресов применяется пара чисел – номер сети и номер компьютера в этой сети. Использование нумерации позволяет составить точную карту сети независимо от топологии сегментов и определить альтернативные пути передачи данных.
   На практике функции сетевого уровня выполняет маршрутизатор.

Транспортный уровень

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

Сеансовый уровень

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

Уровень представления данных

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

Прикладной уровень

   Прикладной уровень (Application Layer) – последний «бастион» между пользователем и сетью. Он поддерживает связь пользовательских приложений, то есть программ, с сетевыми сервисами и службами на всех уровнях модели ISO/OSI, обеспечивает передачу служебной информации, синхронизирует взаимодействие прикладных процессов и т. д.

Глава 6
Протоколы передачи данных

Понятие протокола

   В предыдущей главе мы познакомились с эталонной моделью, описывающей принцип и правила подготовки, приема и передачи данных через любой канал связи. Каждый из ее семи уровней для выполнения своих функций в подготовке или обработке данных использует стандартные процедуры межуровневого обмена информацией и протоколы передачи данных. Поэтому получается, что модель ISO/OSI является теоретической основой функционирования сети, а сетевые протоколы – это то, что превращает теорию в практику.
   Протокол передачи данных – это набор правил и соглашений, которые описывают способ передачи данных между объектами в сети.
   Для обслуживания модели взаимодействия открытых систем используется достаточно большое количество сетевых протоколов. Многие из них специфичны и часто выполняют только одно конкретное действие, но делают это быстро и, самое главное, правильно. Существуют также более продвинутые и функциональные протоколы, которые могут совершать определенные действия, выполняя работу сразу нескольких уровней модели. Есть даже целые семейства (стеки) протоколов, которые являются составной частью протоколов с общим названием, например стеки протоколов TCP/IP или IPX/SPX.
   ПРИМЕЧАНИЕ
   Модель ISO/OSI разрабатывалась тогда, когда уже были разработаны многие протоколы, в частности TCP/IP. Ее главной задачей была стандартизация работы сетей. Однако, когда модель была принята окончательно, оказалось, что она имеет много недостатков. В частности, самым слабым звеном модели стал транспортный уровень. По этой причине существует достаточно много протоколов, которые выполняют работу сразу несколькихуровней, что противоречит самой модели открытых систем.
   Различают низкоуровневые и высокоуровневые протоколы.
   Низкоуровневые работают на самых нижних уровнях модели ISO/OSI и, как правило, имеют аппаратную реализацию, что позволяет использовать их в таких сетевых устройствах, как концентраторы, мосты, коммутаторы и т. д.
   Высокоуровневые протоколы работают на верхних уровнях модели ISO/OSI и обычно реализуются программным путем. Это позволяет создавать любое количество протоколов разного применения, делая их настолько гибкими, как того требует современная ситуация.
   В табл. 6.1 приведены названия некоторых популярных протоколов и их положение в модели взаимодействия открытых систем.
 
   Таблица 6.1. Популярные протоколы модели ISO/OSI

Основные протоколы

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

Стеки протоколов

   Выше уже упоминалось, что за организацию работы всех уровней модели ISO/OSI часто отвечают стеки протоколов. Плюсом их использования является то, что все протоколы, входящие в стек, разработаны одним производителем, а значит, они способны работать максимально быстро и эффективно.
   За время существования сетей было разработано несколько таких стеков протоколов, среди которых наиболее популярными являются TCP/IP, IPX/SPX, NetBIOS/SMB, Novell NetWare, DECnet и др.
   В состав стеков включены протоколы, работающие на разных уровнях модели ISO/OSI, однако обычно выделяют только три типа протоколов: транспортный, сетевой и прикладной.
   Преимущество использования стеков протоколов заключается в том, что протоколы, работающие на нижних уровнях, применяют стандартные и давно отлаженные сетевые протоколы, такие как Ethernet, FDDI и т. д. Эти протоколы аппаратно реализованы, поэтому возможно использовать одно и то же оборудование для разных типов сетей и тем самым достигать их совместимости на аппаратном уровне. Что касается высокоуровневых протоколов, то каждый из стеков имеет свои преимущества и недостатки. Часто случается и так, что нет жесткой привязки «один протокол – один уровень», то есть один протокол может работать сразу на двух-трех уровнях.

Привязка

   Важным моментом в функционировании сетевого оборудования, в частности сетевого адаптера, является привязка протоколов. На практике она позволяет использовать разные стеки протоколов при обслуживании одного сетевого адаптера. Например, можно одновременно использовать стеки TCP/IP и IPX/SPX: если при попытке установления связи с адресатом с помощью первого стека произошла ошибка, то автоматически происходит переключение на протокол из следующего стека. В этом случае важна очередность привязки, поскольку она влияет на использование того или иного протокола из разных стеков.
   Вне зависимости от того, какое количество сетевых адаптеров установлено в компьютере, привязка может осуществляться как по принципу «один к нескольким», так и по принципу «несколько к одному», то есть один стек протоколов может обслуживать сразу несколько сетевых адаптеров или несколько стеков – работу одного адаптера.

TCP/IP

   Стек протоколов TCP/IP (Transmission Control Protocol/Internet Protocol) на сегодня является наиболее распространенным и универсальным. Он работает в локальных сетях любых масштабов. Кроме того, это единственный из протоколов, который позволяет работать в глобальной сети Интернет.
   Протокол был создан в далеких 70-х годах прошлого века управлением Министерства обороны США. Именно с его подачи началась разработка универсального протокола, который позволил бы соединить любые два компьютера, как бы далеко друг от друга они ни находились. Конечно, они преследовали собственную цель – обеспечить постоянную связь с центром управления, даже если все вокруг будет разрушено в результате военных действий. Так была образована глобальная сеть ARPAnet, которую министерство активно использовало в своих целях.
   Толчком к дальнейшему усовершенствованию и широкому распространению стека TCP/IP стал тот факт, что его поддержка была реализована в компьютерах с операционной системой UNIX. В результате популярность TCP/IP возросла.
   В данный стек входит достаточно много протоколов, работающих на различных уровнях, но свое название он получил благодаря двум из них – TCP и IP.
   TCP (Transmission Control Protocol) – транспортный протокол, предназначенный для управлением передачей данных в сетях, использующих стек TCP/IP. IP (Internet Protocol) – протокол сетевого уровня, предназначенный для доставки данных в составной сети с использованием одного из транспортных протоколов, например TCP или UDP.
   Нижний уровень стека TCP/IP использует стандартные протоколы передачи данных, что делает возможным его применение в сетях с использованием любых сетевых технологий и на компьютерах с любой операционной системой.
   Изначально протокол TCP/IP разрабатывался для применения в глобальных сетях, именно поэтому он является максимально гибким. В частности, благодаря способности «дробления» пакетов данные доходят до адресата вне зависимости от качества канала связи. Кроме того, благодаря наличию IP-протокола становится возможной передача данных между сегментами сети с разной топологией и способом передачи данных.