В нашей предыдущей статье мы рассматривали историю развития компьютерных сетей. Рассмотрели все важные этапы становления сети Интернет и общие принципы ее работы.
Сегодняшняя наша тема будет называться: технологии передачи данных в сетях. Естественно, прежде всего, - компьютерных. В рамках данной статьи мы также рассмотрим основные средства передачи данных (понятия физических и логических интерфейсов), разберем основные технологии кодирования сигнала при его передаче, характеристики линий связи, а также - механизмы защиты от потерь.
Итак! Для чего существует сеть? Правильно, - для передачи по ней данных (информации). А как передается (распространяется) эта самая информация? Правильно, - через определенную среду передачи (кабельную инфраструктуру или - в диапазоне беспроводной связи).
Технологии передачи данных в своей работе используют (в зависимости от конкретной их реализации) различные физические интерфейсы.
Примечание: интерфейс это - физическая (или логическая) граница при взаимодействии нескольких независимых объектов - своеобразная прослойка между ними.
Интерфейсы делятся на две категории:
- физические интерфейсы
-
интерфейсы логические
Физический интерфейс это - конечный порт подключения (разъем с группой электрических контактов). Например - интерфейс сетевой карты компьютера. А пара портов, соединенная с помощью разъемов и кабеля называется линией (каналом) передачи данных.
Логический интерфейс - это набор правил (протокол), который определяет саму логику обмена данными между связанными линией (сетью) устройствами.
Организация передачи данных в компьютерной сети происходит в тесном взаимодействии этих двух интерфейсов: физический компонент (сетевая карта) и логический (ее драйвер).
Обязательным условием для успешной реализации любой из технологий передачи данных является присутствие в потоке данных дополнительного компонента - протокола передачи.
Протокол передачи на логическом уровне представляет собой набор правил, которые определяют обмен данными между различными приложениями или устройствами. Эти правила задают единый способ передачи сообщений и обработки ошибок передачи. На физическом уровне протокол это - набор служебных данных, прикрепляющихся к основным пакетам (кадрам) информации, без которых просто невозможно эффективное взаимодействие в сети.
Протокол должен абстрагироваться (игнорировать) конкретную среду передачи, его задача - обеспечивать надежную связь между узлами в коммутационном облаке.
Давайте рассмотрим сам процесс организации передачи данных более подробно!
Сначала происходит вот что: приложение (программа) обращается к ОС за разрешением для сетевого взаимодействия с другим устройством (принтером, удаленным компьютером, камерой наблюдения и т.д.) Операционная система дает команду драйверу сетевой карты, который загружает в буфер карты первую порцию данных и инициирует работу интерфейса на передачу
На другом конце линии (сети) удаленное устройство принимает в буфер своей сетевой карты поступающие данные. После окончания передачи протокол проверяет нет ли в передаваемых частях (пакетах) данных ошибок (если надо запрашивает их повторную передачу) и загружает принятые данные из буфера карты в заранее зарезервированное пространство оперативной памяти. Оттуда уже конечное приложение (программа) извлекает информацию и работает с ней.
Вот - схемка, для наглядности (кликабельно):
На основании всего сказано выше, можно сделать такой вывод: технологии построения сети сводятся к тому, чтобы связать между собой удаленные устройства электрически и информационно! Т.е. - создать физическую среду передачи (кабель, беспроводная связь) и обеспечить общий протокол передачи данных по сети.
Двигаемся дальше! Современные технологи и методы передачи данных, в большинстве случаев, основаны на клиент-серверном взаимодействии. Давайте с Вами более подробно рассмотрим эти понятия.
Клиент это - модуль (программа, служба, отдельный компьютер), служащий для формирования и передачи сообщений (запросов) к ресурсам удаленного устройства (серверу), с последующим приемом результатов от него и передачей их соответствующим приложениям на клиенте.
Сервер это - модуль (программа, служба...), который постоянно ожидает прихода из сети запросов от клиентов и обслуживающий (с участием локальной ОС) эти запросы.
Один сервер может обслуживать сразу множество клиентов. Например - веб-сервер «Apache» (Апач), который обеспечивает множественные подключения за день к нашему сайту «sebeadmin» по протоколу «http». Вот - еще пример: база данных, с которой работают клиенты. На них установлены клиентские модули программ, которые подключаются к базе и поддерживают только графический интерфейс работы с ней. Все вычисления и обработка, при этом, происходят на сервере и с использованием его ресурсов.
Познакомимся еще с одним определением! Клиент-серверная составляющая, которая предоставляет доступ к какому-то ресурсу компьютера через сеть называется сетевой службой. Причем, каждая служба связана с определенным типом сетевых ресурсов.
Например: служба печати позволяет нам распечатывать документы на сетевом принтере, а файловая служба - получать доступ к данным, находящимся на удаленных компьютерах. Для серфинга по Интернету есть своя веб-служба, которая состоит из серверной части (веб-сервера) и клиентской (веб-браузера) пользователя (IE, Opera, Firefox и т.д.)
В свете всего сказанного выше, технологии передачи данных должны опираться не просто на операционные системы, а на сетевые ОС, которые предоставляют пользователю доступ к информационным и аппаратным ресурсам других компьютеров. Причем эти операционные системы, согласно изложенным выше определениям, также делятся на два больших класса: серверные и клиентские ОС.
Клиентские системы обращаются, в основном, с запросами к серверным компонентам других компьютеров а серверные компоненты серверной ОС предоставляют эти услуги. Конечно, на данный момент, практически любая современная ОС способна выполнять как роль клиента, так и сервера. Серверные системы просто изначально созданы из расчета обслуживания ими максимального количества обращений и обладают лучшей отказоустойчивостью (надежностью).
Вот, к примеру, какая "игрушка" стоит у нас в серверной:
Но о ней - в другой раз :)
Давайте теперь с Вами поговорим вот о чем: современные (цифровые) технологии передачи сигнала связаны с его преобразованием (кодированием). Зачем нам это нужно? На то есть несколько причин:
- Предотвращение ошибок передачи данных (за счет уверенного распознавания сигнала принимающей стороной)
-
Данные передаются быстрее (за счет более высокой плотности полезной информации в потоке)
Как видите, это - уже две весьма веские причины для того, чтобы уделить методам кодирования должное внимание :)
На фото ниже представлено два сигнала: аналоговый (красная линия) и цифровой (черные "ступеньки")
В данном случае аналоговая последовательность была оцифрована (дискретизирована) с определенной частотой. Чем выше будет частота дискритизации, тем меньший шаг будут иметь наши "ступеньки" и тем более похож будет оцифрованный сигнал на исходный (красный).
Похожие процессы происходят и при дискретизации (оцифровке) нашего голоса, снимаемого со входа микрофона звуковой картой компьютера.
В вычислительной технике используется двоичный код. Внутри системного блока компьютера это эквивалентно двум состояниям: наличию и отсутствию электрического напряжения (логический «ноль» или «единица»). Здесь - все просто: есть ток - "единица", нету - "ноль".
Современные технологии передачи данных позволяют производить кодирование сигнала и другими (более эффективными) способами. Но прежде, - еще одна небольшая классификация. По способу реализации процедура делится на:
- Физическое кодирование сигнала
- и - логическое (на более высоком уровне - поверх физического)
Давайте сначала обзорно рассмотрим первый пункт. Есть, к примеру, потенциальный способ кодирования, при котором единице соответствует один уровень напряжения (один потенциал), а нулю - другой. А при импульсном способе, для представления цифр используются импульсы разной полярности.
Для технологии кодирования определенная проблема при передаче данных состоит в том, что внешние (по отношению к самому компьютеру) линии передачи данных могут быть растянуты на большие расстояния и подвержены воздействию различных помех и наводок. Это приводит к искажению эталонных прямоугольных импульсов передачи сигнала и нужны новые (надежные) алгоритмы его кодирования и передачи.
В вычислительных сетях применяется как потенциальное, так и импульсное кодирование. Также применяется и такой способ передачи данных, как модуляция.
При модуляции дискретные данные передаются с помощью синусоидального сигнала той частоты, которую хорошо передает имеющаяся в распоряжении линия связи.
Первые два варианта преобразования применяются для линий высокого качества, а модуляция используется в каналах с сильными искажениями сигнала. Модуляция, к примеру, используется в глобальных сетях при передаче трафика через аналоговые телефонные каналы связи, которые были разработаны специально для передачи голоса (аналоговой составляющей) и поэтому плохо подходят для передачи цифровых импульсов.
На сам способ передачи оказывает влияние и такая вещь, как количество проводников (жил) в линиях связи. Для снижения их стоимости количество проводов, зачастую, снижается. При такой технологии передача данных осуществляется последовательно, а не параллельно (как это принято для линий связи внутри компьютера).
К способам кодирования на физическом уровне относятся такие алгоритмы, как NRZ (Non Return Zero), Манчестерский код (Manchester), MLT-3 (Multi Level Transmission) и ряд других. Не вижу особого смысла останавливаться на них подробно, если будет интересно - Вы всегда сможете почитать о них в Интернете. Короче, я - отмазался! :)
Давайте пару слов скажем и о логическом кодировании. Как можно понять из названия, оно осуществляется по верху физического (накладываясь на него) и служит для обеспечения дополнительной надежности при передаче данных. Каким же образом?
Например: если характер передаваемого сигнала долгое время не изменяется (при передаче длинных последовательностей логических нулей или единиц) приемник может ошибиться при считывании очередного бита информации. Он просто не сможет разложить общий поток данных на отдельные составляющие и, как следствие, - правильно собрать в своем буфере из них исходную структуру.
Логическое кодирование (которому подвергается исходная последовательность данных) внедряет в длинные последовательности бит свои биты с противоположным значением, или - вообще заменяет их другими последовательностями. Кроме того, оно позволяет улучшить спектральные характеристики сигнала, в целом - упростить его расшифровку, а кроме того - передавать в общем потоке дополнительные служебные сигналы управления.
В основном, для логического преобразования применяются три технологии:
- вставка бит (bit stuffing)
- избыточное кодирование
- скремблирование
Также - не останавливаюсь отдельно (чтобы не занудить) :) основную идею Вы, надеюсь, уловили!
Коротко отчитаюсь следующим скриншотом:
На нем Вы можете видеть, как выглядит один и тот же сигнал, при наложении на него различных алгоритмов:
Технологии передачи данных имеют еще ряд проблем, с которыми приходится бороться. И одна из них - проблема взаимной синхронизации передатчика одного компьютера и приемника другого. Согласитесь, что сложно будет разобраться в потоке данных, если два устройства начнут генерировать его одновременно "навстречу" друг другу. Начнется бардак! :)
Внутри корпуса компьютера эта проблема решается просто, так как все устройства: оперативная память, видеокарта, центральный процессор и т.д. синхронизируются от общего тактового генератора, расположенного на материнской плате.
Проблема же синхронизации удаленных компьютеров может решаться разными способами: путем обмена специальными тактовыми синхроимпульсами или же - передачей служебных данных, не имеющих отношения к основному потоку информации. Один из стандартных приемов, служащий для повышения надежности передачи это - подсчет контрольной суммы каждого байта (блока байтов) и передача этого значения принимающей стороне.
Примечание: контрольная сумма это - некоторое значение, рассчитанное путем "наложения" на данные определённого алгоритма и используемое для проверки их целостности при передаче. Контрольные суммы могут использоваться для быстрого сравнения двух наборов данных на их идентичность. Отличающиеся данные будут иметь разные контрольные суммы..
Еще одна технология подтверждения целостности данных это - обмен между взаимодействующими устройствами служебными сигналами-квитанциями, подтверждающими правильность приема. Зачастую эта функция по умолчанию включается в сам протокол сетевого взаимодействия.
Технологии передачи данных подразумевают передачу информации от одного компьютера к другому - в обеих направлениях. Даже в том случае, когда нам кажется, что мы только принимаем данные (например - скачиваем музыку), то на самом деле - обмен идет в двух направлениях. Просто есть основной поток данных (который интересует нас - музыка) и вспомогательный (служебный), идущий в обратном направлении, образуемый квитанциями об успешной (или не успешной) передаче.
В зависимости от того, могут ли они передавать данные в обоих направлениях или нет, физические каналы делятся на несколько видов:
- Дуплексный канал - обеспечивает одновременную передачу информации в обоих направлениях Дуплекс может состоять из двух независимых физических сред (один проводник на прием, второй - на передачу). Возможен и вариант, при котором одна среда используется для обеспечения дуплексного режима работы. В этом случае на клиентах применяются дополнительные алгоритмы выделения каждого потока данных из общего массива информации.
- Полудуплексный канал - также обеспечивает передачу в обоих направлениях, но не одновременно, а - по очереди. Т.е. в течение определенного времени данные передаются в одном направлении, а затем - в обратном.
- Симплексный канал - позволяет передавать информацию только в одном направлении. Дуплексный может состоять из двух симплексных каналов.
Ой, что-то много букв получилось :) Думаю, на сегодня - достаточно, будем продвигаться постепенно. В следующих статьях обязательно продолжим наше знакомство с сетевыми информационными технологиями, а пока что - до свидания, и - до следующих статей!
В завершение, посмотрите тематическое видео: