Выделенные каналы используются для прямой связи между собой локальных сетей или отдельных компьютеров. Для маршрутизатора или моста выделенная линия предоставляет чаще всего либо канал с известной полосой пропускания, как в случае выделенных аналоговых линий, либо канал с известным протоколом физического уровня, как в случае цифровых выделенных каналов. Правда, так как аналоговый канал требует модема для передачи данных, протокол физического уровня также определен для этой линии - это протокол модема. Поэтому для передачи данных между маршрутизаторами, мостами или отдельными компьютерами с помощью выделенного канала необходимо решить, какие протоколы уровней выше физического необходимы для передачи сообщений с нужной степенью надежности и с возможностями управления потоком кадров для предотвращения переполнения соседних узлов.
Если выделенный канал соединяет сети через маршрутизаторы, то протокол сетевого уровня определен, а протокол канального уровня маршрутизатор может использовать любой, в том числе и протокол канального уровня локальной сети, например Ethernet. Мост должен передавать кадры канального протокола из одной локальной сети в другую, при этом ему тоже можно непосредственно использовать протокол локальной сети (Ethernet, Token Ring, FDDI) поверх физического уровня канала.
Однако ни мосты, ни маршрутизаторы на выделенных каналах с протоколами канального уровня локальных сетей не работают. Они, с одной стороны, избыточны, а с другой стороны, в них отсутствуют некоторые необходимые процедуры, очень полезные при объединении сетей по глобальному выделенному каналу.
Избыточность проявляется в процедурах получения доступа к разделяемой среде, а так как выделенная линия постоянно находится в распоряжении соединяющихся с ее помощью конечных узлов, процедура получения доступа к ней не имеет смысла. Среди отсутствующих процедур можно назвать процедуру управления потоком данных, процедуру взаимной аутентификации удаленных устройств, что часто необходимо для защиты сети от «подставного» маршрутизатора или моста, отводящего корпоративный трафик не по назначению. Кроме того, существует ряд параметров, которые полезно автоматически согласовывать при удаленном взаимодействии, - например, максимальный размер поля данных (MTU), IP-адрес партнера (как для безопасности, так и для автоматического конфигурирования стека TCP/IP на удаленных одиночных компьютерах).
Протокол 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-пакета. Протокол не имеет механизмов передачи адресной информации, идентификации типа протокола сетевого уровня, определения и коррекции ошибок.