Сетевые топологии, методы доступа к сети, принципы построения сетевых программных интерфейсов. Алгоритмы и применения сетей, алгоритм клиент-сервер и P2P. Классификация сетей.

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

Первой сетью, где применен пакетный принцип передачи данных, была ARPANET (1969; Advanced Research Project Agency NETwork). Эта сеть имела всего 4 узла. Примерно тогда же стали разрабатываться протоколы последовательной, синхронной (SDLC) и асинхронной ("старт/стоп") передачи данных, интеллектуальные терминалы и канальные концентраторы. В рамках этих работ были разработаны устройства и программы доступа к среде с разделением по времени (TDM — Time Division Multiplexing). Такая схема доступа используется практически во всех многозадачных операционных системах. Все это создало предпосылки для разработки реальных сетей. Целью строительства сетей является эффективное использование ресурсов машин, объединяемых сетью, и повышение надежности системы в целом. Через сеть передаются тексты, сообщения, файлы, изображения, задания, команды, видео- или акустические данные. Попытаемся ответить на вопрос, почему сети получили столь широкое распространение?

Сети делают возможным:

  • доступ к общим ресурсам (быстродействующая печать, диски большой емкости, backup-системы, информационные хранилища, серверы и т.д.);
  • децентрализацию вычислительного процесса, возможность создания распределенных вычислительных систем (системы GRID), повышение надежности систем за счет резервирования;
  • информационный обмен в издательствах, информационных агентствах, поисковых системах, между обычными людьми, разбросанными по всему миру, в системах сбора и обработки научных, метео- и геофизических данных и т.д.;
  • распределенное управление;
  • всемирные и локальные системы межличностного общения (почта, IСQ, SMS и пр.).

Сети – это системы мультиплексирования доступа к каналам и ресурсам.

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

Сети по своей принадлежности делятся на локальные (LAN — Local Area Network), городские (MAN – Metropolitan Area Network), региональные (WAN – Wide Area Network) и всемирные (Интернет). В настоящее время существует огромное разнообразие сетей. Но есть у них и нечто общее: практически все они базируются на пакетном принципе передачи данных. Пакет представляет собой последовательность нулей и единиц. Нулю и единице (часто их называют логическим нулем и логической единицей) ставится в соответствие определенный уровень амплитуды или знак перепада. В этой связи во всех сетях приходится решать проблему выделения начала и конца пакетов. Как правило, для этой цели используются уникальные последовательности бит или уникальные коды. При этом возникает проблема, когда подобные сигнатуры встречаются в теле пакета, ведь это может вызвать сбой – система по ошибке может принять такую последовательность за сигнал прерывания обработки пакета. Задача решается с использованием ESC-последовательностей или техники бит-стаффинга. Esc-последовательность представляет собой строку из двух или более символов, первый из которых, как правило, имеет код 27 (десятичный; ESC). Строка имеет такой формат, который не может встретиться в пределах пакета; если же такая последовательность все же встречается, включается алгоритм, обеспечивающий ее преобразование к уникальному виду. Эта последовательность служит для подмены сигнатуры начала или конца пакета, если она встретится в его поле данных. Техника бит-стафинга предполагает добавление в определенных ситуациях нулевого или единичного бита или использование определенных комбинаций сигналов на физическом уровне. Рассмотрим пример сети ISDN, где для выделения начала и конца кадра служит байт 01111110. Если внутри кадра встретится такой байт, то он будет заменен последовательностью 011111010. Приемное устройство преобразует эту последовательность назад в 01111110. Так входная последовательность бит 010011111111111111110010 будет преобразована в

010011111011111011111010010,

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

Эти комбинации решают те же задачи, что и ESC-последовательности, но более экономно.

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

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

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

В сетях для формирования виртуального канала и транспортировки данных используются схемы с коммутацией каналов и с коммутацией пакетов. Эти схемы представлены на рис. 10.1. В случае коммутации каналов сначала осуществляется формирование связи между инициатором и адресатом и только затем начинается обмен данными (или разговор при телефонном соединении). Канал может реализоваться из медных проводов, оптических волокон или с помощью радио. В качестве параметра при установлении соединения используется код места назначения, например, его телефонный номер или IP-адрес. При наборе первой цифры выбирается номер выхода первого коммутатора, при наборе второй цифры — номер выходного канала второго коммутатора и т.д. Цифры могут группироваться в блоки. Время формирования канала достигает 10 секунд и не зависит от расстояния между клиентами. Зато после сформирования канала характерная задержка передачи данных не превышает 5 мс на 1000 км.

Сформированный виртуальный канал используется только конечными клиентами, и полоса пропускания канала остается постоянной в течение сессии, а неиспользованный ресурс канала пропадает.

Схемы сетей с коммутацией каналов (А) и с коммутацией пакетов (Б)

Рис. 10.1.  Схемы сетей с коммутацией каналов (А) и с коммутацией пакетов (Б)

Принцип коммутации каналов применяется системами ISDN, ATM и Х.25. Это не означает, что там ни при каких обстоятельствах не используется коммутация пакетов. Приведенное выше замечание о постоянстве полосы пропускания не исключает, тем не менее, ситуаций перегрузки. Реальные коммутаторы, в отличие от нарисованных, имеют многие сотни и даже тысячи входных/выходных каналов. При поступлении данных по большому числу каналов одновременно коммутатор может не справиться с такой ситуацией. В случае коммутации пакетов один и тот же канал может использоваться большим числом пользователей одновременно. Здесь перегрузка является скорее нормой, чем исключением. В современных системах часто совмещаются методы коммутации каналов и пакетов.

Помимо названных режимов, существует также система коммутации сообщений. Наистарейшим примером такого рода является система передачи телеграмм, где очередная станция получает телеграмму в виде перфоленты, оператор (или специализированный коммутатор) считывает ее адрес и принимает решение о том, по какому из каналов ее следует передать дальше. Такие системы называются "запомнить-и-переадресовать". В современных сетях такой принцип используется при передаче новостей (протокол NNTP — близкий родственник e-mail). При передаче сообщений не регламентируется их размер, что вынуждает в точках коммутации записывать их на диски. Отсутствие такого рода ограничений приводит к тому, что канал может быть занят достаточно долго. Новое сообщение может быть послано лишь после завершения отправки предыдущего. Все эти проблемы легко разрешаются в системах с коммутацией пакетов, размер которых регламентирован. В этом методе задержка доставки пакета может варьироваться в довольно широких пределах. Более того, может меняться порядок доставляемых пакетов, и кадр, посланный раньше, может быть доставлен позже, — принимающая сторона должна уметь обрабатывать такие события. Пакетный способ транспортировки легко адаптируется к любым форматам, скоростям передачи и алгоритмам формирования и обработки пакетов. Здесь, как правило, исключается возможность монополизации канала каким-либо пользователем, система допускает кодирование или преобразование данных в пакете. Емкость буфера определяется максимальным размером пакета. Для буферизации может использоваться оперативная память маршрутизатора. В данной схеме решение о переадресации может приниматься до того, как пакет будет принят коммутирующим устройством целиком (режим cut-through – коммутация на пролете).

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

