1.1 Канальный уровень SLIP

advertisement
Протокол радиомодема серии СЕ831
Канальный уровень SLIP
1.1
Протокол представляет из себя следующую последовательность:
Байт
1 … N-1
N
Значение END
SLIP_Data
END
END (0xc0) – флаг, обозначающий конец пакета, может также передаваться и в начале,
чтобы гарантированно отсечь текущий пакет от предшествовавшего ему случайной
последовательности, которая может быть порождена шумом в линии связи. Если в пакете
встречается байт с кодом, идентичным END, то такой байт заменяется на последовательность из
2 байтов: 0xdb, 0xdc. Специальный символ 0xdb называется ESC-символом. Если в пакете
встречается байт с кодом ESC-символа, он замещается 2-байтовой последовательностью 0xdb,
0xdd.
1.2
IPv2
IPv2 (Internet protocol) – уровень протокола, в котором описываются сетевые
дейтаграммы. Данные по сети передаются в виде дейтаграмм, состоящих из заголовка и данных
протокола вышестоящего уровня. Основные свойства IPv2:
- unreliable service with best effort delivery (ненадежный сервис, успех доставки зависит
от обстоятельств, но делается все возможное);
- connectionless (не поддерживает соединение) – не ведется учета очередности доставки
дейтаграмм и каждая обрабатывается независимо от остальных.
В протоколе используется 16-ти битная адресация.
№
слова
1.
2.
3.
4.
5.
…
…
Таблица – Формат заголовка сетевого пакета IPv2
№ бита
Байт 0
0
1
2
3
4
5
6
7
0
Version (2)
Header Length
Total Length
O1
O2
ID
Prior
HLProtocol
1
2
Байт 1
3
4
Total Length +
FNum
NLFF
5
6
7
TTL
CheckSum
AddrSource
AddrDest
Options
Data
Version – Версия протокола: 0003 – протокол v2/light, 0010 – протокол v2. Протокол
v2/light представляет упрощенный вариант v2 для устройств с ограниченными ресурсами.
Header Length – Длина заголовка измеряется в 16-битных словах (от 4 до 15 слов).
Total Length – Общая длина пакета измеряется в октетах и может иметь длину от 4 до 4
096 октетов.
NLFF – Not last fragment flag: Если исходный пакет протокола вышестоящего уровня
разбит на несколько пакетов сетевого уровня, то каждый фрагмент нумеруется начиная с 0-го.
Номер фрагмента заносится в поле FNum (номера фрагмента), и, если передается непоследний
фрагмент, выставляется признак непоследнего фрагмента. Если передается фрагмент,
содержащий в себе пакет целиком, то этот фрагмент имеет номер 0 без NLFF.
TTL – Time to live: поле количества непройденных участков маршрута содержит
ненулевое значение в случае если пакет должен быть передан дальше по маршруту узлом,
который используется в качестве ретранслятора. Каждый ретранслятор на маршруте уменьшает
значение этого поля на 1. Если в полученном пакете это поле содержит 0, то либо пакет
передается обработчику пакетов вышестоящего уровня (если совпадает адрес назначения), либо
пакет уничтожается. Кроме того, вычитается единица каждую секунду, если пакет попал в затор
в каком-либо узле.
Если таблица маршрута передается вместе с пакетом, то эта таблица вставляется в поле
Options. Таблица представляет собой список адресов промежуточных узлов маршрута. Узел,
принявший пакет, передающийся по маршруту, проверяет соответствие адреса узла, отстоящего
от конца таблицы на значение (TTL- 1), и, если он совпадает, передает пакет дальше по
маршруту, уменьшив значение TTL на 1.
Нулевой адрес подсети означает локальную сеть в которой данные не выходят в другие
шлюзы. Адрес подсети, где все биты установлены в единицу, означает широковещательный
пакет, передающийся через все шлюзы по указанному локальному адресу в каждую подсеть.
Нулевой адрес узла означает собственный узел. Может использоваться как программная
заглушка. Адрес узла, где все биты установлены в единицу, означает широковещательный
пакет, передающийся всем узлам локальной подсети.
Prior – флаг приоритета, указывающий на необходимость срочной доставки
дейтаграммы. Если флаг равен 0, то дейтаграмма имеет обычный приоритет, если 1, то
дейтаграмм рассматривается как особо важная, и передается через маршрутизаторы вне
очереди.
HLProtocol указывает, какой протокол высокого уровня использовался при создании
передаваемого сообщения.
CheckSum – 8-ми битовая контрольная сумма. При расчете изначально поле заполняется
нулями. Сумма рассчитывается как двоичное дополнение до двух всех полей заголовка.
AddrSource – адрес отправителя.
AddrDest – адрес получателя.
Поля AddrSource и AddrDest указывают адреса истинного источника и конечного
назначения, независимо от количества промежуточных шлюзов.
Data – поле данных, длина зависит от того, что посылается в дейтаграмме.
Options – необязательное поле переменной длины. Поле заполняется в следующих
случаях:
- при передаче в поле таблицы маршрутизации;
- при тестировании и отладке сетей.
O1 – класс опции
O2 – номер опции
№ п/п
O1
O2
Описание
1.
0
0
Обычная работа. Поле Options не заполняется
2.
0
1
Маршрутизация дейтаграммы по пути, указанному в Options
3.
1
0
Запись временных меток по маршруту
4.
1
1
Запись маршрута в поле Options для трассировки
Download