Содержание материала

Следующим в иерархии является уровень Internet. Наиболее важный протокол этого уровня - протокол Internet (IP). В существующей сети Интернетприменяется протокол IP версии 4 (IPv4), определенный в RFC 791. Существуют и более современные версии IP. IP версии 5 - это экспериментальный протокол потокового транспорта (Stream Transport, ST), применяемый для доставки данных в системах реального времени. IPv6 не получил рабочего распространения.

IPv6 - стандарт IP, предоставляющий значительным образом расширенные диапазоны адресации. В IPv6 применяется совершенно иная структура адреса, так что протоколы IPv6 и IPv4 не способны к взаимодействию. Несмотря на существование стандарта IPv6 эта версия IP пока не получила широкого распространения в действующих коммерческих сетях. Нашей целью является изучение работы действующих сетей, поэтому мы не станем вдаваться в подробности IPv6. В тексте главы и большей части книги аббревиатура «1Р» относится к IPv4. Именно протокол IPv4 является предметом настройки при необходимости организовать обмен данными между системами, и именно этому протоколу будет уделено основное внимание.

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

Протокол Internet

Протокол Internet (IP) - это строительный элемент сетей Интернет. Он имеет следующую функциональность:

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

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

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


Дейтаграмма

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

Формат пакета, определяемый протоколом Internet, называется дейтаграммой. Содержимое IP-дейтаграммы наглядно показано на рисунке. Первые пять или шесть 32-битных слов дейтаграммы содержат управляющую информацию, составляющую заголовок (header). По умолчанию заголовок имеет длину в пять слов, шестое является необязательным. Для указания переменной длины заголовка (в словах) используется поле Internet Header Length (IHL, длина заголовка Internet). Заголово к содержи т всю необходимую для доставки пакета информацию.

111

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


Маршрутизация дейтаграмм

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

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

Система способна доставить пакет только на другое устройство, принадлежащее той же физической сети. Пакеты, адресованные узлом А1 узлу С1, пересылаются через шлюзы G1 и G2. Узел А1 доставляет пакет шлюзу G1, с которым вместе входит в сеть А. Шлюз G1 доставляет пакет шлюзу G2 по сети В. Шлюз G2, в свою очередь, доставляет пакет напрямую узлу С1, с которым вместе входит в сеть С. Узел А1 понятия не имеет о существовании иных шлюзов, кроме G1. Он посылает пакеты, адресованные в сети СиВ , этому локальному шлюзу и делегирует ему задачу корректной пересылки пакетов по нужным маршрутам. Точно так же узел С1 отправляет свои пакеты шлюзу G2, чтобы обратиться к узлу сети А либо к узлу сети В.

111

Другой взгляд на маршрутизацию приведен на рисунке. Данная иллюстрация акцентируется на том факте, что физические сети, через которые путешествует дейтаграмма, могут различаться и даже быть несовместимыми. Узел А1 кольцевой сети передает дейтаграмму через шлюз G1, направляя ее узлу С1 Ethernet-сети. Шлюз G1 пересылает данные по сети Х.25 шлюзу G2, который и производит доставку на С1. Дейтаграмма проходит через три физически разделенных сети, но рано или поздно в целости и сохранности достигает узла С1.


Разбиение дейтаграмм

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

Для каждой сети определяется значение MTU (maximum transmission unit, максимальная единица передачи), которое обозначает максимально допустимый размер пакета в этой сети. Если полученная из первой сети дейтаграмма длиннее значения MTU второй сети, она разбивается на ряд фрагментов с целью передачи. Данный процесс называется разбиением дейтаграммы. Представьте поезд, везущий стальные болванки. Каждый из вагонов поезда вмещает больше стали, чем грузовики, которые повезут груз дальше, по шоссе, поэтому каждый вагон поезда разгружается на множество грузовых машин. Сеть Ethernet точно так же физически отличается от сети Х.25, как железная дорога от шоссе; протокол IP должен разделить относительно крупные пакеты Ethernet на более мелкие, прежде чем их можно будет передать по сети Х.25.

