Оборудование IP-телефонии

Адресация


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

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

Подавляющее большинство сетей сейчас использует протокол IPv4 (Интернет - протокол версии 4), хотя уже разработана шестая версия протокола IP, которая применяется в некоторых недавно созданных крупных сетях. Схема адресации протокола IPv4, который был определён в RFC 791, предусматривает размер адресного поля 32 бита, что даёт 232 (или 4 294 967 296) потенциальных адресов.

IP-адрес любой рабочей станции состоит из адреса сети и адреса компьютера в этой сети. В архитектуре адресации предусмотрено пять форматов адреса, каждый из которых начинается с одного, двух, трёх или четырёх битов, идентифицирующих класс сети (класс А, В, С, D или Е). Область сетевого идентификатора (Network ID) определяет конкретную сеть в классе, а область Host ID идентифицирует конкретный компьютер в сети1.

• Адреса класса А идентифицируются начальным битом 0. Следующие семь битов определяют конкретную сеть (число возможных значений - 128 или 27). Остальные 24 бита определяют конкретный компьютер в сети, при возможном количестве компьютеров -1 б 777 216 (224). Адреса класса А предназначены для очень крупных сетей с большим количеством рабочих станций.
Первые адреса класса А были присвоены таким компаниям как IBM Corporation, Hewlett-Packard Company, Ford Motor Company и др.

• Адреса класса В идентифицируются начальной двухбитовой двоичной последовательностью 10. Следующие 14 битов определяют сеть, при возможном количестве сетей 16 384 (214). Остальные 16 битов определяют конкретный компьютер, с возможным количеством компьютеров - 65 536 (216).

• Адреса класса С идентифицируются начальной трёхбитовой последовательностью 110. Следующие 21 бит определяют сеть, с возможным количеством сетей - 2 б97 152. Остальные 8 битов определяют конкретный компьютер в сети, с возможным количеством компьютеров - 256 (28). Большинство организаций имеют адреса класса С.

• Адреса класса D идентифицируются начальной четырёхбитовой последовательностью 1110. Адреса этого класса предназначены для групповой передачи, и оставшиеся 28 битов определяют групповой адрес.

• Адреса класса Е идентифицируются начальной четырёхбитовой двоичной последовательностью 1111. Адреса этого класса зарезервированы для будущего использования.

Способ, при помощи которого записываются все IP-адреса, называется пунктирной десятичной системой обозначений. Каждое 32-битовое адресное поле разделено на четыре поля в виде ххх.ххх.ххх.ххх, и каждому полю даётся десятичное числовое значение от 0 до 255, выраженное в виде одного октета (28 = 256 или 0-255). Адреса класса А начинаются с 1-127, адреса класса В - с 128-191, и адреса класса С - с 192-223.

1 Строго говоря, адрес идентифицирует только сетевой интерфейс рабочей станции, т.е. точку подключения к сети.



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


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

Как уже отмечалось, протокол IP версии 4 предусматривает размер адресного поля 32 бита, что даёт 232 (или 4 294 967 296) потенциальных адресов. Однако возрастающая популярность технологии TCP/IP привела к истощению плана нумерации протокола IPv4 аналогично тому, как популярность подключённых к телефонной сети факсимильных аппаратов, сотовых телефонов, пейджеров, компьютерных модемов и даже копировальных машин привела к истощению плана нумерации ТфОП. Дополнительной проблемой является тот факт, что очень большое количество адресов класса А и класса В было выделено крупным организациям, которые в них на самом деле не нуждались. В связи с тем, что фактически использовался только небольшой процент адресов, огромное количество доступных адресов было потеряно. Это напоминает расточительность, с которой выделялись телефонные номера в городских телефонных сетях (за исключением МГТС) блоками по 10 000 номеров, зачастую вне зависимости оттого, сколько их требовалось реально - 100 или 1000.

Чтобы смягчить, по крайней мере - частично, эту проблему, комитет IETF в начале 90-х годов опубликовал в документах RFC 1518 и RFC 1519 положение о бесклассовой междоменной маршрутизации (CfDR). Технология CIDR построена на концепции суперсети (supernetting), состоящей из группы подсетей, каждой из которых присваивается адрес подсети.


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

Протокол IPv6 решает этот вопрос путём расширения адресного поля до 128 битов, обеспечивая тем самым 2128 потенциальных адресов, ЧТО Составляет величину 340.282.366.920.938.463.463.374.607.431.768.211.456.

По расчётам Кристиана Хюйтема, такого адресного пространства достаточно, чтобы присвоить по 32 адреса каждому квадратному дюйму суши на Земле - что, в принципе, должно решить проблему. С учётом предложений о присвоении IP-адресов сетевым кофеваркам, холодильникам, системам обогрева и кондиционирования, автомобилям и вообще всем мыслимым устройствам, ценность и рентабельность протокола IPv6 возрастёт ещё больше. Протокол IPv6 обладает также дополнительными функциональными возможностями, хотя для их реализации потребуется модернизация существующего сетевого программного обеспечения.

Но вернемся к протоколу IPv4. Компьютер, подключенный к сети Интернет, кроме IP-адреса может идентифицироваться доменным именем. Сеть Интернет разделена на логические области (домены). Адреса в системе имён доменов (DNS), администрирование которых лежит на ICANN, имеют стандартный вид, представляющий собой последовательность имен, разделенных точками, например:

компьютер, организация, домен. Подавляющее большинство из 45 миллионов (или около того) зарегистрированных доменов верхнего уровня (TLD) является коммерческими. Домены TLD, которые идентифицируются как суффикс доменного имени, бывают двух типов: обобщённые домены верхнего уровня (net, corn, org) и коды стран (ru, fi, ua).

Сам же ICANN получил от IANA полномочия по администрированию Интернет-адресов.


При администрировании со стороны IANA, ответственность за присвоение TLD возлагалась на центр сетевой информации Интернет(InterNIC) компании Network Solutions Inc. В течение первых десятков лет существования Интернет, присвоение доменов было бесплатным. Позже, InterNIC начал брать плату за домены .сот в размере $70 за первые два года и $35 за каждый следующий год. В 1999 году InterNIC потерял монопольное право на присвоение доменов, так как в апреле 1999 года были утверждены четыре конкурентные организации на испытательный срок до 25 июня 1999 года. ICANN также объявил, что ряд других заявителей удовлетворяют его критериям аккредитации, и они будут аккредитованы по окончании испытательного срока.

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

4.4 Уровни архитектуры Интернет

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

Для того, чтобы классифицировать различные протоколы и понять их место в общей структуре технологии межсетевого взаимодействия, удобно воспользоваться так называемым “многоуровневым представлением сетевых протоколов”. В рамках такого представления подразумевается, что протоколы более высокого уровня используют функции протоколов более низкого уровня. Классической, хотя и представляющей сейчас, скорее, академический интерес, моделью такого рода является семиуровневая модель взаимодействия открытых систем (Open Systems Interconnection - OSI), разработанная ITU-T в рамках неудавшейся попытки создать международный стандарт семейства сетевых протоколов. Вместе с тем, некоторые результаты данного проекта являются хорошим материалом для учебников, чем мы и воспользуемся.

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



Архитектура Интернет была разработана агентством ARPA для соединения компьютеров в государственных, военных, академических и других организациях, в основном, на территории США, что обусловило ее практический характер. С другой стороны, модель OSI охватывала более широкий круг вопросов передачи информации, и в ее рамках не был конкретизирован тип взаимодействующих систем, что породило более “дробное” разбиение на уровни. Однако между той и другой архитектурой имеется очевидное соответствие.

Первый уровень модели ARPA - уровень сетевого интерфейса -поддерживает физический перенос информации между устройствами в сети, т.е. объединяет функции двух уровней OSI - физического и звена данных. Уровень сетевого интерфейса обеспечивает физическое соединение со средой передачи, обеспечивает, если это необходимо, разрешение конфликтов, возникающих в процессе организации доступа к среде (например, используя технологию CSMA/CD в сети Ethernet), упаковывает данные в пакеты. Пакет2 -это протокольная единица, которая содержит информацию верхних уровней, и служебные поля (аппаратные адреса, порядковые номера, подтверждения и т.д.), необходимые для функционирования протоколов этого уровня.



Рис. 4.1 Уровни модели OSI и архитектуры Интернет


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

Обмен между сетевыми узлами информацией о состоянии сети, необходимой для формирования оптимальных маршрутов следования дейтаграмм, обеспечивают протоколы маршрутизации - RIP, EGP, BGP, OSPF и др.