Но даже 155 Мбит/с быстродействия АТМ-коммутаторов не избавляет их от перегрузок. Достаточно попытаться представить, что на вход 1000-канального переключателя пришло одновременно 100 ячеек (а это ординарная ситуация) — здесь могут не спасти даже достаточно большие объемы буферов и изощренные системы конвейерной обработки. Недаром АТМ-коммутаторы так дороги!

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

Именно гибкая система фрагментации и дефрагментации пакетов сделало сети Интернет столь универсальными.

Как локальные, так и региональные сети могут отличаться по топологии и методу доступа.

10.1. Сетевые топологии

Среди топологических схем наиболее популярными являются (см. рис. 10.2):

  1. шина;
  2. звезда;
  3. кольцо;
  4. многокаскадные и многосвязные сети.
Примеры сетевых топологий

Рис. 10.2.  Примеры сетевых топологий

К первым трем типам топологии относятся 99% всех локальных сетей. Деление сетей на локальные и региональные достаточно условно. Под локальной сетью подразумевается сеть предприятия, конторы, учреждения или кампуса, имеющая, как правило, одного администратора. Такая сеть обычно имеет шлюз, который соединяет ее с региональной сетью. Наиболее популярный тип локальной сети физического уровня — Ethernet — может строиться по схемам 1 и 2 (рис. 10.2). В нынешнем виде стандарт на сети типа Ethernet был сформулирован сравнительно недавно — в 1985 году (IEEE Std 802.3-1985; ISO DIS 8802/2).

Сети Token Ring и FDDI применяют кольцевую топологию (3 на рис. 10.2), где каждый узел должен иметь два сетевых интерфейса. Эта топология удобна для оптоволоконных каналов, где сигнал может передаваться только в одном направлении (но при наличии двух колец, как в FDDI или 802.17, возможна и двунаправленная передача). Нетрудно видеть, что кольцевая топология строится из последовательности соединений "точка-точка". Именно эта топология используется для построения каналов на базе оптических волокон. В настоящее время разработана технология двунаправленной передачи данных по одному волокну.

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

Вариант А на рис. 10.3 представляет собой схему с полным набором связей (все узлы соединены со всеми), такая схема используется только в случае, когда необходимо обеспечить высокую надежность соединений. Эта версия требует для каждого из узлов наличия N-1 интерфейсов при полном числе узлов N. Вариант Б является примером нерегулярной топологии, а вариант В – иерархический случай связи (древовидная топология).

Различные сетевые топологические схемы

Рис. 10.3.  Различные сетевые топологические схемы

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

D=\sum_{d=1}^N \frac{dN_d}{N-1},

где Nd – число ЭВМ на расстоянии d; N – полное число ЭВМ в сети; d – расстояние между ЭВМ. Для сети типа А на рис. 10.3 D = 1. Данная топология гарантирует сохранение связности даже при обрыве любых трех соединений. Она применима при ограниченном числе узлов.

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

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

Некоторые топологии вычислительных систем

Рис. 10.4.  Некоторые топологии вычислительных систем

10.2. Метод доступа к сети

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

В 1970-х годах Норман Абрахамсон вместе с сотрудниками Гавайского университета предложил оригинальный способ решения проблемы доступа к сети, который был назван позднее ALOHA. Этот алгоритм использовался для доступа к радиоканалу большого числа независимых пользователей. ALOHA разрешает всем пользователям передачу тогда, когда им это оказалось нужно. При этом неизбежны столкновения и искажения передаваемых данных. Алгоритм, благодаря обратной связи, позволяет отправителям узнать, были ли данные в процессе передачи искажены. Если зарегистрировано такое столкновение, все вовлеченные участники выжидают некоторое время и предпринимают повторную попытку. Время выдержки выбирается случайным образом, что делает повторные столкновения менее вероятными.

Принципиальное отличие алгоритма ALOHA от CSMA/CD (используемого в Ethernet) с точки зрения столкновений заключается в том, что в первом случае столкновения детектируются на входе получателя, а во втором – на выходе отправителя.

Мультиплексирование можно осуществлять по частоте (по длине волны — FDM), предоставляя разным клиентам разные частотные диапазоны, или по времени (TDM), разрешая доступ клиентов к сетевой среде по очереди и резервируя каждому из них для работы фиксированные последовательные временные интервалы. При этом необходима синхронизация работы всех участников процесса. В последнее время стало использоваться также мультиплексирование по кодам CDMA (Code Division Multiple Access), где каждому участнику выделяется уникальный чип-код и допускается использование всеми клиентами всего частотного диапазона в любой момент времени.

Большая часть современных локальных сетей базируется на алгоритме доступа CSMA/CD (Carrier Sensitive Multiple Access with Collision Detection), где все узлы имеют равные возможности доступа к сетевой среде, а при одновременной попытке фиксируется столкновение и сеанс передачи повторяется позднее. Ряд разновидностей такого протокола рассмотрели Кляйнрок и Тобаги еще в 1975 году. После передачи очередного пакета (кадра) обычно делается некоторая пауза. После этого любой узел, подключенный к сетевому сегменту, может попытать счастья. Модификацией CSMA-алгоритма является схема, в которой после передачи кадра выделяется определенный временной домен (соревнования), когда претенденты могут выяснять отношения между собой. При столкновении начало передачи возможно только во время очередного домена соревнования. В этой модификации должен быть предусмотрен некоторый механизм синхронизации и исключения бесконечной череды столкновений.

Алгоритм CSMA предпочтительнее ALOHA, так как здесь ни один из пользователей не начинает передачу, если канал занят. Этот способ доступа покрывается патентами США 4063220 и 4099024 (Ксерокс), но IEEE имеет соглашение с этой компанией, которое разрешает использовать данный алгоритм без каких-либо ограничений. Здесь нет возможности приоритетного доступа, и по этой причине такие сети плохо приспособлены для задач управления в реальном масштабе времени. Некоторое видоизменение алгоритма CSMA/CD (как это сделано в сетях CAN или в IBM DSDB) позволяют преодолеть эти ограничения. Доступ по схеме CSMA/CD (из-за столкновений) предполагает ограничение на минимальную длину пакета. По существу метод доступа CSMA/CD (в полудуплексном случае) предполагает широковещательную передачу пакетов (не путать с широковещательной адресацией). Все рабочие станции логического сетевого сегмента воспринимают эти пакеты хотя бы частично, чтобы прочесть адресную часть. При широковещательной адресации пакеты не только считываются целиком в буфер, но и производится прерывание процессора для обработки факта прихода такого пакета.

