Понятие протокола, и связанные с ним понятия

Вид материалаДокументы

Содержание


Протокол IP (Internet Protocol).
Структура IP-пакета
Hlen, IHL (длина IP заголовка) 4 бита
Type of Service
Length, Total Length
Flags (различные управляющие флаги) 16 бит бит 0 зарезервирован, должен быть нуль бит 1 (DF
MF) 0 – последний фрагмент, 1 – будут еще фрагменты Fragment Offset
Header Checksum
Source Address
Флаг копирования
Адресация в IP-протоколе
Форматы адресации
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   20

Протокол IP (Internet Protocol).

Место протокола IP в иерархии протоколов сети Internet.


Сетевой протокол IP (Internet) создан для использования в объединенных системах компьютерных коммуникационных сетей с коммутацией пакетов.

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

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

Это обеспечивает гибкость протокола IP применительно к динамически меняющейся топологии сети (как мы помним, для таких сетей он изначально и создавался). Обратной стороной медали является относительная «прожорливость» протокола IP по вычислительным затратам маршрутизаторов, чему также способствует гибкость системы IP-адресации. По этой причине, хотя формирование стека протоколов TCP/IP было вчерне завершено к началу 80-х годов, и с этого времени началось его внедрение, прошло еще около 10 лет, пока он вышел на лидирующее положение по темпам ввода новых сетей и узлов, и около 15 лет, пока он стал лидером по абсолютному количеству узлов/сетей2.

Например, модуль TCP вызывает модуль IP с тем, чтобы получить сегмент TCP (включая заголовок TCP и данные пользователя) как информационную часть IP пакета. Модуль TCP обеспечивает адреса и другие параметры в заголовке модуля IP в качестве параметров рассматриваемого вызова. Модуль IP в этом случае создает пакет IP и прибегает к услугам локальной сети для передачи пакета IP. Обнаруженные ошибки и реакция на них обеспечиваются посредством протокола ICMP (Internet Control Message Protocol).

Протокол IP выполняет две главные функции: адресацию и фрагментацию.

Модули IP используют адреса, помещенные в заголовок Internet, для передачи IP-пакетов их получателям. Выбор пути передачи называется маршрутизацией.

Модули IP используют поля в заголовке Internet для фрагментации и восстановления пакетов, когда это необходимо для их передачи через сети с малым размером пакетов.

Модуль IP может менять размер пакета на каждом из хостов, задействованных в internet-коммуникации и на каждом из маршрутизаторов (шлюзов), обеспечивающих взаимодействие между сетями. Эти модули придерживаются общих правил для интерпретации полей адресов, для фрагментации и сборки Internet пакетов. Следует учесть, что на промежуточных узлах выполняется только фрагментация (если она нужна), сборка исходного пакета из фрагментов выполняется только узлом-получателем, поскольку для промежуточного узла нет гарантии, что все пакеты, образованные при фрагментации исходного пакета, пройдут через данный промежуточный узел. Кроме этого, данные модули, особенно маршрутизаторы (шлюзы) имеют процедуры для принятия решений о маршрутизации, для формирования сообщений об особых ситуациях (протокол ICMP), а также другие функции.

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

Тип сервиса (обслуживания) используется для обозначения требуемой услуги. Тип сервиса – это абстрактный или обобщенный набор параметров, который характеризует набор услуг, предоставляемых сетями, и составляющих собственно протокол IP. Этот способ обозначения услуг должен использоваться шлюзами для выбора рабочих параметров передачи в конкретной сети, для выбора сети, используемой при следующем переходе пакета, для выбора следующего шлюза при маршрутизации сетевого IP пакета.

Механизм времени жизни служит для указания верхнего предела времени жизни IP-пакета. Этот параметр устанавливается отправителем пакета и уменьшается в каждой точке на проходимом пакетом маршруте. Если параметр времени жизни станет нулевым до того, как пакет достигнет получателя, эта пакет будет уничтожен. Время жизни можно рассматривать как часовой механизм самоуничтожения. К сожалению, в сложной сети с динамически изменяющейся топологией даже эпизоды зацикливания пакетов представляют собой хотя и редкую, но типичную ситуацию. Помимо того, что пакеты в этом случае не доставляются адресату, вредное влияние зацикливания проявляется еще двояким образом. Во-первых, зациклившиеся пакеты, естественно, создают дополнительную нагрузку на каналы и коммуникационное оборудование. Во-вторых, переданная информация со временем устаревает, и в ряде случаев, «запоздавший» пакет, будучи все же доставлен по назначению, может причинить больше вреда, чем пользы. Механизм «времени жизни» препятствует таким негативным эффектам, очищая сеть от «заблудившихся» пакетов.

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

Контрольная сумма заголовка обеспечивает проверку того, что информация, используемая для обработки пакетов IP, передана правильно. Данные могут содержать ошибки. Если контрольная сумма неверна, то IP-пакет будет уничтожен, как только ошибка будет обнаружена.

Оригинальная версия спецификации IP-протокола (версия 4) – документ RFC-791 размещается на сервере ISI (Information Sciences Institute):

URL = ссылка скрыта

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




Ver (Version) (версия) 4 бита

Поле версии показывает формат заголовка IP. В настоящее время используется 4 версия, и соответствующее поле содержит значение 4.

Hlen, IHL (длина IP заголовка) 4 бита


Длина IP заголовка измеряется в словах по 32 бита (4 байта) каждое и указывает на начало поля данных. Заметим, что корректный заголовок может иметь минимальный размер 5 слов. Максимальный определяется разрядностью поля длины и составляет, следовательно, 15 слов, то есть 60 байт.

Type of Service (тип сервиса) 8 бит

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

Что касается особенностей обслуживания, здесь выбор осуществляется между тремя альтернативами: малой задержкой, высокой достоверностью и высокой пропускной способностью. С начала 90-х годов была добавлена четвертая – минимальная цена.

биты 0–2 приоритет

бит 3 0 – нормальная задержка, 1 – малая задержка

бит 4 0 – нормальная пропускная способность, 1 – высокая пропускная способность.

бит 5 0 – обычная достоверность, 1 – высокая достоверность

биты 6–7 согласно RFC-791 зарезервированы, впоследствии бит 6 используется как признак оптимизации по стоимости 0 – обычная стоимость, 1 – малая стоимость. Для бита 7 предлагалось 0 – обычная безопасность, 1 – максимальная безопасность.

Приоритет

111 (7) – управление сетью. Значение "управление сетью" следует присваивать приоритету только для использования внутри локальной сети. Управление и реальное использование этого аргумента должно находиться в согласии с каждой применяющей его сетью.

110 (6) – межсетевое управление. Предназначен только для использования маршрутизаторами (шлюзами), берущими на себя управление.

101 (5) - CRITIC/ECP

100 (4) – более, чем мгновенно

011 (3) – мгновенно

010 (2) – немедленно

001 (1) – приоритетно

000 (0) – обычный приоритет

Использование индикации задержки, пропускной способности, достоверности и стоимости может, в некотором смысле, увеличить затраты на обслуживание. В частности, очевидно, что для того, чтобы выбирать маршруты с учетом заявленных требований, маршрутизатор должен вести не одну, а 4 таблицы маршрутизации – по одной на каждый тип сервиса (и, возможно, пятую – на случай, когда ни один признак не установлен). В большинстве сетей улучшение одного из этих параметров связано с ухудшением другого или других. Исключения, когда имело бы смысл устанавливать два из этих четырех признаков, очень редки. Первым протоколом динамической маршрутизации, поддерживающим метрики для типов сервиса, был OSPF, разработанный в 1991 году – и это при том, что первые 3 типа сервиса заявлены RFC-791 уже в 1980 году!

Тип обслуживания используется для указания типа обработки пакета при ее прохождении через систему Internet. Примеры отображения типа обслуживания в протоколе Internet на реальные услуги, предоставляемые такими сетями, как AUTODIN II, ARPANET, SATNET и PRNET даны в документе "Service Mapping".

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

Length, Total Length (общая длина) 16 бит

Общая длина – это длина пакета, измеренная в байтах, включая IP заголовок и поле данных. Это поле может задавать длину пакета вплоть до 65535 байтов. В большинстве хост-компьютеров и сетей столь большие пакеты не используются. Все хосты должны быть готовы принимать пакет вплоть до 576 байтов длиной (приходят ли они целиком или по фрагментам). Хостам рекомендуется отправлять пакеты размером более чем 576 байтов, только если они уверены, что принимающий хост готов обслуживать пакеты повышенного размера. Для большинства сетевых технологий общая длина пакета может быть получена от канального уровня, так что это поле выглядит избыточным. Увы, это не совсем так. Некоторые сетевые технологии, в том числе такая распространенная, как Ethernet, ограничивают минимальную длину кадра, и, как ни мало это ограничение (46 байт данных для Ethernet), IP-пакет может оказаться еще меньше. В этом случае без поля длины невозможно установить, где кончается пакет и начинается заполнение.

Identification (идентификатор) 16 бит

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

Flags (различные управляющие флаги) 16 бит

бит 0 зарезервирован, должен быть нуль

бит 1 (DF) 0 – разрешена фрагментация, 1 – запрет фрагментации

бит 2 ( MF) 0 – последний фрагмент, 1 – будут еще фрагменты

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

Time to Live (Время жизни) 8 бит

Время измеряется в секундах. Однако, поскольку каждый модуль, обрабатывающий пакет, должен уменьшать значение поля TTL по крайней мере на единицу, даже если он обрабатывает этот пакет менее, чем за секунду, то поле TTL ограничивает скорее максимальное число модулей обработки, чем время как таковое. Более того, не все маршрутизаторы, задерживающие пакет больше, чем на 1 секунду, корректно обрабатывают это поле – многие все равно уменьшают его ровно на единицу.

Protocol (Протокол) 8 бит

Это поле показывает, какой протокол следующего уровня использует данные из IP пакета. Значения для различных протоколов приводятся в документе "Assigned Numbers"

Header Checksum (Контрольная сумма заголовка) 16 бит

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

Алгоритм расчета контрольной суммы следующий:

Поле контрольной суммы – это 16 бит, дополняющие биты в сумме всех 16-битовых слов заголовка. Для вычисления контрольной суммы значение этого поля устанавливается в нуль3. При расчете контрольной суммы сложение понимается в смысле циклического сложения (возникающий перенос складывается с младшим битом суммы). Таков же алгоритм расчета контрольных сумм протоколов TCP, UDP, ICMP, IGMP (см. далее). В отличии от IP, в этих протоколах контрольная сумма защищает и заголовок, и данные. Для протокола UDP расчет контрольной суммы может не выполняться, для остальных он обязателен. Несмотря на то, что уже в спецификации RFC-791 предполагалось со временем заменить контрольную сумму циклической контрольной последовательностью (CRC), это так и не было осуществлено. Контрольная сумма – еще одна дань универсальности протокола IP. Большинство базовых сетевых технологий проверяют целостность кадра канального уровня более эффективным способом, в этом случае механизм контрольной суммы избыточен. Но «большинство» – увы, еще не значит «все»!

Source Address (адрес отправителя) 32 бита

Destination Address (адрес получателя) 32 бита

Options (опции) поле переменной длины

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

- единичный байт с указанием типа опции
  • единичный байт с указанием типа опции, байт для указания длины опции, и, наконец, байты собственно данных.

Байт длины поля учитывает байт типа опции, сам себя и байты с данными для опции.

Байт типа опции состоит из трех полей:

1 бит флаг копирования

2 бита класс опции

5 бит номер опции

Флаг копирования показывает, что эта опция копируется во все фрагменты при фрагментации (0 – не копируется, 1 – копируется).

Класс опции

0 – управление

1 – зарезервировано

2 – отладка и измерения

3 – резервировано

Определены следующие опции Internet

Класс

номер

длина

Описание

0

0

1

Конец списка опций. Эта опция обозначает конец списка опций. Необходима только в том случае, если конец списка опций не совпал с окончанием IP заголовка.

0

1

1

Нет операции. Используется для выравнивания.

0

2

11

Безопасность. Используется для поддержания безопасности, изоляции, разделения на группы пользователей (TCC), обработки кодов ограничения, соответствующих требованиям DOD(МО) США.

0

3

перем. (байт-указатель+список IP-адресов)

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

0

9

перем. (то же)

Определение маршрута отправителя. Используется для передачи IP пакета, основанной на имеющейся у отправителя информации. Точный маршрут.

0

7

