Опубликован: 07.08.2007 | Уровень: специалист | Доступ: свободно | ВУЗ: Московский физико-технический институт
Лекция 10:

Введение в сети передачи данных

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >

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

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

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

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

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

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

Второй компонент интерфейса, базирующегося на использовании памяти, часто реализуется в виде так называемых буферов управления передачей ( TCBTransmission 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 или ключ ресурсауникальный идентификатор файла или любого другого ресурса, вычисляется с помощью хэш-функции из имени файла и его содержимого. Используется для идентификации ресурса.

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >
Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????