Операция SLIP

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

На некоторых операционных системах, SLIP-драйвер представляет собой программу в пространстве пользователя; в Linux это часть ядра, что делает его гораздо быстрее. Однако необходимо явно переключить последовательное соединение в режим SLIP. Это достигается через tty line discipline, SLIPDISC. Пока tty работает в стандартном режиме (DISC0), данные передаются только между процессами пользователя, используя стандартные вызовы read(2) и write(2). SLIP-драйвер не может записывать или читать из tty, пока все данные, поступающие на последовательный порт, не будут обработаны драйвером SLIP.

Драйвер SLIP напрямую поддерживает несколько разновидностей протокола SLIP. Помимо стандартного SLIP, он также поддерживает CSLIP, который использует так называемую сжатую заголовку Van Jacobson для исходящих IP-пакетов. Кроме того, существуют версии для каждого из этих протоколов с шестибитовым кодированием.

Простой способ переключить последовательное соединение в режим SLIP — использовать утилиту slattach. Предположим, у вас есть модем на /dev/cua3, и вы успешно подключились к SLIP-серверу. Затем вы бы выполнили следующую команду:

# slattach /dev/cua3 &

Это включит line discipline cua3 к SLIPDISC и подключит ее к одному из интерфейсов SLIP-сети. Если это ваша первая активная SLIP-связь, то линия будет подключена к sl0; вторая к sl1 и так далее. Текущие ядра поддерживают до восьми одновременных SLIP-связей.

По умолчанию, slattach выбирает режим CSLIP. Вы можете выбрать другой режим, используя -p переключатель. Для использования обычного SLIP (без сжатия) выполните команду:

# slattach -p slip /dev/cua3 &

Другие доступные режимы: cslip, slip6, cslip6 (для шестибитной версии SLIP) и adaptive для адаптивного SLIP. В режиме adaptive система самостоятельно определит, какой тип SLIP использует удаленная сторона.

Обратите внимание, что вы должны использовать тот же режим, что и ваш партнер по соединению. Например, если cowslip использует CSLIP, то и вы должны использовать его. При несовпадении режимов, ping к удаленному хосту может не возвращать пакеты. Используя адаптивный SLIP, можно избежать этой проблемы.

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

После передачи управления линии драйверу SLIP, необходимо настроить сетевой интерфейс. Здесь мы снова используем стандартные команды ifconfig и route. Предположим, что из vlager мы соединяемся с сервером cowslip. Тогда вы должны выполнить:

# ifconfig sl0 vlager pointopoint cowslip
# route add cowslip
# route add default gw cowslip

Первая команда настраивает интерфейс как point-to-point связь с cowslip, в то время как вторая и третья команды добавляют маршрут к cowslip и устанавливают маршрут по умолчанию через cowslip как шлюз.

При разрыве SLIP-соединения сначала необходимо удалить все маршруты к cowslip, используя команду route с опцией del, отключить интерфейс и послать slattach сигнал завершения работы. Затем необходимо завершить работу модема с помощью вашей терминальной программы:

# route del default
# route del cowslip
# ifconfig sl0 down<br>
# kill -HUP 516