Модель OSI
ОГЛАВЛЕНИЕ
Семь уровней модели OSI, как показано на рисунке 1, являются следующими:
- Прикладной уровень
- Уровень представления
- Уровень сессии
- Транспортный уровень
- Сетевой уровень
- Канальный уровень
- Физический уровень
Оборудование первого уровня
Хотя многие люди считают, что все сетевое оборудование принадлежит исключительно физическому уровню, они заблуждаются. Многие физические сетевые устройства могут выполнять функции, принадлежащие более высокому уровню. Например, сетевой маршрутизатор выполняет функции маршрутизации, которые принадлежат сетевому уровню. Что же включает физический уровень? Физический уровень включает действительную передачу сигналов с помощью определенных устройств с одного компьютера на другой. Этот уровень включает спецификации электрических и механических характеристик, (таких как: уровень напряжения, время сигнала, уровень данных, максимальная длина передачи и физические коннекторы) сетевого оборудования. Поскольку устройство работает исключительно на физическом уровне, оно не обладает никакими знаниями о том, какие данные оно передает. Устройство физического уровня просто передает и принимает данные. Есть общие функции, за которые отвечает физический уровень. Это следующие функции:
- Определение спецификации оборудования
- Кодирование и передача сигналов
- Прием и передача данных
- Топология и физическая конфигурация сети
Определение спецификации физического оборудования
Каждый компонент оборудования в сети будет обладать определенным количеством спецификаций. Если вы читали мою предыдущую статью под названием «Медь и стекло: руководство по сетевым кабелям» (Copper and Glass: A Guide to Network Cables), то вы узнали некоторые самые распространенные типы спецификации сетевых кабелей. Сюда относятся такие параметры как максимальная длина кабеля, ширина кабеля, защита от электромагнитных помех и даже его эластичность. Еще одной областью спецификации оборудования являются физические коннекторы. Сюда входят размеры и форма коннекторов, а также расположение и количество контактов.
Кодирование и передача сигналов
Передача сигналов и кодирование является очень важной частью физического уровня. Этот процесс может быть довольно сложным. К примеру, давайте рассмотрим Ethernet. Большинство людей знают, что сигнал передается в виде двоичного кода (единицами и нулями), используя высокий и низкий уровень напряжения, которые соответствуют этим двум значениям. Хотя это может быть полезно в образовательных целях, это не так. Сигналы через Ethernet передаются с помощью манчестерского кодирования. Это означает, что '1' и '0' передаются в виде подъемов и падений сигнала. Позвольте мне объяснить. Если бы вы отправляли сигналы по кабелю, где высокий вольтаж представляет '1', а низкий - '0', ресиверу тоже нужно было бы знать, как сопоставлять эти образцы сигнала. Обычно для этого передается отдельный сигнал синхронизации. Этот метод называется кодированием без возврата к нулю (Non-return to Zero – NRZ) и имеет несколько серьезных недостатков. Во-первых, если вы используете сигнал синхронизации, то, по сути, вы передаете два сигнала, удваивая тем самым работу. Если вы не хотите передавать сигнал синхронизации, вы можете включить внутреннюю синхронизацию на ресивере, но она должна быть практически идеально синхронизирована с генератором тактовых сигналов передатчика. Допустим, вы можете синхронизировать генератор тактовых сигналов, чего становится все труднее добиться, учитывая постоянно растущую скорость передачи данных, у вас останется проблема поддержания этой синхронизации при передаче длинных отрезков одинаковых битов; именно модуляция помогает синхронизировать тактовый генератор. Ограничения кодирования NRZ можно преодолеть с помощью технологии, разработанной в 1940-ых годах в манчестерском университете Великобритании. Манчестерское кодирование сочетает тактовый сигнал с сигналом данных. Хотя это и увеличивает пропускную способность сигнала, оно делает успешную передачу данных более простой и надежной. Сигнал манчестерского кодирования передает данные в виде восходящих пиков и нисходящих впадин. Сначала нужно решить, какой пик будет представлять '1', а какой '0', но оба считаются сигналом манчестерского кодирования. Ethernet и стандарты IEEE используют восходящий пик в качестве логической единицы. Изначально манчестерское кодирование использовало нисходящую впадину в качестве логической единицы. Вы можете задаться вопросом о том, что если вам нужно отправить две единицы подряд, сигнал уже будет на пике, когда нужно передать вторую единицу. Это не тот случай, поскольку восходящие и нисходящие пики, представляющие данные, находятся в среднем диапазоне битов; пик диапазона битов либо содержит передачу, либо нет, что ставит сигнал в нужную позицию для передачи последующего бита. В результате в центре каждого бита находится модуляция, направление модуляции представляет либо '1', либо '0', а временные значения модуляции являются тактовым генератором. Хотя существует множество других схем кодирования, многие из которых более совершенны, чем кодирование NRZ или манчестерское кодирование, простота и надежность манчестерского кодирования делает его ценным стандартом, который все еще широко используется.
Передача и прием данных
Независимо от типа средства сети, будь то электрический, оптический кабель или радиочастота, необходимо устройство, которое физически передает сигнал, равно как и устройство, которое его принимает. В случае беспроводной сети, прием и передача осуществляется высокотехнологичными антеннами, которые передают или принимают сигнал на предопределенной частоте с предопределенной пропускной способностью. Лини оптической передачи использую оборудование, которое способно производить и принимать пульсацию световых вспышек, частота которых используется для определения логического значения бита. Такие устройства как усилители и повторители, которые используются для передачи в магистральных оптических сетях, также включены в физический уровень модели OSI.
Топология и физическая конфигурация сети
Топология и конфигурация вашей сети также входит в физический уровень. Независимо от того, является ли ваша сеть кольцевой сетью с маркерным доступом [ссылка на такой тип сети http://en.wikipedia.org/wiki/Network_topology#Ring], звездоподобной сетью [http://en.wikipedia.org/wiki/Network_topology#Star], ячеечной сетью [http://en.wikipedia.org/wiki/Network_topology#Mesh], или имеет гибридную конфигурацию [http://en.wikipedia.org/wiki/Network_topology#Hybrid_network_topologies], решение о топологии сети принимается с учетом физического уровня. В физический уровень также входит конфигурация кластеров высокой готовности, о которых много говорилось в предыдущих статьях [статья с названием «Стратегии высокой надежности»]. По большому счету вам нужно помнить о том, что если физические устройства не знают о передаваемых данных, то они работают на физическом уровне. В своей следующей статье я расскажу о канальном уровне, о его отличиях от смежных уровней и о том, какое оборудование входит в этот уровень. И по традиции, если у вас возникли вопросы или комментарии к тому, что я написал в этой статье, пишите мне на электронную почту.
Оборудование второго уровня
Канальный уровень обеспечивает функциональный и процедурный способы передачи данных между двумя точками. Существует пять основных функций, за которые отвечает канальный уровень. Это следующие функции:
- Управление логической связью (Logical Link Control)
- Осуществление сетевого доступа и обнаружение конфликтов (Media Access Control)
- Кадрирование данных (Data Framing)
- Адресация (Addressing)
- Обнаружение ошибок (Error Detection)
Управление логической связью
Управление логической связью (LLC) обычно считается подуровнем канального уровня (DLL), в противоположность функции DLL. Этот LLC подуровень в первую очередь отвечает за отправку мультиплексированных протоколов на Media Access Control (MAC) подуровень. LLC осуществляет это путем разбивания данных, которые необходимо отправить, на более мелкие фреймы (блоки) и добавления описательной информации, именуемой заголовками, этим блокам.
Уровень сетевой архитектуры Media Access Control
Как и LLC, Media Access Control (MAC) считается подуровнем DLL, в противоположность функции DLL. В этот уровень включает то, что известно под названием MAC адреса. MAC адрес обеспечивает данный подуровень уникальным идентификатором, в результате чего каждая точка доступа сети может взаимодействовать с сетью. Подуровень MAC также отвечает за действительный доступ к сетевому кабелю, или другому средству соединения.
Кадрирование данных
Если бы кто-нибудь хотел просто отправить данные на средство подключения сети, у него не многое бы получилось. Получатель (принимающее устройство) должен знать, как и когда читать данные. Это может происходить несколькими способами и является главной задачей кадрирования. Проще говоря, кадрирование организует данные, которые должны быть переданы, и окружает эти данные описательной информацией, именуемой заголовками. Какую информацию и как много этой информации содержат заголовки, определяется протоколом, используемым в сети, например Ethernet.
Структура наложения фреймов на протокол Ethernet показана ниже на рисунке 1.
Адресация
Адресация на втором уровне происходит, как уже отмечалось, с MAC адресом на MAC подуровне. Очень важно не путать эту адресацию с IP адресацией. Очень полезно ассоциировать MAC адрес с определенной точкой доступа сети, а сетевой или IP адрес ассоциируется со всем устройством (то есть компьютером, сервером или маршрутизатором).
Говоря о маршрутизаторах, следует помнить, что они работают на третьем, а не втором уровне. Переключатели и сетевые концентраторы действительно работают на втором уровне, и поэтому направляют данные, основанные на адресации второго уровня (MAC адресах), эти устройства не распознают IP или сетевую адресацию. И просто для того, чтобы мой почтовый ящик не наполнился жалобами, да, я знаю, что некоторые маршрутизаторы обладают и функциональностью второго уровня. Я расскажу о таких маршрутизаторах в одной из своих следующих статей.
Определение и исправление ошибок
Когда бы не передавались данные по любому типу средства сети, всегда существует вероятность того, что эти данные не будут получены в таком же виде, в котором были отправлены. Причиной тому могут быть различные факторы, включая интерференцию, и, в случае долгих передач, ослабление сигнала. Так как же ресивер распознает, что полученные данные не содержат ошибок? Существует несколько способов для решения этой проблемы. Некоторые из этих методов просты и в определенной степени эффективны пїЅ другие сложны и очень эффективны.
Биты четности являются примером протокола обнаружения ошибок, который прост и, несмотря на его ограниченную эффективность, довольно широко используется. Бит четности, если говорить простым языком, представляет собой дополнительный бит, добавленный к посланию. Существует два вида значения этого бита. Какое значение выбрано, зависит от типа определения бита четности, который используется. Эти два типа представляют собой четную и нечетную разрядность определения. Если используется четная разрядность, то бит четности задает значение ('1' или '0'), необходимое чтобы уровнять количество '1' в послании. Подобным образом, если используется нечетная разрядность, то бит четности задает значение, необходимое чтобы сделать количество единиц в послании нечетным (неравным).
При использовании метода определения ошибок с помощью бита четности получатель будет проверять все '1' во фрейме, включая бит четности. Получатель будет иметь параметры для четной или нечетной разрядности; если количество единиц во фрейме не соответствует этим параметрам, обнаруживается ошибка. Это все отлично, но, как я уже говорил, эффективность такого метода обнаружения ошибок ограничена. Она ограничена потому, что если во фрейме равное количество ошибок, то четность или нечетность количества единиц в послании будет соблюдена, и этот метод не сможет распознать эти ошибки, поэтому есть потребность в более строгом способе обнаружения ошибок.
Способ обнаружения ошибок на основе контрольной суммы (checksum) может обеспечить больше строгости, особенно если используется вместе с битами четности. Метод контрольной суммы, как и предполагает его название, будет проверять сумму всех единиц в послании и сопоставлять эту сумму со значением контрольной суммы, добавленной отправителем посланию. Хотя метод контрольной суммы может обеспечить больше строгости вашим усилиям в обнаружении ошибок, и у него есть свои ограничения. К примеру, обычная контрольная сумма не сможет обнаружить равное количество ошибок, сумма которых равна нулю, добавление байтов, сумма которых равна нулю или одинаковое количество переупорядочений байтов в послании. Хотя существуют более продвинутые способы применения метода контрольной суммы, включая метод контрольной суммы Флетчера, я расскажу о еще более строгом методе.
Одним из самых строгих методов обнаружения ошибок является контроль циклическим избыточным кодом (cyclic redundancy check (CRC)). CRC преобразует послание в полином, где значение коэффициентов соответствует битам в послании, после чего этот полином делится на предопределенный или стандартный полином, называемый ключом. Результат, или если говорить более точно, оставшаяся часть результата – это то, что отправляется с посланием получателю. Получатель осуществляет такое же многочленное деление с помощью такого же ключа, а затем сверяет результат. Если результат совпадает, то шансы того, что ошибки отсутствуют, довольно высоки. Я сказал «довольно высоки», потому что существует множество всевозможных полиномов, которые можно использовать в качестве ключа, и не все полиномы обеспечивают одинаково хорошее определение ошибок. Как правило, более длинные полиномы обеспечивают более хорошее обнаружение ошибок, но математика, используемая здесь, довольно сложна, и, как и в случае со многими аспектами технологии, продолжаются споры по поводу того, какой тип использования этого метода обеспечивает наиболее хорошее обнаружение ошибок.
Наконец, хочу отметить, что эти методы обнаружения ошибок не ограничиваются простой передачей данных по сетевым средствам; они могут использоваться также эффективно в сценарии хранения данных, где необходима проверка того, что данные не были повреждены.
В своей следующей статье я расскажу о третьем уровне модели ссылок OSI. Я также попытаюсь подробно объяснить, почему маршрутизаторы (в большей степени) относятся к третьему, а не второму уровню. И по традиции, если у вас возникли вопросы по какой-либо из моих статей, присылайте их мне, не раздумывая.
Оборудование третьего уровня
Сетевой уровень отвечает за получение данных с одного компьютера другим. Он отличается от второго уровня, так как второй уровень отвечает за передачу данных с одного устройства на другое, подключенное напрямую устройство. К примеру, канальный уровень отвечает за передачу данных с компьютера на сетевой концентратор, подключенный к нему, а сетевой уровень отвечает за передачу тех же данных на протяжении всего пути к другому компьютеру, возможно, в противоположенной части света. Сетевой уровень передает данные с одной конечной точки к другой, осуществляя следующие функции:
- Адресация
- Маршрутизация
- Инкапсуляция
- Фрагментация
- Работа с ошибками
- Управление заторами
Адресация
Тем, кто читал мою предыдущую часть этой серии статей возможно любопытно, почему третий уровень осуществляет адресацию, так как я сказал, что второй уровень осуществляет адресацию. Чтобы разрешить этот спорный момент, вспомните, как я писал, что адрес второго уровня (MAC адрес) соответствует определенной точке доступа сети в отличие от адреса для целого устройства, такого как компьютер. Нужно также учитывать, что адрес третьего уровня является чисто логическим адресом, который не зависит от какого-либо конкретного физического устройства; MAC адрес ассоциируется с определенным устройством и производителем устройства. Пример адресации третьего уровня – это Internet Protocol (IP) адресация. Иллюстрация IP адреса показана на рисунке 1.
Маршрутизация
Передача данных от одной точки к пункту назначения – это работа сетевого уровня. Для этого сетевой уровень должен иметь возможность планировать маршрут для передачи данных. Сочетание программных и аппаратных процедур осуществляет эту задачу, которая называется маршрутизацией. Когда маршрутизатор получает пакет от источника, ему сначала необходимо определить адрес назначения. Он делает это путем удаления заголовков, предварительно добавленных на канальном уровне, и считыванием адресов с предопределенного места расположения в пакете, как определено используемым стандартом (к примеру, IP стандарт). Когда адрес назначения определен, маршрутизатор проверяет, не находится ли этот адрес в его собственной сети. Если адрес принадлежит собственной сети, маршрутизатор отправит пакет обратно на канальный уровень, на котором будут добавлены заголовки, как я описывал в предыдущей статье (перейдите ко второй части этой серии статей) и отправит пакет к пункту назначения. Если адрес не принадлежит сети маршрутизатора, то маршрутизатор будет искать адрес в таблице маршрутов. Если адрес найден в этой таблице, то маршрутизатор считает сеть назначения из таблицы, а затем отправит пакет на канальный уровень и на сеть назначения. Если адрес не найден в таблице маршрутизации, пакет будет отправлен для обработки ошибок. Это один из источников ошибок, который можно встретить при передаче данных по сети, и он является отличным примером того, почему требуется проверка и обработка ошибок.
Инкапсуляция
Когда маршрутизатор отправляет пакет на канальный уровень, на котором пакету добавляется заголовок, прежде чем он будет отправлен к следующей точке, это является примером инкапсуляции для канального уровня. Как и канальный уровень, сетевой уровень также отвечает за инкапсуляцию данных, которые он получает с вышестоящего уровня. В этом случае это будут данные, полученные с четвертого, транспортного уровня. На самом деле, каждый уровень отвечает за инкапсуляцию данных, которые он получает с вышестоящего уровня. Даже седьмой, самый последний, прикладной уровень, поскольку приложение инкапсулирует данные, которое оно получает от пользователя.
Фрагментация
Когда сетевой уровень отправляет данные на канальный уровень, он иногда может сталкиваться с проблемами. В зависимости от того, какой тип технологии канального уровня используется, данные могут быть слишком большими. Для этого сетевой уровень должен иметь возможность разбивать данные на более мелкие части, которые по очереди отправляются на канальный уровень. Этот процесс называется фрагментацией.
Обработка ошибок
Обработка ошибок является очень важным аспектом сетевого уровня. Как уже говорилось ранее, одним из источников ошибок может быть ситуация, в которой маршрутизатор не может найти адрес назначения в таблице маршрутизации. В этом случае маршрутизатору необходимо сгенерировать ошибку недоступности адреса назначения. Еще одним возможным источником ошибок является TTL (время существования) значение пакета. Если сетевой уровень определяет, что TTL достигло нулевого значения, генерируется ошибка превышения времени. Обе ошибки соответствуют определенным стандартам, как определено в Internet Control Message Protocol (ICMP).
Фрагментация также может вызывать ошибки. Если процесс фрагментации занимает слишком много времени, устройство может выдать ошибку превышения интервала ICMP.
Управление заторами
Еще одной областью, за которую отвечает сетевой уровень, является управление заторами. Как (я уверен) вы знаете, любое сетевое устройство имеет верхний предел пропускной способности, с которым оно может справиться. Этот верхний предел всегда медленно растет, но все еще бывают случаи, когда есть слишком большой объем данных, с которым устройство не может справиться. Это причина для создания управления заторами. Существует множество теорий на счет того, как это лучше всего осуществить, большинство из которых довольно сложные, и не освещаются в этой статье. Основная идея всех этих способов заключается в том, чтобы заставить отправителей соревноваться за право, чтобы их данные были приняты в пропускную способность. Перегруженное устройство пытается сделать это таким образом, чтобы снизить обще количество получаемых им данных. Этого можно добиться путем 'наказания' отправителей, которые передают большую часть данных, что заставляет отправителя 'снижать' свою отправительную деятельность во избежание наказания, и тем самым снижать объем данных, принимаемых переполненным устройством (которое в данный момент уже не перегружено). Авторская оговорка: Алгоритмы управления заторами довольно сложны в силу различных причин. Во-первых, присутствующая здесь математичка очень напряженная. Поэтому если вы когда-либо интересовались, зачем люди учат математику в университетах и какую работу они могут получить с таким образованием.... это очень важный аспект, к тому же такое образование довольно хорошо оплачивается в таких сетевых компаниях, как CISCO и Nortel. Во-вторых, после определения подходящей математики для выполнения этой задачи, нужно знать, как ее применить быстро и эффективно. Это основная задача инженеров, которые должны понимать математику, возможные стратегии применения ПО и методы разработки. Многие люди, включая тех, кто работает в технологической сфере, не совсем понимают, что эти и другие профессии могут дать: хотя должны. Это очень важно. В своей следующей статье я расскажу о четвертом уровне эталонной модели OSI; транспортом уровне. А пока, по традиции, если у вас возникли какие-либо вопросы, присылайте мне их по электронной почте; я сделаю все от меня зависящее, чтобы ответить на любые ваши вопросы.
Оборудование четвертого уровня
Транспортный уровень обеспечивает функции передачи данных с одной конечной точки к другой через сеть. Транспортный уровень отвечает за управление потоком и исправление ошибок. Верхний уровень модели OSI воспринимает транспортный уровень, как надежную, независимую от сети, сквозную (end-to-end) службу. Сквозная служба в транспортном уровне классифицируется на одном из пяти уровней службы; Транспортный протокол (TP) с класса 0 по TP класса 5.
TP класса 0 TP класса 0 – это самый основной из пяти уровней классификации. Службы, классифицированные по этому уровню, выполняют сегментацию и повторную сборку пакетов.
TP класса 1 Службы TP класса 1 выполняют все функции служб TP класса 0, а также исправление ошибок. Служба этого уровня будет повторно передавать единицы данных, если они не были получены целевым адресатом.
TP класса 2 Службы TP класса 2 выполняют все функции служб, классифицированных по уровню TP класса 1, а также мультиплексирование и демультиплексирование, подробнее об этом чуть позже.
TP класса 3 Службы TP класса 3 выполняют все функции служб, классифицированных по уровню TP класса 2, а также упорядочение единиц данных для отправки.
TP класса 4 Службы TP класса 4 выполняют все функции служб, классифицированных по уровню TP класса 3, а также способны обеспечивать свои службы через сеть, ориентированную на подключение или сети без маршрутизации информации. Этот класс транспортного протокола является самым распространенным и очень похож на протокол Transmission Control Protocol (TCP) пакета Internet Protocol (IP).
Я говорю, что TP класса 4 очень похож на TCP, поскольку есть некоторые ключевые отличия. TP класса 4 использует 10 типов данных, в то время как TCP использует только один. Это означает, что TCP проще, но также означает, что он должен содержать множество заголовков. TP класса 4, хотя и более сложный, может содержать одну четверть заголовков, которые содержит TCP, что значительно снижает количество служебных сигналов (overhead).
Сети, ориентированные на подключение
Сети, ориентированные на подключение, подобны вашему телефону. Подключение создается прежде, чем данные отправляются, и сохраняется в течение всего процесса передачи данных. В таких типах сетей, информация маршрутизации должна быть отправлена только при установке подключения, а не во время передачи данных. Это снижает общую нагрузку, что улучшает скорость взаимодействия. Этот тип взаимодействия также очень хорош для таких приложений, как голосовые и видео передачи, где порядок получения данных особенно важен.
Сети без маршрутизации информации
Сети без маршрутизации информации (Connectionless networks) являются противоположностью сетей, ориентированных на подключение, в том, что они не создают подключения перед отправкой данных. Они также не сохраняют никаких подключений между двумя конечными точками. Это требует того, чтобы информация маршрутизации отправлялась с каждым пакетом, что в свою очередь увеличивает нагрузку соединения.
Следует помнить, что только тот факт, что данные отправляются пакетами, вовсе не означает, что это сеть без маршрутизации информации; виртуальные каналы являются примером сетей, ориентированных на подключение, которые используют пакеты.
Поскольку в свой предыдущей части я уже рассказывал об обнаружении и исправлении ошибок, и поскольку эта статья ориентирована на оборудование, я затрону широко известный (хотя и не всегда отчетливо понимаемый) аспект транспортного уровня; мультиплексирование и демультиплексирование.
Мультиплексирование
Мультиплексирование (или muxing, как его часто называют) – это одно из тех слов, которое люди часто слышат, но не совсем понимают его смысл. Многие возможно знают, что muxing – это процесс объединения двух или более сигналов в один, но как это делается? Существует несколько способов, чтобы сделать это. Цифровой сигнал можно мультиплексировать одним из двух способов, мультиплексирование с разделением времени (time-division multiplexing – TDM) и частотное уплотнение (frequency division multiplexing – FDM). Оптические сигналы используют метод, известный под названием мультиплексирование с разделением длины волны (wavelength-division multiplexing), хотя это то же самое, что и FDM (длина волн обратно пропорциональна частоте).
Чтобы продемонстрировать, как работает мультиплексирование, давайте рассмотрим простой случай TDM. В этом примере давайте допустим, что есть двухсигнальный вход. Устройство мультиплексирования двухсигнального ввода потребует три входа; по одному для каждого сигнала, и еще один для ввода сигнала управления (control signal). Это устройство также будет иметь один выход. Это устройство будет работать с двумя входящими сигналами, выдавая получившийся единый сигнал на выходе.
На рисунке 1 показано мультиплексирование с двумя входящими сигналами. Два сигнала представлены как d0 и d1, а управляющий сигнал представлен как c. Выход, который является функцией двух входящих сигналов, представлен как f. Символы, представленные на этой схеме, являются стандартными символами обозначения логических элементов. На рисунке 2 показано значение этих трех элементов.
Мультиплексирование принимает цифровой сигнал на входе. Этот сигнал направляется непосредственно на один вход 1 'AND' (И) элемента, и 'NOT' (НЕ) элемента. 'NOT' элемент инвертирует сигнал и затем отправляет его на один вход 2 'AND' элемента. Выходы 'AND' элементов будут высоким, только когда управляющий сигнал и входные сигналы (d0 или d1) высокие. Поскольку управляющий сигнал отправляется через 'NOT' элемент, прежде чем дойти до 2 'AND' элемента, только один из двух 'AND' элементов будет видеть высокий управляющий сигнал в любую данную единицу времени. Этот процесс означает, что f будет поочередно приравниваться к d0, затем к d1 с частотой в c.
Теперь вы вероятно думаете: "все это здорово, но кому какое дело до получения половины сигнала". Это совсем необязательно должно быть именно так. Если частота управляющего сигнала хотя бы вдвое больше частоты входящих сигналов, то выходной сигнал f будет содержать достаточно информации об обоих d0 и d1 сигналах, чтобы демультиплексатор смог вернуть их к изначальному состоянию. Это основная идея теоремы дискретизации Nyquist-Shannon.
Смотря на логические элементы на рисунках 1 и 2, те из вас, у кого есть опыт в программировании или работе со сценариями, сразу распознают эти логические функции, как общие инструменты в репертуаре программиста. Следует помнить, что хотя эти логические функции используются в программировании ПО, я говорю исключительно о функциях физического оборудования, которые осуществляются набором транзисторов, работающих в качестве переключателей, включенных в цепь так, чтобы достигать этих логических функций.
Демультиплексирование
Демультиплексирование – это прямо противоположенный мультиплексированию процесс. Демультиплексирование будет иметь один входной сигнал, и, в случае, описанном выше, два выходных сигнала. Демультиплексирование, конечно, также использует управляющий сигнал, хотя для демультиплексирования эти сигналы часто называют адресными сигналами (addressing signals). Этот управляющий сигнал называется адресным сигналом, так как канал демультиплексирования может также использоваться для простого выбора того, на какой выходной контакт направить входящий сигнал.
В своей следующей части я расскажу о пятом уровне модели OSI. А пока, как всегда по традиции, если у вас есть какие-либо вопросы, без сомнений присылайте их мне по электронной почте; я постараюсь сделать все от меня зависящее, чтобы ответить на них.
Оборудование пятого уровня
В этой части я расскажу о пятом уровне. Пятый уровень модели OSI называется сеансовым уровнем. Этот уровень отвечает за управление сеансами между двумя взаимодействующими конечными точками. Сюда входит аутентификация, установка, прекращение и повторное соединения при необходимости.
Одним из наиболее интересных аспектов сеансового уровня, или скорее протоколов, обеспечивающих его функциональность, является дуплексный уровень. Когда две конечные точки взаимодействуют друг с другом, они могут взаимодействовать в симплексном режиме, полнодуплексном режиме, полудуплексном режиме или в режиме эмуляции полного дуплекса.
Симплекс
Симплексное взаимодействие – это однонаправленный тип взаимодействия, при котором поток идет от выделенного трансмиттера (передатчика) на выделенный ресивер (приемник). Радио в вашей машине является примером такого типа, станция передает часто проигрываемую музыку наряду с невеселыми шутками, которые принимаются радиоприемником в вашей машине; автомобильный радиоприемник не отправляет ничего обратно на радиостанцию ни в каком виде. На рисунке 1 показана схема симплексного взаимодействия.
Полный дуплекс
Полный дуплекс означает, что взаимодействие может происходить в обоих направлениях одновременно. Стандарты Ethernet являются примером средств полного дуплекса; с кросоверным кабелем (кабель с перемешенной парой) одна пара перевернутых проводов может использоваться для передачи, а другая пара используется для приема. Это конечно относится к более новым стандартам Ethernet, поскольку старые стандарты, использующие коаксиальный кабель, являются полудуплексными (кто-нибудь еще использует такие сети?). Сети Ethernets, использующие оптиковолокно тоже являются полнодуплексными. На рисунке 2 показана схема полнодуплексной коммуникации.
Полудуплекс
Полудуплексная коммуникация означает, что взаимодействие может возникать только в одном направлении в одно время. Тонике и толстые (стандартные) сети Ethernets являются примерами систем полудуплекса, как и многие устройства радиосвязи по типу walkie-talkie. На рисунке 2 также показана схема систем полудуплексной коммуникации.
Полудуплексные системы могут показаться немного устаревшими для читателей этого сайта, поскольку современные компьютерные сети используют полнодуплексную коммуникацию, которая, как правило, обеспечивает большую производительность для пользователей. Однако существует множество ситуаций, в которых использование симплекса или полудуплекса является более предпочтительным. Сети, предназначенные для передачи информации от одного источника многим конечным точкам, могут не нуждаться в возможности приема информации от этих конечных точек. Каналы RSS являются примерами систем, которые отправляют информацию в одну сторону, и не получают ее даже несмотря на то, что работают по сетям с поддержкой полнодуплексного режима.
Многие производственные сети также не нуждаются в полнодуплексной коммуникации. Подумайте о производителях различных устройств на фабрике, имеющей конвейерную ленту подачи устройств. Если поступает большой заказ на устройства, сотрудник будет увеличивать скорость конвейерной ленты. Возможно, на фабрике есть программируемый логический контроллер (Programmable Logic Controller - PLC), который сотрудник может использовать для повышения скорости конвейерной ленты, контроллер конвейерной ленты получает сигнал к увеличению скорости и отправляет сигнал распознавания с текущей скоростью конвейерной ленты, который в свою очередь отображается на PLC. В этом примере нет никакой необходимости в полнодуплексной коммуникации, и на самом деле полный дуплекс лишь увеличил бы стоимость системы, как правило, больше компонентов означает больше устройств для обслуживания, поэтому многие предприятия, как эта фабрика по изготовлению устройств, выбирают системы полудуплексной коммуникации для своих многих нужд.
Эмуляция полного дуплекса
Для многих приложений нужен полный дуплекс, даже когда средство коммуникации поддерживает только полудуплексное взаимодействие. В таких случаях существуют способы симуляции полнодуплексной эмуляции, которые могут быть более выгодными, чем переход на полнодуплексные сети.
Дуплекс с временным делением (TIME DIVISION DUPLEXING)
Дуплекс с временным делением (TDD) очень похож на мультиплексирование с временным делением в том, что он использует те же средства для сигнала передачи и приема, которые контролируются часами. В TDD сигналы отправки и приема используют одно и то же средство, и им присваиваются временные слоты. Большое преимущество такого метода эмуляции полного дуплекса заключается в том, что если объем данных, движущихся в любом из направлений, слишком сильно варьируется, то выделение временного слота можно оптимизировать для любого из направлений так, чтобы оно соответствовало потребностям приложения, это может осуществляться динамически. Стандарт IEEE 802.16 для WiMAX (Worldwide Interoperability for Microwave Access) позволяет использовать TDD или дуплекс с частотным делением (Frequency Division Duplexing). TDD лучше подходит для ассиметричной коммуникации данных, такой, которая используется в интернете, это благодаря возможности динамического выделения временных слотов.
Дуплекс с частотным делением (FREQUENCY DIVISION DUPLEXING)
Дуплекс с частотным делением или FDD является термином, используемым для обозначения систем взаимодействия, назначающих одну частоту для выгрузки, а другую частоту для загрузки данных. В таких типах эмуляции полного дуплекса прием и передача могут осуществляться по одному каналу, однако он должен иметь смещение частоты (полоса пропускания между частотой выгрузки и загрузки) с тем, чтобы данные не перемешивались друг с другом. Такое смещение частоты может быть основным недостатком для некоторых систем. Возьмем, к примеру, WiMAX, FDD поддерживается, хотя это означает, что коммуникация между двумя конечными точками потребляет больше спектра доступной частоты. С другой стороны, TDD может обладать более долгим скрытым периодом и может требовать более сложных каналов, потребляющих больше энергии. TDD также требует временной сдвиг для выделенных временных слотов.
Системы FDD обычно более предпочтительные для приложений взаимодействия, требующих одинаковой полосы пропускания выгрузки и загрузки, которая таким образом будет эмулировать динамическое выделение временных слотов, обеспечиваемых TDD. Большинство сотовых систем работают на FDD.
Эхоподавление (ECHO CANCELLATION)
Эхоподавление (компенсация эхо-сигналов - Echo cancellation) является еще одним способом эмуляции полного дуплекса. В режиме коммуникации, использующем эхоподавление, обе конечные точки располагают данные в одном канале с одинаковой частотой в одно и то же время, и каждая конечная точка принимает все данные, расположенные в одном канале, включая данные, отправленные этой точкой. Каждая конечная точка затем должна изолировать данные, отправленные ею, и прочитать все остальные данные. Телефонные сети также используют эхоподавление. Такая поддержка эхоподавления может применяться в решениях физического оборудования или программного обеспечения. Однако некоторые формы эхосигналов являются более предпочтительными. К примеру, когда вы говорите в телефонную трубку, ваш голос передается в наушник до того, как он передается тому лицу, которому вы звоните; это нужно потому, что если вы не будете слышать свой голос, вы посчитаете, что телефон не работает. Однако другие приложения, такие как модем dial up, более чувствительны к эху и нуждаются в его запрете для корректной работы.
Оборудование шестого уровня
В этой части мы обсудим шестой уровень. Шестой уровень или уровень представления является первым уровнем, связанным с передачей данных по сети на более абстрактном уровне, нежели простые единицы и нули; например, при передаче букв, как они представляются единицами и нулями (или, скорее, как они «представляются» более низкому уровню модели OSI).
Эта функция называется трансляцией и позволяет различным приложениям (зачастую на различном компьютерном оборудовании) взаимодействовать, используя общеизвестные стандарты трансляции, называемые синтаксисом передачи. Помимо синтаксисов передачи, которые способны представлять строки в виде единиц и нулей, существуют другие стандарты, способные передавать более сложные данные, такие как объектно-ориентированные языки программирования. Расширенный язык разметки (Extensible Markup Language - XML) является примером такого стандарта.
Сжатие (COMPRESSION)
Еще одной важной функцией уровня представления является функция сжатия. Сжатие обычно используется для максимально возможного увеличения использования пропускной способности сети или оптимизации места диска при хранении данных.
Сжатие без потерь (LOSSLESS COMPRESSION)
Существует два основных типа сжатия, сжатие без потерь и с потерями (Lossless/lossy). Сжатие без потерь, как предполагает его имя, сжимает данные таким образом, что когда данные распаковываются, они остаются точно такими же, как были до сжатия; при таком сжатии отсутствует потеря данных. Сжатие без потерь, как правило, будет не так сильно сжимать данные, как методики сжатия с потерями, и может требовать больше мощности обработки для осуществления сжатия; решение о принятии той или иной методики сжатия каждый принимает для себя сам.
Словарное кодирование (DICTIONARY ENCODING)
Одним из наиболее распространенных способов применения сжатия данных без потерь является использование словаря. Этот способ, часто называемый подстановочным кодированием, будет искать соответствия в сообщении для отправки и в сообщениях в словаре. Например, вы можете использовать полный английский словарь в качестве словаря и когда вы хотите сжать содержимое книги, вы просто заменяете все слова в ней на расположение слова в словаре. Распаковка таких сжатых сообщений происходит в обратном порядке, расположения слов заменяются самими словами.
Подстановочное кодирование может быть значительно более сложным, чем вышеприведенный пример. Например, алгоритмы LZ77 и LZ78 работают со словарем, который называется окном пакетной передачи переменной длительности (sliding window). Этот словарь представляет собой словарь, который изменяется во время процесса сжатия. По сути, такой словарь содержит каждую подстроку, показанную в последнем N байте данных в уже сжатом состоянии. При использовании такого словаря для определения строки сжатым данным требуется два значения вместо одного. Этими значениями будут начало подстроки, которое указывает на то, что подстрока найдена в окне пакетной передачи, и начинается с X количества байт до текущего расположения, а также длительность подстроки.
Продольное кодирование (RUN-LENGTH ENCODING)
Другим основным примером сжатия данных без потерь является продольное кодирование. Алгоритм продольного кодирования замещает подмножество данных, повторяющихся много раз, подмножеством данных и числом, обозначающим количество повторений. В реальности продольное кодирование эффективно используется в факсах. Большинство факсов представляют собой белые листы с черным текстом. Поэтому схема продольного кодирования может брать каждую строку и передавать код для белого, а затем количество пикселей; затем код для черного и количество пикселей и т.д. Поскольку большая часть факса белая, длина передаваемого сообщения значительно снижается.
Этот метод сжатия нужно использовать аккуратно. Если в данных нет большого количества повторений, то схема продольного кодирования может превзойти по размерам исходный файл.
Сжатие с потерями (LOSSY COMPRESSION)
Конечно не всегда удобно и необходимо использовать приемы сжатия без потерь. Во многих случаях методы сжатия без потерь просто не будут сжимать данные на достаточном уровне, чтобы быть эффективными. В других ситуациях приемы сжатия без потерь будут потреблять слишком много ресурсов обработки на сжатие и/или распаковку, и во многих ситуациях методики сжатия с потерями могут обеспечивать результаты, практически незаметные человеку. На рисунке 1 приведена диаграмма соответствующих скоростей сжатия.
Сжатие цифровых образов (DIGITAL IMAGE COMPRESSION)
Сжатие цифровых образов представляет собой ситуацию, в которой нужно очень осторожно подходить к решению о выборе методов сжатия с потерями или без потерь. Обычно выбор зависит от сжимаемого образа. Такие образы, как медицинские фотографии, в которых отчетливые детали очень важны, потребуют сжатия без потерь. С другой стороны, снимки вашего семейного отдыха только выиграют от уменьшенного размера файла, который обеспечивается способами сжатия с потерями.
В случае с фотографиями вашего семейного отдыха выбор методики сжатия с потерями не означает, что фотографии после сжатия будут плохого качества. На самом деле, многие способы сжатия с потерями для цифровых образов могут пользоваться тем, что человеческий глаз более чувствителен к яркости, нежели к незначительным изменениям цвета. Это означает, что метод сжатия будет сохранять очень схожие с оригиналом цвета, сохраняя при этом яркость без потерь. Это называется chroma sub-sampling (цветовое суб-сэмплирование) .
Сжатие цифрового звука (DIGITAL AUDIO COMPRESSION)
Еще одним примером того, где сжатие с потерями может быть полезным, является ситуация сжатия цифрового звука. Приемы сжатия цифрового звука используют область науки, известную под названием психоакустика. По сути, психоакустика – это наука о том, как человек слышит и воспринимает звук.
Одним из аспектов психоакустики, связанным со сжатием цифрового звука, является тот факт, что люди могут слышать звуки в диапазоне частот от 20Гц до 20кГц. Многие приемы сжатия цифрового звука с потерями используют это и не сохраняют никакую информацию, связанную с частотами вне этого диапазона.
Еще одним моментом, связанным с воспринимаемым людьми диапазоном частот, является то, что звуки более высокой частоты должны быть громче, чтобы человек их слышал. Это означает, что сжатие с потерями может сэмплировать звуки меньшей интенсивности на этих частотах менее четко, или не сэмплировать вовсе. Это также означает, что разработчики этих методик сжатия могут «прятать» артефакты шумов (результаты сжатия) в этих высоких частотах, где их невозможно будет воспринимать.
Еще одним аспектом психолингвистики, который широко используется в сжатии цифрового звука с потерями, является феномен под названием маскирование. Это ситуация, в которой более громкий звук делает неслышным или невнятным более тихий звук, звучащий одновременно с ним. Это конечно зависит от частоты, но, тем не менее, это явление широко применяется инженерами в области сжатия звука. По сути, когда на аудиодорожке есть громкий звук, сжатый файл не будет сохранять данные, связанные с прочими звуками. В результате, если все сделано аккуратно, человеческое ухо будет слышать те же звуки, что и в несжатом треке.
Одной из областей, в которой сжатие цифрового звука без потерь становится все более популярным, является цифровое архивирование. Создатели и потребители аудио, желающие сохранить точную копию своих аудио файлов, все чаще обращаются к сжатию цифрового звука без потерь. Одной из причин тому является удешевление носителей цифровой информации, и люди могут позволить себе дополнительное место для хранения.
Несмотря на невысокую стоимость носителей для хранения цифровой информации, сжатие цифрового звука с потерями все же имеет преимущество, когда речь заходит о переносных носителях музыки. Например, ваш iPod будет использовать такое сжатие, потому что когда вы хотите носить такой накопитель с собой, вы сможете записать на него лишь тот объем данных, который он может вместить; использование сжатия с потерями позволит записать больше песен на этот накопитель. Еще одна область, в которой сжатие с потерями является главенствующим, это потоковое аудио. Даже несмотря на значительное снижение стоимости пропускной способности сети за последние годы, все еще есть необходимость в снижении потребления ресурсов пропускной способности, которые используются многими приложениями. Поэтому все, начиная с онлайнового радио и заканчивая приложениями VoIP, использует сжатие с потерями.
Оборудование седьмого уровня
Седьмой, последний уровень модели OSI называется прикладным уровнем (Application Layer). Прикладной уровень по мнению многих считается самым важным уровнем модели OSI, так считается потому, что безо всяческих интересных сетевых приложений в сети вообще не было бы необходимости. Все способы, посредством которых мы взаимодействуем в сети, связаны с сетевыми приложениями. К ним относится веб браузер, почтовые программы, системы мгновенного обмена сообщениями, приложения протокола VoIP, и многие другие сетевые приложения, взаимодействующие с более низкими уровнями модели OSI и сетевыми пользователями. У применения прикладного уровня есть три основные функции. Они включают:
- Обеспечение доступности всех необходимых системных ресурсов.
- Сопоставление приложения с соответствующим прикладным протоколом.
- Синхронизация передачи данных от приложения к протоколу приложения.
Протоколы прикладного уровня
Прикладной уровень содержит сетевые приложения и протоколы приложений. Протоколы приложений по сути своей являются правилами того, как взаимодействовать с приложением. Многие протоколы прикладного уровня общедоступны, например протокол передачи гипертекста (Hyper Text Transfer Protocol – HTTP). Это означает, что любой веб браузер, который поддерживает протокол HTTP, может передавать любой файл с веб сервера, который также использует протокол HTTP. Этот веб браузер, веб сервер и протокол HTTP в совокупности образуют сетевое приложение. Некоторые протоколы прикладного уровня являются частными и поэтому доступны не для всех; протоколы VoIP являются примерами такого типа протоколов. Поэтому нельзя использовать общий пользовательский интерфейс, чтобы получить доступ к своей учетной записи Skype; необходимо использовать пользовательский интерфейс Skype.
Программное обеспечение vs Аппаратное оборудование
Когда многие люди думают о протоколах прикладного уровня, таких как HTTP, SMTP или POP3, они также подразумевают программные продукты, которые представляют собой интерфейс этих приложений. Но это не всегда верно. Если немного подумать, мы с легкостью можем найти пример, в котором интерфейсом для приложений будет служить аппаратное оборудование. К примеру, возьмите сегодняшние беспроводные телефоны, которые способны подключаться к учетной записи VoIP. Хотя эти телефоны оснащены ПО, легко понять, что большая часть работы выполняется аппаратным оборудованием. По сути, ваш голос принимается микрофоном и оборудование обрабатывает его так, чтобы он был совместим с частным протоколом VoIP. Это оборудование может представлять собой либо заказную ИС (Application Specific Integrated Circuit – ASIC) или программирую пользователем вентильную матрицу (Field Programmable Gate Array – FPGA). Еще одним примером, в котором протокол прикладного уровня выполняется аппаратным оборудованием, является Bluetooth. Bluetooth, по сути своей, охватывает много уровней модели OSI, но мы остановимся на прикладном уровне. В устройстве Bluetooth можно найти множество приложений, находящихся на прикладном уровне. Одним из таких приложений является приложение, позволяющее беспроводному наушнику (рисунок 1) взаимодействовать с сотовым телефоном в вашем кармане. В этом примере, наушник, оснащенный встроенным чипом Bluetooth, будет преобразовывать получаемый с сотового телефона сигнал в форму, приемлемую для громкоговорителя полностью посредством аппаратного оборудования. Таким же образом наушник будет принимать сигнал вашего голоса с микрофона и преобразовывать его в форму, приемлемую для чипа Bluetooth, который в свою очередь отправит сигнал на ваш телефон. Все эти процедуры выполняются посредством аппаратного оборудования.
Протокол передачи файлов (File Transfer Protocol)
Одним из самый распространенных софтверных приложений, относящихся к прикладному уровню модели OSI, является протокол передачи файлов (File Transfer Protocol - FTP); или, скорее, приложения, которые используют FTP, относятся к прикладному уровню. FTP позволяет передавать файлы по сети. Протокол FTP требует двух конечных точек, одна из которых действует в качестве FTP сервера, а вторая – в качестве FTP клиента. FTP также требует два порта, один для данных, а второй для управления. Порт управления FTP – это порт номер 21, а порт данных FTP – это порт номер 20. Конечно, FTP клиент с портов случайный, и не является любым общеизвестным портом. Существует два общих типа FTP; активный и пассивный. В активном FTP клиент FTP отправляет FTP запрос на управляющий порт FTP сервера. Затем FTP сервер отправляет запрошенные данные со своего порта данных на указанный клиентом порт (порт управления). Именно таким образом был построен изначальный FTP. Однако это может повлечь за собой множество проблем. Когда сервер начинает отправку данных со своего порта данных на порт клиента, это очень похоже на то, что злоумышленник выгружает данные на клиента. По этой причине многие брандмауэры не позволяют такой тип передачи данных. Пассивный FTP был создан для удовлетворения потребностей безопасности клиента. Пассивный FTP не использует стандартный порт данных FTP. FTP сервер, при получении запроса с FTP клиента, ответит на неизвестный порт, на который будут отправлены данные. Затем FTP клиент отправляет запрос на этот порт, который посылает ответ в виде запрошенных данных.
Протокол передачи голоса через интернет (Voice Over Internet Protocol)
Как я уже говорил в начале этой части, VoIP также является сетевым приложением, относящимся к прикладному уровню. VoIP, по определению, является протоколом, оптимизированным на передачу голоса в сети на базе пакетов. Хотя здесь я подразумеваю все приложения, которые используют такой протокол. VoIP – это отличный пример семейства приложений, которые имеют множество различных применений. На рисунке 2 показаны различные формы применения VoIP. Все эти разнообразные применения способны взаимодействовать друг с другом, так как все они основываются на различных уровнях модели OSI. Хотя каждое применение может использовать различные способы применения других функций на других уровнях, все они совместимы друг с другом.