1. 1 История tcpIP
Скачать 340.83 Kb.
|
2.2 Функционирование канала PPPПрежде чем начнется обмен данными по соединению PPP, между двумя устройствами должен быть установлен канал. Для конфигурирования параметров и тестирования канала используется протокол LCP. Конфигурирование параметров выполняется с помощью переговоров. Для этого каждое конечное устройство канала отправляет LCP-пакеты, в которых описывает свои возможности и требования. После установления канала, узлы могут выполнить аутентификацию друг друга, если они об этом договорились ранее. Для выбора и конфигурирования протоколов сетевого уровня, пакеты которых будут передаваться через канал, используются протоколы NCP. Протоколы NCP сложно описать общими словами, так как каждый из них обладает специфическими свойствами, зависящими от соответствующего протокола сетевого уровня, и поддерживает конфигурационные запросы, характерные только для этого протокола. После установления канала PPP отправляет пакеты NCP для конфигурирования поддерживаемых узлами протоколов сетевого уровня. Как только протокол сетевого уровня сконфигурирован, по каналу могут передаваться его дейтаграммы. Канал будет оставаться открытым до тех пор, пока явно не будет закрыт LCP- или NCP-пакетами, или пока не произойдет какое-нибудь внешнее событие. Диаграмма состояний Процесс установления, использования и разъединения канала PPP проходит через несколько состояний, показанных на рис. 2.3. Начальное состояние канала таково: канал отключен (DEAD), то есть соединение на физическом уровне отсутствует. После того как физическое соединение установлено, канал переходит в состояние ESTABLISH (установка). В этот момент начинаются переговоры о параметрах с помощью протокола LCP. Узлы PPP обмениваются пакетами LCP для выбора параметров соединения. Инициирующий узел предлагает варианты, а отвечающий узел либо соглашается с ним, либо отвергает частично или полностью. Отвечающий узел также может делать свои предложения. Фаза установки канала завершится, как только протокол LCP перейдет в открытое состояние (OPENED), т. е. узлы согласуют конфигурационные параметры. Прежде чем перейти к обмену пакетами протокола NCP, некоторые узлы могут выполнить аутентификацию. По умолчанию аутентификация не обязательна. Однако если в процессе установки канала с помощью LCP стороны договорились о необходимости выполнения аутентификации, то канал переходит в состояние AUTHENTICATE (аутентифицировать). В процессе этой фазы выполняется протокол аутентификации. В случае неуспешной аутентификации канал переходит в состояние TERMINATE (завершение). После успешной аутентификации канал переходит в состояние NETWORK (сеть). В этом состоянии происходит обмен пакетами NCP для настройки сетевого уровня. После того, как NCP перейдет в открытое состояние, РРР начинает передачу пакетов соответствующего протокола сетевого уровня. В данном состоянии трафик на канальном уровне состоит из комбинации пакетов LCP, NCP и протокола сетевого уровня. Когда передача данных закончена, канал переходит к фазе TERMINATE (завершение), а затем снова в состояние DEAD (отключен), когда физическое соединение разрывается. Канал PPP может быть закрыт в любое время по требованию пользователя или по другим причинам: из-за потери несущей, неудачной аутентификации, недостаточного качества канала, по истечении допустимого периода времени неиспользования канала. Для закрытия канала используется протокол LCP. Он выполняет это путем обмена сообщениями Terminate-Request и Terminate-Ack между взаимодействующими узлами. Когда канал закрывается, PPP информирует об этом протоколы сетевого уровня, таким образом они могут выполнить соответствующие действия. Закрытие канала с помощью LCP является достаточным. Отправлять поток пакетов Terminate каждому протоколу NCP нет необходимости. Более того, тот факт, что один из NCP закрылся, не является достаточной причиной для закрытия канала PPP, даже если этот NCP в тот момент был в открытом состоянии единственным. 2.3 Link Control Protocol (LCP) Протокол LCP выполняет три важных функции: Конфигурирование канала: процесс установления и настройки параметров канала. Обслуживание канала: процесс управления и диагностики открытого канала. Завершение канала: процесс закрытия существующего канала, если он больше не требуется или когда разрывается физическое соединение. Каждая из этих функций соответствует одному из состояний соединения PPP. Конфигурирование канала выполняется в состоянии ESTABLISH. Обслуживание канала выполняется, когда LCP переходит в открытое состояние. Завершение канала происходит в состоянии TERMINATE. Протокол LCP выполняет свои функции путем обмена сообщениями между взаимодействующими устройствами. Эти сообщения называются пакетами LCP. Пакет LCP инкапсулируется в поле Информация кадра PPP, в поле Протокол которого установлено значение 0хС021. Общий формат пакет LCP показан на рисунке рис. 2.4. Поле Код (Code), длиной 1 байт, описывает тип пакетов LCP. Однобайтное поле Идентификатор (Identifier) позволяет определять пары запросов и ответов. Поле Длина (Length) имеет длину 2 байта и содержит длину пакета LCP, с учетом полей Код, Идентификатор, Длина и Данные. Поле Данные (Data) переменной длины. Его формат определяется типом пакета LCP, указанным в поле Код. Установление канала Установление и конфигурирование канала выполняются автоматически путем обмена взаимодействующими узлами конфигурационными пакетами. Узел-инициатор отправляет пакет Configure-Request. Он может содержать переменное количество параметров настройки (опций), о которых инициатор желает договориться. Протоколом LCP согласуются только те опции, которые не зависят от конкретных протоколов сетевого уровня. В RFC 1661 определены 6 конфигурационных опций, которые инициатор может указать в запросе Configure-Request: Maximum Receive Unit (MRU): позволяет указывать максимальный размер передаваемой по каналу дейтаграммы. Authentication Protocol: позволяет указывать тип протокола аутентификации, если обе стороны желают его использовать. По умолчанию аутентификация не требуется. Quality Protocol: позволяет указывать тип протокола оценки качества канала. По умолчанию оценка качества канала отключена. Magic Number: позволяет определять закольцованные каналы или другие нарушения работы канального уровня. Protocol Field Compression: позволяет договориться о сжатии поля Протокол кадра PPP. Address and Control Field Compression (ACFC): позволяет договориться о сжатии полей Адрес и Управление кадра PPP. Если отвечающий узел соглашается со всеми указанными инициатором параметрами, он отправляет пакет Configure-Ack. Как только пакет Configure-Ack получен инициатором, протокол LCP переходит в открытое состояние и фаза установления канала завершается. Если отвечающий узел согласен не со всеми предлагаемыми параметрами, он отправляет узлу-инициатору сообщение Configure-Nak, в котором содержится список неподтвержденных параметров. Узел-инициатор обрабатывает ответ и отправляет пакет Configure-Request, содержащий новые конфигурационные параметры. Если отвечающий узел полностью отвергает предложенные параметры, он отправляет сообщение Configure-Reject. Также как и в случае получения пакета Configure-Nak, узел-инициатор повторяет попытку договориться о параметрах канала и отправляет пакет Configure-Request, содержащий новые конфигурационные параметры. В фазе установления канала, взаимодействующие узлы будут игнорировать все не-LCP пакеты. Узлы вернутся в фазу установления канала, если в фазе аутентификации или пересылки дейтаграмм сетевого уровня одним из них будет получен пакет Configure-Request. Обслуживание канала Как только переговоры о параметрах канала успешно завершились, LCP переходит в открытое состояние и передает управление соответствующим протоколам аутентификации и/или NCP. В этой фазе пакеты LCP могут использоваться для управления, поиска неисправностей в канале или тестирования производительности. Пакеты Code-Reject и Protocol-Reject используются для обратной связи, когда одна из сторон канала получила пакет LCP с неизвестным кодом или кадр PPP с неподдерживаемым типом протокола. Для исследования канала в обоих направлениях используются пакеты Echo-Request и Echo-Reply. Пакет Discard-Request используется для исследования канала в направлении от отправителя к получателю. Завершение канала Для завершения работы канала одна из его сторон отправляет пакет Terminate-Request. Другая сторона отвечает пакетом Terminate-Ack. |