Хотите знать больше?!. Мой e-mail: tropikanka@ukr.net (tropikanka@rin.ru)


Передача данных по сети

http://www.do.rksi.ru/library/courses/kts/tema3_3.dbk

Ключевой термин: пакет.

Пакет - единица информации, передаваемой по компьютерной сети.

Второстепенные термины

  • заголовок - часть пакета, содержащий следующую информацию:

    • адрес источника;

    • адрес местоназначения;

    • информацию, синхронизирующую передачу.

  • данные - это часть пакета, содержащая собственно передаваемые данные;

  • трейлер (или концевик) - это часть пакета, содержащая информацию для проверки ошибок при приеме пакета.

Назначение пакетов

Данные обычно содержатся в больших по размерам файлах. Однако сети не будут нормально работать, если компьютер посылает этот блок данных целиком. Существует две причины, замедляющие работу сети при передаче по кабелю больших блоков данных.

Во-первых, такой блок, посылаемый одним компьютером, заполняет кабель и "связывает" работу всей сети, т.е. препятствует взаимодействию остальных сетевых компонентов.

Во-вторых, возникновение ошибок при передаче крупных блоков приводит к повторной передаче всего блока. А если поврежден небольшой блок данных, то требуется повторная передача именно этого небольшого блока, что значительно экономит время.

Чтобы быстро и легко, не тратя времени на ожидания, передавать по сети данные, надо разбить их на небольшие управляемые блоки. Эти блоки называются пакетами или кадрами. Хотя термины "пакет" и "кадр" синонимичны, полными синонимами они все-таки не являются. Существуют различия между этими терминами в компьютерных сетях некоторых типов.

Пакет - основная единица информации в компьютерных сетях. При разбиении данных на пакеты скорость их передачи возрастает настолько, что каждый компьютер в сети получает возможность принимать и передавать данные практически одновременно с остальными компьютерами. На целевом компьютере (компьютере-получателе) пакеты накапливаются и выстраиваются в должном порядке для восстановления исходного вида данных.

При разбиении данных на пакеты сетевая операционная система добавляет к каждому пакету специальную управляющую информацию. Она обеспечивает:

  • передачу исходных данных небольшими блоками;

  • сбор данных в надлежащем порядке (при их получении);

  • проверку данных на наличие ошибок (после сборки).

Структура пакета

Пакеты могут содержать несколько типов данных:

  • информацию (например, сообщения или файлы);

  • определенные виды данных и команд, управляющих компьютером (например, запросы к службам);

  • коды управления сеансом (например, запрос на повторную передачу для исправления ошибки).

Основные компоненты

Некоторые компоненты являются обязательными для всех типов пакетов:

  • адрес источника (source), идентифицирующий компьютер-отправитель;

  • передаваемые данные;

  • адрес местоназначения (destination), идентифицирующий компьютер-получатель;

  • инструкции сетевым компонентам о дальнейшем маршруте данных;

  • информация компьютеру-получателю о том, как объединить передаваемый пакет с остальными, чтобы получить данные в исходном виде;

  • информация для проверки ошибок, обеспечивающая корректность передачи.

Компоненты пакета группируются в три раздела: заголовок, данные и трейлер.

Рисунок 3.3.3. Компоненты пакета

Заголовок

Заголовок включает:

  • сигнал, "говорящий" о том, что передается пакет;

  • адрес источника;

  • адрес местоназначения;

  • информацию, синхронизирующую передачу.

Данные

Эта часть пакета - собственно передаваемые данные. В зависимости от типа сети ее размер может меняться. Но для большинства сетей он составляет от 512 байтов (0,5 Кб) до 4 Кб.

Так как обычно размер исходных данных гораздо больше 4 Кб, для помещения в пакет их необходимо разбивать на меньшие блоки. При передаче объемного файла может потребоваться много пакетов.

Трейлер

Содержимое трейлера зависит от метода связи, или протокола. Впрочем, чаще всего трейлер содержит информацию для проверки ошибок, называемую циклическим избыточным кодом (Cyclical Redundancy Check, CRC). CRC - это число, получаемое в результате математических преобразований над пакетом и исходной информацией. Когда пакет достигает местоназначения, эти преобразования повторяются. Если результат совпадает с CRC - пакет принят без ошибок. В противном случае - при передаче данные изменились, поэтому необходимо повторить передачу пакета.

