Каждый уровень модели ОSI общается с нижележащим уровнем и зависит от него в обеспечении специальных служб и функциональности. Так как каждый уровень предоставляет службу, он добавляет информацию к данным приложения, чтобы можно было транспортировать информацию к машине места назначения. Конечно, добавленная специальная информация зависит от используемого стека протоколов, но, следуя общей модели, мы видим, что каждый уровень добавляет к данным заголовочную информацию, а в отдельных случаях также и концевик после данных, пока не будет получен аккуратно сформированный пакет, который отправляется в кабель.
Как показано на рис, каждый уровень добавляет заголовочную информацию, чтобы выполнить службу, требуемую приложению. Когда данные перемещаются вниз по модели OSI на посылающем компьютере, эта информация добавляется. На получающем компьютере заголовочная и концевая информация отбрасываются, когда данные перемещаются вверх по модели OSI.
Можно насчитать пять шагов, связанных с процессом инкапсуляции данных, когда они готовятся транспортным уровнем для отправки в кабель. Они перечислены ниже:
1. С верхних уровней получена информация от пользователя, например запрос регистрации на сервере, задание печати или поиск в Web. Информация преобразуется в данные, чтобы ее можно было транспортировать к месту назначения.
2. Данные подготовлены для транспортировки на целевой компьютер. В случае TCP к данным добавляется заголовок TCP, содержащий информацию об упорядочивании, помогающую сохранить все в порядке при преобразовании в сегменты.
3. На третьем уровне модели OSI находится протокол IP. Здесь будет добавлен заголовок IP, так как сегмент TCP преобразуется в пакет IP. Заголовок IP включает IP-адреса источника и места назначения, что поможет при маршрутизации (выполняемой на этом уровне модели OSI) пакета в соответствующее место назначения.
4. На уровне канала данных в нашем примере пакеты IP преобразуются в кадры Ethernet. Чтобы сетевое устройство могло общаться через локальный интерфейс с другим интерфейсом в сети, оно должно поместить пакет в кадр. Тип кадра должен совпадать, иначе устройства не смогут общаться. В примерах трассировок мы увидим, что кадры Ethernet создаются вокруг пакетов IP.
5. Теперь кадр Ethernet превращается в единицы и нули. Как говорилось ранее, эти биты перемещаются по сети особым образом, определенным методами доступа, пока не достигнут своего места назначения.
РРР является семейством протоколов, которые предоставляют мульти-протокольную инкапсуляцию, протокол контроля линии (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) вызова является информацией идентификации сеанса для этого пакета РРТР, за которым следуют номера последовательности и номер подтверждения — самый большой номер последовательности, полученный посылающим узлом этого сеанса. Номер последовательности используется для управления потоком, а не для повторной передачи потерянных кадров РРТР.
Трансляционный перенос (translational bridging) используется для соединения сетей со смешанной средой передачи, таких как сеть Token Ring и Ethernet. При этом может возникнуть проблема, связанная с тем, что MTU двух сетей существенно различаются. В сегменте Token Ring допустимо MTU от 4464 до 17914, в то время как в сегменте Ethernet MTU ограничено 1500. Если два сегмента соединены мостом, то может возникнуть ситуация, когда пакеты отбрасываются, потому что мост не может фрагментировать данные, как это делает маршрутизатор. Одно из решений — задать MTU на серверах NT, соединенных с сетью Token Ring, равным 1500, для гарантии, что пакеты не будут отброшены в связи с чрезмерным размером. Конечно, прежде чем это сделать, необходимо выполнить мониторинг сети, чтобы увидеть, были ли отброшены пакеты. Если это так, то может помочь следующая запись в реестре.
Поле времени жизни (TTL — time-to-live) имеет восемь битов в длину и следует за полем сдвига фрагмента. Это поле указывает максимальное время, в течение которого дейтаграмма может оставаться в Интернете. Если это поле содержит значение ноль, то дейтаграмма должна быть разрушена. Это поле изменяется при обработке заголовка IР. Время измеряется в единицах секунд, но так как каждый модуль, обрабатывающий дейтаграмму, должен уменьшить ТТL по крайней мере на единицу, даже если он занят этим менее секунды, TTL должно рассматриваться только как верхняя граница времени, в течение которого сможет существовать дейтаграмма. Цель состоит в том, чтобы отбрасывать дейтаграммы, которые невозможно доставить, связав это с максимальным временем жизни дейтаграммы. По умолчанию TTL в Windows NT версии 3.5Х равно 32 секундам; в Windows NT 4.0 оно было поднято до 128 секунд. Это значение по сути является пределом того, сколько маршрутизаторов может пройти дейтаграмма IP, прежде чем будет отброшена. Это значение можно изменить в реестре, как показано дальше:
Далее следует поле протокола, указывающее на протокол следующего уровня, используемый данными дейтаграммы IP. Для переноса этой информации используется восемь битов. Значения для различных протоколов определены в "Assigned Numbers" (Присвоенных номерах).
Потом идет поле контрольной суммы заголовка с 16 битами, выделенными для контрольной суммы только заголовка. Так как некоторые поля заголовка изменяются (например, время жизни), то она вычисляется повторно и проверяется в каждой точке, в которой обрабатывается заголовок IP. Для вычисления контрольной суммы суммируются дополнения до единиц всех 16-битных слов в заголовке, и к полученной сумме применяется операция 16-битного дополнения до единиц. Значение поля контрольной суммы задается равным нулю.
Следующие два поля являются адресом IP источника и адресом IP места назначения. Каждое из них имеет четыре октета. Именно здесь адреса IP включаются в обмен данными. Хотя это и важное поле, мы не собираемся тратить на него много времени, так как это может легко привести к обсуждению маршрутизации, широковещания и т.п. Эти вопросы будут рассмотрены позже, при обсуждении сетевого трафика.
Затем следует поле параметров, которое может появиться или не появиться в дейтаграммах. Они должны быть реализованы всеми модулями IP (хостом и шлюзами). Необязательным моментом является их передача в каждой конкретной дейтаграмме, а не их реализация. В некоторых средах параметр безопасности может потребоваться во всех дейтаграммах. Поле параметров имеет переменную длину. Параметры IP будут иметь размер от одного до 40 октетов. Это будет давать максимальный размер заголовка IP в 60 байтов. Может быть ноль или большее количество параметров. Каждый параметр начинается с кода типа параметра. Этот код делится на три поля, первое из которых является полем копирования. Если это поле задано как 1, то параметр должен быть скопирован во все фрагменты. Если оно задано как 0, то он используется только в первом фрагменте. Следующие два бита в октете кода параметра используются для указания класса используемого параметра. Если он задан как 0, то это управление дейтаграммой или сетью, если как 2, то он используется для отладки или измерения. Другие являются зарезервированными. Следующие пять битов используются для указания номера параметра в классе параметров.
Второй октет является длиной параметра, которая включает код типа параметра и октет длины, октет указателя и длину трех байтов данных о маршруте. Третий октет является указателем на данные о маршруте, указывающим октет, где начинается адрес следующего источника, который будет обрабатываться. Указатель связан с этим параметром, наименьшее законное значение для него равно 4. Некоторые из этих параметров перечислены в таблице 2.2.
Следующие рекомендации могут оказаться полезными при выделении проблемы.
• Можно видеть несколько идентификаторов сеансов, приходящих с одного компьютера. Попробуйте изолировать трассировку для определенного идентификатора сеанса, чтобы проверить его правильность.
• Посмотрите на число переходов и сравните физический уровень Ethernet с Token Ring. Проблема может быть связана с промежуточными маршрутизаторами или с размером пакета. Помните, что SPX не выполняет согласования пакетов.
• Обратите внимание на номер размещения и проверьте, что он больше номера подтверждения. Это проверка того, что отсутствует какая-либо проблема, связанная с переполнением буфера. В основном это происходит с 16-разрядными клиентами в реальном режим .
• Проверьте все повторные передачи пакетов данных. Обычно проблема повторной передачи проявляется как вопрос производительности. Проверьте интервал времени между отправкой данных и получением пакета АСК, чтобы проверить наличие временной задержки.
Ограничения протокола SPX Хотя SPX предоставляет транспорт с поддержкой соединения, SPX имеет несколько ограничений.
• Только один пакет может ожидать в любой момент времени.
• Коммуникация на основе SPX не делает никакого согласования пакета.
• SPX II использует максимальный размер пакета, допустимый сетью. Пример: 1518 байтов для Ethernet (SPX имеет максимум 576 байтов).
• Окна SPX II допускают несколько ожидающих пакетов и позволяют передавать отрицательное подтверждение (NAK), чтобы указать, что некоторые пакеты не были получены.
• SPX II допускает согласование пакетов. Пакет запроса согласования размера может посылаться в любое время в процессе коммуникации, если пакеты не доходят до места назначения.
Идентификатор соединения с источником Это поле содержит двухбайтовый номер соединения SPX, присвоенный станцией источника SPX и используемый для отслеживания различных виртуальных соединений SPX, которые может поддерживать сокет. Этот номер появится в идентификаторе соединения места назначения, когда прибудут пакеты от партнера по соединению для этой станции.
Идентификатор соединения с местом назначения Это поле содержит двухбайтовый номер соединения SPX, присвоенный станции места назначения SPX. Он используется для отслеживания различных виртуальных соединений SPX, которые может поддерживать сокет. Этот номер появится в идентификаторе соединения источника, когда пакеты посылаются партнеру по соединению.
Порядковый номер SPX присваивает порядковый номер каждому пакету данных, посланных партнеру по соединению. Этот номер увеличивается, когда пакет данных подтверждается, что обеспечивает упорядоченную передачу пакетов из источника в место назначения партнера по соединению. Это поле не увеличивается для пакетов, которые не содержат данных (системных пакетов).
Номер подтверждения Это ожидаемый номер последовательности для следующего пакета данных от партнера по соединению в месте назначения. Это поле не увеличивается для пакетов, которые не содержат данных (системных пакетов).
Номер размещения Этот номер используется для вычисления количества доступных для получения пакетов буферов, посланных из места назначения соединения. Он соответствует номеру последовательности пакета, который подготовлен для отправки, но еще не послан. Источник соединения не может превысить номер размещения. Когда источник соединения генерирует ЕСВ (блок управления событиями) приема, SPX увеличивает номер размещения. Это поле не увеличивается для пакетов, которые не содержат данных (системных пакетов).
Данные Запись данных (если они присутствуют) содержит любые данные или коды, которые посылаются на сервер и с сервера.
Поле сокета указывает пакет SPX, посылаемый клиентом на сервер. Со-кет клиента сервера будет 8060. Пакет содержит также некоторые имеющие отношение к SPX данные для целей соединения. Запись управления соединением в заголовке SPX показывает код COh, означающий, что пакет является системным пакетом, который требует подтверждения от сервера при получении.
Рассмотрим структуру заголовка IPX. Он состоит из следующих полей:
контрольная сумма (checksum) длина пакета (packet length)
• управление транспортом (transport control)
• тип пакета (packet type)
• сеть назначения (destination network)
• узел назначения (destination node)
• сокет назначения (destination socket)
• сеть источника (source network)
• узел источника (source node)
• сокет источника (source socket)
Контрольная сумма Поле контрольной суммы используется для обеспечения целостности пакета. Контрольная сумма используется новыми версиями Netware, так как 3.x и более ранние версии задают поле как OxFFFF и не используют контрольную сумму.
Длина пакета Поле длины пакета является длиной заголовка IPX плюс длина данных в байтах. Длина пакета должна быть не менее 30 байтов, чтобы предоставить достаточно места для заголовка IPX.
Управление транспортом Управление транспортом является числом маршрутизаторов, которые пересек пакет на пути к месту назначения. Посылающие узлы при создании пакета IPX всегда задают это поле как ноль. Когда маршрутизатор получает пакет, требующий дальнейшей маршрутизации для достижения конечного места назначения, значение поля увеличивается на единицу и пакет передается дальше.
Тип пакета Поле типа пакета указывает вид службы, которая либо предлагается, либо требуется пакету. В таблице 3.2 перечислены некоторые часто используемые типы пакетов, которые могут встретиться в трассировках сетей.
Сеть назначения Сеть назначения является номером сети, к которой присоединен узел назначения. Когда посылающий компьютер задает это поле как 0x0, предполагается, что узел назначения находится в том же сетевом сегменте, что и посылающий узел.
Существует особый случай, когда рабочая станция посылает широковещательные запросы протоколов маршрутизации SAP — Get Neareast Server (Найти ближайший сервер) и RIP — Get Local Target (Найти локального получателя) (или Route Request — Запрос маршрута) во время инициализации. Так как рабочая станция еще не знает, к какой сети принадлежит, она задает поля сети источника и сети назначения как 0 для этих запросов. Когда маршрутизатор получает один из этих запросов, он посылает ответ непосредственно посылающей рабочей станции, заполняя поля сети источника и сети назначения соответствующими сетевыми номерами.
В дополнение к сетевому номеру 0 номера OxFFFFFFFF и OxFFFFFFFE зарезервированы для специальных целей. В связи с этим они не должны назначаться никакой сети IPX. Дополнительную информацию о зарезервированных сетевых номерах можно найти ниже в разделе о зарезервированных номерах.
Узел назначения Поле узла назначения содержит физический адрес узла назначения. Узел в сети Ethernet будет использовать все шесть байтов этого поля для определения своего адреса. Некоторые другие методы доступа к сети могут использовать здесь меньше шести байтов. Адрес узла OxFFFFFFFFFFFF (т.е. шесть байтов по OxFF) посылает пакет всем узлам в сети назначения.
Сокет назначения Поле сокета назначения является адресом сокета процесса назначения пакета. Эти сокеты будут направлять пакеты в различные процессы внутри одной машины.
Сеть источника Поле сети источника является номером сети, к которой присоединен узел источника. Если посылающий узел задает это поле равным нулю, это означает, что локальная сеть машины источника неизвестна. Для маршрутизаторов правила, применяемые к полю сети назначения, также применимы к полю сети источника, за исключением того, что маршрутизаторы могут пересылать полученные пакеты, у которых это поле задано как ноль.
