Многоуровневый принцип программного обеспечения Интернета

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

Таким образом, транспортировку подарка можно представить как иерархию, состоящую из трех уровней: 1 — уровень пользователя (вы и ваш друг), 2 — почтовая служба и 3 — авиакомпания. Каждый уровень использует нижний уровень в качестве абстрактного инструмента. (Вы не знаете деталей работы почтовой службы, а почтовая служба не знает внутренних операций авиакомпании.) Каждый уровень иерархии имеет представителей как в месте назначения, так и в месте отправления, при этом представители в месте назначения совершают действия, обратные тем, которые выполняют представители в месте отправления.

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

Рассмотрим процесс прохождения сообщения по всем уровням, начиная с прикладного, более подробно (рис. 3.19).

Прикладной уровень состоит из таких единиц программного обеспечения, которым для осуществления их функций необходима связь с Интернетом. Несмотря на сходство названий, этот уровень включает не только прикладное программное обеспечение, описанное в разделе 3.2. На самом деле многие программы, которое считаются частью прикладного уровня, относятся к обслуживающему программному обеспечению по классификации, представленной в разделе 3.2. Примером может послужить набор программ для передачи файлов по Интернету, использующих протокол FTP (File Transfer Protocol — протокол передачи файлов). Эти программы разработаны совместно как законченный пакет программ и называются FTP, в знак признания лежащего в основе протокола. В качестве другого примера можно привести пакет программ, который называется сетевым теледоступом (telnet). Он был разработан как средство, которое позволяет пользователю через Интернет получать доступ к удаленной машине, как если бы он был местным пользователем этой машины. Оба пакета программ, и FTP и пакет сетевого теледоступа, первоначально рассматривались как прикладное программное обеспечение, но сегодня они стали частью инфраструктуры, поддерживаемой большинством персональных компьютеров. Эти единицы программного обеспечения сейчас используются как абстрактные инструменты в структуре более крупных приложений, таких как веб-браузеры. В этом смысле они стали обслуживающим программным обеспечением. Вот другой пример этого явления. Набор программ, которые приводят в исполнение протокол SMTP (Simple Mail Transfer Protocol — простой протокол электронной почты), который сейчас является обслуживающим программным обеспечением и используется серверами электронной почты для пересылки сообщений.

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

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

Транспортный уровень добавляет к сегментам сообщения порядковый номер, чтобы в пункте назначения их можно было снова объединить в сообщение. Затем он прикрепляет к каждому сегменту, который называется пакетом (packet), адрес пункта назначения и передает его сетевому уровню. С этого момента пакеты рассматриваются как отдельные не связанные друг с другом сообщения, пока они не достигнут пункта назначения.

Сетевой уровень отслеживает пересылку полученных пакетов от одной сети Интернета к другой, пока они не достигнут пункта назначения. Следовательно, именно сетевой уровень имеет дело с топологией Интернета. В частности, если путь пакета проходит через множество отдельных сетей, именно сетевой уровень в каждой промежуточной остановке определяет адрес, по которому следует дальше послать пакет. Он осуществляет эту задачу, приписывая каждому пакету адрес промежуточного места назначения. Промежуточный адрес определяется следующим образом: если конечный пункт назначения пакета находится в данной сети, то приписанный адрес является копией адреса конечного пункта назначения; в противном случае приписывается адрес маршрутизатора данной сети, через который пакет можно переслать в соседнюю сеть. То есть пакет, предназначенный для машины текущей сети, пересылается этой машине, а пакет, адресованный машине, находящейся в другой сети, продолжает свое путешествие от сети к сети.

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

Канальный уровень обеспечивает учет всех деталей пересылки сообщений, присущих сети, в которой находится машина. Если эта сеть является кольцевой сетью с маркерным доступом, канальный уровень, прежде чем отправить сообщение, ждет получения маркера. Если в сети используется протокол CSMA/CD, канальный уровень ждет освобождения шины. Кроме того, каждая отдельная сеть Интернета имеет свою собственную систему адресов, которая не зависит от системы адресов, применяемых в Интернете. Также многие из сетей функционировали задолго до того, как их владельцы решили подключить их к Интернету. Поэтому канальный уровень должен преобразовать Интернет-адрес, приписанный к пакету, в адрес, соответствующий местной системе адресов.

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

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

Определение того, какая программа должна получить входящее сообщение, является важной задачей транспортного уровня. Каждой программе назначается уникальный номер порта (не путайте с портом ввода-вывода, который обсуждался в главе 2). Программа, отправляющая сообщение, прикрепляет к адресу сообщения соответствующий номер порта. Как только транспортный уровень получает сообщение, он передает его программе прикладного уровня с указанным номером порта. Пользователям Интернета не нужно знать номера портов, поскольку распространенные программы имеют стандартные номера портов. Например, если веб-браузер должен открыть документ с адресом http://www.zoo.org/animals/frog.html, он знает, что нужно установить связь с HTTP-сервером www.zoo.org через порт с номером 80. Точно так же, когда пересылается файл, FTP-клиент замыкается на FTP-сервер с номером порта 21.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: