3.1.2. Соединение по протоколу SLIP

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

Большинство программ управления SLIP имеют возможность набирать телефонный номер вашего поставщика услуг Интернет.

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

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

Также вам подробно расскажут, как правильно запустить SLIP-программу для установления связи с хостом поставщика услуг Интернет. После того, как вы позвонили на компьютер поставщика услуг и установили SLIP-соединение, можно использовать имеющиеся у вас Windows-приложения для работы с Интернет.

Находящиеся в США поставщики услуг Интернет делятся на две категории — местные и междугородные. Соответственно и плата за соединение, кроме той части, которую взимает поставщик, может также включать и плату за междугородный звонок. Плата за SLIP-соединение (впрочем, это относится и к РРР-соединению, о котором мы расскажем позже) взимается на почасовой основе, либо она фиксируется и оплачивается за месяц работы. Внимательно изучите все варианты оплаты соединения и выберите наиболее подходящий для вас.

Установив SLIP-соединение, можно попробовать запустить какую-либо программу для работы с Интернет, например, ftp. Все Интернет-программы для Windows при этом должны находиться на вашем жестком диске. Если вы хотите передавать файлы, на вашем компьютере должна быть соответствующая программа ftp для Windows. Если вам хочется читать и посылать почту или новости, то на вашем компьютере должны быть установлены соответствующие программы для обработки почты и новостей. Чтобы понять, для чего это требуется, необходимо уяснить, что же происходит внутри компьютера, когда установлено SLIP-соединение с Интернет.

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

Запустив таким образом Telnet, вы работаете с программой, которая на самом деле находится на сетевом компьютере вашего поставщика услуг. Другими словами, жесткий диск компьютера поставщика услуг должен содержать все TCP/IP программы, которыми вам вздумается воспользоваться, работая в Интернет. Ваш компьютер просто работает как терминал, передавая нажатия клавиш и принимая результаты выполнения с хоста поставщика услуг Интернет. Напротив, установив SLIP-соединение, вы превращаете собственный компьютер в узел Интернет, делая его полноправным членом сети с собственным IP-адресом и именем. При этом становится возможным выполнять на нем все TCP/IP приложения! Разумеется, для этого приложения должны быть установлены прямо на вашем компьютере.

Для начала вы захотите попробовать поработать с программами-клиентами, такими, как Telnet, Finger или Ftp. На самом деле, обладая SLIP-соединением и, следовательно, IP-адресом, вы можете предоставить сервис Интернет другим пользователям сети.

Представьте, что на домашнем или рабочем компьютере запущена программа Ftp-сервер. При этом любой другой пользователь Интернет получает возможность перекачивать файлы с вашего компьютера на собственный. Если он также работает по протоколу SLIP, а не в режиме терминала, то файл передается с вашего компьютера прямо на его собственный. Пользователь Интернет в Австралии принимает файл с компьютера, находящегося в Соединенных Штатах за плату, равную стоимости местного телефонного звонка к его поставщику услуг Интернет!

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

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

Каждый уровень набора протоколов TCP/IP инкапсулирует (вставляет) данные в том формате, в котором они требуются для передачи окружающим уровням. При путешествии данных через стек протоколов TCP/IP они последовательно окружаются дополнительной информацией (инкапсулируются) для следующего на пути уровня. Для того чтобы послать IP-датаграмму через сетевой уровень, вышележащий уровень соединения должен соответствующим образом инкапсулировать данные, оформить их в кадр, как того требует стандарт сетевого уровня протокола TCP/IP. Например, уровень соединения для сети Ethernet инкапсулирует данные в кадр Ethernet. Для сети token-ring соответственно это будут кадры стандарта token-ring.

Стандарты передачи данных по последовательному каналу связи, SLIP и CSLIP (SLIP со сжатием данных) просто определяют другой способ инкапсуляции. SLIP и CSLIP подготавливают данные для передачи по последовательному каналу (обычно это интерфейс RS-232) в Интернет. Протокол РРР также инкапсулирует данные для этой же цели. РРР использует более сложный метод инкапсуляции и интерфейс с Интернет, нежели SLIP. Однако канал передачи для них всех по-прежнему последовательный и двухточечный. Логически, SLIP и РРР находятся между последовательным портом компьютера и его программным стеком TCP/IP.

SLIP

Преобразование (инкапсуляция) данных для передачи по последовательным каналам связи описано в документе под названием RFC 1055, “A Nonstandard for Transmission of IP Datagrams Over Serial Lines: SLIP”, Romkey, 1988. RFC 1055 не является официальным стандартом Интернет. Он описывает стандарт де-факто. Это значит, что, хотя сообщество Интернет и не рассматривает RFC 1055 в качестве стандарта, любой желающий, чтобы его программное обеспечение обладало совместимостью с уже существующими методами передачи, должен воспользоваться рекомендациями документа в своей работе.

