logo search
Тулябаев Ф

Протокол slip

Протокол SLIP (Serial Line IP) был первым стандартом де-факто, позволяющим устройствам, соединенным последовательной линией связи, работать по протоколам TCP/IP. Он был создан в начале 80-х годов и в 1984 году встроен Риком Адамсом (Rick Adams) в операционную систему 4.2 Berkley Unix. Позднее SLIP был поддержан в других версиях Unix и реализован в программном обеспечении для ПК.

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

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

Чтобы распознать границы IP-пакетов, протокол SLIP предусматривает использование специального символа END, значение которого в шестнадцатеричном представлении равно С0. Применение специального символа может породить конфликт: если байт пересылаемых данных тождественен символу END, то он будет ошибочно определен как признак конца пакета. Чтобы предотвратить такую ситуацию, байт данных со значением, равным значению символа END, заменяется составной двухбайтовой последовательностью, состоящей из специального символа ESC (DB) и кода DC. Если же байт данных имеет тот же код, что и символ SLIP ESC, то он заменяется двухбайтовой последовательностью, состоящей из собственно символа SLIP ESC и кода DD. После последнего байта пакета передается символ END.

Механизм формирования составных последовательностей показан на рис. 6.13. Здесь приведены стандартный IP-пакет (один байт которого тождественен символу END, а другой - символу SLIP ESC) и соответствующий ему SLIP-пакет, который больше на 4 байта.

Рис. 6.13. Инкапсуляция IP-пакетов в SLIP-пакеты

Хотя в спецификации протокола SLIP не определена максимальная длина передаваемого пакета, реальный размер IP-пакета не должен превышать 1006 байт. Данное ограничение связано с первой реализацией протокола SLIP в соответствующем драйвере для Berkley Unix, и его соблюдение необходимо для поддержки совместимости разных реализации SLIP (большинство современных реализации позволяют администратору самому установить размер пакета, а по умолчанию используют размер 1500 байт).

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

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

При работе с реальными телефонными линиями, зашумленными и поэтому искажающими пакеты при пересылке, требуются процедуры обнаружения и коррекции ошибок. В протоколе SLIP такие процедуры не предусмотрены. Эти функции обеспечивают вышележащие протоколы: протокол IP проводит тестирование целостности пакета по заголовку IP, а один из двух транспортных протоколов (UDP или TCP) проверяет целостность всех данных по контрольным суммам.

Низкая пропускная способность последовательных линий связи вынуждает сокращать время передачи пакетов, уменьшая объем содержащейся в них служебной информации. Эта задача решается с помощью протокола Compressed SLIP (CSLIP), поддерживающего сжатие заголовков пакетов. Появление CSLIP объясняется тем фактом, что при использовании программ типа Telnet, Riogin и других для пересылки одного байта данных требуется переслать 20-байтовый заголовок IP-пакета и 20-байтовый заголовок TCP-пакета (итого 40 байт). Спецификация CSLIP обеспечивает сжатие 40-байтового заголовка до 3-5 байт. На сегодняшний момент большинство реализации протокола SLIP поддерживают спецификацию CSLIP.

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