Рисунок 3.3.4. Сформированный пакет

Формат и размер пакета зависят от типа сети. А максимальный размер пакета определяет, в свою очередь, количество пакетов, которое будет создано сетевой операционной системой для передачи большого блока данных.

Формирование пакетов

Процесс формирования пакета начинается на Прикладном уровне модели OSI, т.е. там, где "рождаются" данные. Информация, которую надо переслать по сети, проходит сверху вниз все семь уровней, начиная с Прикладного.

На каждом уровне компьютера-отправителя к блоку данных добавляется информация, предназначенная для соответствующего уровня компьютера-получателя. Например, информация, добавленная на Канальном уровне компьютера-отправителя, будет прочитана Канальным уровнем компьютера-получателя.

Рисунок 3.3.5. Формирование пакета

Транспортный уровень разбивает исходный блок данных на пакеты. Структура пакетов определяется протоколом, который используют два компьютера - получатель и отправитель. На Транспортном уровне, кроме того, к пакету добавляется информация, которая поможет компьютеру-получателю восстановить исходные данные из последовательности пакетов. Когда, завершив свой путь к кабелю, пакет проходит Физический уровень, он содержит информацию всех остальных шести уровней.

Адресация пакета

Большинство пакетов в сети адресуется конкретному компьютеру, и, как результат, только он один реагирует на них. Каждая плата сетевого адаптера "видит" все пакеты, передаваемые по сегменту кабеля, но только при совпадении адреса пакета с адресом компьютера она прерывает его работу. Используется также и широковещательная адресация (broadcast addressing). На пакет с таким типом адреса одновременно реагирует множество компьютеров в сети.

В крупномасштабных сетях, покрывающих огромные территории (или государства), предлагается несколько возможных маршрутов для передачи данных. Коммутирующие и соединяющие сетевые компоненты используют адресную информацию пакетов для определения наилучшего из маршрутов.

Рассылка пакетов

Сетевые компоненты используют адресную информацию пакетов и для других целей: чтобы направлять пакеты по местоназначению и не допускать их в те области сети, к которым они не относятся. В правильной рассылке пакетов ключевую роль играют две функции.

  • продвижение пакетов

    Компьютер может отправить пакет на следующий подходящий сетевой компонент, основываясь на адресе из заголовка пакета.

  • фильтрация пакетов

    Компьютер может отбирать определенные пакеты на основе некоторых критериев, например адреса.

Выводы по теме

  1. Пакет - единица информации, передаваемой по компьютерной сети.

  2. При разбиении данных на пакеты сетевая операционная система добавляет к каждому пакету специальную управляющую информацию.

  3. Компоненты пакета группируются в три раздела: заголовок, данные и трейлер.

  4. Формат и размер пакета зависят от типа сети.

  5. Процесс формирования пакета начинается на Прикладном уровне модели OSI.

  6. Информация, которую надо переслать по сети, проходит сверху вниз все семь уровней, начиная с Прикладного.

  7. На каждом уровне компьютера-отправителя к блоку данных добавляется информация, предназначенная для соответствующего уровня компьютера-получателя.

  8. Большинство пакетов в сети адресуется конкретному компьютеру, и, как результат, только он один реагирует на них.

  9. Используется также и широковещательная адресация (broadcast addressing). На пакет с таким типом адреса одновременно реагирует множество компьютеров в сети.

  10. В правильной рассылке пакетов ключевую роль играют две функции: продвижение пакетов и фильтрация пакетов.

Вопросы для самоконтроля

  1. Объясните термин: "пакет".

  2. Для чего данные, передаваемые по компьютерной сети, разбивают на пакеты?

  3. Какую функцию играет специальная управляющая информация, которую сетевая операционная система добавляет к каждому пакету?

  4. Какова структура пакета?

  5. Какие функции в правильной рассылке пакетов играют ключевую роль?

  6. Что означает термин "продвижение" пакетов?

  7. Что означает термин "фильтрация" пакетов?

Расширяющий блок

Структура IP-пакета

IP-пакет состоит из заголовка и поля данных. Заголовок, как правило, имеющий длину 20 байт, имеет следующую структуру (рис. 3.3.7).

