Протоколы работающие на канальном уровне. Теория построения сетей

20.03.2019

Глава 2 Канальный уровень

Введение

Из рисунка 1.4 видно, что основная задача канального уровня в семействе протоколов TCP/IP - посылать и принимать (1) IP датаграммы для IP модуля, (2) ARP запросы и отклики для ARP модуля, и (3) RARP запросы и отклики для RARP модуля. TCP/IP поддерживает различные канальные уровни, в зависимости от того какой тип сетевого аппаратного обеспечения используется: Ethernet, Token ring, FDDI (Fiber Distributed Data Interface), последовательные линии RS-232, и так далее.

В этой главе мы подробно рассмотрим канальный уровень Ethernet, два специализированных канальных уровня для последовательных интерфейсов (SLIP и PPP) и драйвер loopback, который присутствует практически во всех реализациях. Ethernet и SLIP это канальные уровни, используемые для большинства примеров в данной книге. Также мы рассмотрим максимальный блок передачи (MTU - Maximum Transmission Unit), который является характеристикой канального уровня и к которой мы обращаемся много раз в этой главе и в следующих. Также мы покажем некоторые расчеты, с помощью которых можно выбрать MTU для последовательной линии.

Ethernet и IEEE 802 инкапсуляция

Термин Ethernet обычно означает стандарт, опубликованный в 1982 году компаниями Digital Equipment Corp., Intel Corp., и Xerox Corp. В настоящее время это основная технология применяемая в локальных сетях использующих TCP/IP. В Ethernet используется метод доступа, называемый CSMA/CD, что обозначает наличие несущей (Carrier Sense), множественный доступ (Multiple Access) с определением коллизий (Collision Detection). Обмен осуществляется со скоростью 10 Мбит/сек, с использованием 48-битных адресов.

Несколько лет спустя Комитет 802 Института инженеров по электротехнике и радиоэлектронике ( IEEE - Institute of Electrical and Electronics Engineers) опубликовал отличающийся набор стандартов. 802.3 описывает полный набор сетей CSMA/CD, 802.4 описывает сети с передачей маркера и 802.5 описывает сети Token ring. Общим для всех них является стандарт 802.2, который определяет управление логическим каналом ( LLC - Logical link control) и который является общим для большинства сетей 802. К сожалению, комбинация 802.2 и 802.3 определяет форматы фрейма отличные от Ethernet ( описывает все детали стандартов IEEE 802).

В мире TCP/IP инкапсуляция IP датаграмм определена в RFC 894 для сетей Ethernet и в RFC 1042 для сетей IEEE 802. В Host Requirements RFC к каждому компьютеру, подключенному к Internet через кабель Ethernet 10 Мбит/сек, предъявляются следующие требования:

  1. Компьютер должен иметь возможность посылать и получать пакеты, инкапсулированные с использованием RFC 894 (Ethernet).
  2. У компьютера должна быть возможность получать пакеты RFC 1042 (IEEE 802), перемешанные с пакетами RFC 894.
  3. Компьютер должен иметь возможность посылать пакеты с использованием инкапсуляции RFC 1042. Если компьютер может посылать оба типа пакетов, то тип пакета должен быть конфигурируемым, а конфигурация по умолчанию должна быть настроена на пакеты RFC 894.

Наиболее широко используется инкапсуляция RFC 894. На рисунке 2.1 показаны два различных метода инкапсуляции. Цифры под каждым квадратиком на рисунке это размер в байтах.

В обоих форматах фрейма используется 48-битовый (6-байтовый) формат представления адресов источника и назначения (802.3 позволяет использование 16-битных адресов, однако обычно используются 48-битные). Это как раз то, что мы называем по тексту аппаратными адресами (hardware addresses). Протоколы ARP и RARP (см. главу 4 и главу 5) устанавливают соответствие между 32-битными IP адресами и 48-битными аппаратными адресами.

Следующие 2 байта в этих форматах фрейма различаются. Поле длины (length) 802 содержит количество следующих за ним байтов, однако не содержит в конце контрольной суммы. Поле тип (type) в Ethernet определяет тип данных, которые следуют за ним. Во фрейме 802 то же поле типа (type) появляется позже в заголовке протокола доступа к подсети (SNAP - Sub-Network Access Protocol). К счастью, величины, находящиеся в поле длины (length) 802, никогда не совпадают с величинами, находящимися в поле типа (type) Ethernet, поэтому эти два формата фрейма легко различимы.

Во фрейме Ethernet данные следуют сразу после поля тип (type), тогда как во фрейме 802 за ним следуют 3 байта LLC 802.2 и 5 байт SNAP 802.2. Поля DSAP (точка доступа к сервису назначения - Destination Service Access Point) и SSAP (точка доступа к сервису источника - Source Service Access Point) оба установлены в 0xAA. Поле ctrl установлено в 3. Следующие 3 байта, org code установлены в 0. Затем идет 2-байтовое поле тип (type), такое же, как мы видели в формате фрейма Ethernet (дополнительные значения, которые могут появиться в поле типа, описаны в RFC 1340 ).

Поле контрольной суммы ( CRC) определяет ошибки, возникшие при транспортировке фрейма (также оно иногда называется FCS или последовательность контроля фрейма - frame check sequence).

Минимальный размер фреймов 802.3 и Ethernet требует, чтобы размер данных был хотя бы 38 байт для 802.3 или 46 байт для Ethernet. Чтобы удовлетворить этому требованию, иногда вставляются байты заполнения, для того чтобы фрейм был соответствующей длины.

Мы еще столкнемся с минимальным размером, когда будем рассматривать движение пакетов по кабелям. Также мы еще не раз обратимся к инкапсуляции Ethernet, потому что это, пожалуй, самая широко распространенная форма инкапсуляции.

Рисунок 2.1 Инкапсуляция IEEE 802.2/802.3 (RFC 1042) и инкапсуляция Ethernet (RFC 894).

Инкапсуляция завершителей

На рисунке 2.5 приведен список некоторых типичных значений MTU, взятых из RFC 1191 . Здесь приведены MTU для каналов точка-точка (таких как SLIP или PPP), однако они не являются физической характеристикой среды передачи. Это логическое ограничение, при соблюдении которого обеспечивается адекватное время отклика при диалоговом использовании. В разделе главы 2 мы рассмотрим, откуда берется это ограничение.

В разделе "Команда netstat" главы 3 мы воспользуемся командой netstat, чтобы определить MTU для определенного интерфейса.

Network

MTU (байты)

Hyperchannel
16 Мбит/сек Token ring (IBM)
4 Мбит/сек Token ring (IEEE 802.5)
FDDI
Ethernet
IEEE 802.3/802.2
X.25
Точка-точка (с маленькой задержкой)

Рисунок 2.5 Типичные значения максимальных блоков передачи (MTU).

Транспортный MTU

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

Транспортный MTU между любыми двумя хостами может быть не постоянным. MTU зависит от загруженности канала на настоящий момент. Также он зависит от маршрута. Маршрут может быть несимметричным (маршрут от A до B может быть совсем не тем, что маршрут от B к A), поэтому MTU может быть неодинаков для этих двух направлений.

RFC 1191 описывает механизм определения транспортного MTU (path MTU discovery mechanism). Мы рассмотрим как функционирует этот механизм после того, как опишем фрагментацию ICMP и IP. В разделе "ICMP ошибки о недоступности" главы 11 мы подробно рассмотрим ошибку недоступности ICMP, которая используется в этом механизме, а в разделе "Определение транспортного MTU с использованием Traceroute" главы 11 мы покажем версию программы traceroute, которая использует механизм определения транспортного MTU до пункта назначения. В разделах "Определение транспортного MTU при использовании UDP" главы 11 и "Определение транспортного MTU" главы 24 показано, как функционируют UDP и TCP, когда реализация поддерживает определение MTU.

Вычисление загруженности последовательной линии

Если скорость в линии составляет 9600 бит/сек, при этом 1 байт составляет 8 бит плюс 1 старт-бит и 1 стоп-бит, скорость линии будет 960 байт/сек. Передача пакета размером 1024 байта с этой скоростью займет 1066 мс. Если мы используем SLIP канал для диалогового приложения и одновременно с ним работает такое приложение как FTP, которое посылает или принимает пакеты по 1024 байт, мы должны ждать, так как среднее время задержки нашего интерактивного пакета составит 533 мс.

Это означает, что наш диалоговый пакет будет послан по каналу перед любым другим "большим" пакетом. Большинство SLIP приложений предоставляют разделение пакетов по типу сервиса, отправляя диалоговый трафик перед трафиком передачи данных. Диалоговый трафик это, как правило, Telnet, Rlogin и управляющая часть (пользовательские команды, но не данные) FTP.

Естественно, что такое разделение по сервисам несовершенно. Оно не оказывает никакого воздействия на неинтерактивный трафик, который уже поставлен в очередь на передачу (например, последовательным драйвером). Новые модели модемов, которые имеют большие буферы и позволяют сбуферизировать неинтерактивный трафик в буфере модема, что также сказывается на задержке диалогового трафика.

Ожидание в 533 мс неприемлемо для диалогового ответа. С точки зрения человеческого фактора мы знаем, что неприемлемой является задержка дольше чем 100-200 мс [ Jacobson 1990a]. Под задержкой подразумевается время между отправкой пакета и возвращением отклика (как правило, эхо символа).

Уменьшение MTU в канале SLIP до 256 означает, что максимальное время, в течение которого канал может быть занят одним фреймом, составляет 266 мс, и половина от этого (наше среднее время ожидания) составляет 133 мс. Это лучше, однако до сих пор не идеально. Причина, по которой мы выбрали это значение (как сравниваются 64 и 128), заключается в том, чтобы обеспечить лучшее использование канала для передачи данных (как, например, при передаче большого файла). В случае CSLIP фрейма размером 261 байт с заголовком размером в 5 байт (256 байт данных), 98,1% линии используются для передачи данных и 1,9% на заголовки. Уменьшение MTU меньше чем 256 уменьшает максимальное значение пропускной способности линии, которую мы можем получить при передаче данных.

Значение MTU равное 296 для канала точка-точка (рисунок 2.5), подразумевает 256 байт данных и 40 байт TCP и IP заголовков. Так как MTU это величина, о которой IP узнает от канального уровня, это значение должно включать в себя стандартные заголовки TCP и IP. Именно таким образом IP принимает решение о фрагментации. IP ничего не знает о сжатии заголовков, которое осуществляются CSLIP.

Наш расчет средней задержки (половина того времени, которое требуется на передачу фрейма максимального размера) имеет отношение только к каналу SLIP (или каналу PPP), который используется для передачи интерактивного трафика и трафика данных. Когда идет обмен только интерактивным трафиком, время передачи одного байта данных в каждом направлении (в случае сжатого 5-байтового заголовка) составляет примерно 12,5 мс, при скорости 9600 бит/сек. Это хорошо укладывается в диапазон 100-200 мс, о котором мы упоминали ранее. Также заметьте, что сжатие заголовков с 40 до 5 байт уменьшает время задержки для одного байта с 85 до 12,5 мс.

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

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

Краткие выводы

В этой главе рассматривался самый нижний уровень из семейства протоколов Internet, канальный уровень. Мы рассмотрели различие между Ethernet и IEEE 802.2/802.3 инкапсуляциями, и инкапсуляцию, которая используется в SLIP и PPP. Так как оба SLIP и PPP часто используются на медленных каналах, они предоставляют методы, для сжатия общих полей (которые практически всегда неизменны). При этом улучшается время отклика.

Интерфейс loopback существует в большинстве разработок. Доступ к этому интерфейсу может быть получен через специальный адрес, обычно 127.0.0.1, или путем посылки IP датаграмм на один из собственных IP адресов хоста. Данные, отправленные в loopback интерфейс, полностью обрабатываются транспортным уровнем и IP, когда они проходят по петле по стеку протоколов.

Мы описали важную характеристику большинства канальных уровней, MTU и соответствующую концепцию транспортного MTU. Используя стандартный MTU для последовательных линий, мы вычислили временную задержку, которая существует в каналах SLIP и CSLIP.

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

Упражнения

Если Ваша система поддерживает команду netstat(1) (см. главу 3, раздел "Команда netstat"), используйте ее, чтобы определить интерфейсы в Вашей системе и их MTU.

