1. Лекция: Эволюция вычислительных сетей: от машины Чарльза Бэбиджа до первых глобальных сетей

Два корня сетей передачи данных

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

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

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

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





Рис. 1.1.  Эволюция компьютерных сетей на стыке вычислительной техники и телекоммуникационных технологий.

Итак,

Многотерминальные системы — прообраз сети

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

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





Рис. 1.2.  Многотерминальная система — прообраз вычислительной сети.


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

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


Первые сети — глобальные

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




Рис. 1.3.  Объединение удаленных супер-ЭВМ глобальными связями.


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

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

В 1969 году министерство обороны США инициировало работы по объединению в общую сеть суперкомпьютеров оборонных и научно-исследовательских центров. Эта сеть, получившая название ARPANET послужила отправной точкой для создания первой и самой известной ныне глобальной сети — Internet. Сеть ARPANET объединяла компьютеры разных типов, работавшие под управлением различных ОС с дополнительными модулями, реализующими коммуникационные протоколы, общие для всех компьютеров сети. Такие ОС можно считать первыми сетевыми операционными системами.

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

В 1974 году компания IBM объявила о создании собственной сетевой архитектуры для своих мэйнфреймов, получившей название SNA (System Network Architecture, системная сетевая архитектура). В это же время в Европе активно велись работы по созданию и стандартизации сетей X.25.

Таким образом, хронологически первыми появились глобальные сети (Wide Area Networks, WAN), то есть сети, объединяющие территориально рассредоточенные компьютеры, возможно, находящиеся в различных городах и странах. Именно при построении глобальных сетей были впервые предложены и отработаны многие основные идеи и концепции современных вычислительных сетей, такие, например, как многоуровневое построение коммуникационных протоколов, технология коммутации пакетов и маршрутизация пакетов в составных сетях.

Наследие телефонных сетей

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

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

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

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

Помимо низкой скорости такие каналы имеют и другой недостаток — они вносят значительные искажения в передаваемые сигналы. Поэтому протоколы глобальных сетей, построенных с использованием каналов связи низкого качества, отличаются сложными процедурами контроля и восстановления данных. Типичным примером таких сетей являются сети X.25, разработанные еще в начале 70-х, когда низкоскоростные аналоговые каналы, арендуемые у телефонных компаний, были преобладающим типом каналов, соединяющих компьютеры и коммутаторы глобальной вычислительной сети.

Развитие технологии глобальных компьютерных сетей во многом определялось прогрессом телефонных сетей. С конца 60-х годов в телефонных сетях все чаще стала применяться передача голоса в цифровой форме, что привело к появлению высокоскоростных цифровых каналов, соединяющих АТС и позволяющих одновременно передавать десятки и сотни разговоров. Была разработана специальная технология плезиохронной цифровой иерархии (Plesiochronous Digital Hierarchy, PDH), предназначенная для создания так называемых первичных, или опорных, сетей. Такие сети не предоставляют услуг конечным пользователям, они являются фундаментом, на котором строятся скоростные цифровые каналы "точка-точка", соединяющие оборудование другой (так называемой наложенной) сети, которая уже работает на конечного пользователя.

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

Появившаяся в конце 80-х годов технология синхронной цифровой иерархии (Synchronous Digital Hierarchy, SDH) расширила диапазон скоростей цифровых каналов до 10 Гбит/c, а технология спектрального мультиплексирования DWDM (Dense Wave Division Multiplexing) — до сотен гигабит и даже нескольких терабит в секунду.

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


  1. Лекция: Эволюция вычислительных сетей: от первых локальных сетей до современных сетевых технологий

Мини-компьютеры — предвестники локальных сетей

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

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

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

Даже небольшие подразделения предприятий получили возможность иметь собственные компьютеры. К середине 70-х годов стали широко использоваться мини-компьютеры PDP-11, Nova, HP.

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





Рис. 2.1.  Автономное использование нескольких мини-компьютеров на одном предприятии.


