Семейство протоколов PPP

РРР является семейством протоколов, которые предоставляют мульти-протокольную инкапсуляцию, протокол контроля линии (LCP) для создания, конфигурирования и тестирования соединения канала данных, и семейство протоколов управления сетью (NCP) для создания и конфигурирования протоколов различных сетевых уровней.
Как можно видеть на рис, РРР устанавливает флаг как 0х7Е (01111110), чтобы указать начало и конец кадра РРР. В последовательных кадрах РРР будет задан только один символ флага. Поле адреса используется для адресации пакета для узла места назначения. В двухточечной линии связи узел назначения адресовать не нужно. Поэтому в РРР поле адреса задается как OxFF, т.е. как адрес широковещания.
В среде HDLC контрольное поле используется для функции подтверждения и упорядочивания уровня канала данных; однако в РРР контрольное поле задано как 0x03 для указания кадра ненумерованной информации (UI). Это то же самое, что и бит, который задается в методах кадрирования Ethernet.
Поле протокола имеет два байта и используется для идентификации протокола в полезной нагрузке РРР. Если поле задано как 0x00-21, то оно указывает на дейтаграмму IP. Контрольная последовательность кадра (FCS) является двухбайтовой CRC, аналогичной тому, что используется для инкапсуляции Ethernet.
Как и SLIP, РРР имеет метод, предотвращающий появление символа флага в середине данных. В синхронной линии связи, такой как ISDN, используется заполнение битами для вставки дополнительных битов, чтобы отметить, когда появляется символ флага. Закодированное представление байтов может содержать более 8 битов, но дополнительные биты добавляются и удаляются аппаратурой синхронной линии связи.
РРР использует также заполнение символами (подобно SLIP) на асинхронных линиях для предотвращения появления флага внутри кадра РРР. Если символ 0х7Е появляется в исходной дейтаграмме IP, то он заменяется строкой символов 0x7D-5D. Если символ ESC (0x7D) возникает в исходной дейтаграмме, то он заменяется последовательностью 0x7D-5D снова в 0x7D.
Символы меньше 0x20 также модифицируются, чтобы последовательные драйверы не интерпретировали их как управляющие символы, посылая 0x7D, а затем исходный символ с дополненным шестым битом.
Максимальная получаемая единица данных (MRU) равна 1500 байтам.
РРТР Протокол РРТР является способом взять существующий кадр РРР и инкапсулировать его через межсетевой обмен IP. РРТР позволяет создать в Интернете защищенные виртуальные частные сети (VPN). РРТР может использоваться независимо от того, поддерживает VPN провайдер услуг Интернета (ISP) или нет. Требуется только сервер, поддерживающий РРТР, и клиент, который может создать соединение РРТР. ,
Инкапсуляция кадров РРР реализуется с помощью протокола инкапсуляции базовой маршрутизации (GRE), который использует ID протокола IP, равный 47 (0x2F). Для использования его с РРТР протокол GRE был усовершенствован, чтобы предоставить поле подтверждения.
Как показано на рис. 1.15, кадр РРТР имеет заголовок среды и заголовок IP, прежде чем добраться до заголовка GRE. После заголовка GRE следует заголовок РРР, а затем полезная нагрузка РРР.
Заголовок GRE начинается с двух байтов для флагов. Эти флаги указывают, присутствует ли полезная нагрузка GRE и номера последовательности и подтверждения. Поле типа протокола содержит значение Ethernet, которое соответствует РРР (0х88-0В). Длина полезной нагрузки равна размеру полезной нагрузки GRE в байтах. Идентификатор (ID) вызова является информацией идентификации сеанса для этого пакета РРТР, за которым следуют номера последовательности и номер подтверждения — самый большой номер последовательности, полученный посылающим узлом этого сеанса. Номер последовательности используется для управления потоком, а не для повторной передачи потерянных кадров РРТР.

Второй бит