2 Иногда при рассмотрении протоколов этого уровня (Ethernet, HDLC) употребляется также термин кадр (frame).

Протокол преобразования адресов (Address Resolution Protocol -ARP) преобразует IP-адреса в адреса, использующиеся в локальных сетях (например, Ethernet). На некоторых рисунках, изображающих архитектуру и взаимосвязь протоколов, ARP размещают ниже IP, чтобы показать его тесную взаимосвязь с Уровнем Сетевого Интерфейса.

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

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

Конечные пользователи взаимодействуют с компьютером на уровне приложений. Разработано множество протоколов, используемых соответствующими приложениями. Например, приложения передачи файлов используют протокол FTP. Web-приложения используют протокол HTTP. Оба протокола FTP и HTTP базируются на протоколе TCP. Приложение Telnet обеспечивает подключение удаленных терминалов. Протокол эксплуатационного управления сетью SNMP позволяет управлять конфигурацией оборудования в сети и собирать информацию об его функционировании, в том числе, и о аварийных ситуациях. Приложения, созданные для организации речевой связи и видеосвязи, используют протокол RТР для передачи информации, чувствительной к задержкам. Х Window - популярный протокол для подключения к интеллектуальному графическому терминалу. Этот список можно продолжать практически бесконечно.



Таким образом, IP- сети используют для передачи информации разнообразные протоколы, причем функции протоколов не зависят оттого, какие данные передаются. Иными словами, IP, ARP, ICMP, TCP, UDP и другие элементы стека протоколов TCP/IP предоставляют универсальные средства передачи информации, какой бы она ни была природы (файл по FTP, Web - страница или аудиоданные).

4.5 Протокол IP версии 4

В качестве основного протокола сетевого уровня в стеке протоколов TCP/IP используется протокол IP, который изначально проектировался как протокол передачи пакетов в сетях, состоящих из большого количества локальных сетей. Поэтому протокол IP хорошо работает в сетях со сложной топологией, рационально используя наличие в них подсистем и экономно расходуя пропускную способность низкоскоростных линий связи. Протокол IP организует пакетную передачу информации от узла к узлу IP-сети, не используя процедур установления соединения между источником и приемником информации. Кроме того, Internet Protocol является дейтаграммным протоколом: при передаче информации по протоколу IP каждый пакет передается от узла к узлу и обрабатывается в узлах независимо от других пакетов.

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

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



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

На рис. 4.2 показана структура протокольной единицы протокола IP-дейтаграммы.

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

Поле длина заголовка (header length), состоящее из 4 битов, определяет длину заголовка, причем длина указывается как количество блоков размером 32 бита. В типичном случае значение этого поля равно 5.

3 При рассмотрении протокола IP версии 6 и вопросов обеспечения качества обслуживания, мы увидим некоторые отклонения от этого принципа.

Версия (Version) Длина заголовка
Тип обслуживания
Общая длина
Идентификатор фрагмента
Флаги   Смещение фрагмента
Время жизни
Протокол
Контрольная сумма заголовка
Адрес отправителя
Адрес получателя
Опциональные поля и заполнение
Данные


Рис. 4.2 IP-дейтаграмма

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

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



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

Идентификатор фрагмента (Identifier) обозначает все фрагменты одной дейтаграммы, что необходимо для ее успешной сборки на приемной стороне.

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

Поле смещение фрагмента (Fragment Offset) определяет положение фрагмента относительно исходной дейтаграммы в единицах, равных 8 октетам.

Поле время жизни (TTL - Time To Live) используется для ограничения времени, в течение которого дейтаграмма находится в сети. Каждый маршрутизатор сети должен уменьшать значение этого поля на единицу, и отбрасывать дейтаграмму, если поле TTL приняло нулевое значение. Наличие поля TTL ограничивает возможность бесконечной циркуляции дейтаграммы по сети, например, в случае, если по какой-либо причине маршрут, по которому она следует, оказался “закольцованным”.

Поле протокол (Protocol) идентифицирует протокол верхнего уровня (TCP, UDP и т.д.).

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

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

Подробнее структура и функции протокола IPv4 описаны в RFC-791.

4.6 Протокол IP версии 6

