Протокол PPP при установлении соединения предусматривает процедуру аутентификации, которая является опционной (смотри рис. 2.). После перехода на сетевой уровень вызывается NCP-протокол, который выполняет необходимую конфигурацию канала.
Рис. 2. Алгоритм установления соединения PPP
При обнаружении несущей или по инициативе клиента система может попытаться установить соединение. В случае успеха система переходит в фазу аутентификации. Если же и фаза аутентификации завершается благополучно, система выполняет подключение к сети (IP, IPX, Appletalk и т.д.), настройка сетевого уровня производится в рамках протокола NCP. Во всех остальных случаях производится возврат в исходное состояние. Процедура закрытия соединения осуществляется протоколом LCP.
В поле данных PPP-пакета может быть вложен один LCP-пакет, в этом случае в поле протокол должен быть записан код 0xC021 (Link Control Protocol). LCP-протокол служит для установления соединения путем обмена конфигурационными пакетами. По завершении этого обмена система переходит в фазу аутентификации (рис.2). Формат LCP-пакета показан на рис. 3.
Рис. 3. Формат заголовка LCP-пакета
Вслед за заголовком следует поле данных. Поле код (1 октет) идентифицирует модификацию LCP-пакета. Если получен пакет с неизвестным полем код, посылается пакет-отклик “отклонение кода”. Поле идентификатор (1 октет) служит для нахождения соответствия между запросами и откликами. Если получен пакет с неправильным идентификатором, он просто уничтожается. Двухоктетное поле длина определяет размер LCP-пакета, включая размер заголовка. Октеты принятого пакета за пределами, заданными полем длина игнорируются.
В качестве примера можно рассмотреть процедуру подключения персональной ЭВМ к серверу через модем. После того как модем маршрутизатора ответит на вызов модема-клиента и установит физическое соединение, ЭВМ посылает последовательность LCP-пакетов, вложенных в поля данных одного или нескольких PPP-кадров. Это позволяет выбрать необходимые параметры PPP. По завершении этой процедуры посылается последовательность NCP-пакетов, которые конфигурируют сетевой уровень. Вероятно, ЭВМ захочет работать со стеком протоколов TCP/IP, и по этой причине нуждается в IP-адресе. Если провайдер имеет N IP-адресов в резерве, он может подключить одновременно N ЭВМ. Присвоение IP-адреса осуществляется также в рамках NCP-протокола. После этого ЭВМ становится узлом Интернет. Завершение сессии и освобождение IP-адреса выполняется также через NCP-протокол. Разрыв соединения осуществляет протокол LCP.
За полем длина могут следовать поля опций. Опции определяются все сразу на фазе конфигурирования канала. Описание опции содержит однооктетные субполя типа и длины, за которыми следует поле данных. Значения субполя типа представлены в таблице.
Значение кода поля типа | Назначение опции |
0 | Зарезервировано |
1 | Maximum-Receive-Unit (указывает максимальный размер блока данных, который может быть принят) |
3 | Authentication-Protocol (протокол аутентификации) |
4 | Quality-Protocol (протокол качества) |
5 | Magic-Number (магическое число, опция служит для выявления каналов с петлями обратной связи) |
6 | Protocol-Field-Compression |
7 | Address-and-Control-Field-Compression |
Существует три класса LCP-пакетов:
1. Пакеты конфигурации канала, которые используются при формировании виртуального канала (Configure-Request, Configure-Ack, Configure-Nak и Configure-Reject) .
2. Пакеты закрытия канала (Terminate-Request и Terminate-Ack).
3. Пакеты поддержания, которые служат для управления и отладки (Code-Reject, Protocol-Reject, Echo-Request, Echo-Reply и Discard-Request).
Аналогом LCP является протокол IPCP (IP Control Protocol). В поле код протокола в этом случае записывается 8021 (RFC-1332). Формат пакета IPCP показан на рис. 4.
Тип 1 байт | Длина 1 байт | Протокол сжатия IP 2 байта | Данные |
Рис. 4. Формат пакета IPCP. Младшие биты слева.
Поле тип содержит 2, в поле длина заносится число байт в пакете (≥4). В поле протокол сжатия IP заносится код алгоритма сжатия (0х02D - в случае алгоритма Ван Джекобсона). Поле данные может содержать нуль или более октетов. Конфигурационный запрос может потребовать присылки (присвоения) IP-адреса. Для решения этой задачи предусмотрена опция IPCP-пакета, где поле тип=3, длина=6, а последующие 4 байта выделены для IP-адреса, куда отправитель должен его записать. Если туда записаны нули, это говорит о том, что отправитель запрашивает свой IP-адрес.
Протоколы PPP, LCP (Link Control Protocol), CCP (Compression Control Protocol; RFC-1962, -1967), и некоторые другие управляющие протоколы содержат 8-битовые поля код. Значения этих кодов приведены в таблице 2.
Таблица 2 Значения поля код LCP-заголовка
Код | Тип пакета | |
1 | Запрос конфигурации | Configure-Request |
2 | Подтверждение конфигурации | Configure-Ack |
3 | Не подтверждение конфигурации | Configure-Nak |
4 | Отклонение конфигурации | Configure-Reject |
5 | Запрос завершения | Terminate-Request |
6 | Подтверждение завершения | Terminate-Ack |
7 | Отклонение кода | Code-Reject |
8* | Отклонение протокола | Protocol-Reject |
9* | Запрос отклика | Echo-Request |
10* | Эхо-отклик | Echo-Reply |
11* | Запрос отмены | Discard-Request |
12* | Идентификация | |
13* | Остающееся время | |
14** | Запрос сброса | |
15** | Отклик на запрос сброса | |
*) Только LCP; | **) Только CCP |
Для случая запроса Discard-Request между полями длина и данные помещается 4-байтовое поле Magic-Number (магическое число).
Формат MP-пакета представлен на рис. 5.
Рис. 5. Формат MР-пакета
Поля PID - идентификатор протокола. Субполе B (Beginning) - бит фрагмента =1 для первого фрагмента PPP и =0 для всех последующих фрагментов. Субполе E (Ending) - бит фрагмента =1 для последнего фрагмента PPP и =0 для всех прочих фрагментов. Поле номер по порядку имеет длину 24 бита. Существует модификация пакета с укороченным кодом (12 бит) номера по порядку. При этом к этому полю отходят 4 нулевые бита после BE00. Выбор длины этого поля осуществляется протоколом LCP. Значение поля увеличивается на 1 при посылке очередного фрагмента. Для вышерасположенных уровней совокупность совместно используемых каналов выглядит, как один виртуальный канал.