Архитектура мини-компьютеров была значительно упрощена по сравнению с мэйнфреймами, что нашло отражение и в их операционных системах. Многие функции мультипрограммных многопользовательских ОС мэйнфреймов были усечены, с учетом ограниченности ресурсов мини-компьютеров. Операционные системы мини-компьютеров часто стали делать специализированными, например только для управления в реальном времени (ОС RT-11 для мини-компьютеров PDP-11) или только для поддержания режима разделения времени (RSX-11M для тех же компьютеров). Эти операционные системы не всегда были многопользовательскими, что во многих случаях оправдывалось невысокой стоимостью машин. Важной вехой в истории мини-компьютеров и вообще в истории операционных систем стало создание ОС Unix.


Появление стандартных технологий локальных сетей

В середине 80-х годов положение дел в локальных сетях стало меняться. Утвердились стандартные технологии объединения компьютеров в сеть — Ethernet, Arcnet, Token Ring, Token Bus, несколько позже — FDDI.

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

Стандартные сетевые технологии сделали задачу построения локальной сети почти тривиальной. Для создания сети достаточно было приобрести сетевые адаптеры соответствующего стандарта, например Ethernet, стандартный кабель, присоединить адаптеры к кабелю стандартными разъемами и установить на компьютер одну из популярных сетевых операционных систем, например Novell NetWare. После этого сеть начинала работать, и последующее присоединение каждого нового компьютера не вызывало никаких проблем — естественно, если на нем был установлен сетевой адаптер той же технологии.

В 80-е годы были приняты основные стандарты на коммуникационные технологии для локальных сетей: в 1980 году — Ethernet, в 1985 — Token Ring, в конце 80-х — FDDI. Это позволило обеспечить совместимость сетевых операционных систем на нижних уровнях, а также стандартизировать интерфейс ОС с драйверами сетевых адаптеров.

Конец 90-х выявил явного лидера среди технологий локальных сетей — семейство Ethernet, в которое вошли классическая технология Ethernet 10 Мбит/c, а также Fast Ethernet 100 Мбит/c и Gigabit Ethernet 1000 Мбит/c. Простые алгоритмы работы предопределили низкую стоимость оборудования Ethernet. Широкий диапазон иерархии скоростей позволяет рационально строить локальную сеть, применяя ту технологию, которая в наибольшей степени отвечает задачам предприятия и потребностям пользователей. Важно также, что все технологии Ethernet очень близки друг другу по принципам работы, что упрощает обслуживание и интеграцию построенных на их основе сетей.


Роль персональных компьютеров в эволюции компьютерных сетей

Начало 80-х годов связано с еще одним знаменательным для истории сетей событием — появлением персональных компьютеров.

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

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

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

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


Новые возможности пользователей локальных сетей

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

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


Эволюция сетевых операционных систем

Однако и "дружественный" интерфейс, и сетевые функции появились у операционных систем персональных компьютеров не сразу. Первая версия наиболее популярной операционной системы раннего этапа развития персональных компьютеров — MS-DOS компании Microsoft — не предоставляла таких возможностей. Недостающие функции для MS-DOS и подобных ей ОС компенсировались внешними программами, предоставлявшими пользователю удобный графический интерфейс (например, Norton Commander) или средства тонкого управления дисками (например, PC Tools). Наибольшее влияние на развитие программного обеспечения для персональных компьютеров оказала операционная среда Windows компании Microsoft, представлявшая собой надстройку над MS-DOS.

Вместе с версией MS-DOS 3.1 в 1984 году компания Microsoft выпустила продукт Microsoft Networks, который обычно называют MS-NET. Некоторые концепции, заложенные в MS-NET, такие как введение в структуру базовых сетевых компонентов — редиректора и сетевого сервера, успешно перешли в более поздние сетевые продукты Microsoft: LAN Manager, Windows for Workgroups, а затем и в Windows NT.

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

В 1987 г. в результате совместных усилий Microsoft и IBM появилась первая многозадачная операционная система для персональных компьютеров с процессором Intel 80286, в полной мере использующая возможности защищенного режима — OS/2.

Сетевые разработки компаний Microsoft и IBM привели к появлению NetBIOS — очень популярного транспортного протокола и одновременно интерфейса прикладного программирования для локальных сетей, нашедшего применение практически во всех сетевых операционных системах для персональных компьютеров. Этот протокол и сегодня применяется для создания небольших локальных сетей.

Не очень удачная судьба OS/2 не позволила системам LAN Manager и LAN Server захватить заметную долю рынка, но принципы работы этих сетевых систем во многом нашли отражение в более успешной Microsoft Windows NT, содержащей встроенные сетевые компоненты (некоторые из них имеют приставку LM — от LAN Manager).

На персональные компьютеры устанавливались специально для них разработанные операционные системы, подобные MS-DOS, NetWare и OS/2, а также адаптировались существующие ОС. Появление процессоров Intel 80286 и особенно 80386 с поддержкой мультипрограммирования позволило перенести на платформу персональных компьютеров ОС Unix. Наиболее известной системой этого типа была версия Unix компании Santa Cruz Operation (SCO Unix).

В 90-е годы практически все операционные системы, занимающие заметное место на рынке, стали сетевыми. Сетевые функции сегодня встраиваются в ядро ОС и являются его неотъемлемой частью. Операционные системы получили средства для работы со всеми основными технологиями локальных (Ethernet, Fast Ethernet, Gigabit Ethernet, Token Ring, FDDI, ATM) и глобальных (X.25, frame relay, ISDN, ATM) сетей, а также средства для создания составных сетей (IP, IPX, AppleTalk, RIP, OSPF, NLSP). В операционных системах используются средства мультиплексирования нескольких стеков протоколов, что позволяет компьютерам поддерживать сетевую работу с разнородными клиентами и серверами. Появились специализированные ОС, предназначенные исключительно для выполнения коммуникационных задач. Например, сетевая операционная система IOS компании Cisco Systems, работающая в маршрутизаторах, организует в мультипрограммном режиме выполнение набора программ, каждая из которых реализует один из коммуникационных протоколов.

Во второй половине 90-х годов все производители операционных систем резко усилили поддержку средств работы с Internet (кроме производителей Unix-систем, в которых эта поддержка всегда была существенной). Кроме самого стека TCP/IP в комплект поставки начали включать утилиты, реализующие такие популярные сервисы Internet как telnet, ftp, DNS и Web. Влияние Internet проявилось и в том, что компьютер превратился из вычислительного устройства в средство коммуникаций с развитыми вычислительными возможностями.

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

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

В последние годы получила дальнейшее развитие тенденция повышения удобства работы с компьютером. Эффективность работы пользователя становится основным фактором, определяющим эффективность вычислительной системы в целом. Усилия человека не должны тратиться на настройку параметров вычислительного процесса, как это происходило в ОС предыдущих поколений. Например, в системах пакетной обработки для мэйнфреймов каждый пользователь должен был с помощью языка управления заданиями определить большое количество параметров, относящихся к организации вычислительных процессов в компьютере. Так, для системы OS/360 язык управления заданиями JCL предусматривал возможность определения пользователем более 40 параметров, среди которых были приоритет задания, требования к основной памяти, предельное время выполнения задания, перечень используемых устройств ввода-вывода и режимы их работы.

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

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

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


Хронологическая последовательность важнейших событий в истории развития компьютерных сетей

Первые ламповые компьютеры

Начало 40-х

Первые компьютеры на полупроводниковых схемах (транзисторах)

Середина 50-х

Первые компьютеры на интегральных схемах. Первые мультипрограммные ОС

Середина 60-х

Первые глобальные связи компьютеров

Конец 60-х

Начало передач по телефонным сетям голоса в цифровой форме