Второй бит является флагом дополнительных фрагментов, сообщающим, остались ли дополнительные фрагменты для передачи. Если он сброшен в О, то это означает, что это последний фрагмент; если он установлен в 1, то существуют дополнительные фрагменты для передачи. Флаг дополнительных фрагментов всегда установлен в 1 в первом фрагменте и во всех срединных фрагментах. Он сброшен в 0 в последнем фрагменте.
Поле сдвига фрагмента имеет в длину 13 битов и указывает, где в дейтаграмме расположен этот фрагмент. Сдвиг фрагмента измеряется в единицах по восемь байтов (64 бита). Первый фрагмент имеет сдвиг ноль. Это используется для правильной сборки первоначальной полезной нагрузки 1Р. Полезная нагрузка фрагментируется по восьмибайтовым границам, называемым блоками фрагмента, и значение сдвига фрагмента является блоком фрагмента, где фрагмент начинается. 13 битов в поле сдвига фрагмента и каждое число в счетчике, представляющее восемь октетов, допускают общую нагрузку 65536 октетов, фрагментированных на 8192 фрагментов. На практике полезная нагрузка 1Р может иметь максимальный размер только 65515 (1Р МТ1Л, равное 65535 байтов, минус минимальный размер заголовка 1Р, равного 20 байтам.)
1. Предположим, что имеется пакет ГР в 1500 байтов с 20-байтовым заголовком 1Р и 1480-байтовой полезной нагрузкой. При фрагментиро-вании для переноса по 576-байтовой сети каждый фрагмент будет иметь свой собственный 20-байтовый заголовок 1Р и максимальную нагрузку 1Р в 522 байта (что соответствует 69 блокам фрагментов). При создании фрагментов первоначальный заголовок 1Р копируется (хотя не все параметры обязательно будут скопированы), и затем изменяются следующие поля: длина заголовка, ТТЬ, общая длина, МЕ, сдвиг фрагмента и контрольная сумма заголовка.
2. В приведенном выше примере нагрузка в 1480 байтов делится на три фрагмента. Первый фрагмент состоит из 69 блоков фрагментов, второй — из 69 блоков фрагментов, а последний имеет 47 блоков фрагментов.
3. Заголовки 1Р для трех фрагментов будут содержать следующую информацию: фрагмент 1 будет иметь общую длину 572, флаг МР будет установлен в 1 и сдвиг фрагмента будет установлен в 0. Фрагмент 2 будет иметь общую длину 572, флаг МР будет установлен в 1 и сдвиг фрагмента будет равен 69. Фрагмент 3 будет иметь общую длину 396, флаг МР будет сброшен в 0 и сдвиг фрагмента будет задан как 138.
Повторная сборка Фрагменты передаются промежуточным маршрутизатором 1Р по 1Р-адресу места назначения. Фрагменты могут следовать различными маршрутами к месту назначения и прибывать в порядке, отличном от того, в котором они были посланы. Сами фрагменты могут быть фрагментированы во время их перемещения к конечному пункту назначения. Для повторной сборки фрагментов в исходный вид 1Р использует поля идентификации и адрес 1Р источника.
Когда узел места назначения получает фрагменты, он выделяет ресурсы для повторной сборки. Ресурсы повторной сборки состоят из буфера данных, буфера заголовка, таблицы битов блоков фрагментов, поля общей длины данных и таймера. Если это первый фрагмент (со сдвигом фрагмента, равным 0), то его заголовок помещается в буфер заголовка. Если это последний фрагмент (с флагом МР, равным 0), то вычисляется общая длина данных.
Стандарты IP задают по умолчанию таймер повторной сборки на 15 секунд. Если все фрагменты не будут получены в течение этого времени, они будут отброшены и источнику может быть послано сообщение ICMP о превышении времени ожидания. При получении фрагментов таймер задается как максимум текущего значения времени таймера и значения поля времени жизни из полученного фрагмента.
Прибывающие дополнительные фрагменты помещаются в буфер данных в порядке, согласно сдвигу фрагмента и длине, и соответствующие биты задаются в таблице битов блоков фрагментов. Когда приходит последний фрагмент (если все фрагменты в таблице битов блоков заданы как 1 для общей длины первоначальной нагрузки), повторная сборка завершена и полученная реконструированная полезная нагрузка доставляется соответствующему протоколу верхнего уровня.