5. Протоколы канального уровня

    Функции КУ:

  • Формирование кадра
  • Контроль ошибок и повышение достоверности
  • Обеспечение кодонезависимой передачи
  • Восстановление исходной последовательности блоков на приемной стороне
  • Управление потоком данных на уровне звена
  • Устранение последствий потерь или дублирования кадров

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

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

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

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

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

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

      асинхронный/синхронный;

      символьно-ориентированный/бит-ориентированный;

      с предварительным установлением соединения/дейтаграммный;

      с обнаружением искаженных данных/без обнаружения;

      с обнаружением потерянных данных/без обнаружения;

      с восстановлением искаженных и потерянных данных/без восстановления;

      с поддержкой динамической компрессии данных/без поддержки.

    Многие из этих свойств характерны не только для протоколов канального уровня, но и для протоколов более высоких уровней.

    5.1. Асинхронные протоколы


    Асинхронные протоколы представляют собой наиболее старый способ связи. Эти протоколы оперируют не с кадрами, а с отдельными символами, которые представлены байтами со старт-стоповыми символами. Асинхронные протоколы ведут свое происхождение от тех времен, когда два человека связывались с помощью телетайпов по каналу «точка-точка». С развитием техники асинхронные протоколы стали применяться для связи телетайпов, разного рода клавиатур и дисплеев с вычислительными машинами. Единицей передаваемых данных был не кадр данных, а отдельный символ. Некоторые символы имели управляющий характер, например символ предписывал телетайпу или дисплею выполнить возврат каретки на начало строки. В этих протоколах существуют управляющие последовательности, обычно начинающиеся с символа . Эти последовательности вызывали на управляемом устройстве достаточно сложные действия - например, загрузку нового шрифта на принтер.

    В асинхронных протоколах применяются стандартные наборы символов, чаще всего ASCII или EBCDIC. Так как первые 32 или 27 кодов в этих наборах являются специальными кодами, которые не отображаются на дисплее или принтере, то они использовались асинхронными протоколами для управления режимом обмена данными. В самих пользовательских данных, которые представляли собой буквы, цифры, а также такие знаки, как @, %, $ и т. п., специальные символы никогда не встречались, так что проблемы их отделения от пользовательских данных не существовало.

    Постепенно асинхронные протоколы усложнялись и стали наряду с отдельными символами использовать целые блоки данных, то есть кадры. Например, протокол XModem.

    5.2. Синхронные символьно-ориентированные и бит-ориентированные протоколы


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

    Рис. 5.1. Кадры синхронных протоколов

    Так как байты в этих протоколах не отделяются друг от друга служебными сигналами, то одной из первых задач приемника является распознавание границы байт. Затем приемник должен найти начало и конец кадра, а также определить границы каждого поля кадра - адреса назначения, адреса источника, других служебных полей заголовка, поля данных и контрольной суммы, если она имеется.

    Большинство протоколов допускает использование в кадре поля данных переменной длины. Иногда и заголовок может иметь переменную длину. Обычно протоколы определяют максимальное значение, которое может иметь длина поля данных. Эта величина называется максимальной единицей передачи данных (Maximum Transfer Unit, MTU) . В некоторых протоколах задается также минимальное значение, которое может иметь длина поля данных. Например, протокол Ethernet требует, чтобы поле данных содержало по крайней мере 46 байт данных (если приложение хочет отправить меньшее количество байт, то оно обязано дополнить их до 46 байт любыми значениями). Другие протоколы разрешают использовать поле данных нулевой длины, например FDDI.

    Существуют также протоколы с кадрами фиксированной длины, например, в протоколе АТМ кадры фиксированного размера 53 байт, включая служебную информацию. Для таких протоколов необходимо решить только первую часть задачи - распознать начало кадра.

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

    Символьно-ориентированные протоколы используются в основном для передачи блоков отображаемых символов, например текстовых файлов. Так как при синхронной передаче нет стоповых и стартовых битов, для синхронизации символов необходим другой метод.

    Синхронизация достигается за счет того, что передатчик добавляет два или более управляющих символа, называемых символами SYN, перед каждым блоком символов. В коде ASCII символ SYN имеет двоичное значение 0010110, это несимметричное относительно начала символа значение позволяет легко разграничивать отдельные символы SYN при их последовательном приеме. Символы SYN выполняют две функции: во-первых, они обеспечивают приемнику побитную синхронизацию, во-вторых, как только битовая синхронизация достигается, они позволяют приемнику начать распознавание границ символов SYN. После того как приемник начал отделять один символ от другого, можно задавать границы начала кадра с помощью другого специального символа. Обычно в символьных протоколах для этих целей используется символ STX (Start of TeXt, ASCII 0000010). Другой символ отмечает окончание кадра - ЕТХ (End of TeXt, ASCII 0000011).

    Однако такой простой способ выделения начала и конца кадра хорошо работает только в том случае, если внутри кадра нет символов STX и ЕТХ. При подключении к компьютеру алфавитно-цифровых терминалов такая проблема действительно не возникает. Так как синхронные символьно-ориентированные протоколы стали использовать и для связи компьютера с компьютером, а в этом случае данные внутри кадра могут быть любые, если, например, между компьютерами передается программа.

    Наиболее популярным протоколом такого типа был протокол BSC компании IBM. Он работал в двух режимах - непрозрачном, в котором некоторые специальные символы внутри кадра запрещались, и прозрачном, в котором разрешалась передачи внутри кадра любых символов, в том числе и ЕТХ. Прозрачность достигалась за счет того, что перед управляющими символами STX и ЕТХ всегда вставлялся символ DLE (Data Link Escape). Такая процедура называется стаффингом символов (stuff - всякая всячина, заполнитель). А если в поле данных кадра встречалась последовательность DLE ЕТХ, то передатчик удваивал символ DLE, то есть порождал последовательность DLE DLE ЕТХ. Приемник, встретив подряд два символа DLE DLE, всегда удалял первый, но оставшийся DLE уже не рассматривал как начало управляющей последовательности, то есть оставшиеся символы DLE ЕТХ считал просто пользовательскими данными.

    Бит-ориентированные протоколы

    Потребность в паре символов в начале и конце каждого кадра вместе с дополнительными символами DLE означает, что символьно-ориентированная передача не эффективна для передачи двоичных данных, так как приходится в поле данных кадра добавлять достаточно много избыточных данных. Кроме того, формат управляющих символов для разных кодировок различен, например, в коде ASCII символ SYN равен 0010110, а в коде EBCDIC - 00110010. Так что этот метод допустим только с определенным типом кодировки, даже если кадр содержит чисто двоичные данные.

    Чтобы преодолеть эти проблемы, сегодня почти всегда используется более универсальный метод, называемый бит-ориентированной передачей. Этот метод сейчас применяется при передаче как двоичных, так и символьных данных.

    На рис. 5.2 показаны 3 различные схемы бит-ориентированной передачи. Они отличаются способом обозначения начала и конца каждого кадра.

    Рис. 5.2. Способы выделения начало и конца кадра при синхронной передаче

    Первая схема, показанная на рис. 5.2, а, похожа на схему с символами STX и ЕТХ в символьно-ориентированных протоколах. Начало и конец каждого кадра отмечается одной и той же 8-битовой последовательностью - 01111110, называемой флагом. Термин «бит-ориентированный» используется потому, что принимаемый поток бит сканируется приемником на побитовой основе для обнаружения стартового флага, а затем во время приема для обнаружения стопового флага. Поэтому длина кадра в этом случае не обязательно должна быть кратна 8 бит.

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

    Для достижения прозрачности данных в этой схеме необходимо, чтобы флаг не присутствовал в поле данных кадра. Это достигается с помощью приема, известного как вставка 0 бита, - бит-стаффинга . Схема вставки бита работает только во время передачи поля данных кадра. Если эта схема обнаруживает, что подряд передано пять 1, то она автоматически вставляет дополнительный 0 (даже если после этих пяти 1 шел 0). Поэтому последовательность 01111110 никогда не появится в поле данных кадра. Аналогичная схема работает в приемнике и выполняет обратную функцию. Когда после пяти 1 обнаруживается 0, он автоматически удаляется из поля данных кадра. Бит-стаффинг гораздо более экономичен, чем байт-стаффинг, так как вместо лишнего байта вставляется один бит, следовательно, скорость передачи пользовательских данных в этом случае замедляется в меньшей степени.

    Во второй схеме (рис. 5.2, б) для обозначения начала кадра имеется только стартовый флаг, а для определения конца кадра используется поле длины кадра, которое при фиксированных размерах заголовка и концевика чаще всего имеет смысл длины поля данных кадра. Эта схема наиболее применима в локальных сетях. В этих сетях для обозначения факта незанятости среды в исходном состоянии по среде вообще не передается никаких символов. Чтобы все остальные станции вошли в битовую синхронизацию, посылающая станция предваряет содержимое кадра последовательностью бит, известной как преамбула, которая состоит из чередования единиц и нулей 101010... Войдя в битовую синхронизацию, приемник исследует входной поток на побитовой основе, пока не обнаружит байт начала кадра 10101011, который выполняет роль символа STX. За этим байтом следует заголовок кадра, в котором в определенном месте находится поле длины поля данных. Таким образом, в этой схеме приемник просто отсчитывает заданное количество байт, чтобы определить окончание кадра.

    Третья схема (рис. 5.2, в) использует для обозначения начала и конца кадра флаги, которые включают запрещенные для данного кода сигналы (code violations, V). Например, при манчестерском кодировании вместо обязательного изменения полярности сигнала в середине тактового интервала уровень сигнала остается неизменным и низким (запрещенный сигнал J) или неизменным и высоким (запрещенный сигнал К). Начало кадра отмечается последовательностью JKOJKOOO, а конец - последовательностью JK1JK100. Этот способ очень экономичен, так как не требует ни бит-стаффинга, ни поля длины, но его недостаток заключается в зависимости от принятого метода физического кодирования. При использовании избыточных кодов роль сигналов J и К играют запрещенные символы, например, в коде 4В/5В этими символами являются коды 11000 и 10001.

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

    Протоколы с гибким форматом кадра

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

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

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

    5.3. Передача с установлением соединения и без установления соединения


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

    При дейтаграммной передаче кадр посылается в сеть «без предупреждения», и никакой ответственности за его утерю протокол не несет (рис. 5.3, а). Предполагается, что сеть всегда готова принять кадр от конечного узла. Дейтаграммный метод работает быстро, так как никаких предварительных действий перед отправкой данных не выполняется. Однако при таком методе трудно организовать в рамках протокола отслеживание факта доставки кадра узлу назначения. Этот метод не гарантирует доставку пакета.

    Рис. 5.3. Протоколы без установления соединения (а) и с установлением соединения (б)

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

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

    Узел-инициатор соединения может завершить процесс установления соединения отправкой третьего служебного кадра, в котором сообщит, что предложенные параметры ему подходят. На этом логическое соединение считается установленным, и в его рамках можно передавать информационные кадры с пользовательскими данными.

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

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

    Логическое соединение обеспечивает передачу данных как в одном направлении - от инициатора соединения, так и в обоих направлениях.

    Процедура установления соединения может использоваться для достижения различных целей.

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

      Для согласования изменяемых параметров протокола: MTU, различных тайм-аутов и т. п.

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

      В некоторых технологиях процедуру установления логического соединения используют при динамической настройке коммутаторов сети для маршрутизации всех последующих кадров, которые будут проходить через сеть в рамках данного логического соединения. Так работают сети технологий Х.25, frame relay и АТМ.

    Как видно из приведенного списка, при установлении соединения могут преследоваться разные цели, в некоторых случаях - несколько одновременно.

    Рассмотрим использование логического соединения для обнаружения и коррекции ошибок.

    5.4. Обнаружение и коррекция ошибок


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

    Большая часть протоколов канального уровня выполняет только первую задачу - обнаружение ошибок, считая, что корректировать ошибки, то есть повторно передавать данные, содержавшие искаженную информацию, должны протоколы верхних уровней. Так работают такие популярные протоколы локальных сетей, как Ethernet, Token Ring, FDDI и другие. Однако существуют протоколы канального уровня, например LLC2 или LAP-B, которые самостоятельно решают задачу восстановления искаженных или потерянных кадров.

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

    Напротив, если в сети искажения и потери случаются часто, то желательно уже на канальном уровне использовать протокол с коррекцией ошибок, а не оставлять эту работу протоколам верхних уровней. Протоколы верхних уровней, например транспортного или прикладного, работая с большими тайм-аутами, восстановят потерянные данные с большой задержкой. В глобальных сетях первых поколений, например сетях Х.25, которые работали через ненадежные каналы связи, протоколы канального уровня всегда выполняли процедуры восстановления потерянных и искаженных кадров.

    5.5. Методы обнаружения ошибок


    Все методы обнаружения ошибок основаны на передаче в составе кадра данных служебной избыточной информации, по которой можно судить с некоторой степенью вероятности о достоверности принятых данных. Эту служебную информацию принято называть контрольной суммой или (последовательностью контроля кадра - Frame Check Sequence, FCS ).

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

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

    Контроль по паритету представляет собой наиболее простой метод контроля данных. В то же время это наименее мощный алгоритм контроля, так как с его помощью можно обнаружить только одиночные ошибки в проверяемых данных. Метод заключается в суммировании по модулю 2 всех бит контролируемой информации. Например, для данных 100101011 результатом контрольного суммирования будет значение 1. Результат суммирования также представляет собой один бит данных, который пересылается вместе с контролируемой информацией. При искажении при пересылке любого одного бита исходных данных (или контрольного разряда) результат суммирования будет отличаться от принятого контрольного разряда, что говорит об ошибке. Однако двойная ошибка, например 110101010, будет неверно принята за корректные данные. Поэтому контроль по паритету применяется к небольшим порциям данных, как правило, к каждому байту, что дает коэффициент избыточности для этого метода 1/8. Метод редко применяется в вычислительных сетях из-за его большой избыточности и невысоких диагностических способностей.

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

    Циклический избыточный контроль (Cyclic Redundancy Check, CRC) является в настоящее время наиболее популярным методом контроля в вычислительных сетях (и не только в сетях, например, этот метод широко применяется при записи данных на диски и дискеты).

    Метод основан на рассмотрении исходных данных в виде одного многоразрядного двоичного числа. Например, кадр стандарта Ethernet, состоящий из 1024 байт, будет рассматриваться как одно число, состоящее из 8192 бит. В качестве контрольной информации рассматривается остаток от деления этого числа на известный делитель R. Обычно в качестве делителя выбирается семнадцатиразрядное или тридцати трехразрядное число, чтобы остаток от деления имел длину 16 разрядов (2 байт) или 32 разряда (4 байт).

    При получении кадра данных снова вычисляется остаток от деления на тот же делитель R, но при этом к данным кадра добавляется и содержащаяся в нем контрольная сумма. Если остаток от деления на R равен нулю, то делается вывод об отсутствии ошибок в полученном кадре, в противном случае кадр считается искаженным.
    Примечание: Существует несколько модифицированная процедура вычисления остатка, приводящая к получению в случае отсутствия ошибок известного ненулевого остатка, что является более надежным показателем корректности.

    Этот метод обладает более высокой вычислительной сложностью, но его диагностические возможности гораздо выше, чем у методов контроля по паритету. Метод CRC обнаруживает все одиночные ошибки, двойные ошибки и ошибки в нечетном числе бит. Метод обладает также невысокой степенью избыточности. Например, для кадра Ethernet размером в 1024 байт контрольная информация длиной в 4 байт составляет только 0,4 %.

    5.6. Методы восстановления искаженных и потерянных кадров


    Краткое изложение...

    Используются протоколы повторной передачи кадров.
    Цель: надежная доставка кадров по ненадежному каналу.
    Реализован механизм автоматического запроса повторной передачи (ARQ -Automatic Repeat Quest).
    В качестве характеристики протоколов выступают - корректность и эффективность .
    Кадры, не принятые корректно, посылаются повторно.
    Отправитель информируется об ошибках передачи с помощью таймера и подтверждений.
    Протоколы повторной передачи корректны, если они позволяют получателю принять точно одну правильную копию каждого кадра.
    Эффективность протокола повторной передачи равна средней скорости успешной доставки кадров (R эф),
    деленной на скорость передачи в канале.

    Протокол с остановкой и ожиданием (SWP - Stop-and-Wait Protocol). Данный протокол реализует алгоритм РОС-ОЖ.

    Алгоритм работы протокола SWP Эффективность протокола SWP равна

    где t - время передачи кадра;
    p - вероятность того, что подтверждение поступает правильно.

    Протокол повторной передачи с возвращением на N кадров назад. (GBN - Go Back N).


    Протокол повторной передачи с выборочным (селективным) повторением. (SRP - Selective Repeat Protocol).

    Подробное изложение...

    Методы коррекции ошибок в вычислительных сетях основаны на повторной передаче кадра данных в том случае, если кадр теряется и не доходит до адресата или приемник обнаружил в нем искажение информации.

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

    Время этого ожидания ограничено - при отправке каждого кадра передатчик запускает таймер, и, если по его истечении положительная квитанция на получена, кадр считается утерянным. Приемник в случае получения кадра с искаженными данными может отправить отрицательную квитанцию - явное указание на то, что данный кадр нужно передать повторно.

    Существуют два подхода к организации процесса обмена квитанциями: с простоями и с организацией «окна».

    Метод с простоями (Idle Source) требует, чтобы источник, пославший кадр, ожидал получения квитанции (положительной или отрицательной) от приемника и только после этого посылал следующий кадр (или повторял искаженный).

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

    Рис. 5.4. Методы восстановления искаженных и потерянных кадров

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

    В начальный момент, когда еще не послано ни одного кадра, окно определяет диапазон кадров с номерами от 1 до W включительно. Источник начинает передавать кадры и получать в ответ квитанции. Для простоты предположим, что квитанции поступают в той же последовательности, что и кадры, которым они соответствуют. В момент t 1 при получении первой квитанции К 1 окно сдвигается на одну позицию, определяя новый диапазон от 2 до (W+1).

    Процессы отправки кадров и получения квитанций идут достаточно независимо друг от друга. Рассмотрим произвольный момент времени t n , когда источник получил квитанцию на кадр с номером n. Окно сдвинулось вправо и определило диапазон разрешенных к передаче кадров от (n+1) до (W+n). Все множество кадров, выходящих из источника, можно разделить на перечисленные ниже группы (рис. 5.4, б).

      Кадры с номерами от 1 до n уже были отправлены и квитанции на них получены, то есть они находятся за пределами окна слева.

      Кадры, начиная с номера (п+1) и кончая номером (W+n) , находятся в пределах окна и потому могут быть отправлены не дожидаясь прихода какой-либо квитанции. Этот диапазон может быть разделен еще на два поддиапазона:

      • кадры с номерами от (n+1) до m, которые уже отправлены, но квитанции на них еще не получены;

        кадры с номерами от m до (W+n), которые пока не отправлены, хотя запрета на это нет.

      Все кадры с номерами, большими или равными (W+n) , находятся за пределами окна справа и поэтому пока не могут быть отправлены.

    Перемещение окна вдоль последовательности номеров кадров показано на рис. 5.4, в. Здесь t 0 - исходный момент, t 1 и t n - моменты прихода квитанций на первый и n-й кадр соответственно. Каждый раз, когда приходит квитанция, окно сдвигается, но его размер при этом не меняется и остается равным W. Заметим, что хотя в данном примере размер окна в процессе передачи остается постоянным, в реальных протоколах (например, TCP) можно встретить варианты данного алгоритма с изменяющимся размером окна.

    Итак , при отправке кадра с номером n источнику разрешается передать еще W-1 кадров до получения квитанции на кадр n, так что в сеть последним уйдет кадр с номером (W+n). Если же за это время квитанция на кадр n так и не пришла, то процесс передачи приостанавливается, и по истечении некоторого тайм-аута кадр n (или квитанция на него) считается утерянным, и он передается снова.

    Если же поток квитанций поступает более-менее регулярно, в пределах допуска в W кадров, то скорость обмена достигает максимально возможной величины для данного канала и принятого протокола.

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

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

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

    Метод скользящего окна реализован во многих протоколах: LLC2, LAP-B, X.25, TCP, Novell NCP Burst Mode.

    Метод с простоями является частным случаем метода скользящего окна, когда размер окна равен единице.

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

    Выбор тайм-аута зависит не от надежности сети, а от задержек передачи кадров сетью.

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

    5.7. Компрессия данных


    Компрессия (сжатие) данных применяется для сокращения времени их передачи. Так как на компрессию данных передающая сторона тратит дополнительное время, к которому нужно еще прибавить аналогичные затраты времени на декомпрессию этих данных принимающей стороной, то выгоды от сокращения времени на передачу сжатых данных обычно бывают заметны только для низкоскоростных каналов. Этот порог скорости для современной аппаратуры составляет около 64 Кбит/с. Многие программные и аппаратные средства сети способны выполнять динамическую компрессию данных в отличие от статической, когда данные предварительно компрессируются (например, с помощью популярных архиваторов типа WinZip), а уже затем отсылаются в сеть.

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

    Десятичная упаковка . Когда данные состоят только из чисел, значительную экономию можно получить путем уменьшения количества используемых на цифру бит с 7 до 4, используя простое двоичное кодирование десятичных цифр вместо кода ASCII. Просмотр таблицы ASCII показывает, что старшие три бита всех кодов десятичных цифр содержат комбинацию 011. Если все данные в кадре информации состоят из десятичных цифр, то, поместив в заголовок кадра соответствующий управляющий символ, можно существенно сократить длину кадра.

    Относительное кодирование . Альтернативой десятичной упаковке при передаче числовых данных с небольшими отклонениями между последовательными цифрами является передача только этих отклонений вместе с известным опорным значением.

    Символьное подавление . Часто передаваемые данные содержат большое количество повторяющихся байт. Например, при передаче черно-белого изображения черные поверхности будут порождать большое количество нулевых значений, а максимально освещенные участки изображения - большое количество байт, состоящих из всех единиц. Передатчик сканирует последовательность передаваемых байт и, если обнаруживает последовательность из трех или более одинаковых байт, заменяет ее специальной трехбайтовой последовательностью, в которой указывает значение байта, количество его повторений, а также отмечает начало этой последовательности специальным управляющим символом.

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

    При статистическом кодировании коды выбираются таким образом, чтобы при анализе последовательности бит можно было бы однозначно определить соответствие определенной порции бит тому или иному символу или же запрещенной комбинации бит. Если данная последовательность бит представляет собой запрещенную комбинацию, то необходимо к ней добавить еще один бит и повторить анализ. Например, если при неравномерном кодировании для наиболее часто встречающегося символа «Р» выбран код 1, состоящий из одного бита, то значение 0 однобитного кода будет запрещенным. Иначе мы сможем закодировать только два символа. Для другого часто встречающегося символа «О» можно использовать код 01, а код 00 оставить как запрещенный. Тогда для символа «А» можно выбрать код 001, для символа «П» - код 0001 и т. п.

    Вообще, неравномерное кодирование наиболее эффективно, когда неравномерность распределения частот передаваемых символов достаточна велика, как при передаче длинных текстовых строк. Напротив, при передаче двоичных данных, например кодов программ, оно малоэффективно, так как 8-битовые коды при этом распределены почти равномерно.

    Одним из наиболее распространенных алгоритмов, на основе которых строятся неравномерные коды, является алгоритм Хафмана, позволяющий строить коды автоматически, на основании известных частот символов. Существуют адаптивные модификации метода Хафмана, которые позволяют строить дерево кодов «на ходу», по мере поступления данных от источника.

    Многие модели коммуникационного оборудования, такие как модемы, мосты, коммутаторы и маршрутизаторы, поддерживают протоколы динамической компрессии, позволяющие сократить объем передаваемой информации в 4, а иногда и в 8 раз. В таких случаях говорят, что протокол обеспечивает коэффициент сжатия 1:4 или 1:8. Существуют стандартные протоколы компрессии, например V.42bis, a также большое количество нестандартных, фирменных протоколов. Реальный коэффициент компрессии зависит от типа передаваемых данных, так, графические и текстовые данные обычно сжимаются хорошо, а коды программ - хуже.

    5.8. Протоколы передачи файлов


    Протокол передачи файлов представляет собой набор правил передачи файлов. В его задачи входит:

    1. исправление возникающих при передаче ошибок,
    2. передача и прием определенных кодов, служащих для орнизации связи (handshaking),
    3. выполнение некоторых функций передачи файлов и прекращения передачи.





      Среди протоколов передачи файлов между ПК одним из первых появился XModem. Разработанный еще в 1977 году Вардом Христенсеном, он широко использовался в справочных службах, вводился в недорогие связные программы для ПК и фактически стал стандартом для связи между ПК с использовнием модемов.

      Последовательность действий, выполняемых при передаче файла с помощью протокола XModem, показана на рисунке.

      передатчик приемник
      (задание тайм-аута на интервал в 10 с)
      "nak"
      "soh" 01 FE -данные- "xx" =====>
      "ack"
      "soh" 02 FD -данные- "xx" =====> (помеха в линии связи)
      "nak"
      "soh" 02 FD -данные- "xx" =====>
      "ack"
      "soh" 03 FC -данные- "xx"
      (знак ack искажен)
      =====>
      "ack"
      "soh" 03 FC -данные- "xx" =====>
      "ack"
      "eot" =====>
      любой знак кроме "ack"
      "eot" =====>
      "ack"
      Передача завершена

      Передающий ПК начинает передачу файла только после приема от принимающего ПК знака "nak". Принимающий ПК передает этот знак до тех пор, пока не начинается передача файла. Если передано девять знаков "nak", а передача файла не началась, то процесс возобновляется вручную.

      После приема знака "nak" передающий ПК посылает знак начала блока "soh" (start of header), два номера блока (сам номер и его двоичное дополнение по "единицам"), блок данных из 128 байт и контрольную сумму "xx" (блоки нумеруются по модулю 256). Контрольная сумма (1 байт) представляет собой остаток от деления на 255 суммы значений кодов знаков, входящих в блок данных.

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

      Для исключения повторной передачи одного и того же блока из-за потери подтверждающего сообщения в протоколе используется двукратная передача номера. Принимающий ПК контролирует неповторяемость принятого блока, и если блок ошибочно передан повторно, то он сбрасывается. После успешной передачи всех данных передающий ПК посылает знак завершения "eot" (end of transmission), сообщающий об окончании передачи файла.

      Перерыв в передаче блока свыше 1 с считается разрывом связи.

      Преимуществами данного протокола по сравнению с другими являются:

    4. его доступность для разработчиков программных средств;
    5. простота реализации на языках высокого уровня;
    6. малый объем приемного буфера (256 байт);
    7. возможность передачи не только символьных (коды ASCII), но и исполняеиых файлов (с расширением.COM и.EXE). Последнее возможно вследствии того, что конец файла определяется подсчетом переданных байтов и вместо знака файлового маркера (Ctrl-Z) используется специальный сигнал завершения. Эффективность обнаружения ошибок данным протоколом составляет 99,6% - выше, чем при обычной асинхронной проверке четности (95%).

      К основным недостаткам этого протокола можно отнести:

    8. низкое быстродействие;
    9. большая вероятность необнаруженных ошибок;
    10. необходимость задания имени файла при приеме;
    11. относительно большой объем передаваемой служебной информации.

      Последующие модифакации протокола XModem были направлены на устранение этих и некоторых других его недостанков.


      В протоколе XModem-CRC передается два проверочных знака, образующих проверочную комбинацию CRC-16, вместо одного знака арифметической контрольной суммы, используемого в исходном протоколе XModem-CRC и в большинстве коммерческих приложений. Проверка CRC-16 гарантирует обнаружение всех одиночных и двойных ошибок, всех нечетных ошибок, всех пакетов ошибок длиной до 16 знаков; 99,9969% 17-битовых пакетов ошибок и 99,9984% более длинных пакетов ошибок.

      В начале соединения вместо знаков "nak", как в протоколе XModem, приемник передает знаки "c". Если передатчик не поддерживает протокол XModem-CRC, он игнорирует эти знаки. Не получив ответа на передачу трех знаков "c", приемник переходит на работу по протоколу XModem и передает знаки "nak".


      Данный протокол представляет собой модификацию XModem-CRC с блоками длиной 1024 байт. При такой длине блоков значительно снижается влияние задержек в системах с разделением времени, модемах и сетях с коммутацией пакетов. Кроме того, по сравнению с обычным протоколом XModem уменьшается относительная доля заголовка в общем объеме передаваемой информации.

      Для сообщения приемнику об увеличении длины передаваемого блока вместо знака "soh" (01) в его начале ставится знак "stx" (02). Номер блока, передаваемый во втором и третьем байтах, увеличивается на единицу независимо от его длины.

      Передатчик не должен изменять длину блока между 128 и 1024 байт, если не был принят знак "ack" для текущего блока. Игнорирование этого ограничения может привести к необнаружению ошибок.

      При использовании блоков по 1024 байт возможно увеличение длины передаваемого файла до значения, кратного 1024.

      Блоки длиной 1024 байт могут применяться при групповой или одиночной передаче файлов. Для сохранения целостности данных, передаваемых по телефонному каналу, с этим вариантом следует использовать проверку CRC-16.


      Протокол YModem - это протокол XModem-CRC, в котором реализована групповая передача файлов. Его появление было вызвано необходимостью устранения недостатков протокола XModem.

      Все программы, реализующие протокол YModem, должны выполнять следующие функции:

    12. передачу имени и пути файла в блоке 0 в виде строки знаков кода ASCII, завершающейся знаком "нуль";
    13. их использование на приемном конце файла в качестве имени и пути принятого файла, если иная реализация не оговорена специально;
    14. применение проверки CRC-16 при приеме знаков "c", в противном случае - использование 8-битовой контрольной суммы;
    15. прием любой комбинации из 128- и 1024-байтовых блоков внутри каждого принимаего файла; возможность переключения длины блоков в конце файла (файлов) и/или в случае частых повторных передач;
    16. исключение изменения длины неподтвержденного блока на передающем конце канала;
    17. передачу в конце каждого файла знака "eot" до десяти раз, пока не будет принят знак "ack" (часть спецификации протокола XModem);
    18. обозначение конца сеанса связи нулевым (пустым) именем пути.

      Связные программы, в которых не реализованы все перечисленные функции, с протоколом YModem не совместимы.

      Выполнение этих минимальных требований не гарантирует надежной передачи файлов при помехах.

      Расширения протокола XModem и протокол YModem устраняют некоторые недостатки протокола XModem, сохраняя в основном его простоту.

      Как и в случае передачи одного файла, приемник инициирует групповую передачу путем посылки знака "c" (для режма CRC-16).

      Передатчик открывает файл и передает номер 0 блока и последующую информацию.

      Для групповой передачи требуются только имена файлов.

      Для обеспечения совместимости "вверх" все неиспользуемые байты блока 0 должны иметь значение 0.

      Имя файла (возможно с указанием пути) передается как строка кодов ASСII, завершаемая знаком "нуль". Этот формат имени файла используется в функциях, ориентированных на операционную систему MS-DOS, или в функциях fopen библиотеке языка Си. В имя файла не включаются пробелы. Обычно передается только само имя (без префекса справочника). Название привода источника (например, A:, B: и т.д.) не передается. Если в имя файла включен каталог, его название должно ограничиваться знаком "/".

      Обозначение длины файла каждого последующего поля произвольно. Длина файла представлена в блоке как десятичная строка, обозначающая количество байтов в файле. В нее не должны входить знаки CPMEOF (^Z) или другие знаки (garbage characters), используемые для заполнения последнего блока.

      Если передаваемый файл увеличивается во время передачи, параметр "длина файла" должен представлять свое максимально ожидаемое значение или не передаваться вовсе.

      Дата модификации является необязательным параметром, имя файла и его длина могут передаваться без передачи даты модификации.

      Протокол YModem допускает возможность введения других полей заголовка без нарушения совместимости со своими прежними программами. Оставшаяся часть блока устанавливается в 0. Это существенно для сохранения совместимости "вверх".

      Если блок имени файла принят с ошибкой по коду, необходимо запросить повторную передачу. Прием блока с именем файла, успешно открытого для записи, подтверждается знаком "ack". Если файл не может быть открыт для записи, приемник прерывает передачу с помощью знака "can".

      Затем приемник инициирует передачу содержимого файлов в соответствии с протоколом XModem-CRC.

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

      Передача нулевого имени файла может означать, во-первых, что групповая передача завершена, и, во-вторых, что запрошенные у передатчика файлы не могут быть открыты для чтения.

      По умолчанию приемник запрашивает CRC-16.

      Протокол YModem поддерживается большинством связных программ общего пользования.


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

      Вариант g протокола YModem (YModem-g) обеспечивает высокую эффективность передачи в таких условиях. Протокол YModem-g используется приемником, который инициирует групповую передачу путем посылки знака "g" вместо "c". Передатчик, распознавший этот знак, прекращает ожидание обычных подтверждений по каждому переданному блоку и передает последовательные блоки на полной скорости с использованием метода управления потоком, например XON/XOFF.

      Прежде чем передавать файл, передатчик ожидает первоначальных знаков "g", а в конце передачи каждого файла - подтверждающего знака "ack". Такой способ синхронизации позволяет приемнику открывать и закрывать файлы в нужное время.

      При обнаружение ошибки в случае использования протокола YModem-g приемник прерывает передачу, посылая последовательность, состоящую из многих знаков "can".

      Расширение YModem-g протокола YModem позволяет значительно увеличить скорость передачи в каналах с защитой от ошибок (при использовании модемов со встроенным протоколом защиты от ошибок). Это достигается за счет отказа от переспроса принятых с ошибками блоков: при обнаружении ошибки передача файла просто прерывается. Для повышения быстродействия в последующих модификациях протокола XModem (например, в протоколе ZModem) был применен так называемый "оконный" алгоритм, при котором последующие блоки передаются подряд, без ожидания подтверждения правильного приема блока.

      Этот протокол, введенный в большинство связных программ, получил сейчас самое широкое применение. Представляя собой фактически развитие протоколов XModem и YModem, протокол ZModem устраняет их недостатки и, будучи совместимым с ними, имеет ряд преимуществ:

    19. высокое быстродействие благодаря использованию "оконного" алгоритма;
    20. динамическая адаптация к качеству канала связи посредством изменения в широких пределах размера блока;
    21. защита управляющей информации, доступа к передаче и защита от имитации управляющих сигналов;
    22. возможность возобновления прерванной передачи файла с того места, на котором произошло прерывание;
    23. повышенная достоверность передачи благодаря использованию 32-разрядной проверочной комбинации;
    24. возможность оптимального применения как в канале с высокой вероятностью ошибок, так и в каналах, работающих практически без ошибок (в которых уже реализован протокол, исправляющий ошибки).

      Протокол ZModem разрабатывался для следующих областей применения:

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

      Протокол ZModem может быть использован либо самостоятельно, либо в сочетании с защитой от ошибок канального уровня, реализованной протоколами X.25, V.42, MNP, Fastlink и др. В случае сочетания с протоколами канального уровня протокол ZModem обеспечивает обнаружение и исправление ошибок в интерфейсах между средой, в которой исправляется ошибка, и остальной частью канала связи.

      Можно сказать, что протокол ZModem - это результат технического компромисса между рядом противоречивых требований: простотой реализации и использования, обеспечением высокой пропускной способности, сохранением целостности информации и высокой надежностью передачи.

      Протокол позволяет программно инициировать передачу файлов либо передавать команды и/или модификаторы другим программам. Имена файлов вводятся только один раз. При групповых передачах допускается общее задание файлов (например, "*.txt"). Общее требование: сведение к минимуму количества команд, вводимых с клавиатуры.

      Вместе с файлами передается специальный служебный кадр, инициирующий автоматический прием. Если на противоположном конце не поддерживается протокол ZModem, то он может перейти в режим протокола YModem.

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

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

      С самого начала сеанса по протоколу ZModem вся передаваемая информация защищается циклическим кодом с проверочной комбинацией CRC из 16 или 32 битов. Кроме того, в протоколе реализован механизм защиты информации против сообщений типа "троянский конь", имитирующих разрешенные команды или передачу файлов.

      Хотя протокол ZModem имеет широкий набор возможностей, он не предназначен для замены протоколов канального уровня - таких, как, например, протокол X.25.

      Протокол адаптируется к задержкам сети и систем с временным разделением путем непрерывной передачи данных, продолжающейся до тех пор, пока приемник не прервет передатчик запросом на повторную передачу искаженных данных. Фактически протокол ZModem использует отдельный файл как "окно". Такое упрощение управления буфером исключает переполнение "окна", которому подвержены протоколы MEGAlink, Super Kermit и др.

      ZModem разработан в качестве протокола передачи файлов общего назначения компанией Telenet (США). Его описание и исходная программа Unix rz / sz общедоступны. Лицензирование, торговые марки и ограничение копирования на применение этого протокола и исходной программы Unix rz /sz не распространяются.

      Протокол Kermit, реализованный практически во всех связных программах, предназначен в основном для передачи файлов между ЭВМ разных типов, включая большие и мини ЭВМ. Он оптимизирован для работы как при сильных помехах, так и при больших задержках сигнала. В отличие от протоколов XModem и YModem в нем используются пакеты переменной длины с максимальным значением 94 байт. Аналогично протоколу YModem протокол Kermit обеспечивает групповую передачу файлов.

      Наряду со стандартным протоколом Kermit в ряде связных программ реализован более эффективный протокол Super Kermit, предусматривающий для уменьшения задержек при передаче переменное "окно" передачи, в котором может содержаться от 1 до 32 пакетов. На приемном конце канала осуществляется обнаружение ошибок, но повторная передача не запрашивается до тех пор, пока не будут переданы все пакеты "окна". Кроме того, в протоколе реализован простой метод сжатия данных, также позволяющий сократить время передачи. Если на противоположном конце канала поддерживается протокол Kermit, то происходит автоматическое переключение на работу с ним.


      5.9. Протоколы сжатия данных


      Протокол V.42bis.

      Этот протокол обеспечивает коэффициент сжатия 4:1, протокол V.42bis основан на алгоритме Лемпела-Зива-Уэлча (LZW-алгоритм).

      Рассмотрим работу кодера LZW на примере трёхсимвольного алгоритма (а, б, в), а - код 1, б - код 2, в - код 3.

      Символ

      wK

      w

      Выход

      Строка, добавляемая в словарь

      аб

      код "а"=1

      аб - код4

      ба

      код "б"=2

      ба - код5

      аб

      аб

      абв

      код "аб"=4

      абв - код6

      вб

      код "в"=3

      вб - код7

      ба

      ба

      баб

      код "ба"=5

      баб - код8

      ба

      ба

      баб

      баб

      баба

      код " баб " =8

      баба - код9

      аа

      код "а"=1

      аа - код10

      аа

      аа

      ааа

      код "аа"=10

      ааа - код11

      аа

      аа

      ааа

      ааа

      аааа

      код "ааа"=11

      аааа - код12

      Протокол V.44.

      Коэффициент сжатия 6:1. Эффективен при работе с гипертекстом. В основе протокола лежит модификация алгоритма Лемпела-Зива.

      Выводы

        Основной задачей протоколов канального уровня является доставка кадра узлу назначения в сети определенной технологии и достаточно простой топологии.

        Асинхронные протоколы разрабатывались для обмена данными между низкоскоростными старт-стопными устройствами: телетайпами, алфавитно-цифровыми терминалами и т. п. В этих протоколах для управления обменом данными используются не кадры, а отдельные символы из нижней части кодовых таблиц ASCII или EBCDIC. Пользовательские данные могут оформляться в кадры, но байты в таких кадрах всегда отделяются друг от друга стартовыми и стоповыми сигналами.

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

        В зависимости от способа выделения начала и конца кадра синхронные протоколы делятся на символьно-ориентированные и бит-ориентированные. В первых для этой цели используются символы кодов ASCII или EBCDIC, а в последних - специальный набор бит, называемый флагом. Бит-ориентированные протоколы более рационально расходуют поле данных кадра, так как для исключения из него значения, совпадающего с флагом, добавляют к нему только один дополнительный бит, а символьно-ориентированные протоколы добавляют целый символ.

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

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

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

        Для восстановления кадров используется метод повторной передачи на основе квитанций. Этот метод работает по алгоритму с простоями источника, а также по алгоритму скользящего окна.

        Для повышения полезной скорости передачи данных в сетях применяется динамическая компрессия данных на основе различных алгоритмов. Коэффициент сжатия зависит от типа данных и применяемого алгоритма и может колебаться в пределах от 1:2 до 1:8.