В начале 90-х годов интенсивное коммерческое использование Интернет привело к резкому росту количества узлов сети, изменению характеристик трафика и ужесточению требований к качеству обслуживания. Сообщество Интернети весь телекоммуникационный мир начали решать новые задачи путем внедрения новых протоколов в рамках стека протоколов TCP/IP, таких как протокол резервирования ресурсов RSVP, MPLS и т.д.


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

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

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

Комитет IETF намеревается решить существующие проблемы с помощью межсетевого протокола нового поколения - IPng, известного также как IPv6.

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

В результате было решено подвергнуть протокол IP модернизации, преследуя следующие основные цели:

• создание новой расширенной схемы адресации;

• улучшение масштабируемости сетей за счет сокращения функций магистральных маршрутизаторов;

• обеспечение защиты данных.

Работы по модернизации протокола IP начались в 1992 году, когда было предложено несколько альтернативных вариантов спецификаций. С тех пор в рамках IETF была проделана огромная работа, в результате которой в августе 1998 года были приняты окончательные версии стандартов, определяющих как общую архитектуру IPv6 (RFC 2460 “Internet Protocol, Version 6 (IPv6) Specification”), так и отдельные компоненты данной технологии (RFC 2373 “IP Version 6 Addressing Architecture”).



Итак, рассмотрим более подробно особенности IPv6.

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

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

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

FEDC:OA96:0:0:0:0:7733:567A.

Для сетей, поддерживающих обе версии протокола - IPv4 и IPv6, -имеется возможность использовать для младших 4 байтов традиционную десятичную запись, а для старших - шестнадцатиричную:

0:0:0:0:0:FFFR 194.135.75.104.

Типы адресов. Для IPv6 определены следующие основные типы адресов:

• unicast;

• multicast;

• anycast.

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

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


Однако в версии 6 отсутствует понятие класса сети и фиксированное разбиение адреса на адрес сети и адрес узла по границам байтов.

Адрес типа multicast - групповой адрес, необходимый для многоадресной рассылки. Он характеризуется префиксом формата 11111111И идентифицирует группу интерфейсов, относящихся к разным рабочим станциям. Пакеты с такими адресами доставляются ко всем интерфейсам, входящим в группу. Существует также предопределенный адрес, обозначающий все интерфейсы подсети. В составе группового адреса IPv6 имеется поле scope, которое определяет, входят ли в группу рабочие станции одной подсети, всех подсетей предприятия, или рабочие станции, рассредоточенные по сети Интернет. Кроме того, предусмотрен признак, позволяющий определить, является ли группа постоянной или временной, что также облегчает работу маршрутизаторов.

Адрес типа anycast - новый тип адреса, определяющий, как и multicast, группу интерфейсов. Но пакет с таким адресом доставляется не всем членам группы, а какому-либо одному, как правило, “ближайшему” с точки зрения маршрутизатора. Такой адрес синтаксически никак не отличается от адреса типа unicast и выделяется из того же диапазона. Anycast-адрес может быть присвоен только сетевым интерфейсам маршрутизатора. Интерфейсам маршрутизатора будут присваиваться индивидуальные unicast-адреса и общий anycast-адрес. Адреса anycast ориентированы на определение маршрута узлом-отправителем. Например, у абонента есть возможность обеспечить прохождение своих пакетов через сеть конкретного поставщика, указав в цепочке адресов маршрута anycast-адрес, присвоенный всем маршрутизаторам в сети этого поставщика. В таком случае пакет будет передан на “ближайший” подходящий маршрутизатор именно этой сети.

В рамках системы адресации IPv6 имеется также выделенное пространство адресов для локального использования, т.е. для сетей, не входящих в Интернет. Существует две разновидности локальных адресов: для “плоских” сетей, не разделенных на подсети (Link-Local), и для сетей, разделенных на подсети (Site-Local), различающиеся значением префикса.



В настоящий момент распределено порядка 15% адресного пространства IPv6, что определяет широкие возможности развития сетей и приложений, их использующих.

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

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

Основной заголовок дейтаграммы IPv6 длиной 40 байтов имеет следующий формат (рис. 4.3).

Версия (4 бита) Класс Трафика (8 битов) Метка Потока (20 битов)
Длина (16 битов) След.Заголовок (8 битов) Лимит Переходов (8 битов)
Адрес Отправителя (128 битов)
Адрес Получателя (128 битов)
Рис. 4.3 Формат основного заголовка дейтаграммы IPv6