Параметр точной маршрутизации от источника

Этот параметр очень похож на неопределенный маршрут от источника. Как можно видеть в распечатке ниже, поля выглядят почти идентично параметру неопределенной маршрутизации. Имеется поле кода параметра, который в данном случае содержит 137. Это код параметра точной маршрутизации от источника. Он равен 0x89 в шестнадцатеричном представлении, что видно в распечатке. Следующее поле определяет длину параметра, которая в данном случае также равна семи. Она будет меняться в зависимости от числа переходов, которое будет определено для места назначения. Это задается посылающей машиной так же, как и прежде. Указатель маршрутизации используется для отметки начала данных для первого маршрутизатора, как было и в случае параметра неопределенной маршрутизации от источника.
Можно использовать точную маршрутизацию от источника с целью тестирования, используя команду PING с параметром -к. Например, можно ввести PING -к 10.0.0.10 10.0.0.60. Первый адрес определяет место назначения, а второй и последующие адреса являются маршрутизаторами для использования в направлении места назначения. Что-нибудь подобное нельзя сделать с помощью команды TRACERT.
Параметр отметки времени Интернета Этот параметр работает аналогично параметру записи маршрута в том смысле, что посылающий узел создает последовательность пустых пробелов, которые заполняются маршрутизаторами на пути к месту назначения. Записи являются IP-адресом маршрутизатора и отметкой времени. Отметка времени — это 32-битное целое число, которое является числом миллисекунд, прошедших с полуночи универсального (т.е. гринвичского) времени. Если универсальное время недоступно маршрутизатору, то он может использовать что-то другое, но должен указать, что используется не универсальное время, задавая старший бит в поле отметки времени равным 1. Код параметра равен 68 (0x44). Он сообщает, что используется параметр отметки времени Интернета. Поле длины параметра задается посылающей машиной, но оно имеет максимальную длину 40 октетов, включая поля типа параметра, длины, указателя и флага переполнения. Как можно видеть в листинге, поле указателя времени сообщает, где начинается отметка времени. Это смещение от начала поля параметра 68. Наименьшее законное значение для этого поля равно пяти, что показано в приведенной ниже распечатке.
Следующее поле — это поле флага, использующее 0 для записи только отметки времени без IP-адресов, 1 для записи отметки времени с IP-адресом и 3 для определения посылающего узла и отметки времени, если он соответствует IP-адресу следующего маршрутизатора. В распечатке ниже задан флаг 1, это значение используется чаще всего.
Размер этого параметра не изменяется с числом собранных отметок времени. Если выделенная для отметок времени область будет исчерпана, то будет увеличиваться поле пропущенных станций. Поля шлюза и точки времени используются для хранения IP-адреса и отметки времени. Они заполняются маршрутизатором при ответе на дейтаграмму.

Параметр точной маршрутизации от источника