На физическом уровне просто пересылаются биты. При этом не учитывается, что в тех сетях, в которых линии связи используются (разделяются) попеременно несколькими парами взаимодействующих компьютеров, физическая среда передачи может быть занята. Поэтому одной из задач канального уровня (Data Link layer) является проверка доступности среды передачи. Другая задача канального уровня - реализация механизмов обнаружения и коррекции ошибок. Для этого на канальном уровне биты группируются в наборы, называемые кадрами (frames ). Канальный уровень обеспечивает корректность передачи каждого кадра помещая специальную последовательность бит в начало и конец каждого кадра, для его выделения, а также вычисляет контрольную сумму , обрабатывая все байты кадра определенным способом, и добавляет контрольную сумму к кадру. Когда кадр приходит по сети, получатель снова вычисляет контрольную сумму полученных данных и сравнивает результат с контрольной суммой из кадра. Если они совпадают, кадр считается правильным и принимается. Если же контрольные суммы не совпадают, то фиксируется ошибка. Канальный уровень может не только обнаруживать ошибки, но и исправлять их за счет повторной передачи поврежденных кадров. Необходимо отметить, что функция исправления ошибок для канального уровня не является обязательной, поэтому в некоторых протоколах этого уровня она отсутствует, например в Ethernet и frame relay.