Поле Класс Трафика (Traffic Class) эквивалентно по назначению полю Тип Обслуживания (Type Of Service), а поле Лимит Переходов

(Hop Limit) - полю Время Жизни (Time To Live) протокола IPv4, рассмотренного в предыдущем параграфе.

Поле Метка Потока (Flow Label) позволяет выделять и особым образом обрабатывать отдельные потоки данных без необходимости анализировать содержимое пакетов. Это очень важно с точки зрения снижения нагрузки на маршрутизаторы.

Поле Следующий Заголовок (Next Header) является аналогом поля Протокол (Protocol) IPv4 и определяет тип заголовка, следующего за основным. Каждый следующий дополнительный заголовок также содержит поле Next Header. Если дополнительные заголовки отсутствуют, то это поле содержит значение, присвоенное тому из протоколов TCP, UDP, OSPF, который используется для переноса полезной нагрузки данной дейтаграммы.



В рамках спецификаций IPv6 определены заголовки следующих типов.

Заголовок Routing - содержит информацию о маршруте, выбранном отправителем дейтаграммы.

Заголовок Fragmentation -содержит информацию о фрагментации дейтаграммы и обрабатывается только конечными узлами сети.

Заголовок Authentication - содержит информацию, необходимую для проверки подлинности отправителя дейтаграммы.

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

Заголовок Hop-by-Hop Options - специальные параметры обработки пакетов.

Заголовок Destination Options - дополнительные параметры для узла назначения.

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

Дополнительные заголовки обрабатываются только конечными узлами и краевыми маршрутизаторам. Это упрощает логику работы маршрутизаторов и позволяет легче реализовать важные функции на аппаратном уровне.

Функции поддержки фрагментации переносятся в конечные узлы или краевые маршрутизаторы. Конечные узлы должны найти минимальный размер пакета вдоль всего пути до узла назначения (эта технология называется Path MTU discovery и уже используется для протокола IPv4) и не передавать пакеты с размером, превышающим найденное значение. Маршрутизаторы, поддерживающие протокол IPv6, в ядре сети могут не обеспечивать фрагментации, а только передавать сообщение протокола IСМР - “слишком длинный пакет” к конечному узлу, который должен соответственно уменьшить размер пакета.

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

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



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

Переход к протоколу IP версии 6. Так как IPv6 представляет собой естественное развитие предыдущей версии, он с самого начала спроектирован с учетом возможности поэтапного мягкого перехода к его использованию, что требует обеспечения взаимодействия узлов с разными версиями протоколов. Способы, которые используются для организации совместной работы протоколов IPv6 и IPv4, вполне традиционны:

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

• Конвертирование протоколов при помощи специальных шлюзов, которые преобразуют пакеты IPv4 в пакеты IPv6 и обратно. Важнейшая часть этого процесса - преобразование адресов. Для упрощения данной процедуры применяются так называемые “IРv4-совместимые адреса IPv6”, которые содержат в четырех младших байтах адрес, используемый в протоколе IPv4.

• Инкапсуляция - Туннелирование одного протокола в сетях, построенных на основе другого протокола. При этом пакеты одного протокола помещаются в пакеты другого в пограничных устройствах. Недостаток метода состоит в том, что в данном случае сети никак не взаимодействуют между собой. В настоящее время развернута опытная зона эксплуатации IPv6 под названием 6Вопе, которая использует технологию инкапсуляции пакетов IPv6 при их транзите через части сети Интернет, не поддерживающие этот протокол.

4.7 Протокол TCP

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

К сожалению, протокол TCP не приспособлен для передачи мультимедийной информации.


Основная причина- обеспечение требуемой достоверности путем повторной передачи потерянных пакетов. Пока передатчик получит информацию о том, что приемник не принял очередной пакет, и передаст его снова, проходит слишком много времени. Приемник вынужден либо ждать прихода повторно переданного пакета, разрушая структуру потоковых данных, либо игнорировать этот пакет, игнорируя одновременно принятый в TCP механизм обеспечения достоверности. Кроме того, TCP предусматривает механизмы управления скоростью передачи с целью избежать перегрузок сети. Аудиоданные и видеоданные требуют, однако, строго определенных скоростей передачи, которые нельзя изменять произвольным образом.