Конец 60-х

Появление больших интегральных схем. Первые мини-компьютеры

Начало 70-х

Первые нестандартные локальные сети

Начало 70-х

Создание сетевой архитектуры IBM SNA

1974

Создание технологии Х.25

1974

Появление персональных компьютеров

Начало 80-х

Создание Internet в современном виде. Установка на всех узлах стека TCP/IP

Начало 80-х

Появление стандартных технологий локальных сетей

Ethernet – 1980

Token Ring – 1985

FDDI – 1989


Начало коммерческого использования Internet

Конец 80-х

Изобретение Web

1991


  1. Лекция: Основные задачи построения сетей

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

Начнем с наиболее простого случая непосредственного соединения двух устройств физическим каналом, такое соединение называется связью "точка-точка" (point-to-point).

Связь компьютера с периферийными устройствами

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

Для обмена данными компьютер и периферийное устройство (ПУ) оснащены внешними интерфейсами или портами (рис. 3.1). В данном случае к понятию "интерфейс" относятся:

Со стороны компьютера логикой передачи сигналов на внешний интерфейс управляют:

Со стороны ПУ интерфейс чаще всего реализуется аппаратным устройством управления ПУ, хотя встречаются и программно-управляемые периферийные устройства.

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

Таким образом, по каналу, связывающему внешние интерфейсы, передается следующая информация:

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

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

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

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

  4. Контроллер перемещает данные из внутреннего буфера во внешний порт.

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

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





Рис. 3.1.  Связь компьютера с периферийным устройством.


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


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

Возможно распределение функций между драйвером и контроллером (ПУ).

Функции, выполняемые драйвером:

Функции, выполняемые контроллером:


Связь двух компьютеров

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




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


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

Предположим, что мы связали компьютеры по кабелю через COM-порты, которые, как известно, реализуют интерфейс RS-232C (такое соединение часто называют нуль-модемным). Связь между компьютерами осуществляется аналогично связи компьютера с ПУ. Только теперь контроллеры и драйверы портов действуют с двух сторон. Вместе они обеспечивают передачу по кабелю между компьютерами одного байта информации. (В "настоящих" локальных сетях подобные функции передачи данных в линию связи выполняются сетевыми адаптерами и их драйверами.)

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

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

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


Клиент, редиректор и сервер

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

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

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

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



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


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


Задача физической передачи данных по линиям связи

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

При соединении "точка-точка" на первый план выходит задача физической передачи данных по линиям связи. Эта задача среди прочего включает:

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

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

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




Рис. 3.4.  Задачи физической передачи данных.


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

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

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

Несмотря на принятые меры (выбор соответствующей скорости обмена данными, линий связи с определенными характеристиками, способа синхронизации приемника и передатчика), существует вероятность искажения некоторых бит передаваемых данных. Для более надежной передачи данных часто используется стандартный прием — подсчет контрольной суммы и передача ее по линиям связи после каждого байта или после некоторого блока байтов. Часто в протокол обмена данными включается как обязательный элемент сигнал-квитанция, которая подтверждает правильность приема данных и посылается от получателя отправителю.

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

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


  1. Лекция: Проблемы связи нескольких компьютеров

Топология физических связей

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

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




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


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

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

Среди множества возможных конфигураций различают полносвязные и неполносвязные :



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


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




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


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


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



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


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




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


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


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


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



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


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




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


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

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

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



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


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

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

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

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

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



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


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



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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


5. Лекция: Коммутация и мультиплексирование

Обобщенная задача коммутации

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

Например, в сети на рис. 5.1 узлы 2 и 4, непосредственно друг с другом не связанные, вынуждены передавать данные через транзитные узлы, в качестве которых могут использоваться, например, узлы 1 и 5. Узел 1 должен выполнить передачу данных с интерфейса A на интерфейс B, а узел 5 — с интерфейса F на B.



Рис. 5.1.  Коммутация абонентов через сеть транзитных узлов.


