LCP
Не путать с LCP — в математической теории оптимизации Линейная проблема взаимозависимости[англ.].
LCP — сокращение от Link Control Protocol — протокол управления соединением.
Назначение протокола
[править | править код]LCP является частью протокола Point-to-Point Protocol. При установлении соединения PPP передающее и принимающее устройство обмениваются пакетами LCP для уточнения специфической информации, которая потребуется при передаче данных.
Согласование параметров соединения проводится в форме переговоров.
LCP протокол осуществляет:
- проверку идентификации соединяемых устройств и, вследствие этого разрешает или отклоняет установку соединения
- определение приемлемого размера кадров для передачи MTU и приёма — MRU
- ограничение по ширине канала
- шифрование аутентификации соединения
- сжатие данных
- обнаружение петель маршрутизации
- проверку синтаксиса и поиск ошибок в конфигурации
- разрыв соединения, если какое-либо значение превышает заданный параметр
Устройства не могут передавать данные друг другу по сети прежде чем LCP пакеты не определят доступность устанавливаемого соединения.
Так как LCP инкапсулируется в кадры РРР, необходимо установление первоначального соединения РРР прежде, чем LCP сможет переопределить его. Пакет LCP поверх PPP содержит код протокола 0xC021 и имеет четыре поля — код, идентификатор, длина и данные.
Формат пакета LCP
[править | править код]Заголовок пакета LCP | Данные | |||||||||||||||||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | nnn |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Code (Код) |
Identifier (Идентификатор) |
Length (Длина) |
Data (Данные) |
Расшифровка значений первого байта заголовка — Code
[править | править код]Code | Значения | Описание | RFC |
---|---|---|---|
0 | Vendor Specific999 | Определяется производителем | RFC 2153 |
1 | Configure-Request | Запрос конфигурации | |
2 | Configure-Ack | Подтверждение конфигурации | |
3 | Configure-Nak | Альтернативные значения | RFC 1661 |
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 | Identification | Идентификация | RFC 1570 |
13 | Time-Remaining | Времени осталось | RFC 1570 |
Расшифровка значений второго байта заголовка — Identifier
[править | править код]Идентификатор может принимать значения от 0 до 255.
Расшифровка значений третьего и четвёртого байта заголовка — Length
[править | править код]Поле Длина содержит общий размер в байтах всего пакета LCP, включая заголовок
Length = Code (1) Identifier (1) Length (2) Data (n) = n 4
где n — размер Данных кадра в байтах
Поле записывается в формате big endian (старший байт значения поля предшествует младшему в потоке данных)