Формат каждого фрагмента - такой же, как для обычной дейтаграммы. Второе слово заголовка обозначает фрагмент дейтаграммы и содержит информацию о том, как производить сборку фрагментов в целях восстановления исходной дейтаграммы. Поле Идентификация содержит информацию о том, к какой дейтаграмме принадлежит фрагмент, а поле Смещение разбиения - о том, каким по счету элементом является фрагмент дейтаграммы. В поле Флаги присутствует бит «Другие фрагменты» (More Fragments), позволяющий протоколу IP определить, что собраны все фрагменты исходной дейтаграммы.


Передача дейтаграмм в транспортный уровень

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

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

ICMP, протокол управляющих сообщений Internet

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

Управление потоками данных (Flow control)
Если скорость поступления дейтаграмм слишком высока для обработки, узел-адресат или промежуточный шлюз отправляет ICMP-сообщение подавления источника (Source Quench Message) передающему узлу. Сообщение предписывает источнику временно прервать посылку дейтаграмм.

Обнаружение недостижимых адресатов
В случае когда сообщение не может быть доставлено адресату, система, обнаружившая эту проблему, отправляет сообщение Destination Unreachable источнику дейтаграммы. Если недостижимый адресат является сетью или узлом, сообщение исходит от промежуточного шлюза. Если пунктом назначения является порт, сообщение исходит от конкретного узла. (О портах мы поговорим в главе 2.)

Перенаправление маршрутов
ICMP-сообщение перенаправления (Redirect Message), исходящее от шлюза, предписывает узлу воспользоваться другим шлюзом, предположительно, по той причине, что это будет более эффективный выбор. Это сообщение может применяться лишь в случаях, когда узел-источник находится в одной сети с обоими шлюзами. Взгляните на рис. 1.7. Если узел сети Х.25 направляет дейтаграмму шлюзу G1, этот шлюз может перенаправить узел к шлюзу G2, поскольку узел-источник и шлюзы G1 и G2 входят в одну сеть. С другой стороны, если источником дейтаграммы является узел сети Token Ring, G1 уже не сможет перенаправить его к шлюзу G2. Как раз по той причине, что G2 не входит в кольцевую сеть Token Ring.

Проверка состояния удаленных узлов
Узел может отправить ICMP-сообщение эхо (Echo Message), чтобы проверить работоспособность протокола Internet удаленной системы. Получив сообщение эхо, система возвращает данные из полученного пакета узлу-источнику. На основе сообщений Echo Message построена работа команды ping.


Транспортный уровень

Непосредственно над уровнем Internet расположен транспортный уровень узел-узел, или просто транспортный уровень. Наиболее важными протоколами транспортного уровня являются протокол управления передачей TCP (Transmission Control Protocol) и протокол пользовательских дейтаграмм UDP (User Datagram Protocol). TCP обеспечивает надежную доставку данных со сквозным обнаружением и устранением ошибок. UDP - это нетребовательная к ресурсам служба доставки дейтаграмм, работающая без образования логических соединений. Оба протокола выполняют доставку данных между прикладным уровнем и уровнем Internet. Разработчики приложений вольны выбирать, какая из этих служб точнее отвечает задачам приложения в каждом конкретном случае.

UDP, протокол пользовательских дейтаграмм

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

UDP - это ненадежный протокол доставки дейтаграмм без организации логических соединений. Повторимся, характеристика «ненадежный» говорит лишь о том, что средствами протокола невозможно убедиться, что данные корректно получены адресатом. В пределах одного компьютера UDP выполняет доставку данных безукоризненно. Для доставки данных соответствующим процессам приложений в UDP применяются 16-битные номера для исходного и целевого портов в первом слове заголовка сообщения. Формат сообщения UDP приведен на рисунке.

111

Зачем разработчикам приложений использовать UDP в качестве службы доставки данных? Есть ряд веских причин. Если объем передаваемых данных невелик, издержки на создание соединений и отслеживание надежности доставки могут оказаться больше, чем затраты на повторную передачу всех данных. В таком случае UDP становится оптимальным протоколом транспортного уровня. Другими явными кандидатами на использование UDP являются приложения, работающие по принципу запрос-ответ. Ответ можно считать подтверждением приема запроса. Если ответ не поступил в течение определенного промежутка времени, приложение просто повторяет запрос. Кроме того, существуют приложения, в которых реализуются собственные методы обеспечения надежной доставки данных, так что они не ищут подобной функциональности в протоколах транспортного уровня. Для каждого из упомянутых типов приложений дополнительный уровень подтверждения приема станет причиной снижения производительности.