Функции канального уровня

Надежная доставка пакета:

  1. Между двумя соседними станциями в сети с произвольной топологией.
  2. Между любыми станциями в сети с типовой топологией:
    1. проверка доступности разделяемой среды;
    2. выделение кадров из потока данных, поступающих по сети; формирование кадров при отправке данных;
    3. подсчет и проверка контрольной суммы.

Реализуются программно-аппаратно.

В протоколах канального уровня , используемых в локальных сетях, заложена определенная структура связей между компьютерами и способы их адресации. Хотя канальный уровень и обеспечивает доставку кадра между любыми двумя узлами локальной сети, он это делает только в сети с определенной топологией связей, именно той топологией, для которой он был разработан. К таким типовым топологиям, поддерживаемым протоколами канального уровня локальных сетей, относятся «общая шина», «кольцо» и «звезда», а также структуры, полученные из них с помощью мостов и коммутаторов. Примерами протоколов канального уровня являются протоколы Ethernet, Token Ring, FDDI, 100VG-AnyLAN.

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

В глобальных сетях, которые редко обладают регулярной топологией, канальный уровень часто обеспечивает обмен сообщениями только между двумя соседними компьютерами, соединенными индивидуальной линией связи. Примерами протоколов «точка-точка» (как часто называют такие протоколы) могут служить широко распространенные протоколы PPP и LAP-B. В таких случаях для доставки сообщений между конечными узлами через всю сеть используются средства сетевого уровня. Именно так организованы сети X.25. Иногда в глобальных сетях функции канального уровня в чистом виде выделить трудно, так как в одном и том же протоколе они объединяются с функциями сетевого уровня. Примерами такого подхода могут служить протоколы технологий ATM и frame relay.

В целом канальный уровень представляет собой весьма мощный набор функций по пересылке сообщений между узлами сети. В некоторых случаях протоколы канального уровня оказываются самодостаточными транспортными средствами, и тогда поверх них могут работать непосредственно протоколы прикладного уровня или приложения, без привлечения средств сетевого и транспортного уровней. Например, существует реализация протокола управления сетью SNMP непосредственно поверх Ethernet, хотя стандартно этот протокол работает поверх сетевого протокола IP и транспортного протокола UDP. Естественно, что применение такой реализации будет ограниченным - она не подходит для составных сетей разных технологий, например Ethernet и X.25, и даже для такой сети, в которой во всех сегментах применяется Ethernet, но между сегментами существуют петлевидные связи. А вот в двухсегментной сети Ethernet, объединенной мостом, реализация SNMP над канальным уровнем будет вполне работоспособна.

Тем не менее, для обеспечения качественной транспортировки сообщений в сетях любых топологий и технологий функций канального уровня оказывается недостаточно, поэтому в модели OSI решение этой задачи возлагается на два следующих уровня - сетевой и транспортный.

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

Другой областью действия протоколов канального уровня являются связи типа «точка-точка» глобальных сетей, когда протокол канального уровня ответственен за доставку кадра непосредственному соседу. Адрес в этом случае не имеет принципиального значения, а на первый план выходит способность протокола восстанавливать искаженные и утерянные кадры, так как плохое качество территориальных каналов, особенно коммутируемых телефонных, часто требует выполнения подобных действий. Если же перечисленные выше условия не соблюдаются, например связи между сегментами Ethernet имеют петлевидную структуру, либо объединяемые сети используют различные способы адресации, как в сетях Ethernet и X.25, то протокол канального уровня не может в одиночку справиться с задачей передачи кадра между узлами и требует помощи протокола сетевого уровня.

Проверка доступности среды передачи.

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

Управление параметрами связи (скорость, повтор)

В протоколах канального уровня, используемых в локальных сетях, заложена структура связей и способы их адресации только для сети с определенной топологией. К топологиям относятся шина, кольцо и звезда. Примерами протоколов канального уровня являются протоколы Ethernet, Token Ring, FDDI, 100VG-AnyLAN.

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

Протоколы: IEEE 802.1 (описываются устройства (коммутаторы, мосты))

Делится на LLC – 802.2 и на МАС (CSMA /CD) – 802.3,

МАС (Token Ring) – 802.5,

МАС (Ethernet) – 802.4

Структура кадра Ethernet: | 1 | 2 | 3 | 4 | 5 | 6 |

1) Приамбула (начало передачи кадра – 8 байт)

2) Адрес получателя (2-6 байт МАС-адрес получателя, 2 байта для кольца)

3) Адрес отправителя (2- 6)

4) Длина поля данных (2 байта)

5) Поле данных (64 – 1500 байт)

6) Контрольная сумма

Протокол LLC: 1- LLC 802.2

| DSAP1байт | SSAP1байт | Control 1 байт | Данные |

2- LLC 802.2 SNAP

| DSAP 2байта | SSAP 2байта | Control 3 байта | Тип семейства протокола3байта | Тип протокола 2 байта | Данные |

DSAP –указывает протокол получателя

SSAP – указыв. протокол отправителя

Control – т для управления соединением

Тип семейства – (IPX /SPX, X.25, ATM, TCP/IP=0)

Тип протокола - 0×0800 – IP, 0×0806 - ARP

МАС –адрес (48 бит): определяется 3 типа: индивидуальный, широковещательный, групповой

|0|0|22бита|24бита|

00 –ндивидуальный адрес, 11 – широковещательный, 10 – групповой.

22 бита – код организации производителя

24 бита – код сетевого адаптера


23. КАНАЛЫ Т1/Е1.

Каналы Т1/Е1 Выделенные каналы Т1/Е1 стали в последние годы очень популярны в качестве средства для подключения корпоративных сетей и серверов к сети Internet. Это объясняется высокими скоростями данных каналов: 1,544 Мбит/с в канале Т1 и 2,048 Мбит/с – для El.

Линии Т1 – это дуплексные цифровые каналы, которые были первоначально разработаны для передачи вызовов между телефонными станциями. Физически связь осуществляется по двум парам телефонного витого провода (одна пара- в одну сторону, вторая – в обратную).

AMI В канале применяется биполярное кодирование (bipolar encoding). .Этот метод имеет и другое название –альтернативное инвертирование логических единиц (AMI). Отсутствие напряжения в линии соответствует нулю, а для представления единиц используются по очереди положительные и отрицательные импульсы. Пример такого кодирования в сравнении со стандартным представлением (в виде кода NRZ)

Синхронизаци я.

Длинная последовательность логических нулей может привести к потере синхронизации у приемника. Для борьбы с этим применяется методбиполярной замены 8 нулей – (B8ZS).

Каждая обнаруженная передатчиком группа из 8 нулей заменяется им на некоторое «бессмысленное слово». При приеме из канала выполняется обратное преобразование. Для выделения этой заменяющей комбинации (как признак для начала ее распознавания) используется последовательная передач, без инвертирования двух положительных единиц (что недопустимо в обычной последовательности кода AMI). На рисунке 5.2 представлен пример такой заменяющей комбинации.

Кадровая синхронизация

Канал Е1 состоит из 24 отдельных каналов по 64 Кбит/с в каждом. Применяется разбиение передаваемой информации на кадры. Наибольшее распространение получили методы D4 и ESF (кроме того в линиях ЕЗ часто используется алгоритм Ml3).

Алгоритм D4

Кадр содержит 1 бит синхронизации и 24 байта данных (см. рис.5.3). Таким образом общая длина кадра составляет 193 бита.

Группа из 12 кадров снабжается специальной 12-битовой маской (см. рис), которую называют сигналом выравнивания кадра (frame alignment signal). Группа из 12 кадров называется суперкадром.

Алгоритм ESF Алгоритм формирования суперкадров ESF (Extended SuperFrame) отличается тем, что размер суперкадра был увеличен с 12 до 24 кадров. В таком суперкадре кз 24 служебных бит только 6 используются для целей синхронизации. Из оставшихся 18 бит - 6 служат для коррекции ошибок и 12 -для текущего контроля за состоянием линии.

Алгоритм М13 Предназначен для каналов ТЗ (44,476 Мбит/с). Кадр содержит 4760 бит. Из них 56 бит используются для выравнивания кадра (кадровой синхронизации), коррекции ошибок и отслеживания состояния линии.

Импульсно-кодовая модуляция (ИКМ)

Каналы Т1 первоначально предназначались для передачи телефонных разговоров, но по цифровой линии.

По обычному телефону сигнал передается как аналоговый в диапазоне частот от 300 до 3400 гц. Для перевода аналогового сигнала в цифровую форму применяется импульсно-кодовая модуляция (ИКМ) - Pulse Code Modulation (PCM). Для этой цели вводится блок АЦП, который переводит амплитуду аналогового сигнала в цифровой отсчет из 8 бит. Частота снятия таких отсчетов была выбрана с учетом теоремы Найквиста (Nyquist). В соответствии с этой теоремой для адекватного преобразования сигнала из аналоговой формы в цифровую частота дискретизации должна в 2 раза превышать частоту дискретизируемого сигнала. Применительно к телефонным каналам была выбрана частота 8000 опросов в секунду. Таким образом цифровая линия должна обладать пропускной способностью 8 х 8000 = 64 Кбит/с.