Последовательность транзитных узлов (сетевых интерфейсов) на пути от отправителя к получателю называется маршрутом.

В самом общем виде задача коммутации — задача соединения конечных узлов через сеть транзитных узлов — может быть представлена в виде нескольких взаимосвязанных частных задач:

  1. Определение информационных потоков, для которых требуется прокладывать пути.

  2. Определение маршрутов для потоков.

  3. Сообщение о найденных маршрутах узлам сети.

  4. Продвижение – распознавание потоков и локальная коммутация на каждом транзитном узле.

  5. Мультиплексирование и демультиплексирование потоков.


Определение информационных потоков

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

Информационным потоком (data flow, data stream) называют последовательность данных, объединенных набором общих признаков, который выделяет эти данные из общего сетевого трафика.

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

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

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

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

Признаки потока могут иметь глобальное или локальное значение. В первом случае они однозначно определяют поток в пределах всей сети, а во втором — в пределах одного транзитного узла. Пара уникальных адресов конечных узлов для идентификации потока — это пример глобального признака. Примером признака, локально определяющего поток в пределах устройства, может служить номер (идентификатор) интерфейса устройства, с которого поступили данные. Например, узел 1 (рис. 5.1) может быть сконфигурирован так, что он передает все данные, поступившие с интерфейса А, на интерфейс С, а данные, поступившие с интерфейса D, на интерфейс В. Такое правило позволяет разделить два потока данных — поступающий из узла 2 и поступающий из узла 7 — и направлять их для транзитной передачи через разные узлы сети, в данном случае данные из узла 2 через узел 8, а данные из узла 7 — через узел 5.

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

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


Определение маршрутов

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

В качестве критериев выбора могут выступать, например:

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

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

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

Определить маршрут — однозначно задать последовательность транзитных узлов и их интерфейсов, через которые надо передавать данные, чтобы доставить их адресату.


Оповещение сети о выбранном маршруте

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

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

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


Признаки потока

Направление передачи данных

номер интерфейса и/или адрес следующего узла


n

F


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

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

Оповестить сеть о найденных маршрутах — это значит вручную или автоматически настроить каждый коммутатор таким образом, чтобы он "знал", в каком направлении следует передавать каждый поток.


Продвижение — распознавание потоков и коммутация на каждом транзитном узле

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

Устройство, предназначенное для выполнения коммутации, называется коммутатором (switch). Коммутатор производит коммутацию входящих в его порты информационных потоков, направляя их в соответствующие выходные порты (рис. 5.2).




Рис. 5.2.  Коммутатор.

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

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

Коммутатором может быть как специализированное устройство, так и универсальный компьютер со встроенным программным механизмом коммутации, в этом случае коммутатор называется программным. Компьютер может совмещать функции коммутации данных, направляемых на другие узлы, с выполнением своих обычных функций конечного узла. Однако во многих случаях более рациональным является решение, в соответствии с которым некоторые узлы в сети выделяются специально для выполнения коммутации. Эти узлы образуют коммутационную сеть, к которой подключаются все остальные. На рис. 5.3 показана коммутационная сеть, образованная из узлов 1, 5, 6 и 8, к которой подключаются конечные узлы 2, 3, 4, 7, 9 и 10.



Рис. 5.3.  Коммутационная сеть.

Мультиплексирование и демультиплексирование

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

Задача демультиплексирования (demultiplexing) — разделение суммарного агрегированного потока, поступающего на один интерфейс, на несколько составляющих потоков.

Как правило, операцию коммутации сопровождает также обратная операция — мультиплексирование.

Задача мультиплексирования (multiplexing) — образование из нескольких отдельных потоков общего агрегированного потока, который можно передавать по одному физическому каналу связи.

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

