Для того, чтобы понять о чем речь в этой статье, рекомендую прочесть предыдущую статью.
Вам уже неоднократно встречались слова: «протокол» и «интерфейс». При этом иногда в одной и той же статье некий интерфейс могли назвать протоколом, а протокол – интерфейсом. Попытаемся понять, что означают эти термины, а так же причину их подмены в некоторых случаях.
Интерфейс – это комплекс мер по установке и проведению связи между двумя и более устройствами. Интерфейс имеет два уровня: физический и логический.
Физический уровень – это физическая среда, по которой передаются сигналы.
Логический уровень (может быть несколько уровней) – это набор правил, по которым производится обмен информацией. Про это мы еще говорили в прошлой статье.
Разговаривают два человека.
Физическим уровнем являются колебания среды (воздуха) с частотами 300-5000 Гц. Именно в этом частотном диапазоне большинство людей передает речевую информацию. При этом наши уши слышат в звуковом диапазоне 30-18000 Гц. То есть, человек имеет возможность услышать сказанное.
Взаимопонимание собеседников будет возможно, если:
а) они используют один и тот же язык, который они понимают
б) скорость общения (произношения) будет одинакова (или незначительно отличаться)
в) они расположены к общению
Следовательно, скорость передачи информации и набор слов — это логический уровень канала связи. Учитывая всё выше написанное, можно заключить: канал связи — это симбиоз логического и физического уровней.
К логическому уровню также относят и такое понятие как «помехозащищенность».
Под помехозащищенностью канала связи понимается комплекс мер, выполняемых для увеличения достоверности принимаемых устройством данных. Меры могут быть предприняты как применительно к физическому методу передачи сигнала (увеличение мощности сигнала, использованию разных частот для вещания) так и к логическому (повреждения целостности сообщения (контрольные суммы), передача избыточной информации для восстановления поврежденной информации)
Контрольная сумма
Контрольная сумма (Cyclic Redundancy Check — CRC) — это метод предварительного анализа сформированного для передачи сообщения. Сами методы могут быть различны.
Например, мы передаем сообщение «Умный дом». Считаем количество согласных букв в этом сообщении, получаем 4 согласных буквы. Также считаем длину сообщения – 9. В начале сообщения мы передаем: длина сообщения – 9, количество согласных – 4. Приемная сторона получает сообщения и производит те же вычисления. Если хоть один символ был потерян или принят лишний (и такое бывает), то есть была допущена ошибка, то эти цифры не совпадут. Будет сформирован сигнал «Ошибка приема сообщения».
Тут программист должен думать: или пытаться по полученным данным (при наличии избыточной информации) восстановить поврежденное сообщение, или запросить передачу сообщения повторно. На практике чаще всего используют комбинацию методов обнаружения ошибки приема сообщения: начиная от деления длинного сообщения на маленькие пакеты и прикрепления к ним данных об их длине и контрольной сумме, заканчивая многократной передачей пакета через интервалы времени.
Полезный материал — заряд протона.
Но помехой могут быть не только сторонние сигналы. При обмене данными возможна ситуация, при которой оба собеседника могут начать говорить (передавать информацию) одновременно.
Это событие описывают термином «коллизия». Поэтому перед началом передачи информации необходимо убедиться в том, что канал связи свободен. Для этого используются разные методы.
К способам повышения надежности доставки сообщения относится метод предварительной подстройки принимающей стороны под передающую, или наоборот.
Объясню эти понятия на примере всё тех же собеседников. Как они определяют начало новой фразы? По относительно длинной паузе, возникшей после последнего сказанного слова. А можно ли это сделать как-то иначе? Да, это возможно. Вспомним фильмы о войне: «Роза, роза! Я – Тополь. Прием!». Здесь признаком начала сообщения является как изменение физической среды — разговор (звуковые колебания в нужной полосе частот), так и добавление специальных команд: адреса получателя (Роза), сигнала «готовность приемника» (Прием!) и подписи отправителя (Тополь).
В данном примере показан метод связи, при котором свое состояние к готовности передать сообщение выставляет в канал связи сам приемник. Может использоваться и такой метод: вначале передача сигнала «готовность передатчика», а через некоторый интервал времени и самого сообщения. Другими словами, получатель сообщения и его отправитель предварительно подстраиваются друг под друга, то есть происходит синхронизация передатчика и приемника. Благодаря синхронизации, вероятность того, что оба равноправных собеседника начнут говорить (передавать сообщения) одновременно, значительно уменьшается.
Из выше написанного следует, что протокол (логический уровень интерфейса) — это совокупность правил, по которым формируется сообщение. Но эти правила могут быть полностью «закодированы» в изменениях физической среды передачи сигналов, а могут быть сами по себе.
Например, необходимо как-то привлечь к себе внимание отвлекшегося собеседника. Мы можем изменить состояние физической среды передачи сигнала (вспоминаем о звуковых колебаниях) — громко крикнуть или свиснуть, а можем и сделать специальное сообщение (а это уже логический уровень) — сказать «Внимание!» Можем и одновременно: подать звуковой сигнал и произнести сообщение. В данном случае, протокол не привязан к физическому уровню интерфейса.
НО! При одинаковом физическом уровне можно использовать разные протоколы. Например, крик или свист привлечет внимание большинства людей, а вот сообщение «Внимание!» только тех, кто понимает язык, на котором было сказано данное сообщение. Это, кстати, весьма важное примечание. То есть получается, что имея один физический уровень, мы можем создать несколько протоколов.
Примером интерфейса связи, при котором протокол обмена не привязан к физическому уровню интерфейса, является RS-232 (он часто используется в различных системах для состыковки узлов между собой или компьютером). Часто интерфейс RS-232 называют «COM-порт». Данное название вошло в обиход с лёгкой руки производителей персональных компьютеров, которые его назвали «communication port» (порт связи), а разъем этого интерфейса на корпусе ПК подписывали сокращенно: «COM-port».
Интерфейс в упрощенной версии может иметь только две линии связи: «Прием» и «Передача». Стандарт на данный интерфейс определяет такой физический уровень: кодирование единицы выполняется уровнем напряжение -12 Вольт, а нуля — +12 Вольт. Но он также описывает, что приемная сторона обязана принять единицу при напряжении 0 Вольт, а ноль – при напряжении выше +3 Вольт.
Чем и пользуются всевозможные производители преобразователей USB-COM (где чаще всего используется упрощенная схема преобразования и уровень нуля передается как +5 Вольт, а единицы – как 0 Вольт). Даже если мы будем кодировать единицу и ноль иными уровнями напряжение (или тока), то сама логическая составляющая протокола не изменится – главное, чтобы приемник правильно принимал эти уровни напряжения.
Мой читатель, ты что-то понял ? Если нет, то советую начать с интересных электронных схем. А дальше поговорим ))