Поле Номер версии (Version), занимающее 4 бит, указывает версию протокола IP. Сейчас повсеместно используется версия 4 (IPv4), и готовится переход на версию 6 (IPv6).

Поле Длина заголовка (IHL) IP-пакета занимает 4 бит и указывает значение длины заголовка, измеренное в 32-битовых словах. Обычно заголовок имеет длину в 20 байт (пять 32-битовых слов), но при увеличении объема служебной информации эта длина может быть увеличена за счет использования дополнительных байт в поле Опции (IP Options). Наибольший заголовок занимает 60 октетов.

Поле Тип сервиса (Type of Service) занимает один байт и задает приоритетность пакета и вид критерия выбора маршрута. Первые три бита этого поля образуют подполе приоритета пакета (Precedence). Приоритет может иметь значения от самого низкого - 0 (нормальный пакет) до самого высокого - 7 (пакет управляющей информации). Маршрутизаторы и компьютеры могут принимать во внимание приоритет пакета и обрабатывать более важные пакеты в первую очередь. Поле Тип сервиса содержит также три бита, определяющие критерий выбора маршрута. Реально выбор осуществляется между тремя альтернативами: малой задержкой, высокой достоверностью и высокой пропускной способностью. Установленный бит D (delay) говорит о том, что маршрут должен выбираться для минимизации задержки доставки данного пакета, бит Т - для максимизации пропускной способности, а бит R - для максимизации надежности доставки. Во многих сетях улучшение одного из этих параметров связано с ухудшением другого, кроме того, обработка каждого из них требует дополнительных вычислительных затрат. Поэтому редко, когда имеет смысл устанавливать одновременно хотя бы два из этих трех критериев выбора маршрута. Зарезервированные биты имеют нулевое значение.

Рисунок 3.3.6. Структура заголовка IP-пакета

Поле Общая длина (Total Length) занимает 2 байта и означает общую длину пакета с учетом заголовка и поля данных. Максимальная длина пакета ограничена разрядностью поля, определяющего эту величину, и составляет 65 535 байт, однако в большинстве хост-компьютеров и сетей столь большие пакеты не используются. При передаче по сетям различного типа длина пакета выбирается с учетом максимальной длины пакета протокола нижнего уровня, несущего IP-пакеты. Если это кадры Ethernet, то выбираются пакеты с максимальной длиной в 1500 байт, умещающиеся в поле данных кадра Ethernet. В стандарте предусматривается, что все хосты должны быть готовы принимать пакеты вплоть до 576 байт длиной (приходят ли они целиком или по фрагментам). Хостам рекомендуется отправлять пакеты размером более чем 576 байт, только если они уверены, что принимающий хост или промежуточная сеть готовы обслуживать пакеты такого размера.

Поле Идентификатор пакета (Identification) занимает 2 байта и используется для распознавания пакетов, образовавшихся путем фрагментации исходного пакета. Все фрагменты должны иметь одинаковое значение этого поля.

Поле Флаги (Flags) занимает 3 бита и содержит признаки, связанные с фрагментацией. Установленный бит DF (Do not Fragment) запрещает маршрутизатору фрагментировать данный пакет, а установленный бит MF (More Fragments) говорит о том, что данный пакет является промежуточным (не последний) фрагментом. Оставшийся бит зарезервирован.

Поле Смещение фрагмента (Fragment Offset) занимает 13 бит и задает смещение в байтах поля данных этого пакета от начала общего поля данных исходного пакета, подвергнутого фрагментации. Используется при сборке/разборке фрагментов пакетов при передачах их между сетями с различными величинами MTU. Смещение должно быть кратно 8 байт.

Поле Время жизни (Time to Live) занимает один байт и означает предельный срок, в течение которого пакет может перемещаться по сети. Время жизни данного пакета измеряется в секундах и задается источником передачи. На маршрутизаторах и в других узлах сети по истечении каждой секунды из текущего времени жизни вычитается единица; единица вычитается и в том случае, когда время задержки меньше секунды. Поскольку современные маршрутизаторы редко обрабатывают пакет дольше, чем за одну секунду, то время жизни можно считать равным максимальному числу узлов, которые разрешено пройти данному пакету до того, как он достигнет места назначения. Если параметр времени жизни станет нулевым до того, как пакет достигнет получателя, этот пакет будет уничтожен. Время жизни можно рассматривать как часовой механизм самоуничтожения. Значение этого поля изменяется при обработке заголовка IP-пакета.

Идентификатор Протокол верхнего уровня (Protocol) занимает один байт и указывает, какому протоколу верхнего уровня принадлежит информация, размещенная в поле данных пакета (например, это могут быть сегменты протокола TCP, дейтаграммы UDP, пакеты ICMP или OSPF). Значения идентификаторов для различных протоколов приводятся в документе RFC "Assigned Numbers".

Контрольная сумма (Header Checksum) занимает 2 байта и рассчитывается только по заголовку. Поскольку некоторые поля заголовка меняют свое значение в процессе передачи пакета по сети (например, время жизни), контрольная сумма проверяется и повторно рассчитывается при каждой обработке IP-заголовка. Контрольная сумма - 16 бит - подсчитывается как дополнение к сумме всех 16-битовых слов заголовка. При вычислении контрольной суммы значение самого поля "контрольная сумма" устанавливается в нуль. Если контрольная сумма неверна, то пакет будет отброшен, как только ошибка будет обнаружена.

Поля IP-адрес источника (Source IP Address) и IP-адрес назначения (Destination IP Address) имеют одинаковую длину - 32 бита - и одинаковую структуру.

Поле Опции (IP Options) является необязательным и используется обычно только при отладке сети. Механизм опций предоставляет функции управления, которые необходимы или просто полезны при определенных ситуациях, однако он не нужен при обычных коммуникациях. Это поле состоит из нескольких подполей, каждое из которых может быть одного из восьми предопределенных типов. В этих подполях можно указывать точный маршрут прохождения маршрутизаторов, регистрировать проходимые пакетом маршрутизаторы, помещать данные системы безопасности, а также временные отметки. Так как число подполей может быть произвольным, то в конце поля Опции должно быть добавлено несколько байт для выравнивания заголовка пакета по 32-битной границе.

Поле Выравнивание (Padding) используется для того, чтобы убедиться в том, что IP-заголовок заканчивается на 32-битной границе. Выравнивание осуществляется нулями.

Формат пакета протокола IPX

Пакет протокола IPX имеет гораздо более простую структуру по сравнению с пакетом IP, что, собственно, и отражает меньшие функциональные возможности протокола IPX.

IPX-пакет имеет следующие поля.

  • Контрольная сумма (Checksum) - это 2-байтовое поле, являющееся "пережитком прошлого", которое протокол IPX ведет от протокола ГОР стека Xerox. Так как низкоуровневые протоколы (например, Ethernet) всегда выполняют проверку контрольных сумм, то IPX не использует это поле и всегда устанавливает его в единицы.

  • Длина (Length) занимает 2 байта и задает размер всего пакета, включая IPX-заголовок и поле данных. Самый короткий пакет - 30 байт - включает только IPX-заголовок, а рекомендуемый максимально большой - 576 байт - включает IPX-заголовок плюс 546 байт данных. Максимальный размер пакета в 576 байт соответствует рекомендациям стандартов Internet для составных сетей. Протокол IPX вычисляет значение этого поля, основываясь на информации, предоставляемой прикладной программой при вызове функции IPX. IPX-пакет может превосходить рекомендуемый максимум в 576 байт, что и происходит в локальных сетях Ethernet, где используются IPX-пакеты в 1500 байт с полем данных в 1470 байт.

  • Управление транспортом (Transport control) имеет длину 8 бит. Это поле определяет время жизни пакета в хопах. IPX-пакет может пересечь до 15 маршрутизаторов. Протокол IPX устанавливает это однобайтовое поле в 0 до начала передачи, а затем увеличивает его на 1 каждый раз, когда пакет проходит через маршрутизатор. Eu,ui счетчик превысит 15, то пакет аннулируется.

  • Тип пакета (Packet type) имеет длину 8 бит. Фирма Xerox определила в свое время определенные значения для различных типов пакетов: прикладные программы, посылающие IPX-пакеты, должны устанавливать это поле в значение, равное 4. Значение 5 соответствует служебным IPX-пакетам, используемым протоколом SPX в качестве служебных сообщений. Значение 17 указывает на то, что в поле данных IPX-пакета находится сообщение протокола NetWare Core Protocol (NCP) - основного протокола файловой службы NetWare.

  • Адрес назначения (Destination address) - состоит из трех полей: номера сети назначения, номера узла назначения, номера сокета назначения. Эти поля занимают соответственно 4, 6 и 2 байта.

  • Адрес отправителя (Source address) - номер исходной сети, номер исходного узла, номер исходного сокета. Аналогичны адресным полям назначения.

  • Поле данных (Data). Может занимать от 0 до 546 байт. Поле данных нулевой длины может использоваться в служебных пакетах, например, для подтверждения получения предыдущего пакета.

