
- •1. Обзор протоколов обмена данными по телефонным линиям
- •2. Контроль четности
- •3. Стартовые и стоповые биты
- •4. Боды и биты в секунду
- •5. Соединение по протоколу slip
- •7. Что такое slip?
- •7. Инкапсуляция данных slip
- •10. Недостатки slip
- •11. Отсутствие возможности адресации
- •14. Протокол slip со сжатием (cslip)
- •15. Предпосылки к появлению cslip
- •16. Влияние аппаратных средств
- •17. Цели проектирования
- •18. Реализация slip
- •19. Протокол Point-to-Point (ррр)
- •20. Инкапсуляция данных ррр
- •21. Кадр данных ррр
- •22. Тип кадра данных в ррр
- •23. Инкапсуляция ррр по сравнению со slip
- •24. Функции по управлению соединением
- •25. Фаза установления соединения
- •27. Фаза управления сетью
- •28. Фаза прекращения соединения
- •29. Протокол управления соединением
- •30. Пакеты lcp
- •31. Структура пакетов конфигурации соединения lcp
- •32. Структура пакетов окончания сеанса lcp
- •33. Структура пакетов управления соединением lcp
- •34.Варианты конфигурации соединения lcp
- •35. Максимальная длина принимаемого блока
- •36. Конфигурация протокола авторизации доступа
- •37. Конфигурация протокола управления качеством
- •38. Магическое число
- •39. Сжатия данных поля протокола
- •40. Конфигурация сжатия полей адреса и управления
- •41. Что такое протокол управления сетью ip?
- •42. Чем ipcp отличается от lcp?
- •43. Варианты конфигурации протокола iрср
- •44. Конфигурация протокола сжатия ip
- •45. Конфигурация ip-адреса
- •46. Резюме
7. Инкапсуляция данных slip
Каждый протокол обладает свойством инкапсулировать данные. SLIP здесь не является исключением. Он использует специальные символы для ограничения кадра данных в последовательном канале. SLIP определяет следующие два символа, служащие для этой цели: End и Esc. Символом End служит символ с кодом ASCII 192 (ОхСО), символом Esc — символ с кодом 219 (OxDB). Компьютер с протоколом SLIP передает символ End в конце каждого пакета данных. Символ Esc используется для обозначения данных, имеющих тот же номер, что и символы Esc и End внутри пакета данных. В том, что для Esc и End выбрали именно указанные коды, нет особого скрытого смысла. Просто они были выбраны, и все. Поэтому почти наверняка в потоке данных пользователя будут встречаться как символы Esc, так и End. Когда это происходит, SLIP использует Esc, чтобы сообщить приемнику, что следующий символ с кодом End на самом деле не является концом кадра. Например, когда в пакете данных попадается байт с номером ОхСО (код символа End), SLIP подставляет двухбайтную Esc-последовательность Esc OxDC. Если байт имеет код самого символа Esc, SLIP вставляет двухбайтную Esc-последовательность Esc OxDD.
Рис. 1
Рис. 2
Реализация SLIP на принимающей стороне совершает противоположные действия, чтобы правильно разобрать поступающий пакет данных. Если в последовательности встречается символ Esc, SLIP сразу же смотрит на следующий за Esc символ и в зависимости от его номера так или иначе интерпретирует принятую последовательность. Например, если следующий за Esc символ имеет код OxDC, SLIP заменяет два символа на один с кодом ОхСО. Если принято сочетание Esc OxDD, оно заменяется на байт с кодом OxDB. Когда SLIP видит, что пришедший байт имеет код End и перед ним нет-байта с кодом Esc, это значит, что достигнут конец кадра. Далее, SLIP передает все полученные до этого данные вышележащему сетевому уровню в качестве IP-пакета. Представим себе IP-пакет, состоящий из двух байт. Пусть первый байт имеет код Esc, а второй — код End.
На рис. 1 показано, каким образом из такого пакета получится кадр данных протокола SLIP. SLIP заменит два байта описанным выше образом на две Esc-последовательности.
Большинство реализаций SLIP посылают байт с кодом End также и впереди кадра данных. Строго говоря, протокол SLIP не требует этого. Однако, поступая таким образом, SLIP позволяет принимающей стороне эффективно отбросить любой мусор, принятый до передачи действительного кадра и расценивающийся как кадр. Реализация SLIP, действующая описанным образом, позволяет отбросить кадр данных нулевой длины, когда принимающая сторона получает два следующих друг за другом символа End. На рис. 2 показано, как оформляются два IP-пакета в реализации SLIP, применяющей вставку символа End в начало кадра данных.
Как мы уже отметили выше, вставка символа End перед началом кадра позволяет принимающей стороне избавиться от любого шума на линии связи. Однако такими мерами все способности SLIP определить и тем более исправить ошибки данных исчерпываются. SLIP возлагает задачу по определению и исправлению пакетов данных и сообщений полностью на вышележащие протоколы, то есть на сетевой и транспортный уровни TCP/IP. Протокол IP требует присутствия и проверки контрольной суммы в заголовке пакета, поэтому SLIP вполне может не обращать внимание на возможное повреждение данных — эту работу за него сделает протокол IP, который проверит пакет и отбросит его в случае повреждения. TCP протокол таким же образом проверит контрольную сумму своего заголовка и сегмента данных и в случае повреждения поступит с пакетом надлежащим образом. Итак, мы видим, что, поскольку вышележащие протоколы и так проверяют состояние и целостность данных, нет никакой необходимости вводить дополнительный контроль данных на уровне протокола SLIP.
В предыдущем абзаце мы повторили тот факт, что IP и TCP обнаруживают и корректируют ошибки, могущие возникнуть при передаче данных к ним с нижележащих уровней, например от протокола SLIP, который сам не обнаруживает ошибок. Поскольку в UDP не применяется контрольных сумм, никто не может гарантировать, что пакет UDP дойдет до получателя по SLIP неповрежденным, коль скоро SLIP тоже не обнаруживает ошибки. Вообразите, что вы передаете пакеты UDP по шумной телефонной линии, пользуясь SLIP. Ни один из этих протоколов не обратит внимания на возможный сбой и повреждение данных. Компьютер, получивший поврежденный пакет, с чистой совестью будет считать его нормальным, и такое поведение сможет привести к непредсказуемым последствиям. Запомните, что нельзя передавать датаграммы UDP по протоколу SLIP, если только вы не используете UDP с контрольной суммой.