С одной стороны протокол TCP взаимодействует с прикладным протоколом пользовательского приложения, а с другой стороны -с протоколом, обеспечивающим “низкоуровневые” функции маршрутизации и адресации пакетов, которые, как правило, выполняет IP.

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

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

Логическая структура сетевого программного обеспечения, реализующего протоколы семейства TCP/IP в каждом узле сети Internet, изображена на рис. 4.4.

Прямоугольники обозначают модули, обрабатывающие данные, а линии, соединяющие прямоугольники, - пути передачи данных. Горизонтальная линия внизу рисунка обозначает сеть Ethernet, которая используется в качестве примера физической среды.


Понимание этой логической структуры является основой для понимания всей технологии TCP/IP.

Рис. 4.4 Структура сетевого программного обеспечения стека протоколов TCP/IP


Ниже рассматриваются более подробно возможности, принципы построения и основные функции протокола TCP.

1 Потоки, стек протоколов, механизм портов и мультиплексирование

Чтобы установить соединение между двумя процессами на разных компьютерах сети, необходимо знать не только Internet-адреса компьютеров, но и номера тех ТСР-портов (sockets), которые процессы используют на этих компьютерах. Любое TCP-соединение в сети Internet однозначно идентифицируется двумя IP-адресами и двумя номерами ТСР-портов.

Рассмотрим потоки данных, перенос которых обеспечивают протоколы. При использовании протокола TCP данные передаются между прикладным процессом и модулем TCP. Типичным прикладным протоколом, использующим протокол TCP, является FTP (File Transfer Protocol, Протокол переноса файлов). Стек протоколов в этом случае выглядит следующим образом: FTP/TCP/IP/Ethernet. При использовании протокола UDP (User Datagram Protocol, Протокол дейтаграмм пользователя) данные передаются между прикладным процессом и модулем UDP. Транспортными услугами протокола UDP пользуется, например, SNMP (Simple Network Management Protocol, Простой протокол эксплуатационного управления сетью). Его стек протоколов выглядит так: SNMP/UDP/IP/ Ethernet.

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

Модули TCP, UDP и драйвер Ethernet являются мультиплексорами типа n x 1. Действуя как мультиплексоры, они переключают несколько входов на один выход. Они также являются демультиплексорами типа 1 х п. Как демультиплексоры, они переключают один вход на один из многих выходов в соответствии с определенным полем в заголовке протокольного блока данных (в Ethernet-кадре это поле “тип”).


Когда Ethernet-кадр попадает в драйвер сетевого интерфейса Ethernet, он может быть направлен либо в модуль ARP, либо в модуль IP. (Значение поля “тип” в заголовке кадра указывает, куда должен быть направлен Ethernet-кадр.)

Если IP-пакет попадает в модуль IP, то содержащиеся в нем данные могут быть переданы либо модулю TCP, либо UDP, что определяется полем “Protocol” в заголовке IP-пакета. Если TCP-сообщение попадает в модуль TCP, то выбор прикладной программы, которой должно быть передано сообщение, производится на основе значения поля “порт” в заголовке TCP-сообщения.

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

Назначение портов для приложений на каждом компьютере производится независимо. TCP может самостоятельно выбирать порт, с которым будет работать приложение, или приложение укажет, с каким портом на данном компьютере оно будет работать. Однако, как правило, часто используемые приложения-сервисы, например, такие как HTTP, FTP, SMTP и др., используют одни и те же номера портов, которые уже стали общеизвестными. Это делается для того, чтобы к данному процессу на компьютере можно было присоединиться, указывая только адрес машины. Например, lnternet-браузер, если ему не указать дополнительно, ищет по указанному адресу приложение, работающее с портом 80 (наиболее распространенный порт для серверов WWW). Кроме того, рабочая станция может быть снабжена несколькими сетевыми интерфейсами, тогда она должна осуществлять мультиплексирование типа n х т, т. е. между несколькими прикладными программами и несколькими интерфейсами.

4.7.2 Установление TCP-соединения и передача данных

Режим участия в установлении TCP-соединения может быть активным и пассивным. При пассивном участии рабочая станция ожидает сигнал открытия ТСР-канала от встречного оборудования и не пытается открыть ТСР-канал сама.


