Функции межсетевого обмена сетевого уровня отвечают за выбор лучшего маршрута передачи пакетов в сети, создание сетевых адресов и коммуникационных маршрутов.
Маршрутизаторы используют протокол маршрутизации для обмена служебной информацией между собой, используют маршрутизируемый протокол для передачи пакетов пользователя, настраивают и поддерживают таблицы маршрутизации, находят сети, адаптируют изменения межсетевой топологии, используют адрес из двух частей и ограничивают распространение широковещательных рассылок.
Службы WAN
Х.25 Протокол Х.25 первоначально был разработан в 1970-х гг. для предоставления неинтеллектуальному терминалу соединения WAN через общедоступные сети данных (PDN — public data network). Однако благодаря своей гибкости и надежности он стал международным стандартом для пересылки данных через PDN.
Ориентированный на соединение интерфейс сети коммутации пакетов (PSN) предоставляет контроль ошибок и гарантированную доставку пакетов с помощью коммутируемых или виртуальных цепей. Благодаря своей надежности он используется для приложений, которые требуют надежной передачи. Маршрутизатор будет соединяться с ассемблером/дизассемблером пакетов (PAD) в сети Х.25. PAD отвечает за разбиение сообщений на пакеты и соответствующую их адресацию.
Спецификация Х.25 соответствует физическому, канальному и сетевому уровням модели OSI. Однако, так как спецификация Х.25 предшествовала модели OSI, названия уровней отличаются. Например, физический уровень называется Х.21 и определяет электрические и физические интерфейсы, которые могут использоваться. Второй уровень называется протоколом сбалансированной процедуры доступа к каналу (LAPB, Link Access Procedure Balanced), который заботится о создании кадра, управлении потоком и контроле ошибок. Уровень пакета соответствует сетевому уровню и отвечает за настройку и адресацию виртуальной цепи.
Frame Relay Отраслевой стандартный коммутируемый Протокол Frame Relay действует на канальном уровне. Он обрабатывает множество виртуальных каналов с помощью инкапсуляции HDLC между соединенными устройствами. Frame Relay использует высококачественную цифровую технику, делая методы контроля ошибок и управления потоком ненужными. Поэтому он является более эффективным и быстрым, чем протокол Х.25, в качестве замены которого он чаще всего рассматривается. Используя упрощенное кадрирование без исправления ошибок, Frame Relay может очень быстро посылать информацию своего уровня. Первоначально он зарождался как протокол для работы с интерфейсами ISDN, поэтому был разработан как независимый протокол.
Внутри Frame Relay коммутация PDN реализуется с помощью статистического метода мультиплексирования, а не с помощью временного разделения. При статистическом мультиплексировании доступные цепи формируются из устройств, которые в данный момент ничему не поставлены в соответствие. В связи с этими динамическими характеристиками сети реального времени, которые пульсируют по своей природе, являются идеальными кандидатами для Frame Relay.
Управление каналом осуществляется с помощью интерфейса локального управления (Local Management Interface, LMI). LMI отвечает за создание постоянного виртуального канала (PVC, Permanent Virtual Circuit) и мониторинг PVC. Так как цифровые каналы менее подвержены ошибкам, Frame Relay использует только алгоритм CRC для обнаружения плохих данных, но не использует никакого механизма для их исправления. Для управления потоком в канале Frame Relay полагается на верхние протоколы.
Поля источника и места назначения Рассмотрим структуру заголовка TCP. Для этого обратимся к рис. и разберем сегмент TCP, перехваченный сетевым монитором. Первое поле, которое встречается в заголовке TCP,— это порт источника, 16-разрядное поле, используемое для идентификации процесса на исходном компьютере, посылающем сегмент TCP целевому компьютеру. На рис. это 0x04-05 (десятичное 1029). Следующее поле (очевидно) является портом места назначения. Как и порт источника, это также 16-разрядное поле, которое используется для идентификации процесса на принимающей машине. На рисунке это порт telnet 0x17 (23).
Поле порядкового номера Теперь мы переходим к порядковому номеру. 32-разрядное поле используется для идентификации порядкового номера, который соответствует первому байту в этом сегменте. Упорядочивание TCP использует смещение байта в потоке данных для указания, где в потоке находятся данные. Когда флаг SYN (синхронизации) задается во время установления соединения, номер последовательности становится начальным порядковым номером (ISN). Когда данные посылаются, ISN увеличивается на 1. Это сообщает посылающей и принимающей машинам, где в потоке данных они работают.
Поле подтверждения Следующие 32 бита являются полем подтверждения, которое указывает посылающей машине, что предыдущий сегмент был получен без изменений. Это поле имеет значение, только если задан флаг АСК (подтверждение). Это поле очень важно для установленного соединения.
Трансляционный перенос (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.
Тип потока данных (DataStream) сообщает, какой тип данных переносится внутри пакета. Он может быть задан как специальное число, определенное приложением через Winsock. Самой важной функцией этого поля является обеспечение аккуратного разъединения сеанса. По умолчанию это будет одно из двух следующих сообщений:
• Конец соединения (End-of-Connection). Если тип потока данных задан как OxFE, то партнер по сеансу хочет прекратить сеанс.
• Конец соединения (End-of-Connection). Если тип потока данных задан как OxFF, то пакет передается, так как был получен запрос конца соединения.
Некоторые из других записей, встречающиеся в этом поле, включают числа, перечисленные в таблице
Идентификатор соединения источника и места назначения Это третье и четвертое поля из семи полей заголовка SPX. Поля идентификаторов сое динения источника и места назначения занимают два байта и используются для демультиплексирования сеансов SPX через единственный сокет на уровне IPX. Если идентификатор соединения места назначения задан как 0XFFFF, значит, это пакет начального соединения.
Порядковый номер Пятое поле в заголовке SPX является полем порядкового номера. Это двухбайтовое поле, содержащее счетчик переданных пакетов данных. Это число будет увеличиваться после получения подтверждения о передаче пакета данных.
Номер подтверждения Шестое поле является полем номера подтверждения, сообщающим номер последовательности следующего пакета SPX, который ожидается от партнера SPX.
Номер размещения Последнее поле заголовка SPX является полем номера размещения. Это поле сообщает номер буфера получения, который доступен на рабочей станции. Этот номер почти всегда больше, чем номер подтверждения. Доступность свободных буферов вычисляется, как размер окна, который равен номеру размещения минус номер подтверждения плюс один. Это поле используется как механизм управления потоком. Он работает следующим образом. Когда получающая сторона посылает номер размещения меньше номера подтверждения, отправитель не будет больше посылать данные, пока получающая сторона не пошлет пакет с номером размещения больше номера подтверждения.
Пример создания соединения Трассировка сетевого монитора, приведенная ниже, показывает последовательность успешной инициализации сеанса. Отметим, что идентификатор соединения места назначения задан как OxFFFF, а номер размещения как OxFFFF. Эта последовательность пакетов называется квитированием SPX.
Следующие примеры показывают интерфейс командной строки, позволяющий серверу предлагать дисковый ресурс, а клиенту соединяться и использовать этот ресурс.
a) NET SHARE
Команда NET SHARE при выполнении на сервере определяет имя каталога, который будет сделан доступным для клиентов в сети. Должно быть задано общее имя, которое предоставляется клиентам, желающим получить доступ к каталогу.
Примеры:
NET SHARE docs=c:\dirl\
Делает общедоступными все файлы в каталоге C:\DIR1 и его подкаталогах с общим именем docs в качестве имени, используемого для соединения с этим ресурсом.
b) NET USE
Клиенты могут получить доступ к одному или нескольким предлагаемым каталогам с помощью команды NET USE. Когда посылается команда NET USE, пользователь может свободно получить доступ к файлам без дополнительных специальных требований.
Примеры:
NET USE: d: \\SERVERl\DOCS отображает диск d: в общедоступный каталог DOCS на сервере Serverl. Пользователь может теперь обращаться к файлам на SERVER1 C:\DIR1, используя d:. Например, dir d: *.* выдаст список всех файлов на SERVER1 c:\dirl.
NET USE * \\SERVERl\DOCS mycoolpwd отображает следующий доступный диск, который использует DOCS на server 1, защищенный паролем mycoolpwd.
Для серверов уровня пользователя клиент обычно не должен предоставлять пароль с помощью команды NET USE. Если пользователю предлагается ввести пароль, обычно это указывает на сетевую проблему (например, он не может контактировать с контроллером домена, чтобы проверить полномочия). Этот сценарий предоставляет хорошую возможность проверить инструменты сетевого мониторинга (см. часть IV). Сейчас можно попробовать проверить, существует ли проблема безопасности:
NET USE * \\SERVERl\DOCS/USER:domainname\username password
Клиентское программное обеспечение должно помнить идентификатор диска, поставляемый вместе с запросом NET USE, и связать его со значением идентификатора дерева (TID), возвращаемого сервером в заголовке SMB. Последующие запросы, использующие этот TID, должны включать только имя пути доступа относительно присоединенного поддерева, так как сервер интерпретирует поддерево как корневой каталог (виртуальный корень). Когда пользователь ссылается на один из удаленных дисков, клиентское программное обеспечение просматривает свой список дисков для этого узла и включает идентификатор дерева, связываемый с этим диском в поле TID каждого запроса.
Отметим, что когда каталог объявляется общедоступным, будут затронуты все файлы, лежащие под этим каталогом. Если определенный файл находится внутри области нескольких общих ресурсов, то соединение с любой из областей общих ресурсов получает доступ к файлу с полномочиями, определенными для предложения, поименованного в NET USE. Сервер не будет проверять вложенные каталоги с более ограничительными полномочиями.