SLIP — это протокол инкапсуляции IP-пакетов в кадры, пригодные для передачи по последовательному каналу связи. SLIP не предоставляет возможности адресовать данные, обозначать типы кадров, корректировать или определять повреждение данных, а также сжимать пакеты. Отсутствие этих возможностей делает протокол чрезвычайно простым в реализации и, следовательно, популярным. Несмотря на популярность, фирмы и производители программного обеспечения редко используют SLIP в качестве стандартного протокола, так как он не является официальным стандартом Интернет. Как правило, в качестве такого стандарта применяется РРР. Протокол РРР — это действительно стандарт Интернет, обладающий теми же свойствами по передаче данных в последовательном двухточечном канале, что и SLIP.

Инкапсуляция данных SLIP

SLIP использует специальные символы для ограничения кадра данных в последовательном канале. SLIP определяет следующие два символа, служащие для этой цели: End и Esc. Символом End служит символ с кодом ASCII 192 (0xСО), символом Esc — символ с кодом 219 (0xDB). Компьютер с протоколом SLIP передает символ End в конце каждого пакета данных. Символ Esc используется для обозначения данных, имеющих тот же номер, что и символы Esc и End внутри пакета данных. В том, что для Esc и End выбрали именно указанные коды, нет особого скрытого смысла. Просто они были выбраны, и все. Поэтому почти наверняка в потоке данных пользователя будут встречаться как символы Esc, так и End. Когда это происходит, SLIP использует Esc, чтобы сообщить приемнику, что следующий символ с кодом End на самом деле не является концом кадра. Например, когда в пакете данных попадается байт с номером 0xСО (код символа End), SLIP подставляет двухбайтную Esc-последовательность Esc 0xDC. Если байт имеет код самого символа Esc, SLIP вставляет двухбайтную Esc-последовательность Esc 0xDD.

Реализация SLIP на принимающей стороне совершает противоположные действия, чтобы правильно разобрать поступающий пакет данных. Если в последовательности встречается символ Esc, то SLIP сразу же смотрит на следующий за Esc символ и в зависимости от его номера так или иначе интерпретирует принятую последовательность. Например, если следующий за Esc символ имеет код 0xDC, SLIP заменяет два символа на один с кодом 0xСО. Если принято сочетание Esc 0xDD, то оно заменяется на байт с кодом 0xDB. Когда SLIP видит, что пришедший байт имеет код End и перед ним нет байта с кодом Esc, это значит, что достигнут конец кадра. Далее, SLIP передает все полученные до этого данные вышележащему сетевому уровню в качестве IP-пакета. Представим себе IP-пакет, состоящий из двух байт. Пусть первый байт имеет код Esc, a второй — код End. SLIP заменит два байта описанным выше образом на две Esc-последовательности (рис. 3.1).

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

Коррекция ошибок в протоколе SLIP

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

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

Недостатки SLIP

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

Отсутствие возможности адресации

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

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

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

SLIP не различает пакеты разных типов

На свете есть много компьютеров, в которых в одно и то же время может исполняться несколько различных сетевых протоколов. Например, компьютеры фирмы DEC могут совмещать TCP/IP и DECnet. Разумеется, работая с двумя протоколами сразу, вы захотите, чтобы они жили вместе на одном и том же проводе, соединяющем вас с внешним миром. Такая задача проста, пока вы применяете Ethernet в качестве сетевой среды. Фреймы Ethernet имеют соответствующие поля, где указывается тип передающегося пакета, однако как только вы попытаетесь перейти на SLIP, обнаружится, что у кадра SLIP такое поле отсутствует, а следовательно, он может передать данные только для одного IP протокола.

SLIP не сжимает данные

Сети Ethernet передают информацию со скоростью до 10 миллионов бит в секунду. Соединение SLIP может работать на скоростном модеме, но даже при этом обеспечивать скорость только 19 200 бит в секунду. Другими словами, Ethernet быстрее SLIP более, чем в пятьсот раз. Для увеличения производительности SLIP-соединения вы можете сжимать передаваемые по модему данные, что уменьшает необходимый трафик сети и позволяет передать больше информации за меньшее время. Предположим, требуется передать файл размером в 100 Кбайт (100х1024 байт) по модему на скорости 1200 бод. Для этого потребуется около 14 минут:

100 х 1024 = 102 400 байт

102 400 байт /120 байт в секунду = 853 секунды

853 секунды / 60 секунд в минуте =14 минут

Если передаваемые данные предварительно сжать в соотношении 1:4, объем уменьшится до 25 Кбайт. Время, нужное для передачи, сократится до четырех минут. Новые модемы используют встроенную технологию сжатия данных. Некоторые программные протоколы также используют сжатие данных при работе. Информация в заголовках пакетов TCP и IP, которая меняется редко, может быть эффективно устранена с применением простейших алгоритмов сжатия (компрессии) данных, когда передаются только изменяющиеся части заголовков. RFC 1055, описывающий протокол SLIP, не описывает, однако, никакого алгоритма компрессии.