PPP (сетевой протокол)

PPP(англ.Point-to-Point Protocol) — двухточечный протоколканального уровня(Data Link)сетевой модели OSI. Обычно используется для установления прямой связи между двумя узлами сети, причём он может обеспечить аутентификацию соединения, шифрование (с использованиемECP,RFC 1968) и сжатие данных. Используется во многих типах физических сетей: нуль-модемный кабель, телефонная линия, сотовая связь и т. д. 
Часто встречаются подвиды протокола PPP, такие, как Point-to-Point Protocol over Ethernet (PPPoE), используемый для подключения поEthernet, и иногда черезDSL; и Point-to-Point Protocol overATM(PPPoA), который используется для подключения по ATM Adaptation Layer 5 (AAL5), который является основной альтернативойPPPoEдляDSL.
PPP представляет собой целое семейство протоколов: протокол управления линией связи (LCP), протокол управления сетью (NCP), протоколы аутентификации (PAP,CHAP), многоканальный протокол PPP (MLPPP).
PPP-протокол был разработан на основеHDLCи дополнен некоторыми возможностями, которые до этого встречались только в проприетарных протоколах.
Link Control Protocol (LCP) обеспечивает автоматическую настройку интерфейсов на каждом конце (например, установка размера пакетов) и опционально проводит аутентификацию. Протокол LCP работает поверх PPP, то есть начальная PPP-связь должна быть до работы LCP.
RFC 1994описывает Challenge-handshake authentication protocol (CHAP), который является предпочтительным для соединений с провайдерами.
Уже устаревший, Password authentication protocol (PAP) всё ещё иногда используется.
Другим вариантом аутентификации через PPP является Extensible Authentication Protocol (EAP).
После того, как соединение было установлено, поверх него может быть настроена дополнительная сеть. Обычно используется Internet Protocol Control Protocol (IPCP), хотяInternetwork Packet Exchange Control Protocol(IPXCP) иAppleTalk Control Protocol(ATCP) были когда-то популярны.Internet Protocol Version 6 Control Protocol(IPv6CP) получит большее распространение в будущем, когдаIPv6заменитIPv4как основной протокол сетевого уровня.
PPP позволяет работать нескольким протоколам сетевого уровня на одном канале связи. Другими словами, внутри одного PPP-соединения могут передаваться потоки данных различных сетевых протоколов (IP,Novell IPXи т. д.), а также данные протоколов канального уровня локальной сети. Для каждого сетевого протокола используетсяNetwork Control Protocol(NCP), который его конфигурирует (согласовывает некоторые параметры протокола).
PPP NCP  обеспечивает процесс создания соединения через PPP, инициирует и настраивает различные протоколы сетевого уровня, такие какIP,IPXилиAppleTalk.
Microsoft PPP поддерживает следующие NCP:
PPP обнаруживает закольцованные связи, используя особенность, включающуюmagic numbers. Когда узел отправляет PPP LCP сообщения, они могут включать в себя магическое число. Если линия закольцована, узел получает сообщение LCP со своим собственным магическим числом вместо получения сообщения с магическим числом клиента.
Так как в PPP входитLCP-протокол, то можно управлять следующими LCP-параметрами:
Каждый кадр PPP всегда начинается и завершается байтом 0x7E. Затем следует байт адреса и байт управления, которые тоже всегда равны 0xFF и 0x03, соответственно. В связи с вероятностью совпадения байтов внутри блока данных с зарезервированными флагами существует система автоматической корректировки «проблемных» данных с последующим восстановлением.
Поля «Флаг», «Адрес» и «Управление» (заголовок кадраHDLC) могут быть опущены и не передаваться, но это произойдёт, если PPP в процессе конфигурирования (используя LCP) договорится об этом. Если PPP инкапсулирован вL2TP-пакеты, то поле «Флаг» не передаётся.
Поле «Данные» PPP-кадра, в свою очередь, разбиты ещё на два поля: флаг протокола (который определяет тип данных до конца кадра) и сами данные.
Фазы PPP поRFC 1661указаны ниже:
Протокол PPP определен вRFC 1661(The Point-to-Point Protocol, июль 1994). Ряд соответствующих RFC был написан, чтобы определить, как различные сетевые протоколы, включаяTCP/IP,DECnet,AppleTalk,IPXи другие, работают с PPP.