Мультиплексирование В линии Т1 собираются вместе 24 таких цифровых каналов по 64 Кбит/с. В итоге общая пропускная способность составляет 1,544 Мбит/с. Для объединения применяется временное мультиплексирование каналов – Time Division Multiplexing (TDM). Вся доступная полоса частот делится на элементарные временные интервалы по 125 мкс. Устройство монополизирует всю полосу частот на период такого элементарного интервала.

Благодаря мультиплексированию по линии Т1 можно передавать одновременно звуковые сигналы, цифровые данные и видеосигналы. В случае необходимости вся доступная пропускная способность 1,544 Мбит/с может быть монополизирована одним потоком данных.

Структура системы На рисунке показана возможная структура оконечного устройства для работы по линии Т1. Здесь CSU– модуль обслуживания канала, a DSl – это модуль обслуживания данных.

Дробные линии Т1 Пользователь может арендовать только часть канала Т1. При этом ему предоставляется возможность оплатить любое количество (от 1 до 24) канаов DSO (Digital Sygnal 0) по 64 Кбит/с.

Каналы E1 В Европе 1TU– Международный союз по электросвязи – предложил несколько другую классификацию таких цифровых каналов. Основой является капал Е1, содержащий 30 каналов USO (по 64 Кбит/с) и дополнительно 1 канал для синхронизации и 1 канал для передачи служебной информации. Пропускная способность канала Е1 составляет 2,048 Мбит/с.

Среда передачи Для организации каналов типа Т1 могут использоваться различные среды. Например: две пары витых проводников – позволяют организовать канал Т1; в коаксиальном кабеле могут быть организованы 4 канала Т1; сверхвысокочастотный кабель позволяет разместить 8 линий Т1; оптоволоконный кабель может содержать до 24 линий Т1.


Сети ISDN

Цифровые сети интегрального обслуживания ISDN (Integrated Services Digital Network) находят широкое применение в качестве альтернативы подключения посредством каналов Т1/Е1. Разница заключается в основном в способе оплаты. За полный (или часть) канала Т1 взимается фиксированная (достаточно высокая) абонентская плата. В сетях же ISDN оплата взимается только за время подключения.

Технология ISDN позволяет одновременно передавать голосовые и цифровые данные, обеспечивает высокоскоростное подключение к глобальным сетям. Разработана была эта технология для того, чтобы обеспечить интегральные потребности небольшого офиса.

Аналогично каналам Т1 эта технология базируется на использовании цифрового канала 64 Кбит/с. Аналоговые (голосовые) данные предварительно дискретизируются (производится семплирование - sampling) 8000 раз в секунду. Каждый отсчет представляет собой 8 бит информации. То есть используется ИКМ.

В-канал Основным компонентом любой линии ISDN является однонаправленный В-канал с пропускной способностью 64 Кбит/с. По нему могут передаваться оцифрованные аудио- или видеоданные или собственно цифровые данные.

D-канал Используется для передачи служебной информации. Это, например, сигналы установления и разрыва соединения. Вся же полоса В-канала предназначается только для передачи полезной информации.

Имеются две стандартные для ISDN конфигурации каналов: BRI и PRI/

Интерфейс BRI Это логическое объединение двух В-каналов по 64 Кбит/с и одного D-канала с пропускной способностью 16 Кбит/с. BRI (Basic Rate Interface) -I интерфейс передачи с номинальной скоростью.

Интерфейс BRJ является конфигурацией оптимальной для удаленных пользователей и небольших офисов. Общая его пропускная способность- 128 Кбит/с, а D-канал используется только для передачи служебной информации BRI позволяет подключить до 8 устройств (телефонных, цифровых и видео).

Для обмена по D-каналу используется протокол SS7 (Signalling System Number 7).

Интерфейс PRI PRI (Primary Rate Interface) - интерфейс передачи с базовой скоростью. Этот интерфейс соответствует максимальной скорости передачи по линии Т1. Конфигурация PRI состоит из 23 каналов по 64 Кбит/с (В-каналов) и одного D-канала с пропускной способностью 64 Кбит/с. Следовательно пользователь может вести передачу со скоростью 1,472 Мбит/с.

В европейских линиях ISDN конфигурации PRI соответствует 30 В-каналов (т.к. Е1 содержит именно столько каналов передачи полезной информации).

Подключение пользователя На рисунке 5.5 приведена типичная конфигурация аппаратных средств абонентского комплекса ISDN.

Устройство NT1 (Network Terminator 1) используется для подключения абонента к цифровому каналу.

Устройство NT2 (Network Terminator 2) занимает промежуточный уровень между NT1 и любым терминальным оборудованием. Это могут быть маршрутизаторы сетей ISDN и цифровые офисные АТС.

Терминальным устройством первого типа ТЕ1 (Terminal Equipment 1) считается пользовательское оборудование, которое в состоянии подключаться к устройствам типа NT. Это, например, рабочие станции ISDN, факсимильный аппарат, телефоны ISDN.K терминальным устройствам второго типа ТЕ2 (Terminal Equipment 2) относится все оборудование, которое не может непосредственно подключаться к NT2 (аналоговые телефоны, ПК и т.д.), а требует для этого применения специального терминального адаптера ТА (Terminal Adapter).

Аппаратура Проводка делается скрученным медным проводом (витая пара) UTP класса не менее 3 (она обеспечивает передачу со скоростью до ЮМбит/с). Для интерфейса BR1 требуется одна пара UTP, а для интерфейса PRI - 2 пары UTP.

Устройство NT1 достаточно простое, поэтому его часто интегрируют в терминальное оборудование.

Аппаратура ISDN у пользователя может быть встроенной или автономной. Встроенное устройство может быть и комбинированным, т.е. содержать NT1 и несколько терминальных адаптеров ТА. Внешние терминальные адаптеры внешне выглядят аналогично модему, поэтому их часто называют ISDN-модемами(хотя там нет ни модуляции, ни демодуляции). Очень часто используют еще один тип аппаратуры - маршрутизаторы ISDN - Ethernet. Они выполняют и роль моста между каналом и локальной сетью, т.е. это router-bridge.

Н-каналы ITU выпустил стандарты на Н-каналы ISDN. Они включают пять конфигураций, начиная с НО (включает 6 В-каналов - пропускная способность 384 Кбит/с, предназначен для поддержки видеоконференций) и заканчивая каналом Н4 (включает 2112 D-каналов, пропускная способность - 135 Мбит/с, ориентирован на широковещательную передачу видео- и аудиоданных).

Услуги ISDN ISDN-канал может обеспечивать множество дополнительных услуг, например: конференц-связь; пересылка входящих звонков на другой номер телефона; определение номера вызывающего абонента; организация рабочих групп и т. д.


Сети Frame Relay

Сети, использующие протоколы Х.25, оказались надежными, но недостаточно высокоскоростными. В связи сэтим были предложены модификации, ориентированные на очень высокие скорости передачи – это, в частности, сети Frame Relay и AТМ.

Родоначальником технологии Frame Relay – ретрансляции кадров – была в начале 90-х годов американская компания WILTEL, которая имела обширную сеть оптоволоконных линий, проложенных вдоль железных дорог. Технология Frame Relay в отличие от Х.25 позволила обеспечить скорости передачи, совместимые с каналами Т1 (1,5 Мбит/с) и ТЗ (45 Мбит/с), тогда как у Х.25 это была обычно скорость 64 Кбит/с.

Формат кадра Суть этой технологии заключается в отказе от 3-его(сетевого) уровня Х.25. Ограничиваются использованием 2-го (канального) уровня, где передача ведется кадрами. Видоизменяется только заголовок кадра:

Заголовок кадра Frame Relay содержит:

10-битовое поле DLCI– идентификатора канала передачи данных. Это поле используется маршрутизаторами для нахождения узла назначения, т.е. это информация для ретрансляции кадра.

Из остальных шести бит заголовка:

3 бита выполняют роль флагов перегрузки;

1 бит – позволяет снизить приоритет кадра (называется битом DE);

2 бита – зарезервировано.

Скорость передачи

Скорость передачи согласуется с провайдером в виде трех параметров:

- CIR– согласованная скорость передачи;

Bс – согласованная величина расширения трафика;

Be – предельная величина расширения трафика.

Трафик объемом Be может приниматься сетью только ограниченный промежуток времени.

Передача графика объемом Вс допускается, только если загрузка сети в среднем не превысит согласованного значения CIR.

В случае превышения нагрузки пакет может быть либо отброшен маршрутизатором, или же в нем устанавливается в «1» бит DE (снижения приоритета), а и этом случае такой пакет разрешается при необходимости уничтожить любому следующему но пути следования маршрутизатору.

Типы каналов

Технология Frame Relay может работать на двух типах каналов:

PVC – постоянный виртуальный канал;

SVC– коммутируемый виртуальный канал.

Каналы PVC определяются на этапе конфигурации системы и гарантируют, что пакеты всегда будут доставляться по одному и тому же маршруту. Каналы SVC устанавливаются каждый раз в начале передачи (на этапе установления соединения), что позволяет избегать неисправных участков сети.

Зашита от ошибок

В сети Frame Relay производится проверка правильности кадра (с помощью анализа поля FCS)и, если обнаружены ошибки, кадр стирается. Однако повторная передача таких стертых кадров при этом не запрашивается. Считается, что за сборку сообщения и запрос недоставленных кадров должен отвечать протокол более высокого уровня – транспортный (отвечающий за межконцевую доставку). Таким образом эти сети ориентированы на применение высококачественных оптоволоконных каналов, в которых ошибки достаточно редки, а поэтому низка и вероятность повторных передач пакета.


Сети АТМ

Сети ATM были разработаны в качестве еще одной альтернативы сетям Х.25. Скорость передачи в этой сети находится и диапазоне от 25,5 Мбит/с до 2,488 Гбит/с. В качестве среды передачи могут использоваться различные носители, начиная с неэкранированной витой пары UTР класса 3 вплоть до оптоволоконных каналов.

Эта технология известна также под названием Fast Packet Switching –быстрая коммутация пакетов.

Высокие скорости передачи обеспечиваются за счет:

1. Фиксированного размера кадра – 53 байта

2. Отсутствия каких-либо мер по обеспечению правильности передачи. Эта задача переносится на более высокие протокольные уровни (транспортный).

Технология ATM относится по концепции OSI ко второму (канальному) уровню. Кадры в ATM называются ячейками (cell). Формат такой ячейки показан на левом рисунке.

Заголовок ячейки (5 байт) содержит:

Идентификатор виртуального пути – VPI (Virtual Path Identifier);

Идентификатор виртуального канала – VCI (Virtual Channel Identifier);

Идентификатор типа данных (3 бита);

Поле приоритета потери ячейки (1 бит);

Поле контроля ошибок в заголовке (8 бит) – это сумма по mod 2 байтов заголовка. Протоколы более высокого уровня разрезают свои сообщения на сегменты

по 48 байт и помещаютих в поле информации ячейки.

