LCP

Не путать с LCP — в математической теории оптимизации Линейная проблема взаимозависимости[англ.].

LCP — сокращение от Link Control Protocol — протокол управления соединением.

Назначение протокола

LCP является частью протокола Point-to-Point Protocol. При установлении соединения PPP передающее и принимающее устройство обмениваются пакетами LCP для уточнения специфической информации, которая потребуется при передаче данных.

Согласование параметров соединения проводится в форме переговоров.

LCP протокол осуществляет:

  • проверку идентификации соединяемых устройств и, вследствие этого разрешает или отклоняет установку соединения
  • определение приемлемого размера кадров для передачи MTU и приёма — MRU
  • ограничение по ширине канала
  • шифрование аутентификации соединения
  • сжатие данных
  • обнаружение петель маршрутизации
  • проверку синтаксиса и поиск ошибок в конфигурации
  • разрыв соединения, если какое-либо значение превышает заданный параметр

Устройства не могут передавать данные друг другу по сети прежде чем LCP пакеты не определят доступность устанавливаемого соединения.

Так как LCP инкапсулируется в кадры РРР, необходимо установление первоначального соединения РРР прежде, чем LCP сможет переопределить его. Пакет LCP поверх PPP содержит код протокола 0xC021 и имеет четыре поля — код, идентификатор, длина и данные.

Формат пакета LCP

Заголовок пакета LCPДанные
012345678910111213141516171819202122232425262728293031nnn
Code
(Код)
Identifier
(Идентификатор)
Length
(Длина)
Data
(Данные)

Расшифровка значений первого байта заголовка — Code

CodeЗначенияОписаниеRFC
0Vendor Specific999Определяется производителемRFC 2153
1Configure-RequestЗапрос конфигурации 
2Configure-AckПодтверждение конфигурации 
3Configure-NakАльтернативные значенияRFC 1661
4Configure-RejectОтказ в конфигурации 
5Terminate-RequestЗапрос на разрыв соединения 
6Terminate-AckПодтверждение разрыва 
7Code-RejectОтказ в принятии кода 
8Protocol-RejectОтказ в принятии протокола 
9Echo-RequestЭхо-запрос 
10Echo-ReplyЭхо-ответ 
11Discard-RequestЗапрос на отбрасывание 
12IdentificationИдентификацияRFC 1570
13Time-RemainingВремени осталосьRFC 1570

Расшифровка значений второго байта заголовка — Identifier

Идентификатор может принимать значения от 0 до 255.

Расшифровка значений третьего и четвёртого байта заголовка — Length

Поле Длина содержит общий размер в байтах всего пакета LCP, включая заголовок

Length = Code (1) + Identifier (1) + Length (2) + Data (n) = n + 4

где n — размер Данных кадра в байтах

Поле записывается в формате big endian (старший байт значения поля предшествует младшему в потоке данных)

Ссылки