Простой способ передачи данных

Передача данных и виды связи

Передача данных играет очень большую роль в электронике.

В прошлых статьях по цифровой электронике я рассказывал о цифровых сигналах. Чем же так хороши эти цифровые сигналы? Как это бы странно не звучало, но цифровые сигналы по своей природе являются аналоговыми, так как передаются путем изменения значения напряжения или тока, но передают сигналы с ранее оговоренными уровнями. По своей сути, они являются дискретными сигналами. А что означает слово «дискретный»? Дискретный — это значит состоящий из отдельных частей, раздельный, прерывистый. Цифровые сигналы относятся как раз к дискретным сигналам, так как имеют только ДВА СОСТОЯНИЯ: «активно» и «не активно» — «есть напряжение/ток» и «нет напряжения/тока».

Главный плюс цифровых сигналов в том, что их проще передавать и обрабатывать. Для передачи чаще всего используют напряжение. Поэтому, принято два состояния: напряжение близко к нулю (менее 10% от значения напряжения) и напряжение близко к напряжению питания (более 65% от значения). Например, при напряжении питания схемы 5 Вольт мы получаем сигнал с напряжением 0,5 Вольт — «ноль», если же 4,1 Вольта — «единица».

Последовательный метод передачи информации

Есть просто два провода, источник электрического сигнала и приемник электрического сигнала, которые цепляются к этим проводам.

Это ФИЗИЧЕСКИЙ УРОВЕНЬ.

Как мы уже сказали, по этим двум проводам мы можем передавать только два сигнала: «есть напряжение/ток» и «нет напряжения/тока». Какие способы передачи информации мы можем реализовать?

Самый простой способ — сигнал есть (лампочка горит) — это ЕДИНИЧКА, сигнала нет (лампочка не горит) — это НОЛЬ

Если пораскинуть мозгами, можно придумать еще несколько различных комбинаций. Например, широкий импульс принять за единичку, а узкий — за ноль:

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

А вот и практическая реализация:

Да можно хоть сколько придумать различных комбинаций, если «получатель» и «отправитель» согласуют прием и передачу. Здесь я привел просто самые популярные способы передачи цифрового сигнала. То есть все эти способы и есть ПРОТОКОЛЫ. И их, как я уже сказал, можно напридумывать очень много.

Скорость обмена данными

Представьте себе картину… Студенты, идет лекция… Преподаватель диктует лекцию, а студенты ее записывают

Но если преподаватель очень быстро диктует лекцию и в придачу эта лекция по физике или матанализу, то в результате получаем:

Читайте также:  Перечислите основные способы изготовления многослойных сосудов высокого давления

Почему же так произошло?

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

Данная проблема в разных стандартах последовательной передачи данных решается по-разному:

  • предварительная договоренность о скорости передачи данных (договориться с преподавателем, чтобы диктовал лекцию медленнее или чуть быстрее);
  • перед передачей информации «Отправитель» передает некую служебную информацию, используя которую «Получатель» подстраивается под «Отправителя» ( Преподаватель: «Кто не запишет эту лекцию полностью, тот не получит зачет»)

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

Управление потоком

Также возможна ситуация, когда «Получатель»(студент) не готов принимать передаваемые «Отправителем»(преподавателем) данные по какой-либо причине: занятость, неисправность и др.

Решается эта проблема различными методами:

1) На уровне протоколов. Например, в протоколе обмена оговорено: после передачи «Отправителем» служебного сигнала «начало передачи данных» в течение определенного времени «Получатель» обязан подтвердить принятие этого сигнала путем передачи специального служебного сигнала «готовность к приему».

Данный способ называют «программным управлением потоком» — «Soft»

2) На физическом уровне — используются дополнительные каналы связи, по которым «Отправитель» ДО передачи информации запрашивает у «Получателя» о его готовности к приему). Такой способ называют «аппаратным управлением потоком» — «Hard»;

Оба метода очень распространены. Иногда они используются одновременно: и на физическом уровне, и на уровне протокола обмена.

При передаче информации важно засинхронизировать работу передатчика и приемника. Способ установки режима связи между устройствами называют «синхронизацией». Только в этом случае «Получатель» может правильно (достоверно) принять переданное «Отправителем» сообщение.

Режимы связи

Симплексная связь