Из анализа формата пакета можно сделать некоторые выводы об ограничениях протокола IPX.

  • Отсутствует возможность динамической фрагментации на сетевом уровне. В IPX-пакете нет полей, с помощью которых маршрутизатор может разбить слишком большой пакет на части. При передаче пакета в сеть с меньшим значением MTU IPX-маршрутизатор отбрасывает пакет. Протокол верхнего уровня, например NCP, должен последовательно уменьшать размер пакета до тех пор, пока не получит на него положительную квитанцию.

  • Большие накладные расхдды на служебную информацию. Сравнительно небольшая максимальная длина поля данных IPX-пакета (546 байт при длине заголовка 30 байт) приводит к тому, что как минимум 5 % данных являются служебными.

  • Время жизни пакета ограничено числом 15, что может оказаться недостаточным для большой сети (для сравнения, в IP-сетях пакет может пройти до 255 промежуточных маршрутизаторов).

  • Отсутствует поле качества сервиса, что не позволяет маршрутизаторам автоматически подстраиваться к требованиям приложения к качеству передачи трафика.

Кроме того, некоторые недостатки сетей Novell связаны не с протоколом IPX, a со свойствами других протоколов стека IPX/SPX. Многие недостатки проявляются при работе стека IPX/SPX на медленных глобальных линиях связи, и это закономерно, так как ОС NetWare оптимизировалась для работы в локальной сети.

Например, неэффективная работа по восстановлению потерянных и искаженных пакетов на низкоскоростных глобальных каналах обусловлена тем, что протокол NCP, который выполняет эту работу, использует метод получения квитанций с простоями. В локальных сетях со скоростью 10 Мбит/с такой метод работал вполне эффективно, а на медленных каналах время ожидания квитанции заметно тормозит работу передающего узла.

В версиях ОС NetWare до 4.0 соответствие символьных имен серверов их сетевым адресам устанавливалось только с помощью широковещательного протокола Service Advertising Protocol (SAP). Однако широковещательные рассылки заметно засоряют медленные глобальные каналы. Модернизируя свой стек для применения в крупных корпоративных сетях, компания Novell использует теперь справочную службу NDS (NetWare Directory Services) для нахождения разнообразной информации об имеющихся в сети ресурсах и службах, в том числе и о соответствии имени сервера его сетевому адресу. Так как служба NDS поддерживается только серверами с версией NetWare 4.x и выше, то для работы с версиями NetWare 3.x маршрутизаторы распознают SAP-пакеты по номеру их сокета и передают их на все порты, имитируя широковещательные рассылки локальной сети, на что тратится значительная часть пропускной способности медленных глобальных линий. Кроме того, такая "псевдошироковещательность" сводит на нет изоляцию сетей от некорректных SAP-пакетов.

В последних версиях своей операционной системы NetWare компания Novell значительно модифицировала свой стек для того, чтобы он мог более эффективно использоваться в крупных составных сетях.

  • Служба NDS позволяет отказаться от широковещательного протокола SAP. Служба NDS основана на иерархической распределенной базе данных, хранящей информацию о пользователях и разделяемых ресурсах сети. Приложения обращаются к этой службе по протоколу прикладного уровня NDS.

  • Добавлен модуль для реализации метода скользящего окна - так называемый Burst Mode Protocol NLM.

  • Добавлен модуль для поддержки длинных IPX-пакетов в глобальных сетях -Large Internet Packet NLM.

Кроме того, постоянное повышение быстродействия глобальных служб уменьшает недостатки оригинальных протоколов стека IPX/SPX, что позволяет некоторым обозревателям говорить об успешной работе операционной системы NetWare в глобальных сетях и без указанных нововведений.