Этот параметр очень похож на неопределенный маршрут от источника. Как можно видеть в распечатке ниже, поля выглядят почти идентично параметру неопределенной маршрутизации. Имеется поле кода параметра, который в данном случае содержит 137. Это код параметра точной маршрутизации от источника. Он равен 0x89 в шестнадцатеричном представлении, что видно в распечатке. Следующее поле определяет длину параметра, которая в данном случае также равна семи. Она будет меняться в зависимости от числа переходов, которое будет определено для места назначения. Это задается посылающей машиной так же, как и прежде. Указатель маршрутизации используется для отметки начала данных для первого маршрутизатора, как было и в случае параметра неопределенной маршрутизации от источника.
Можно использовать точную маршрутизацию от источника с целью тестирования, используя команду PING с параметром -к. Например, можно ввести PING -к 10.0.0.10 10.0.0.60. Первый адрес определяет место назначения, а второй и последующие адреса являются маршрутизаторами для использования в направлении места назначения. Что-нибудь подобное нельзя сделать с помощью команды TRACERT.
Параметр отметки времени Интернета Этот параметр работает аналогично параметру записи маршрута в том смысле, что посылающий узел создает последовательность пустых пробелов, которые заполняются маршрутизаторами на пути к месту назначения. Записи являются IP-адресом маршрутизатора и отметкой времени. Отметка времени — это 32-битное целое число, которое является числом миллисекунд, прошедших с полуночи универсального (т.е. гринвичского) времени. Если универсальное время недоступно маршрутизатору, то он может использовать что-то другое, но должен указать, что используется не универсальное время, задавая старший бит в поле отметки времени равным 1. Код параметра равен 68 (0x44). Он сообщает, что используется параметр отметки времени Интернета. Поле длины параметра задается посылающей машиной, но оно имеет максимальную длину 40 октетов, включая поля типа параметра, длины, указателя и флага переполнения. Как можно видеть в листинге, поле указателя времени сообщает, где начинается отметка времени. Это смещение от начала поля параметра 68. Наименьшее законное значение для этого поля равно пяти, что показано в приведенной ниже распечатке.
Следующее поле — это поле флага, использующее 0 для записи только отметки времени без IP-адресов, 1 для записи отметки времени с IP-адресом и 3 для определения посылающего узла и отметки времени, если он соответствует IP-адресу следующего маршрутизатора. В распечатке ниже задан флаг 1, это значение используется чаще всего.
Размер этого параметра не изменяется с числом собранных отметок времени. Если выделенная для отметок времени область будет исчерпана, то будет увеличиваться поле пропущенных станций. Поля шлюза и точки времени используются для хранения IP-адреса и отметки времени. Они заполняются маршрутизатором при ответе на дейтаграмму.

Протокол IPX

Протокол IPX является протоколом третьего уровня без поддержки соединения, предназначенным для передачи дейтаграмм. Компания Novell адаптировала его из старого протокола межсетевых дейтаграмм (протокол IDP) стека Xerox (XNS).
Протокол без соединения
Поскольку он является протоколом без поддержки соединения, то когда процесс, выполняющийся на определенном узле, использует IPX для коммуникации с процессом на другом узле, между двумя узлами не устанавливается соединение. Таким образом, пакеты IPX адресуются и посылаются к своему месту назначения, но нет гарантии или проверки успешной доставки. Любое подтверждение пакета или управление соединением обеспечиваются протоколами выше IPX, такими как SPX. Термин дейтаграмма означает, что каждый пакет интерпретируется как отдельная сущность, не имеющая логической или последовательной связи с любым другим пакетом.
Работа на сетевом уровне модели 0SI
Как протокол сетевого уровня IPX адресует и маршрутизирует пакеты из одного местоположения в другое при межсетевом обмене IPX. IPX принимает решения о маршрутизации, просматривая поля адресов заголовка и на основе информации, которую он получает из RIP или NLSP. IPX использует эту информацию для пересылки пакетов в их узел назначения или следующему маршрутизатору, предоставляющему путь к узлу назначения.
Структура пакета
Так как протокол IPX был адаптирован из старого протокола XNS ГОР, не удивительно, что их структуры похожи. Пакет IPX состоит из двух частей. Первая часть является 30-байтовым заголовком, который содержит адреса сети, узла и сокета для машин источника и места назначения. Вторая часть является разделом данных, который иногда содержит заголовок протокола более высокого уровня, такого как SPX. Минимальный пакет IPX имеет 30 байтов (не считая заголовок MAC). Максимальный размер маршрутизированных пакетов IPX обычно имеет только 576 байтов, включая заголовок IPX и нагрузку данных. Однако при использовании IPX II это число возрастает до 1500 байтов.
Как было отмечено в главе 2 о TCP, сетевой уровень следует за заголовком MAC, поэтому IPX помещается после заголовка MAC и перед полезной нагрузкой. На рис. 3.2 показано, что заголовок IPX помещается внутри протокола MAC таким же образом, как описано в главе 2.