Логика поведения субъектов в сети с доступом CSMA/CD может варьироваться. Здесь существенную роль играет то, синхронизовано ли время доступа у этих субъектов. В случае Ethernet такой синхронизации нет. В общем случае при наличии синхронизации возможны следующие алгоритмы:

А.

  1. Если канал свободен, терминал передает пакет с вероятностью 1.
  2. Если канал занят, терминал ждет его освобождения, после чего производится передача.

Б.

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

В.

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

Алгоритм А на первый взгляд представляется привлекательным, но в нем заложена возможность столкновений с вероятностью 100%. Алгоритмы Б и В более устойчивы в отношении этой проблемы.

Эффективность алгоритма CSMA зависит от того, как быстро передающая сторона узнает о факте столкновения и прерывает передачу, ведь продолжение бессмысленно — данные уже повреждены. Это время зависит от длины сетевого сегмента и задержек в оборудовании сегмента. Удвоенное значение задержки определяет минимальную длину пакета, передаваемого в такой сети. Если пакет короче, он может быть передан так, что передающая сторона не узнает о его повреждении в результате столкновения. Для современных локальных сетей Ethernet, построенных на переключателях и полнодуплексных соединениях, эта проблема неактуальна.

С целью пояснения этого утверждения рассмотрим случай, когда одна из станций (1) передает пакет самой удаленной ЭВМ (2) в данном сетевом сегменте. Время распространения сигнала до этой машины пусть равно Т. Предположим также, что машина (2) попытается начать передачу как раз в момент прихода пакета от станции (1). В этом случае станция (1) узнает о столкновении лишь спустя время 2Т после начала передачи (время распространения сигнала от (1) до (2) плюс время распространения сигнала столкновения от (2) к (1)). Следует учитывать, что регистрация столкновения — это аналоговый процесс и передающая станция должна "прослушивать" сигнал в кабеле в процессе передачи, сравнивая результат чтения с тем, что она передает. Важно, чтобы схема кодирования сигнала допускала детектирование столкновения. Например, сумма двух сигналов с уровнем 0 этого сделать не позволит. Можно подумать, что передача короткого пакета с искажением из-за столкновения — не такая уж большая беда, проблему может решить контроль доставки и повторная передача.

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

Сопоставление эффективности использования канала для различных протоколов произвольного доступа произведено на рис. 10.5.

Сравнение эффективности канала для различных протоколов произвольного доступа и разных значений p

Рис. 10.5.  Сравнение эффективности канала для различных протоколов произвольного доступа и разных значений p

Протокол доступа CSMA может предполагать, что когда канал оказывается свободным, а рабочая станция готова начать передачу, реальная пересылка кадра в рамках заданного временного домена происходит с определенной вероятностью p. С вероятностью 1-р передача будет отложена до следующего временного домена. В следующем домене, если канал свободен, с вероятностью р осуществится передача или будет отложена до следующего домена и так далее. Процесс продолжается до тех пор, пока кадр не будет передан. На рисунке эта вероятность р отмечена цифрами после аббревиатуры "CSMA". В случае Ethernet эта вероятность равна единице (CSMA-1) [46, Э. Таненбаум, стр. 302], то есть рабочая станция безусловно начнет передачу, если она к этому готова, а канал свободен. Из рисунка видно, что чем меньше эта вероятность, тем выше эффективность (среднее время доступа к сетевой среде также увеличивается). Очевидно, что все разновидности протокола доступа CSMA эффективнее протокола ALOHA в обеих его разновидностях. Связано это с тем, что ни одна станция не начинает передачу, если обнаружит, что сетевая среда занята. Существует еще одна разновидность протокола CSMA (nonpersistent), в которой сетевой субъект при готовности анализирует состояние сетевой среды и, если канал занят, возобновляет попытку спустя псевдослучайный интервал времени, то есть ведет себя так, будто произошло столкновение. Такой алгоритм повышает эффективность использования канала при существенном возрастании усредненной задержки доступа.

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

Рассмотрим, как можно избежать проблем столкновений пакетов. Пусть к сетевому сегменту подключено N рабочих станций. После передачи любого пакета выделяется N временных интервалов. Каждой подключенной к сетевому сегменту машине ставится в соответствие один из этих интервалов длительностью L. Если машина имеет данные и готова начать передачу, она записывает в этот интервал бит, равный 1. По завершении этих N интервалов рабочие станции по очереди, определяемой номером приписанного интервала, передают свои пакеты (см. рис. 10.6, N = 8).


Рис. 10.6. 
 

В примере на рис. 10.6 сначала право передачи получают станции 0, 2 и 6, а в следующем цикле — 2 и 5 (пересылаемые пакеты окрашены в серый цвет). Если рабочая станция захочет что-то передать, когда ее интервал (домен) уже прошел, ей придется ждать следующего цикла. По существу данный алгоритм является протоколом резервирования. Машина сообщает о своих намерениях до того, как начинает что-либо передавать. Чем больше ЭВМ подключено к сетевому сегменту, тем больше временных интервалов должно быть зарезервировано и тем ниже эффективность сети. Понятно, что эффективность растет с ростом L.