перем. (то же)

Запись маршрута. Используется для отслеживания проходимого IP пакетом маршрута.

0

8

4

Идентификатор маршрута. Используется для поддержки идентификации потока.

2

4

перем

Временной штамп Internet.

В целом механизм опций протокола IP был признан неудачным, и в версии IP v.6 заменен механизмом дополнительных заголовков.

Адресация в IP-протоколе


Отправителей и получателей на уровне хост-компьютера отличают IP адреса, а также поле протокола. Предполагается, что каждый протокол будет определять, есть ли нужда в дополнительном мультиплексировании на хосте, и, при необходимости, обеспечивать его. Протоколы TCP и UDP в этом случае используют 16-битный номер порта (port).

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

Форматы адресации


Старшие биты

Формат

Класс

0

7 бит для сети, 24 бита для хоста

А

10

14 бит для сети, 16 бит для хоста

В

110

21 бит для сети, 8 бит для хоста

С

111

расширенный режим адресации

1110

Групповые (Multicast) адреса

D

1111

Используются для экспериментальных применений

E


Некоторые IP-адреса являются выделенными и трактуются по-особому.


------------------------------

| все нули | Данный узел

------------------------------

------------------------------

| номер сети | все нули | Данная IP-сеть

------------------------------

------------------------------

| все нули | номер узла | Узел в данной (локальной) IP-сети

------------------------------

------------------------------

| все единицы | Все узлы в данной (локальной) IP-сети

------------------------------

------------------------------

| номер сети | все единицы | Все узлы в указанной IP-сети

------------------------------

------------------------------

| 127 | что-нибудь (часто 1) | loopback (Петля)

------------------------------

В выделенных IP-адресах все нули соответствуют либо данному узлу, либо данной IP-сети (это), а фрагменты IP-адреса, состоящие из всех единиц, используются при широковещательных передачах (всем). Для ссылок на всю IP-сеть в целом используется IP-адрес с нулевым номером узла. Особый смысл имеет IP-адрес, первый байт которого равен 127. Он используется для тестирования программ и взаимодействия процессов в пределах одной машины. Когда программа посылает данные по IP-адресу 127.0.0.1, то образуется как бы "петля". Данные не передаются по сети, а возвращаются модулям верхнего уровня, как только что принятые4. Поэтому в IP-сети запрещается присваивать узлам IP-адреса, начинающиеся со 127.

Нулевое значение в поле сети означает данную сеть. Этот режим используется только в определенных ICMP сообщениях. Расширенный режим (первые 3 бита – 111) в настоящее время в полном объеме не реализован.

Адреса класса D (первые 4 бита – 1110, т.е. первый байт – от 224. до 239.) используется для формирования списков рассылки, отличных от «все узлы данной сети». Такой режим называется мультикастингом (Multicasting). Расширенный режим адресации при условии, что первые 4 бита – единицы (первый байт – от 240. до 255.) не определен. Эти возможности зарезервированы для будущих реализаций. Реальные значения, присваиваемые сетевым адресам, даны в документе "Assigned Numbers".

Протокол IP может, при определенных условиях, позволять одиночному физическому хосту работать как несколько отдельных Internet хостов, даже при наличии одного физического интерфейса (речь идет об индивидуальных, а не широковещательных и групповых адресах – это-то само собой разумеется!). В этом случае должен существовать промежуток между адресами Internet хостов и должны присутствовать интерфейсы между сетью и хостом, которые позволили бы нескольким Internet адресам соответствовать одному интерфейсу. Хост также имеет возможность поддержки нескольких физических интерфейсов (нескольких сетевых карт, либо, например, сетевой карты и модема5) и обработки пакетов с любого из них, как если бы они были адресованы к единственному хосту. Таким образом, IP-адрес соответствует сетевому соединению, а не компьютеру.

В общем случае соответствие IP-адреса локальному адресу произвольно и разрешается протоколом ARP. В случае короткого (1-2 байта) локального адреса возможно установить соответствие типа «младшие биты IP-адреса=локальный адрес». Карты соответствия между IP-адресами и адресами таких сетей, как ARPANET, SATNET, PRNET и др. описаны в документе "Address Mapping". К сожалению, эти сетевые технологии в настоящее время можно считать «вымершими».