Этот режим обычно используется процессами, которые предоставляют свой сервис через общеизвестный номер своего порта (например, HTTP, SMTP и т. д.). При активном режиме участия рабочая станция сама инициирует открытие ТСР-канала. Соединение будет также установлено, если два процесса активно откроют канал навстречу друг другу. Такая гибкость в установлении соединения особенно важна в распределенных сетях, когда компьютеры работают асинхронно.

Процедура установления TCP-соединения выглядит следующим образом. Рабочая станция, инициирующая открытие ТСР-канала, передает пакет с флагом SYN, в котором указывается номер порта и начальный порядковый номер пакетов данных. Встречная станция передает на указанный адрес ответ с флагами SYN и АСК, в котором указывается начальный порядковый номер пакетов данных. Сторона, инициирующая установление TCP-соединения, подтверждает получение пакета с флагами SYN и АСК передачей пакета с установленным флагом АСК.

Именно трех тактов квитирующих сообщений всегда бывает достаточно, чтобы синхронизировать потоки данных. Соединение считается установленным, когда последовательности передаваемых пакетов в обоих направлениях синхронизируются, т.е. когда и клиент, и сервер “знают”, пакет с каким номером поступит с противоположной стороны соединения.

Соединение закрывается, когда порты оборудования обмениваются пакетами, содержащими флаги FIN. При этом все ресурсы системы должны быть освобождены.

4.7.3 Механизмы обеспечения достоверности

Протокол TCP умеет работать с поврежденными, потерянными, дублированными или поступившими с нарушением порядка следования пакетами. Это достигается благодаря механизму присвоения каждому передаваемому пакету порядкового номера и механизму проверки получения пакетов.

Когда протокол TCP передает сегмент данных, копия этих данных помещается в очередь повтора передачи, и запускается таймер ожидания подтверждения. Когда система получает подтверждение (сегмент TCP, содержащий управляющий флаг АСК), что этот сегмент данных получен, она удаляет его из очереди.


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

При передаче информации каждому байту данных присваивается порядковый номер, поэтому, в какой бы последовательности эти байты ни достигали точки назначения, они всегда будут собраны в изначальной последовательности. Порядковый номер первого байта данных в передаваемом сегменте называется порядковым номером сегмента. Нумерация проводится “с головы состава”, т. е. от заголовка пакета. TCP-пакет содержит также “подтверждающий номер” (acknowledgment number), который представляет собой номер следующего ожидаемого пакета. Иными словами, подтверждающий номер означает: “до сих пор я все получил”. Механизм с использованием “подтверждающего номера” исключает дублирование пакетов при повторной отправке не доставленных данных.

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

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

Так, при установлении нового соединения генерируется 32-битовое число ISN (Initial Sequence Number). Генератор может использовать 32 младших разряда машинного таймера, который меняется каждые 4 микросекунды (полный цикл - 4,55 часа).


Это число и служит отсчетом нумератора пакетов. Кроме того, каждая дейтаграмма в сети имеет ограниченное время жизни MSL - Maximum Life Time, которое значительно меньше периода генератора. Таким образом, в сети гарантируется невозможность появления пакетов с одинаковыми номерами.

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

4.7.4 Механизм управления потоком данных

Протокол TCP предоставляет получателю пакетов возможность регулировать передаваемый к нему отправителем поток данных. Этот механизм основан на том, что при передаче флага подтверждения получения пакета (АСК) в ТСР-сегменте передается указатель объема данных (так называемое “окно” TCP-соединения), которые могут быть переданы отправителем, не дожидаясь от получателя разрешения отправить следующую порцию данных. Иными словами, указывается размер свободного места в буферном накопителе, куда записываются только что принятые данные, ожидающие дальнейшей обработки и передачи соответствующим процессам. Этот механизм позволяет избежать “пробок” при обмене данными между системами, обладающими разной производительностью.

“Окно” задается количеством байтов, отсчитываемых от последнего подтвержденного байта (acknowledgment number). Нулевой размер окна означает, что отправитель должен приостановить передачу до тех пор, пока он не будет уведомлен о готовности получателя к приему данных. Необходимо заметить, что в этом случае отправитель передает однобайтовые пакеты.

Безусловно, большой размер окна позволяет передавать данные быстрее, поскольку отправителю пакета не нужно ждать от получателя сигнал о его готовности к приему. Однако в случае сбоя передачи, соответственно, возрастет объем данных, которые нужно отправить заново. При небольшом же размере окна потерянные сегменты данных можно восстановить с минимальными затратами.