Вариация данного алгоритма доступа реализована в сетях сбора данных реального времени CAN (Controller Area Network — http://www.kvaser.se/can/protocol/index.htm — алгоритм доступа CSMA/CA — collision avoidance — с исключением столкновений). Там в указанные выше интервалы записывается код приоритета рабочей станции. Причем станции должны быть синхронизованы и начинать запись своего уникального кода одновременно, если все или часть из них готовы начать передачу. Эти сигналы на шине суммируются с помощью операции "проволочное ИЛИ" (если хотя бы один из участников выставляет логическую единицу, на шине будет низкий уровень). В процессе побитового арбитража каждый передатчик сравнивает уровень передаваемого сигнала с реальным уровнем на шине. Если эти уровни идентичны, он может продолжить, в противном случае передача прерывается и шина остается в распоряжении более приоритетного кадра. Для пояснения работы алгоритма предположим, что N = 5 и одновременно производится попытка начать передачу станции с кодами приоритета 10000, 10100, и 00100. Первыми будут посланы станциями биты 1, 1 и 0. Третья станция сразу выбывает из конкурса (ее бит равен 0). Первая и вторая продолжают передачу. На следующем такте станции передадут биты 0 и 0, что позволяет им продолжить передачу. На третьем такте они выдадут 0 и 1, что вынудит первую станцию выбыть из соревнования. Оставшаяся станция (10100) продолжит передачу кода приоритета, а затем и данных. Число рабочих станций, подключенных к сетевому сегменту, может достигать 2N-1. Необходимость синхронизации ограничивает длину сетевого сегмента или быстродействие передачи.

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

\left(\frac{k-1}{k}\right)^{k-1}
.

Для малого числа станций вероятность получить доступ к каналу относительно высока, но уже при k = 3 - 5 вероятность приближается к асимптотическому значению 1/e.

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

Алгоритм адаптивного обхода

Рис. 10.7.  Алгоритм адаптивного обхода

Первая ниша доступа следует за очередной успешной передачей и соответствует узлу дерева 0 (на рис. 10.7 не показан). В этом узле всем станциям предоставлена возможность доступа. Если одна из них его получила, очень хорошо. Если же произошло столкновение, то в нише узла 1 до конкурса допускаются станции, связанные с узлом 2 (А, Б, В и Г). Если одна из них получила доступ, в нише, следующей за переданным кадром, будут соревноваться станции, связанные с узлом 3 (Д, Е, Ж и З). Если же на предшествующем этапе произошло столкновение, следующая попытка предоставляется станциям, связанным узлом 4 (А и Б), и т.д. Если столкновение произошло в нише узла 0, то сначала исследуется все дерево, чтобы выявить все готовые к передаче станции. Каждая бит-ниша ассоциируется с определенным узлом дерева. Если происходит столкновение, поиск продолжается рекурсивно для правой и левой ветвей узла. Если бит-ниша пассивна (нет заявок на передачу) или если имеется только одна станция-претендент, поиск будет прерван, так как все станции-претенденты найдены. Существует достаточно большое число вариаций данного алгоритма доступа к сети.

Следующим по популярности после CSMA/CD является маркерный доступ (Token Ring, IEEE-802.4, ArcNet и FDDI), который более гибок и обеспечивает приоритетную иерархию обслуживания. Массовому его внедрению препятствует сложность и дороговизна. Хотя региональные сети имеют самую разнообразную топологию, практически всегда они строятся на связях "точка-точка".

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

Таблица 10.1. Параметры различных локальных сетей
Название сети Топология Быстродействие Мбит/с Доступ Тип кабеля NEXT при макс. частоте [дБ] Размер сети (сегмента) Макс. число узлов
10BASE5 шина 10 CSMA/CD RG-8 (50 Ом)   500м 1024
10BASE2 шина 10 CSMA/CD RG-58 (50 Ом)   185м 90
10BROAD36 шина 10 CSMA/CD RG-59 (75 Ом)   3600м 1024
100BASE-TX звезда 100 CSMA/CD UTP (V; 100 Ом) 29 200м -
100BASE-FX звезда 100 CSMA/CD оптоволокно   300м -
1000baseFX звезда 1000 CSMA оптоволокно   2км  
10GE звезда 10000 CSMA оптоволокно   2км  
IEEE 802.4 шина 1/5/10/20 маркер RG-59 (75 Ом)      
ARCNET звезда 2,5/20 маркер RG-62/UTP (93 Ом)   600/125 м 255
IEEE 802.5 звезда 4/16 маркер STP/UTP (150/120 Ом) 22/32 366 м 260
AppleTalk шина/звезда 0,23 CSMA/CD STP/UTP (100 Ом) 22/32 300/3000 м 32 на сегмент
EtherTalk шина/звезда 10 CSMA/CD STP/UTP, коаксиальный кабель   500/3000 м 254/1023
ISN звезда 8,64 Шина доступа STP, оптоволокно   Не ограничено 336/1920
PC LAN дерево,звезда 2 CSMA/CD RG-59 (75 Ом), UTP/STP 32/22 2000 72
Hyperchannel шина 50 CSMA/CD RG-59, оптоволокно   3500 м 256
E-Net шина 10 CSMA/CD RG-58 (50 Ом)   700 м 100
G-Net шина 1 CSMA/CD RG-58, RG-59   2000 м 100
FDDI двойное кольцо 100 маркер оптоволокно   100 км 1000
MAP Bus шина 1, 5, 50 маркер кабель      
PX-NET шина/звезда 1 маркер RG-62 (93 Ом)   7000 м 100
S-NET шина/звезда 1 Индивидуальный STP (100 Ом) 21 700 м 24
WANGNET двойное дерево 10 CSMA/CD RG-59 (75 Ом)   2800 м 65000
 

Приведенная таблица не может претендовать на полноту. Так, сюда не вошла сеть IBM DSDB, разработанная в начале 1980-х годов. Полоса пропускания сети составляет 64 Мбит/с. Эта сеть рассчитана на обслуживание процессов реального времени. Сеть имеет топологию шины с приоритетным доступом (длина шины — до 500м). Коммуникационная шина логически делится на три магистрали: сигнальная — для реализации приоритетного доступа; лексемная шина — для резервирования в буфере места назначения; и, наконец, коммуникационная шина — для передачи данных. Каждая из указанных магистралей использует идеологию независимых временных доменов, границы которых синхронизованы для всех трех магистралей. Схема доступа сходна с описанной для сетей CAN (CSMA/CA — Collision Avoidance).

Существует целое семейство методов доступа, исключающих столкновение: это мультиплексирование по времени (TDM), по частоте (FDM) или длине волны (WDMA — Wavelength Division Multiple Access). Здесь каждому клиенту выделяется определенный временной домен или частотный диапазон. Когда наступает его временной интервал и клиент имеет кадр (или бит), предназначенный для отправки, он делает это. При этом каждый клиент ждет в среднем N/2 временных интервалов (предполагается, что работает N клиентов). При FDM передача не требует ожидания, так как каждому из участников выделяется определенный частотный диапазон, которым он может пользоваться когда угодно по своему усмотрению. Методы доступа TDM и FDM могут совмещаться. Но в обоих случаях временные интервалы или частотные диапазоны используются клиентом по мере необходимости и могут заметное время быть не заняты (простаивать). Следует также учесть, что если мы хотим обеспечить двухсторонний обмен при фиксированном частотном диапазоне, максимально возможное число участников следует уменьшить вдвое. Такие протоколы доступа часто используются в мобильной связи. Схема работы алгоритма WDMA показана на рис. 10.8.

Пояснение работы алгоритма доступа  WDMA

Рис. 10.8.  Пояснение работы алгоритма доступа WDMA

На рисунке 10.8 представлен случай с четырьмя станциями (A, B, C и D). Каждая станция имеет два канала. Один канал (менее широкополосный) является управляющим каналом станции. Второй (широкополосный) служит для передачи данных. В каждом из каналов выделяется определенное число временных доменов. Будем считать, что число доменов в управляющем канале равно k, а число доменов в информационном канале – N+1, где N из них предназначены для данных, а последний служит для передачи станцией своего статуса (например, информации о свободных доменах). Все каналы синхронизуются от общих часов. Протокол поддерживает три типа трафика: постоянный поток данных с ориентацией на соединение (1), например видеотрафик; переменный поток, ориентированный на соединение (2), и поток дейтограмм, например UDP (3). В протоколах, ориентированных на соединение, станция А, прежде чем осуществить обмен с В, должна послать запрос на соединение (CONNECTION REQUEST), в свободном домене канала управления станции В. Если станция В воспринимает запрос, обмен осуществляется через канал данных станции А. Каждая станция имеет два передающих элемента и два принимающих.

 
  1. Приемник с фиксированной длиной волны для прослушивания своего собственного канала управления.
  2. Настраиваемый передатчик для посылки сообщений управляющим каналам других станций.
  3. Передатчик с фиксированной длиной волны для посылки информационных кадров.
  4. Настраиваемый приемник для приема данных от одного из передатчиков.

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

Рассмотрим, как станция А устанавливает тип обмена b со станцией В, например, для файлового обмена. Сначала А настраивает свой приемник данных на частоту информационного канала В и ждет его статусного домена. Этот домен позволяет определить, какой из управляющих доменов свободен (на рисунке занятые домены окрашены в серый цвет). На рис. 10.8 В имеет 8 доменов, из них 0, 3 и 5 свободны. Пусть принято решение занять запросом на соединение домен 5. Так как станция В постоянно прослушивает свой управляющий канал, она предоставит свободный домен для станции А. Это присвоение отражается в статусном домене информационного канала. Когда станция А обнаружит, что присвоение выполнено, можно считать, что осуществлено однонаправленное соединение между А и В. Если для А требуется двунаправленное соединение (что реально для протокола FTP), то В повторит ту же процедуру со станцией А. Вполне возможна ситуация, когда одновременно станции А и С пытаются захватить один и тот же домен с номером 5. Ни одна из них его не получит и узнает об этом из статусного кода в домене управляющего канала В. После этого обе станции ждут псевдослучайное время и делают еще одну попытку.

Для осуществления пересылки файла станция А посылает В управляющее сообщение типа "загляните в домен данных 3, там кадр для вас". Когда В получает управляющее сообщение, она настраивает свой приемник на выходной канал А, чтобы принять кадр данных от А. Станция В может использовать ту же схему для посылки подтверждения получения кадра, если это необходимо. Заметим, что может возникнуть проблема, если с В имеют одновременно соединения А и С и обе станции предлагают В заглянуть в информационный домен 3. Станция В воспримет одно из этих сообщений, второе будет потеряно. При постоянной скорости передачи используется модификация данного протокола. Когда станция А запрашивает соединение, она одновременно посылает сообщение типа "не возражаете, если я буду посылать данные в каждом домене 3?". Если В способна принять данные (домен 3 не занят), устанавливается соединение с фиксированной полосой. Если это не так, А может попытаться использовать другой свободный временной домен. Для типа обмена 3 (дейтограммы) используется другая вариация протокола. Вместо посылки запроса соединения в найденный свободный домен управляющего канала станция записывает сообщение "DATA FOR YOU in SLOT 3" (для вас есть данные в домене 3). Если В свободна во время следующего информационного домена 3, обмен будет успешным, в противном случае кадр теряется. Существует большое число различных вариантов протокола WDMA, например, с общим управляющим каналом для всех рабочих станций.

Рассмотрим случай (FDM) в предположении, что длина кадра имеет экспоненциальную плотность вероятности со средним значением 1/m, тогда среднее время задержки T для канала с пропускной способностью С бит/с при частоте кадров f с-1 составит T = 1/(mC-f). Теперь предположим, что канал поделен на N независимых субканалов с пропускной способностью C/N бит/с. Средняя загрузка каждого из субканалов станет равной f/N. Теперь для среднего значения задержки мы получим выражение

T(FDM)=\frac{1}{m(C/N)-(f/N)}=\frac{N}{mC-f}=NT
 

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

Интересной разновидностью Ethernet является широкополосная сеть типа Net/One. Она может базироваться на коаксиальном кабеле (суммарная длина до 1500 м) или на оптическом волокне (полная длина до 2500 м). Эта сеть по многим характеристикам аналогична обычному Ethernet (CSMA/CD), за исключением того, что коммуникационное оборудование передает данные на одной частоте, а принимает — на другой. Для каждого канала выделяется полоса 5 Мбит/с (полоса пропускания 6 МГц соответствует телевизионному стандарту). Предусматривается 5 передающих (59,75-89,75 МГц) и 5 принимающих (252-282 МГц) каналов для каждого из сетевых сегментов. Частота ошибок (BER) для сети данного типа меньше 10-8.

Другой Ethernet-совместимой сетью является Fibercom Whispernet. Сеть имеет кольцевую структуру (до 8 км), полосу пропускания 10 Мбит/c, число узлов до 100 на сегменте при полном числе узлов в сети — 1024. Число кольцевых сегментов может достигать 101. Максимальное межузловое расстояние — 2 км.

Примером нетрадиционного типа сети может служить Localnet 20 (Sytek). Сеть базируется на одном коаксиальном кабеле и имеет полную полосу пропускания 400 МГц. Сеть делится на 120 каналов, каждый из которых работает со скоростью 128 Кбит/с. Каналы используют две 36МГц-полосы, одна для передачи, другая для приема. Каждый из коммуникационных каналов занимает 300 КГц из 36 МГц. Сеть использует алгоритм доступа CSMA/CD, что позволяет подключать к одному каналу большое число сетевых устройств. Предусматривается совместимость с интерфейсом RS-232. Вероятность ошибок в сети не более 10-8.

Традиционные сети и телекоммуникационные каналы образуют основу сети – ее физический уровень. Реальная топология сети может динамически изменяться, хотя это и происходит обычно незаметно для участников. При реализации сети применяются десятки протоколов. В любых коммуникационных протоколах важное значение имеют операции передачи данных, ориентированные на установление соединения (connection-oriented), и операции, не требующие связи (connectionless — "бессвязные", ISO 8473). Интернет использует оба типа операций. При первом типе пользователь и сеть сначала устанавливают логическую связь и только затем начинают обмен данными. Причем между отдельными пересылаемыми блоками данных (пакетами) поддерживается некоторое взаимодействие. "Бессвязные" операции не предполагают установления какой-либо связи между пользователем и сетью (например, протокол UDP) до начала обмена. Отдельные блоки передаваемых данных в этом случае абсолютно независимы и не требуют подтверждения получения. Пакеты могут быть потеряны, задублированы или доставлены не в порядке их отправки, причем ни отправитель, ни получатель не будут об этом оповещены. Именно к этому типу относится базовый протокол Интернет — IP.

Для каждой сети характерен свой интервал размеров пакетов (MTU). Среди факторов, влияющих на выбор размеров кадра, можно выделить:

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

Ниже приведены максимальные размеры пакетов (MTU – Maximum Transfer Unit) для ряда сетей. Таблица 10.11.

Таблица 10.11.
Сеть MTU Байт Быстродействие Мбит/с
IEEE 802.3 1500 10
IEEE 802.4 8191 10
IEEE 802.5 5000 4

Не следует думать, что современные сети, в частности Ethernet, обладают таким уж высоким быстродействием по сравнению с "традиционными" средствами транспорта.

Предположим, что товарный вагон загружен 10000 картриджами Exabyte, емкостью 10 Гбайт каждый (эта цифра может быть и больше). Вагон движется со скоростью 72 км/ч. Какой информационный поток создает такой вагон? В секунду он перемещается на 20 метров, перенося 10000*10*109*8 ≈ 1015 бит данных. Скорость передачи данных по скрученной паре или оптическому волокну составляет около 200000 км/c. Если измерять передающую способность в м*бит/с, то для 100 Мбит/c Ethernet это будет 20*1015 м*бит/c, как и для нашего вагона. Таким образом, вагон обеспечивает тот же темп переноса данных, что и Fast Ethernet.

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

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

В этом режиме обмена обычно требуется подтверждение получения пакета, а при обнаружении сбоя предусматривается механизм повторной передачи поврежденного или потерянного пакета. "Бессвязная" сеть более надежна, так как она может отправлять отдельные пакеты по разным маршрутам, обходя поврежденные участки. Такая сеть не зависит от протоколов, применяемых в субсетях. Большинство протоколов Интернета используют именно эту схему обмена, например базовый протокол IP. Концептуально TCP/IP-сети предлагают три типа сервиса в порядке нарастания уровня иерархии:

  1. "бессвязная" доставка пакетов;
  2. надежная транспортировка информации;
  3. реализация прикладных задач.

Для сопоставления быстродействия различных видов сетей Сталлингс (Stallings, W. Data and Computer Communications, New York: Mac-Millan Publishing Company, 1985) в 1985 году разработал важный критерий. Этот критерий предполагает вычисление битовой длины BL (максимальное число бит в сегменте), которая равна произведению максимальной длины сегмента (L в метрах) на полосу пропускания (W в бит/с), поделенному на скорость распространения сигнала в сегменте (s в метрах в секунду):

BL=L*W/s

Для Ethernet BL = [200(м)*100 106(бит/c)]/2 108 (м/c) = 100 бит.

Коэффициент использования сети равен β = 1/(1+), где

\alpha=\frac{BL}{размер\ пакета}.

Для Ethernet при длине пакета 1500 байт = 0,07, что дает для эффективности использования сети 0,93. Таким образом, максимальная пропускная способность Ethernet составляет 93 Мбит/c или 11,6 Мбайт/с (для 100-мегабитного Ethernet). Разумеется, в этом подходе не учитываются издержки, связанные с заголовками пакетов, которые дополнительно снижают эффективность сети. Из данного рассмотрения может показаться, что чем больше пакет, тем лучше. С точки зрения пропускной способности так оно и есть. Но с увеличением длины пакета увеличивается время отклика сети. Таким образом, выбор MTU определяется реальными требованиями пользователей.

10.3. Принципы построения сетевых программных интерфейсов

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

Существует три возможности построения интерфейса: с базированием на памяти, с использованием прямого доступа и с применением запросов обслуживания.

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

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

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

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

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

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

В третьем варианте сетевого программного интерфейса используются служебные запросы. Этот тип сетевого доступа удобен для коммуникационных протоколов высокого уровня, таких как команды ввода/вывода CSP-стиля (Communicating Sequential Processes) или процедуры обмена языка Ада. В этом методе накладываются определенные ограничения на реализацию нижележащих коммуникационных уровней.

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


Рис. 10.9. 

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

Необычайно важной проблемой при построении сетей является их устойчивость при возникновении перегрузок. В Интернете для этого используется специальная опция протокола ICMP или CWND в ТСР, а во Frame Relay имеются меры для преодоления перегрузок непосредственно на нижних протокольных уровнях.

Взаимодействие сетевых объектов между собой обычно производится по схеме "клиент-сервер" ("master-slave"). В этой схеме один из объектов (клиент) посылает запрос, а получатель запроса (сервер) реализует запрошенную функцию или услугу. В общем случае клиент и сервер могут меняться местами. Известны варианты схемы, когда сервер обслуживает несколько клиентов. Схема этого взаимодействия существует уже не один десяток лет. Но в последнее время после широкого внедрения Интернета с его неиерархической схемой все чаще и шире стала применяться схема Р2Р. Идея P2P является альтернативой принципа – "клиент-сервер".

10.4. Алгоритмы и применения сетей P2P

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

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

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

В начале 1990-х годов начали широко применяться технологии мультикастинга, в частности MBONE. Техника мультикастинга в сочетании с соответствующими протоколами маршрутизации (например, PIM) и средствами обеспечения качества обслуживания (RSVP-TE и MPLS-TE) идеально подходит для транспортировки мультимедиа и, в частности, для цифрового телевидения через Интернет.

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

Впервые термин "peer-to-peer" была использована в 1984 году компанией IBM в разработке сетевой архитектуры для построения динамической маршрутизации через компьютерные сети с произвольной топологией – "Advanced Peer to Peer Networking" [10.1].

В основе технологии лежит принцип децентрализации, то есть все узлы в сети P2P – равноправны (рис. 10.10). Этот принцип обеспечил такие преимущества технологии P2P перед клиент-серверным подходом, как отказоустойчивость к потере связи с узлами сети, увеличение скорости копирования за счет копирования сразу из нескольких источников (рис. 10.11), возможность разделения ресурсов без привязки к конкретным IP-адресам, огромная мощность сети в целом и др.


Рис. 10.10. 

Создаваемые приложения в начале ставили узкую цель – ускорение получения копии файла, иногда за счет сокращения полосы и сетевых возможностей конкурирующих процессов и пользователей. В этих приложениях использовалась особенность протокола ТСР, распределяющего полосу пропускания поровну между конкурирующими процессами. Если один из пользователей запустил 10 обменных процессов, а конкурент – только 1, последний получит в 10 раз меньшую полосу пропускания. Может показаться, что схема, показанная на рис. 10.11, не является в чистом виде P2P, так как в ней реализован принцип "несколько серверов обслуживают одного клиента". Сетевые объекты здесь не являются равноправными. Но благодаря тому, что клиентом в следующий момент может стать любой другой узел сети или даже группа узлов, эту схему можно считать классическим случаем реализации алгоритма Р2Р. Более того, этот тип сети является на данный момент наиболее массовым.

Скорость копирования увеличивается за счет копирования из нескольких источников одновременно

Рис. 10.11.  Скорость копирования увеличивается за счет копирования из нескольких источников одновременно

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

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

Для поддержания надежности обмена могут использоваться самые разные технологии, в частности, протокол FEC (Forward Error Correction) или MDC (Multi Description Coding [10.12]) в случае транспортировки мультимедийных данных, когда повторная передача пакетов невозможна или крайне нежелательна.

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

Широко используемые сейчас распределенные вычислительные системы типа GRID являются частным случаем реализации технологии Р2Р.

Так, по некоторым данным [10.6], в настоящее время в сети Internet более половины всего трафика приходится на трафик файлообменных P2P сетей, а размеры самых крупных из них перевалили отметку в миллион одновременно работающих узлов, разделяющих петабайты (1015 байт) информации. Общее количество зарегистрированных участников файлообменных сетей P2P во всем мире составляет порядка ста миллионов.

Хотя в первую очередь P2P-сети используются сейчас для разделения файлов, существует еще много других областей, [10.3] где данная технология также успешно применяется. Это телевидение и аудиотрансляции, параллельное программирование, распределенное кэширование ресурсов для разгрузки серверов, рассылка уведомлений и статей, поддержка системы доменных имен, индексирование распределенных ресурсов и их поиск, резервное копирование и создание устойчивых распределенных хранилищ данных, обмен сообщениями, создание систем-серверов, устойчивых к атакам типа "отказ в обслуживании", распространение программных модулей. Имеется огромное количество клиентских программ для работы с P2P-сетями, как коммерческих, так и с открытым кодом. Постоянно идет работа по усовершенствованию протоколов и увеличению функциональности систем, и, судя по всему, недалек тот момент, когда клиентское программное обеспечение для P2P будет интегрировано с операционными системами. Так, уже сейчас крупные компании проявляют интерес или вплотную занимаются Р2Р, например, компания Sun разрабатывает протокол, поддерживающий доступ к основным P2P-сетям для карманных компьютеров и смартфонов, а компания Microsoft создала реализацию протоколов P2P Scribe и Pastry.

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

Определения:

P2P-технология — технология построения сети распределенных равноправных узлов по принципу децентрализации.

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

P2P-сеть — множество узлов (компьютеров, смартфонов и пр.), объединенных в единую систему и взаимодействующих посредством P2P-протокола.

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

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

В модели стека сетевых протоколов TCP/IP протоколы P2P относятся к прикладному уровню, таким образом, P2P-сеть является наложенной сетью (overlay), функционирующей поверх сети Интернет и использующей существующие транспортные протоколы TCP или UDP.

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

ID узла — уникальный идентификатор узла, вычисляется с помощью хэш-функции [10.6] из IP-адреса и дополнительной информации (имени компьютера, MAC-адреса сетевой карты и пр.). Присваивается при регистрации в сети P2P и используется для идентификации узла.

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

Р2Р файлообменные сети

Протоколами обеспечивается равномерное распределение ключей ресурсов вместе с идентификаторами узлов, опубликовавшими данный ресурс, по всем узлам (или по некоторым выделенным узлам и/или серверам), зарегистрированным в сети. Задача поиска ресурса сводится к нахождению ID узла, на котором хранится ключ ресурса [10.4].

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

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

На рис. 10.12 приведен пример чистой P2P-сети, созданной по протоколу DHT Kademlia [10.15]. На рисунке к сети, способной поддерживать максимум 16 узлов и 16 ресурсов, подсоединились 7 узлов (черные кружки), разделяющих 12 ресурсов (номера в белых прямоугольниках). Узлам присвоены соответствующие ID, ресурсам присвоены ключи. Ключи вместе с адресами опубликовавших их узлов (адреса на рисунке не показаны) равномерно распределены между узлами сети. На рисунке изображено, какие ключи хранятся на каких узлах.

Узел с ID 0 хочет найти ресурс, соответствующий ключу 14, для чего посылает запрос на поиск. Запрос проходит определенный маршрут (подробнее о маршрутизации см. [10.3]) и достигает узла, на котором находится ключ 14. Далее узел ID 14 пересылает узлу ID 0 адреса всех узлов, обладающих ресурсом, который соответствует ключу 14.

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

На данный момент среди файлообменных сетей по количеству узлов лидируют такие сети, как Bittorrent [10.16], eDonkey2000 [10.14], Gnutella2+Gnutella.

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

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

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

Одной из первых пиринговых сетей, Gnutella, была создана в 2000 году [10.17]. Сеть функционирует до сих пор, хотя из-за серьезных недостатков алгоритма пользователи сейчас предпочитают сеть Gnutella2 (G2, [10.18]).

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

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

Недостатки протокола Gnutella инициировали разработки принципиально новых алгоритмов поиска маршрутов и ресурсов, и привели к созданию группы протоколов DHT (Distributed Hash Tables) [10.7], в частности, протокола Kademlia [10.4], который сейчас широко используется в наиболее крупных сетях.

Запросы в сети Gnutella пересылаются по TCP или UDP , копирование файлов происходит посредством протокола HTTP.

В последнее время появились расширения для клиентских программ, позволяющие копировать файлы по UDP , делать XWL-запросы метаинформации о файлах.

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

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

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

Сеть EDonkey2000 [10.14] появилась в 2000 году. Информация о наличии файлов публикуется клиентом на многочисленных серверах в виде ed2k-ссылок, использующих уникальный ID ресурса. Серверное ПО доступно для установки любым пользователем. Сервер обеспечивает поиск узлов и информации. Сейчас в сети имеется от 100 до 200 серверов, которые обслуживают одновременно около миллиона пользователей, использующих порядка миллиарда различных файлов. Общее количество зарегистрированных пользователей составляет порядка 10 миллионов.

Когда клиент копирует желаемый ресурс, он копирует его одновременно из нескольких источников при помощи MFTP (Multisource File Transfer Protocol).

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

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

Такая интеграция возможностей разных сетей и дополнительная верификация способствовали развитию EDonkey2000, в которую начали переходить пользователи других сетей, например сети FastTreсk, базирующейся на протоколе FastTreсk, а наиболее популярным клиентом ее является Kazaa [10.17].

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

Поэтому пользователям осталась только возможность использовать локальные пиринговые сети. Наиболее удобной для этого оказалась сеть Direct Connect (DC) [10.16].

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

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

P2P-телевидение

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

Современному клиенту предлагаются десятки телевизионных каналов. Что же могут предложить клиентам компании, продвигающие на рынок Р2Р ТВ-услуги?

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

Такая сеть может иметь топологию множества деревьев или сетки, может использовать в качестве транспорта протоколы UDP или TFRC. В случае древовидной топологии каждый клиент получает субпотоки данных от узлов нескольких, например четырех деревьев (при этом используется метод кодирования субпотоков MDC). При отключении узла от сети, структура дерева перестраивается, при подключении нового узла — достраивается. В любом случае топология доставки данных носит топологию дерева, в одних случая статического (рис. 10.13), в других – динамического, меняющего топологию после передачи каждого очередного сегмента данных.

На рис. 10.13 представлена схема с MDC и разделением потока на четыре субпотока (4 дерева). Буквами G1, G2 и G3 обозначены поколения узлов-партнеров (peer), которые участвуют в доставке видеоданных другим узлам.

Топология с четырьмя деревьями

Рис. 10.13.  Топология с четырьмя деревьями
 
Топология решетки GBS (Gossip Based Streaming)

Рис. 10.14.  Топология решетки GBS (Gossip Based Streaming)
 

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

На рис. 10.14 показана схема работы алгоритма Gossip Based Streaming. Узлом — источником первичного видеопотока здесь является узел А. Эволюция графа доставки видеофрагментов зависит от того, какие узлы направят запросы первыми. Размер сегментов обычно постоянный. Предположим, что узел А может обслужить не более трех узлов (ограничение выходной полосы). При развитии дерева доставки учитывается выходная полоса узлов, которая предполагается большей, чем требуется для одного видеопотока, и случайный характер выбора партнера — источника данных. Узлы информируют партнеров (не только соседей) об имеющихся у них видеосегментах. Любой из узлов может стать отправителем, если у него имеется нужный сегмент и ему поступил запрос на этот сегмент. Для любого из видеосегментов можно отследить его путь от А до узла редистрибьютера. Для такой схемы характерна большая задержка воспроизведения. Причина в том, что при М шагах маршрута доставки сегмента задержка τ = М x (Tпередачи + Tдиалога), где Tпередачи — время передачи сегмента между смежными узлами (~1 с), Tдиалога – время оповещения о наличии сегмента и обслуживания запроса.

При анализе эволюции графа доставки следует учитывать доступную выходную полосу узлов. Обозначим скорость передачи видео как ВW (Кбит/с). Пусть базовый узел А может обслуживать на постоянной основе только два узла (B и D на рис. 10.14 b), а вторичные узлы B, C, D… имеют выходную полосу пропускания ТB. На рисунке каждый из вторичных узлов обслуживает одновременно три узла.

Если для обеспечения требующегося разрешения необходим входной поток ~400 Кбит/c, то выходная полоса пропускания должна быть больше этой величины. Если численность узлов с числом шагов доставки К составляет MK, то численность узлов с числом шагов доставки К+1 будет равно MK+1 = МК x ТВ/BW. По этой причине ТВ/BW желательно иметь как можно больше (всегда должно быть ТВ/BW>1), что не всегда возможно. В качестве транспорта в таких сетях часто используют протокол TFRC (TCP Fair Rate Control), c возможностями повторной пересылки. Это позволяет сделать К достаточно большим (вероятность накопления ошибок невелика), но еще более увеличивает задержку воспроизведения (до нескольких минут). Двунаправленные стрелки на рис. 10.14 означают возможность обмена в обоих направлениях, хотя трудно представить, что видеоданные будут поступать из узла G в узел D, ведь в узел D они поступают из первичного узла А. Но следует учитывать, что, в отличие от алгоритма, использующего деревья, здесь нет однозначного направления передачи данных между узлами. Источником очередного сегмента для узла i может стать любой узел, у которого в буфере такой сегмент имеется (ведь выбор отправителя производится случайным образом). Но такой подход может вынудить, например, узел D послать по запросу "старый" сегмент, лежащий у него в буфере, вместо того чтобы послать "новый" сегмент узлу Н. Эта особенность может приводить к накоплению задержки доставки видеоматериала по мере трансляции фильма. Именно по этой причине в программе-клиенте используется изощренная двухуровневая буферизация. Замечу, что число шагов доставки данных (K) в алгоритме GBS — величина статистическая, а не постоянная, и его значение лежит в интервале от 2 до некоторого максимума, определяемого суммарным числом узлов в сети S. Статистическое распределение K, строго говоря, не идентично для узлов сетки (например, узлы первого поколения (B и D) явно выделены).

Полное число узлов в сети

S=\frac{(q^n-1)}{q-1}
 

где q = ТВ/BW, а n — число шагов доставки данных. Это выражение справедливо как для древовидной, так и для сеточной схемы организации сети.

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

 

Проблемы безопасности

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

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

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

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

Так, например, в клиенте Kazaa используется хэш-функция UUHash, которая позволяет быстро находить ID для больших файлов даже на слабых компьютерах, но при этом оставляет возможность для подделки файлов и записи испорченного файла, имеющего тот же ID. Эта возможность была использована Американской Ассоциацией Звукозаписывающих Компаний (RIAA), которая наводнила сеть поддельными и испорченными файлами.

Для решения проблемы клиентам нужно пользоваться надежными хэшами (деревьями хэшей, если файл копируется по частям) такими как SHA-1, Whirlpool, Tiger, и только для малоответственных задач, а также контрольными суммами CRC. Для уменьшения объемов пересылаемых данных и облегчения их шифрования можно использовать компрессию. Для защиты от вирусов нужно иметь возможность хранить идентифицирующую метаинформацию о "червях", как это, например, сделано в Gnutella2.

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

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

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

Например, в московских домашних сетях на нескольких активистов, делающих доступными более 100 Гб, приходится около сотни выкладывающих менее 1 GB. Для борьбы с этим фактором используются разные методы. В eMule применен метод кредитов: скопировал файл — кредит уменьшился, позволил скопировать свой файл — кредит увеличился. xMule — кредитная система с поощрением распространения редких файлов, в eDonkey используется стимулирование размножения источников, в Bittorrent реализована схема "сколько блоков файла получил, столько отдал" и т.д.

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

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

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

 

  
  
  Сейчас на сайте 16 человек.

  Rambler's Top100

Вернуться
(c) kisnik, last update: 10/10/10 , webmaster, references available