TCP, протокол управления передачей

Для обеспечения надежной доставки данных на уровне транспортного протокола в приложениях используется протокол TCP, проверяющий факт доставки данных по сети в нужном порядке. TCP - надежный, потоковый протокол, требующий создания логических соединений. Рассмотрим боле е подробно каждую из этих характеристик. Надежность в TCP обеспечивает механизм подтверждения приема с повторной передачей (Positive Acknowledgment with Retransmission, PAR) . Система, в которой применяется PAR, повторяет отправку данных до тех пор, пока не получит от системы-адресата подтверждение, что данные успешно получены. Единицей обмена данными для взаимодействующих модулей TCP является сегмент. Каждый сегмент содержит контрольную сумму, посредством которой получатель определяет целостность данных. Если сегмент данных получен в целости и сохранности, получатель отправляет источнику подтверждение. Поврежденные сегменты данных просто игнорируются получателем. По истечении установленного интервала ожидания модуль-источник TCP повторно выполняет передачу всех сегментов, для которых не были получены подтверждения.

111

TCP ориентирован на работу с соединениями. В целях обмена данными между двумя узлами образуется сквозное логическое соединение. Перед началом передачи данных (беседы) узлы обмениваются управляющей информацией (рукопожатием). Управляющий статус сегмента TCP отражается посредством соответствующего флага поля Флаги в четвертом слове заголовка сегмента.

В TCP применяется установление соединения с помощью тройного рукопожатия; производится обмен тремя сегментами. Простейший вариант тройного рукопожатия показан на рис. 1.10. Узел А открывает соединение, посылая узлу В сегмент с установленным битом «синхронизации порядковых номеров» (Synchronize sequence numbers, SYN). Сегмент сообщает узлу В, что А желает создать соединение и уведомляет о том, какой порядковый номер будет использоваться в качестве начального в сегментах А. (Порядковые номера применяются для сохранения порядка следования данных.) Узел В отвечает узлу А сегментом с установленными битами «подтверждения» (Acknowledgment, АСК) и синхронизации (SYN). Сегмент В подтверждает получение сегмента от А, а также уведомляет, какой порядковый номер станет начальным для сегментов А. Наконец, узел А передает сегмент, подтверждающий получение сегмента от В, а также первый блок непосредственно данных.

После такого обмена TCP-модуль узла А обладает всеми свидетельствами того, что удаленный TCP-модуль функционирует и готов принимать данные. Как только соединение установлено, передача данных получает зеленый свет. После завершения передачи данных взаимодействующие модули обмениваются тройным рукопожатием, содержащим сегменты с так называемым битом FIN (No more data from sender, у источника больше нет данных), в целях закрытия соединения. Именно сквозной обмен данными становится логическим соединением между двумя системами.

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

Стандарт TCP не определяет конкретных чисел, с которых должна начинаться нумерация; каждая система самостоятельно выбирает точку начала отсчета. Чтобы корректно отслеживать порядок в потоке данных, каждая из взаимодействующих сторон должна знать исходный номер второй стороны. Две стороны соединения синхронизируют системы нумерации байтов, обмениваясь SYN-сегментами в ходе рукопожатия. Поле Порядковый номер SYN-сегмент а содержи т исходный порядковый номер (Initial Sequence Number, ISN), который является точкой отсчета для системы нумерации байтов. Из соображений безопасности ISN следует быть случайным числом.