Механизм управления потоком данных позволяет протоколу TCP оптимизировать скорость достоверного обмена данными между процессами в сети Интернет.



4.7.5 Состав и назначение полей заголовка

Пакеты протокола TCP переносятся в поле “Данные” IP-дейтаграммы. Заголовок пакета TCP следует за заголовком дейтаграммы. Структура заголовка пакета TCP представлена на рис. 4.5.

Порт отправителя Порт получателя
Порядковый номер
Номер при подтверждении
Смещение данных Резерв U
R
G
А С К Р S Н R S Т S Y N FIN Окно
Контрольная сумма Указатель срочности
Опции | Заполнение
Данные
Рис. 4.5 Заголовок пакета TCP Порт отправителя (Source Port, 6 битов). Порт получателя (Destination Port, 16 битов).


Порядковый номер (Sequence Number, 32 бита). Если в пакете отсутствует флаг SYN, то это - номер первого октета данных в этом пакете. Если флаг SYN в пакете присутствует, то номер данного пакета становится номером начала последовательности (ISN), и номером первого октета данных становится номер ISN+1.

Номер при подтверждении (Acknowledgment Number, 32 бита) -если пакет содержит установленный флаг АСК, то это поле содержит номер следующего ожидаемого получателем октета данных. При установленном соединении пакет подтверждения отправляется всегда.

Поле величины смещения данных (Data Offset,4 бита) указывает количество 32-битовых слов заголовка TCP-пакета.

Резерв (Reserved, 6 битов) - зарезервированное поле. Флаги управления (слева направо):

URG - флаг срочности,

АСК - флаг пакета, содержащего подтверждение получения,

PSH - флаг форсированной отправки,

RST - сброс соединения,

SYN - синхронизация порядковых номеров,

FIN - флаг окончания передачи со стороны отправителя.

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

Поле контрольной суммы (Checksum, 16 битов).

Поле указателя срочности данных (Urgent Pointer, 16 битов). Это поле содержит номер пакета, начиная с которого следуют пакеты повышенной срочности. Указатель принимается во внимание только в сегментах с установленным флагом URG.



Опции (Options) - поле дополнительных параметров, может быть переменной длины.

Заполнение (Padding) - поле, заполняемое нулями для выравнивания заголовка до размера, кратного 32-битам.

Более подробное описание протокола TCP можно найти в RFC-793, RFC-1180.

4.8 Протокол UDP

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

Протокол UDP базируется на протоколе IP и предоставляет прикладным процессам транспортные услуги, немногим отличающиеся от услуг протокола IP. Протокол UDP обеспечивает негарантированную доставку данных, т.е. не требует подтверждения их получения;

кроме того, данный протокол не требует установления соединения между источником и приемником информации, т. е. между модулями UDP.

К заголовку IP-пакета протокол UDP добавляет служебную информацию в виде заголовка UDP-пакета (рис. 4.6).

Порт отправителя Порт получателя
Длина Контрольная сумма
Данные


Рис. 4.6 Формат UDP-пакета

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

Порт получателя (Destination Port) - поле идентифицирует порт рабочей станции, на которую будет доставлен пакет.

Длина (Length) - это поле информирует о длине UDP-пакета в октетах, включая как заголовок, так и данные. Минимальное значение длины равно восьми.

Контрольная сумма (Checksum) - поле проверки правильности передачи данных заголовка пакета, псевдозаголовка и поля полезной нагрузки пакета. Если данное поле не используется, оно заполняется нулями.

Модуль IP, реализованный в принимающей рабочей станции, передает поступающий из сети IP-пакет модулю UDP, если в заголовке этого пакета указано, что протоколом верхнего уровня является протокол UDP.При получении пакета от модуля IP модуль UDP проверяет контрольную сумму, содержащуюся в его заголовке. Если контрольная сумма равна нулю, значит, отправитель ее не подсчитал. Протоколы UDP и TCP имеют один и тот же алгоритм вычисления контрольной суммы (RFC-1071), но механизм ее вычисления для UDP-пакета имеет некоторые особенности. В частности, UDP-дейтаграмма может содержать нечетное число байтов, и в этом случае к ней, для унификации алгоритма, добавляется нулевой байт, который никуда не пересылается.

Более подробную информацию о протоколе UDP можно найти в RFC-768.


Содержание раздела