Технология ATM поддерживает 2 типа каналов (аналогично сетям Frame

PVC – постоянные виртуальные каналы;

SVC– коммутируемые виртуальные каналы.

На канальном уровне ATM выделяются 2 подуровня (см. рис вверху справа): непосредственно уровень ATM и уровень адаптации ATM.

Уровень адаптации ATM (ATM Adaptation Layer) – AAL – реализует один из

пяти режимов передачи:

AAL1 – характеризуется постоянной скоростью передачи (CBR) и синхронным трафиком. Ориентирован па передачу речи и видеоизображений.

AAL2 – тоже поддерживает синхронную передачу, но использует переменную битовую скорость (VDR). Oн пока, к сожалению, еще не реализован.

AAL3/AAL4 (объединены в единый протокол) – ориентированы на переменную битовую скорость (VBR). Синхронизация не обеспечивается. AAL4 отличается тем, что не требует предварительного установления соединения.

AAL5 – аналогичен AAL3, только содержит меньший объем служебной инфы.

По протоколам AAL1 и AAL2 передаются порции по 48 байт информации (1 байт – служебный). Протоколы AAL3 – AAL5 предполагают передачу блоков (разрезанных на сегменты) размером до 65536 байт.

Рекомендация X.25 описывает три уровня протоколов - физический, уровень звена передачи данных и сетевой. Физический уровень описывает уровни сигналов и логику взаимодействия на уровне физического интерфейса. Те из читателей, которым приходилось например подключать модем к последовательному порту персонального компьютера (интерфейс RS-232/V.24) имеют представление об этом уровне. Второй уровень (LAP/LAPB), с теми или иными модификациями, также достаточно широко представлен сейчас в оборудовании массового спроса: в оборудовании модемов, например, - протоколами группы MNP, отвечающими за защиту от ошибок при передаче информации по каналу связи, а также в локальных сетях на уровне LLC. Второй уровень протоколов отвечает за эффективную и надежную передачу данных в соединении "точка-точка", т.е. между соседними узлами сети X.25. Данным протоколом обеспечивается защита от ошибок при передаче между соседними узлами и управление потоком данных (если принимающая сторона не готова принимать данные, она извещает об этом передающую сторону, и та приостанавливает передачу). Кроме того, данный протокол содержит параметры, меняя значения которых, можно получить оптимальный по скорости передачи режим в зависимости от протяженности канала между двумя точками (времени задержки в канале) и качества канала (вероятности искажения информации при передачи). Для реализации всех указанных выше функций в протоколах второго уровня вводится понятие "кадра" ("frame"). Кадром называется порция информации (битов), организованная определенным образом. Начинает кадр флаг, т.е. последовательность битов строго определенного вида, являющаяся разделителем между кадрами. Затем идет поле адреса, которая в случае двухточечного соединения сводится к адресу "А" или адресу "B". Далее идут поле типа кадра, которое указывает, несет ли кадр в себе информацию, либо является чисто служебным, т.е. например тормозит поток информации, либо извещает передающую сторону о приеме/неприеме предыдущего кадра. В кадре имеется также поле номера кадра. Кадры нумеруются циклически. Это означает, что при достижении определенного порогового значения, нумерация опять начинается с нуля. И наконец заканчивается кадр проверочной последовательностью. Последовательность подсчитывается по определенным правилам при передаче кадра. По этой последовательности на приеме происходит поверка, не произошло ли искажения информации при передаче кадра. При настройке параметров протокола к физическим характеристикам линии можно менять длину кадра. Чем короче кадр, тем меньше вероятность того, что он будет искажен при передаче. Однако если линия хорошего качества, то лучше работать более длинными информационными кадрами, т.к. уменьшается процент избыточной информации, передаваемой по каналу (флаг, служебные поля кадра). Кроме того, можно менять число кадров которое передающая сторона посылает, не ожидая подтверждения от принимающей стороны.

Этот параметр связан с т.н. "модулем нумерации", т.е. значением порога, достигнув которого нумерация снова начинается с нуля. Это поле может быть равно 8 (для тех каналов, задержка передачи информации в которых не слишком велика) либо 128 (для спутниковых каналов например, когда задержка при передаче информации по каналу велика). И наконец, третий уровень протоколов - "сетевой". Этот уровень наиболее интересен в контексте обсуждения сетей X.25, так как именно он определяет в первую очередь специфику этих сетей.

Функционально данный протокол отвечает в первую очередь за маршрутизацию в сети передачи данных X.25, за доведение информации от "точки входа" в сеть до "точки выхода" из нее. На своем уровне протокол третьего уровня также структурирует информацию, т.е. разбивает ее на "порции". На третьем уровне порция информации называется "пакетом" ("packet"). Структура пакета во многом аналогична структуре кадра. В пакете имеется свой модуль нумерации, свои поля адреса, типа пакета, своя контрольная последовательность. При передаче пакет помещается в поле данных информационных кадров (кадров второго уровня). Функционально поля пакета отличаются от соответствующих полей кадра. В первую очередь это касается поля адреса, которое в пакете состоит из 15 цифр. Это поле пакета должно обеспечивать идентификацию абонентов в рамках всех сетей пакетной коммутации по всему миру

СЕТЬ ИНТЕРНЕТ

Интернет - это все сети, которые взаимодействуя с помощью протокола IP, образуют "бесшовную" сеть для своих пользователей. В настоящее время в Интернет входят десятки тысяч сетей и их число постоянно увеличивается. В 1980 году на Internet было 200 компьютеров. Число подключенных к сети компьютеров продолжает увеличиваться примерно на 15% в месяц. Масштабы Internet существенно увеличились после подключения к ней коммерческих сетей. Это были такие сети, как America Online, CompuServe, Prodigy, Delphi, GEuie, BIX и т.д..

Управление Интернет Направление развития Internet определяет "Общество Internet" (ISOC -Internet Society). Это организация, которая работает на общественных началах; ее целью является содействие глобальному информационному обмену через Internet. Она назначает Совет старейшин, который отвечает за техническое Руководство и ориентацию Internet.

Совет старейшин IAB - (Internet Architecture Board - совет по архитектуре Internet) регулярно собирается для утверждения стандартов и распределения Ресурсов. Наличие стандартов должно способствовать объединению в сети компьютеров разных платформ (Sun, Macintosh, IBM и т.д.). Каждый компьютер в сети имеет свой уникальный 32-разрядный адрес. Правила присвоения адресов определяет IAB.

Имеется еще один общественный орган - Инженерная комиссия IETF (Internet Engineering Task Force). Она собирается регулярно для обсуждения технических и организационных вопросов, а при необходимости формирует рабочие группы.

NUMBEREDHEADINGS__

Временная диаграмма последовательности обмена кадрами

Настоящая глава посвящена описанию основной процедуры второго (канального) уровня сети X.25 (X.25/2) – обеспечению безошибочного обмена информационными кадрами, передаваемых по подверженным помехам каналам связи . Эта функция называется управление потоками и используется не только для сети пакетной коммутации стандарта Х.25, но и для других сетей, обеспечивающих службу передачи данных. При этом алгоритм реализации этой функции отличается в сетях разных технологий. Для сетей связи, обеспечивающих службу телефонии или видео, управление потоком не производится. Основной принцип управления потоками в Х.25/2 состоит в следующем. Передаваемый информационный кадр сохраняется в памяти передающего узла, ожидая приема квитанции о правильном приеме кадра узлом-получателем. В качестве этих узлов могут быть смежные транзитные коммутаторы или оконечный коммутатор. В следующей главе приводится описание структурных схем программного обеспечения по реализации функции управления потоками в Х.25/2. Поэтому в настоящей главе приводится относительно подробное описание этой функции. Под кадром понимается элемент данных протокола PDU X.25/2 (между оконечным пунктом и ЦКП или между смежными ЦКП). Помехи в канале связи могут вызывать потерю, дублирование, искажение кадра, нарушение порядка прибытия кадра адресату. Кадр состоит из последовательности байтов. В начале и в конце кадра устанавливается синхронизирующий байт для определения начала и конца кадра. Этот синхронизирующий байт («01111110») называется флагом, а процедура обеспечения синхронизации бит-стаффингом. Для того чтобы можно было передавать байт такого содержания в информационной части кадра перед передачей после пяти непрерывных информационных «1» производится вставка «0» и изъятие этого бита на приеме.

Выполнение функции безошибочного обмена информационными кадрами обеспечивается подмножеством высокоуровневого протокола управления каналом HDLC (High-level Data Link Control) - процедурой сбалансированного доступа LAP-B (Link Access Protocol-Balanced). Этот протокол обеспечивает режим работы, в котором оба взаимодействующих в соединении узла равноправны.

Для описания алгоритма работы канального уровня сети Х.25 используются примитивы . Примитивами являются блоки данных определенного вида, которые передаются между уровнями системы для вызова различных процедур. Примитивы определяются согласно рекомендации ITU-T Х.210 . На рис. 1 представлен обмен примитивами между уровнями модели OSI. Показаны четыре типа примитивов – запрос, индикация, ответ, подтверждение.

Рис. 1. Обмен примитивами между уровнями модели OSI

В некоторых случаях достаточно двух типов примитивов (запрос, подтверждение).

На рис. 2 приведена временная диаграмма последовательности обмена кадрами при установлении соединения, передача одного информационного кадра и разъединение соединения. Приведём эту последовательность.

Рис. 2. Временная диаграмма последовательности обмена кадрами при установлении соединения, передаче информационного кадра и разъединении канального соединения

  1. С сетевого уровня на канальный уровень станции A передаётся примитив «Запрос соединения». При выполнении этого примитива в канал связи с канального уровня передаётся кадр SABM о запросе соединения.
  2. При поступлении этого кадра на станцию Б он передаётся канальным уровнем на сетевой уровень в виде примитива «Индикация запроса соединения», в ответ на который выдается примитив «Ответ на запрос соединения». В результате в канал с канального уровня отправляется кадр UA о согласии на соединение.
  3. После приёма этого кадра с канального уровня на сетевой уровень станции Б направляется примитив «Подтверждение соединения».
  4. С сетевого уровня на канальный уровень станции А передаётся примитив «Запрос на посылку пакета данных». При выполнении этого примитива в канал связи с канального уровня передаётся информационный кадр «I» на противоположную станцию.
  5. Кадр «I», поступивший со станции А, передаёт сетевому уровню пакет данных с помощью примитива «Индикация прибытия правильного пакета данных».
  6. С канального уровня станции Б в канал передаётся кадр «RR» подтверждения приёма правильного пакета данных.

Формат кадра

На рис. 3 приведен формат информационного кадра Х.25. Этот формат включает заголовок кадра З2, концевик кадра К2 и пакет данных третьего уровня. Кадр обрамляется флагами (F ). Основным полем заголовка З2 является поле управления потоком, в котором основными характеристиками являются тип кадра и номера передаваемого и принимаемого информационного кадра: соответственно – N(S) и N(R).

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

Поле «Данные» (пакет сетевого уровня «Д») присутствует только в информационном кадре («I»). З3 означает заголовок пакета «Д». Концевик включает в себя контрольно-проверочную комбинацию КПК (К2), необходимую для выявления кадров, искаженных помехами в канале. Кроме информационных кадров в процедуре используются супервизорные кадры RR, REJ для подтверждения или запроса повторной передачи «I» кадров, принятых с искажениями из-за помех в канале, а также кадр RNR для приостановки передачи информационных кадров при перегрузке принимающей стороны. Эти кадры включают только параметр N(R). Ненумерованные кадры (SABM , DISK , UA и др.) служат, например, для установления или разъединения соединений между смежными узлами коммутации.

Рис. 3. Формат информационного кадра Х.25

Убедимся в необходимости применения при службе передачи данных схем обнаружения ошибок в принимаемых кадрах. Для этого определим вероятность появления таких искаженных кадров. Обозначим вероятность единичного ошибочного бита через Рв – эта характеристика канала, именуемая также частотой ошибочных битов (bit error rate – BER ). При использовании каналов в сети Х.25 эта величина может составлять Рв=0,0001. Если считать, что в канале возникают одиночные ошибки, статически независимые, то при длине кадра Х.25 порядка L=128 байт вероятность безошибочного приема кадра P = (1 − P B) ≈ (0 , 9999) 1024 ≈ 0 , 9 {\displaystyle P=(1-P_{B})\approx (0,9999)^{1024}\approx 0,9} , т.е. каждый десятый кадр искажен на приеме.

Частота появления ошибочных бит в аналоговом канале сети Х.25 нередко составляет даже P B = 0 , 001 {\displaystyle P_{B}=0,001} . Ошибки в каналах связи чаще бывают не единичными, а групповыми, то есть имеет место пакетирование ошибок. Это значительно уменьшает частоту искаженных кадров.

Полученный результат свидетельствует о необходимости применения схем обнаружения ошибок. Работа всех методов обнаружения ошибок основывается на использовании помехоустойчивого кодирования. На передающей стороне заголовок З2 и информационная часть, которая присутствует только в информационных кадрах, представляется как последовательность из k бит, которую требуется защитить от ошибок. К данной последовательности добавляется контрольно-проверочная комбинация КПК, которая вычисляется по определенному алгоритму как функция k битов передаваемого кадра. В результате формируется кодовая комбинация, имеющая длину n бит и включающая контрольно-проверочную комбинацию (n-k) бит (рис. 4). На приеме из кадра выделяется КПК. На основании принятых k бит приемник вычисляет КПК и сверяет результат вычисления с принятой КПК. Если принятая и вычисленная КПК не совпадают, кадр считается искаженным и аннулируется. В сети Х.25 используется один из наиболее широко используемых методов обнаружения ошибок – с помощью циклического избыточного кода CRC (Cyclic redundancy check). В сети X.25 n-k = 16 бит.

Рис. 4. Контрольно-проверочная комбинация в составе кадра из n бит

В разделе 4 приводится описание кода CRC тремя способами: с помощью арифметики по модулю 2, с использованием полинома, аппаратная реализация. Циклический код используется не только в сетях X.25, но и в IP - сетях, в беспроводных сетях стандарта GSM и др.

Восстановление информационных кадров

Приведем описание алгоритма передачи последовательности кадров Х.25 в условиях помех в каналах связи. Такой алгоритм называется управлением потоками на канальном уровне . Все передаваемые «I» кадры заносятся в буфер передатчика и ожидают получения положительного подтверждения от противоположной принимающей стороны. По запросу противоположной стороны производится повторная выдача из буфера принятых с искажениями «I» кадров. В измененном алгоритме восстановление блоков данных из-за помех в каналах связи применяется и в других технологиях сетей связи как, например, на транспортном уровне IP-сети, в сети ТфОП и др. Достаточно подробное изложение алгоритма управления потоками в Х.25 приводится для описания в следующей главе принципов составления алгоритмов программного обеспечения.

На канальном уровне Х.25 восстановление искаженных кадров предусматривает нумерацию передаваемых «I» кадров. Для описания метода в рекомендации ITU-T Х.25 введены следующие обозначения:

  • V(S) – переменная состояния передачи.
  • N(S) – порядковый номер передаваемого кадра «I». N(S) устанавливается равным V(S).
  • V(R) – переменная состояния приема.
  • N(R) - порядковый номер I-кадра, ожидаемого на прием.

V(S) означает текущий порядковый номер кадра «I», содержащего пакет данных и подлежащего передаче на физический уровень. Переменная V(S) в нормальном режиме функционирования звена данных принимает значения по модулю 8 (в цикле от 0 до 7), в расширенном режиме - по модулю 128 (в цикле от 0 до 127). Расширенная нумерация применяется в каналах с большим временем задержки (межконтинентальная связь или спутниковые каналы). По окончании передачи кадра значение V(S) увеличивается на единицу.

Переменная V(R) содержит текущее значение порядкового номера очередного кадра «I», который ожидают на приеме. Для V(R), как и для V(S), приняты нормальный и расширенный режимы нумерации. После приема I-кадра, в котором не обнаружены ошибки, и номер которого совпадает с ожидаемым приемной стороной N(S)=V(R), значение V(R) увеличивается на единицу.

N(R) – порядковый номер I-кадра, ожидаемого на прием. N(R) содержится в заголовке (З2) принимаемых кадров «I» и в супервизорных кадрах RR, REJ, RNR. N(R) в кадрах RR и «I» указывает, что переданные с противоположной стороны канала кадры «I» с номерами N(S)

Информационный кадр «I» содержит оба параметра N(S) и N(R). Информационные кадры стираются из буфера повторной передачи при подтверждении правильного приема.

Супервизорный кадр готовность к приему RR (receive ready) является положительной квитанцией, поступающей от принимающей стороны, и указывает на то, что переданные «I» кадры с номерами N(S)

Супервизорный кадр отказ REJ (reject) является отрицательной квитанцией и указывает, что «I» кадры, с номерами N(S)шириной окна W . В этом случае очередной пакет данных с сетевого уровня не инкапсулируется в кадр «I» для передачи в канал.

Если в приемник поступил «I» кадр, в котором не обнаружены ошибки и с ожидаемым номером N(R), то служебные поля канального уровня (З2 и К2) отбрасываются, и входящий в кадр пакет данных передается с канального на сетевой уровень. На рис. 5 приведена временная диаграмма обмена «I» кадрами между пунктами А и Б (случай приема «I» кадров без искажения, исходное состояние V(S)=V(R)=0, буферы повтора пустые).

Рис. 5. Временная диаграмма обмена «I» кадрами, принятыми с канала без искажений

Обозначения:

  • I (i, j) – информационный кадр с параметрами N(S)=i, N(R)=j
  • RR(j) – кадр RR с параметром N(R)=j

Крестиком отмечен искаженный в канале кадр. Ниже приведено описание последовательности операций.

  1. Передача «I» кадра с параметрами N(S)=0, N(R)=0. Запись кадра «I» в буфер станции А. Изменение текущего значения V(S):=V(S) + 1, т.е. V(S)=1 (на станции А).
  2. Прием без ошибок I (0,0) на станции Б. Номер кадра N(S) совпадает с ожидаемым номером V(R), то есть N(S)=V(R)=0. Изменение текущего состояния приема V(R):=V(R)+1, т.е. V(R)=1 в Б.
  3. Подтверждение приема кадра I (0,0), т.е. передача положительной квитанции RR(1).
  4. Прием RR(1) и стирание из буфера кадра I (0,0).
  5. Передача кадра I (1,0), запись его в буфер, V(S)=2.
  6. Прием без ошибок I (1,0) на станции Б, V(R)=2.
  7. Подтверждение приема I (1,0), т.е. передача квитанции RR(2).
  8. Прием искаженного в канале кадра RR(2). Кадр отбрасывается.
  9. Передача очередного «I» кадра I (2,0), запись его в буфер (в буфере станции А теперь записаны два кадра I (1,0), I (2,0), которые ждут подтверждения об их приеме на станции Б), V(S)=3.
  10. Прием безошибочного I (2,0) на станции Б, V(R)=3.
  11. Передача «I» кадра со станции Б на станцию А с параметрами N(S)=0, N(R)=3, т.е. I (0,3). V(S)=1 (на станции Б), запись в буфер I (0,3) на станции Б. Этот кадр одновременно является квитанцией правильного приема станцией Б «I» кадров с номерами 1 и 2.
  12. Прием без ошибок I (0,3), стирание из буфера станции А кадров I (1,0) и I(2,0).

В приведенной на рис. 5 диаграмме все «I» кадры принимаются неискаженными. Поэтому операции приема этих кадров (2, 6, 10 на станции Б и 12 на станции А) завершаются передачей входящих в них пакетов данных на сетевой уровень.

На рис. 6 представлена диаграмма, включающая прием некоторых искаженных кадров «I». Для наглядности диаграммы параметры V(S) и V(R) на рисунке не приведены.

Как видно из диаграммы, искаженные в канале кадры I(2,0), I(3,0), I(4,0) при получении кадра REJ(1) передаются на станцию Б повторно из буфера. Кадры I(0,0) со станции А и I(0,4), I(1,5) со станции Б повторно из буферов не передаются, поскольку они подтверждаются соответственно кадрами RR(1), I(4,1) и RR(2). Необходимо отметить, что нумерация кадров N(S) и N(R) циклическая. При нормальной нумерации для этого отводится 3 бита, а при расширенной - 7 бит. Напомним, что под шириной (размером) окна W понимается максимальное число неподтвержденных кадров в буфере. При заполнении такого числа кадров в буфере согласно алгоритму требуется перейти к повторной передаче этих кадров из буфера. Чем выше пропускная способность канала и больше протяженность канала, тем размер окна выше.

Рис. 6. Временная диаграмма восстановления «I» кадров при приеме отрицательной квитанции REJ

Рассчитаем величину задержки кадра длинной порядка 128 байт при скорости передачи 64 кбит/с. Задержка составляет 128 байт / 64 кбит/с = 16 мсек. Сравним эту величину со временем задержки распространения кадра по спутниковому каналу протяженностью 72000 км, приняв скорость распространения сигнала равной скорости света в вакууме – 300000 км/с. Эта величина составляет 72000 км / 300000 км/с = 240 мсек, т.е. в канале одновременно могут находиться 15 кадров (240/16). Отсюда ясно, почему при использовании спутниковых каналов в сети Х.25 применяется расширенная нумерация и соответственно большая ширина окна W , чем при нормальной нумерации.

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

На рис. 7 и рис. 8 приведены диаграммы повтора «I» кадров из буфера по истечении тайм-аута. Примеры приведены для случая запрета передачи очередного кадра «I» при числе ожидающих в буфере повтора «I» кадров равном окну W (W=4).

Как видно из диаграммы, по истечении тайм-аута кадр «I» повторяется из буфера. Причиной повторения по таймеру может быть искажение только «I» кадров (рис. 7), либо искажение кадров «I» и кадров подтверждения RR (рис. 8). В случае правильного приема кадра I(0,0) пакет сетевого уровня должен быть отправлен на сетевой уровень, но повторный прием кадра I(0,0) считается копией уже принятого кадра, а поэтому он сбрасывается, т.е. не пересылается на сетевой уровень.

Рис. 7. Временная диаграмма восстановления кадра «I» по истечении тайм-аута

Рис. 8. Временная диаграмма сброса копии «I(0,0)» кадра, принятого повторно из станции Б по истечении тайм-аута на А

Обнаружение ошибок с помощью избыточного циклического кода

Ниже приводятся три способа описания определения кода CRC: с использованием арифметики по модулю 2, с использованием полинома и аппаратная реализация .

Пример с использованием арифметики по модулю 2

В вычислениях по модулю 2 используется двоичное сложение без переноса в старший разряд (операция исключающего ИЛИ).

Введем следующие обозначения:

  • T – n-битовый кадр, который необходимо передать;
  • D – k-битовый блок сообщения (k первых бит кадра T );
  • R – (n-k) – битовая контрольная последовательность кадра (последние (n-k) бит кадра T ). Значение R необходимо вычислить;
  • P - (n-k+1) – битовый делитель.
Пример:

Пример с использованием полинома

Используя предыдущий пример, получаем: последовательности D = 1010001101 соответствует полином , последовательности Р = 110101 - полином , последовательности R = 01110 − R (X) = X 3 + X 2 + X {\displaystyle R=01110-R(\mathrm {X})=\mathrm {X} ^{3}+\mathrm {X} ^{2}+\mathrm {X} } .

Рис. 9. Пример полиномиального деления

Приведем примеры длин п-к КПК (FCS) используемых полиномов Р(Х) в сетях связи:
CRC – 3: в GSM.
CRC – 16: в ОКС№7, X.25, Интернет (на межсетевом уровне, на транспортном уровне по протоколу TCP).
CRC – 32: в ATM.

Пример аппаратной реализации

Процесс циклической проверки четности с избыточностью можно представить как схему деления, состоящую из элемента исключающего ИЛИ (сложение по модулю 2) и регистра сдвига. Регистр сдвига представляет собой строку 1-битовых ячеек памяти. Каждая ячейка имеет выходную шину, показывающую текущее хранимое значение, и входную шину. В дискретные моменты времени, которые называют тактами, значения ячеек памяти замещаются значениями, указанным во входной шине. Замена происходит синхронно во всем регистре, так что в результате значения ячеек регистра сдвигаются на один бит.

Реализация схемы выглядит следующим образом.

  1. Регистр, содержащий (n - k) бит (по размеру контрольно-проверочной комбинации).
  2. До (n - k) элементов исключающего ИЛИ.
  3. Наличие или отсутствие логического элемента соответствует наличию или отсутствию члена в полиноме-делителе Р (Х), исключая члены 1 и X n − k {\displaystyle \mathrm {X} ^{n-k}} .

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

сообщение D = 1010001101 {\displaystyle D=1010001101} ; D (X) = X 9 + X 7 + X 3 + X 2 + 1 {\displaystyle D(\mathrm {X})=\mathrm {X} ^{9}+\mathrm {X} ^{7}+\mathrm {X} ^{3}+\mathrm {X} ^{2}+1} ; делитель P = 110101 {\displaystyle P=110101} ; P (X) = X 5 + X 4 + X 2 + 1 {\displaystyle P(\mathrm {X})=\mathrm {X} ^{5}+\mathrm {X} ^{4}+\mathrm {X} ^{2}+1} .

На рис. 10,а представлена реализация регистра сдвига. Процесс начинается с очистки регистра (все ячейки обнуляются). После этого передаваемое сообщение (делимое) побитово вводится в регистр, начиная со старшего бита. На pис. 10,б приведена таблица, которая иллюстрирует пошаговую работу схемы по мере введения отдельных битов. Строки таблицы содержат значения пяти ячеек регистра сдвига в соответствующие моменты времени. Кроме того, в строках таблицы приводятся значения на выходе трех схем исключающего ИЛИ. Последнее число в каждой строке - значение следующего входного бита, который станет доступен для работы на следующем этапе.

Отметим, что операция исключающее ИЛИ влияет на значения ячеек С4, С2 и С0 при следующем сдвиге, что идентично рассмотренному ранее процессу двоичного деления. Процесс выполняется для всех битов передаваемого сообщения. Для обеспечения корректности выходного сигнала используются два ключа. При вводе битов данных оба ключа находятся в положении А. В результате за первые 10 шагов входные биты подаются в регистр сдвига и также используются в качестве выходных битов. По окончании обработки последнего бита данных регистр сдвига содержит остаток деления - содержание регистров после этапа 10. При вводе последнего бита данных в регистр оба ключа устанавливаются в положение В. В этом случае.