В этом случае Получатель может только принимать сигналы от отправителя и никак не может на него повлиять. Это в основном телевидение или радио. Мы можем их только или смотреть или слушать.

Полудуплексная связь

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

— Первый, первый. Я второй. Как слышно?

— Слышу вас нормально, отбой!

Сигнал может посылать только отправитель, в этом случае получатель его принимает. Либо сигнал может отправлять получатель, а в этом случае отправитель его получает. То есть и отправитель и получатель имеют равные права на доступ к каналу (линии связи). Если они сразу оба будут передавать сигнал в линию, то, как я уже сказал, ничего из этого не получится.

Читайте также:  Неморфологические способы словообразования русском языке

Дуплексная связь

В этом режиме и прием и передача сигнала могут вестись сразу в двух направлениях одновременно. Яркий тому пример — разговор по мобильному или домашнему телефону, или разговор в Skype.

Источник

Основы надежной передачи данных

Тем, кто стремится разобраться в сетях и протоколах, посвящается.

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

Протокол транспортного уровня

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

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

Это делается разбиением (при необходимости) сообщений прикладного уровня на фрагменты и добавлением к каждому из них заголовка транспортного уровня.

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

Принципы надежной передачи данных

Надежная передача данных по совершенно надежному каналу

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

Надежная передача данных по каналу с возможными ошибками

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

В таком случае применяются механизмы:

  • обнаружения ошибки;
  • обратной связи;
  • повторной передачи.

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

Надежная передача данных по ненадежному каналу, допускающему искажение и потерю пакетов

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

  • определения факта потери пакетов;
  • повторной доставки потерянных пакетов принимающей стороне.

Дополнительно, кроме потери пакета, необходимо предусмотреть возможность потери квитанции или, если ничего не потеряно, ее доставки со значительной задержкой. Во всех случаях производится одно и то же: повторная передача пакета. Для контролирования времени в данном механизме используется таймер отсчета, который позволяет определить окончание интервала ожидания. Так в пакете net параметр TCPKeepAlive установлен на 15 секунд по умолчанию:

Читайте также:  Как это вычислить наиболее рациональным способом 7 класс

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

Итак, мы ознакомились с ключевыми понятиями протоколов надежной передачи данных:

  • контрольными суммами;
  • порядковыми номерами пакетов;
  • таймерами;
  • положительными и отрицательными квитанциями.

Но и это не все!

Протокол надежной передачи данных с конвейеризацией

В том варианте, который мы уже рассмотрели, протокол надежной доставки очень неэфективен. Он начинает «тормозить» передачу, обеспечиваемую каналом связи, при увеличении RTT . Для повышения его эффективности, лучшей утилизации пропускной способности канала связи применяют конвейеризацию.

Применение конвейеризации приводит к:

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

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

  • возвращение на N пакетов назад;
  • выборочное повторение.

Возвращение на N пакетов назад — протокол скользящего окна

Отправитель должен поддерживать три типа событий:

  • вызов протоколом более высокого уровня. Когда «сверху» вызывается функция отправки данных, передающая сторона сначала проверяет степень заполнения окна (то есть наличие N посланных сообщений, ожидающих получения квитанций). Если окно оказывается незаполненным, новый пакет формируется и передается, а значения переменных обновляются. В противном случае передающая сторона возвращает данные верхнему уровню, и это является неявным указанием, что окно заполнено. Обычно верхний уровень предпринимает повторную попытку передачи данных через некоторое время. В реальном приложении отправитель, скорее всего, либо буферизовал бы данные (вместо немедленной отсылки), либо имел механизм синхронизации (например, семафор или флаг), который позволял бы вышестоящему уровню вызывать функцию отправки данных только при незаполненном окне.
  • получение подтверждения. В протоколе для пакета с порядковым номером N выдается общая квитанция, указывающая на то, что все пакеты с порядковыми номерами, предшествующими N, успешно приняты.
  • истечение интервала ожидания. Для определения фактов потерь и задержек пакетов и квитанций протокол использует таймер. Если интервал ожидания истекает, передающая сторона повторно отправляет все посланные неподтвержденные пакеты.

Выборочное повторение

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

Пример

Лучшие теоритические практики собраны в практической реализации TCP. А если кто-то знает, как лучше — welcome.

Источник

Оцените статью
Разные способы