На рис. 5.4 показан фрагмент сети, состоящий из трех коммутаторов. Коммутатор 1 имеет пять сетевых интерфейсов. Рассмотрим, что происходит на интерфейсе 1. Сюда поступают данные с трех интерфейсов — int 3, int.4 и int.5. Все их надо передать в общий физический канал, то есть выполнить операцию мультиплексирования. Мультиплексирование представляет собой способ обеспечения доступности имеющихся физических каналов одновременно для нескольких сеансов связи между абонентами сети.



Рис. 5.4.  Операции мультиплексирования и демультиплексирования потоков при коммутации.


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

Технология мультиплексирования должна позволять получателю такого суммарного потока выполнять обратную операцию — разделение (демультиплексирование) данных на составляющие потоки. На интерфейсе int.3 коммутатор выполняет демультиплексирование потока на три составляющих подпотока. Один из них он передает на интерфейс int. 1, другой на int.2, а третий на int.5. А вот на интерфейсе int.2 нет необходимости выполнять мультиплексирование или демультиплексирование — этот интерфейс выделен одному потоку в монопольное пользование. В общем случае на каждом интерфейсе могут одновременно выполняться обе задачи — мультиплексирование и демультиплексирование.

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




Рис. 5.5.  Мультиплексор (а) и демультиплексор (б).


Разделяемая среда передачи данных

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


Рис. 5.6.  Два однонаправленных физических канала.

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




Рис. 5.7.  Один полудуплексный канал.


На рисунке 5.7 коммутаторы К1 и К2 связаны каналом, который может передавать данные в обе стороны, но только попеременно. При этом возникает необходимость в механизме согласования доступа интерфейсов К1 и К2 к такому каналу. Обобщением этого варианта является случай, показанный на рис. 5.8, когда к каналу связи подключается несколько (больше двух) интерфейсов, образуя общую шину.



Рис. 5.8.  Схема "общая шина"


Совместно используемый несколькими интерфейсами физический канал называют разделяемым2) (shared). Часто используется также термин "разделяемая среда" (shared media) передачи данных. Разделяемые каналы связи используются не только для связей типа коммутатор-коммутатор, но и для связей компьютер-коммутатор и компьютер-компьютер.

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

Несмотря на все эти сложности, в локальных сетях разделяемые среды используются очень часто. Этот подход, в частности, реализован в широко распространенных классических технологиях Ethernet, Token Ring, FDDI. В глобальных сетях разделяемые между интерфейсами среды практически не используются. Это объясняется тем, что большие временные задержки при распространении сигналов вдоль протяженных каналов связи приводят к слишком длительным переговорным процедурам доступа к разделяемой среде, сокращая до неприемлемого уровня долю полезного использования канала связи на передачу данных абонентов.

Однако в последние годы наметилась тенденция отказа от разделяемых сред передачи данных и в локальных сетях. Это связано с тем, что за достигаемое таким образом снижение стоимости сети приходится расплачиваться производительностью. Сеть с разделяемой средой при большом количестве узлов всегда будет работать медленнее, чем аналогичная сеть с индивидуальными линиями связи, так как пропускная способность индивидуальной линии связи достается одному компьютеру, а при совместном использовании — делится на все компьютеры сети. Часто с такой потерей производительности приходится мириться ради увеличения экономической эффективности сети. Не только в классических, но и в совсем новых технологиях, разработанных для локальных сетей, сохраняется режим разделяемых линий связи. Например, разработчики технологии Gigabit Ethernet, принятой в 1998 году в качестве нового стандарта, включили режим разделения передающей среды в свои спецификации наряду с режимом работы по индивидуальным линиям связи.


  1)   На практике для уменьшения вычислительной работы ограничиваются поиском не оптимального в математическом смысле, а рационального, то есть близкого к оптимальному, маршрута. Это касается, прежде всего, случая, когда задача выбора маршрута формулируется как задача многокритериальной оптимизации.
  2)   Нужно подчеркнуть, что термин "разделяемая среда" (shared media) традиционно относят именно к случаю разделения канала между интерфейсами и практически никогда – к случаю разделения канала между потоками.