Каждый байт данных нумеруется последовательно, начиная с номера ISN, так что первый байт непосредственно данных имеет порядковый номер ISN+1. Порядковый номер в заголовке сегмента с данными указывает на порядковое положение в потоке данных первого байта данных сегмента. Например, если первый байт потока данных имел порядковый номер 1 (при ISN = 0), а 4000 байт данных уже получены адресатом, первый байт данных текущего сегмента является байтом 4001, и будет иметь порядковый номер 4001. Подтверждающий сегмент (Acknowledgment Segment, АСК) выполняет две функции : подтверждения приема и управления потоком. Подтверждение сообщает источнику, какой объем данных получен и сколько еще данных адресат способен принять. Номер подтверждения - это порядковый номер следующего байта, ожидаемый адресатом. Стандарт не требует создания подтверждения для каждого пакета. Номер подтверждения является подтверждением получения всех байтов, вплоть до этого номера. Например, если первый отправленный байт имел номер 1 и 2 ООО байт данных уже получены адресатом, номер подтверждения будет иметь значение 2001.

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

На рисунке приведен поток данных TCP с нулевым значением исходного порядкового номера. Адресат получил и подтвердил получение 2000 байт, поэтому текущий номер подтверждения - 2001. Кроме того, адресат обладает возможностью принять еще 6000 байт, а потому предъявляет окно со значением 6000. Источник отправляет сегмент размером в 1000 байт с порядковым номером 4001. Для байтов 2001 и последующих еще не были получены подтверждения, однако источник продолжает передачу данных, пока не ис- черпаны ресурсы окна. Если на момент заполнения окна источником для уже отправленных данных не получены подтверждения, по истечении определенного интервала ожидания источник повторно передает данные, начиная с первого неподтвержденного байта.

В отсутствие последующих подтверждений повторная передача начнется с байта 2001. Данный метод гарантирует надежность доставки данных адресату.

Кроме того, TCP отвечает за доставку полученных от IP данных соответствующему приложению. Приложение, которому предназначаются данные, обозначаетс я 16-битным числом, номером порта. Значени я Исходный порт

111

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


Прикладной уровень

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

Перечислим наиболее широко известные и распространенные прикладные протоколы:

Telnet
Протокол сетевых терминалов (Network Terminal Protocol) обеспечивает диалоговую работу с удаленными системами по сети.

FTP
Протокол передачи файлов (File Transfer Protocol) используется для передачи файлов в диалоговом режиме.

SMTP
Простой протокол передачи почты (Simple Mail Transfer Protocol) обеспечивает доставку сообщений электронной почты.

HTTP
Протокол передачи гипертекста (Hypertext Transfer Protocol) выполняет доставку веб-страниц по сети.

HTTP, FTP, SMTP и Telnet - наиболее широко распространенные приложения TCP/IP. При этом как пользователи, так и системные администраторы в своей работе встречаются и со многими другими. Вот некоторые из не менее широко применяемых приложений TCP/IP:

Domain Name System (DNS, Система доменных имен)
Известное также в качестве службы имен, это приложение ассоциирует IP-адреса с именами, назначаемыми сетевым устройствам. Система DNS подробно рассматривается в этой книге.

Open Shortest Path First (OSPF, Протокол предпочтения кратчайшего пути )
Маршрутизация является одним из несущих элементов конструкции TCP/IP. Протокол OSPF используется сетевыми устройствами для обмена информацией по маршрутизации. Маршрутизация также является одной из основных тем этой книги.

Network File System (NFS, Сетевая файловая система)
Данный протокол позволяет организовывать совместный доступ к файлам многих узлов сети.

Отдельные протоколы, такие как Telnet и FTP, требуют от пользователя определенных познаний в работе сети. Другие, например OSPF, обычно остаются скрытыми от пользователей. Системный администратор осознает существование всех этих приложений и всех протоколов уровней TCP/IP. Более того, он отвечает за их настройку!

Резюме

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

Обмениваться, хранить, передавать Ваши файлы стало просто как никогда.
yandex-disk
Читать подробнее: для чего Yandex-Диск проекту Mini-Server. Практика установки, настройки и использования сетевого хранилища на Ubuntu server LTS 12.04 в статье Резервное копирование сервера Ubuntu на Яндекс Диск.

>> Ubuntu 12.04 + Nginx Скачать сервер
>> Fedora 15 Скачать сервер
>> Простой Debian 6.0.6 Скачать сервер
>> CentOS 6.0 и
+ (5.6) другой
Скачать сервер
>> OpenSUSE 11.4
MAX
Скачать сервер

Вход на сайт

ВНИМАНИЕ!

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