Добавлен: 29.10.2018
Просмотров: 48163
Скачиваний: 190
636
Глава 8. Многопроцессорные системы
маршрутизаторы, подключенные к маршрутизаторам региональной сети. Маршрути-
заторы, имеющиеся у поставщиков услуг Интернета, подключены к группам модемов,
используемым клиентами этих поставщиков. Таким образом, каждый хост Интернета
имеет как минимум один путь, а зачастую и множество путей к любому другому хосту.
Весь поток информации в Интернете отправляется в форме пакетов. Каждый пакет несет
в себе адрес назначения, который используется для маршрутизации. Когда пакет попада-
ет в маршрутизатор, тот извлекает адрес назначения и ищет одну из его частей в таблице,
чтобы определить, по какой из выходящих линий, а стало быть, к какому маршрутизатору
его отправить. Эта процедура повторяется до тех пор, пока пакет не доберется до хоста
назначения. Таблицы маршрутизации имеют высокодинамичный характер и постоянно
обновляются по мере того, как маршрутизаторы и линии связи отключаются и подключа-
ются вновь, и по мере изменения условий передачи данных. Алгоритмы маршрутизации
интенсивно изучались и модифицировались на протяжении многих лет.
8.3.2. Сетевые службы и протоколы
Все компьютерные сети предоставляют своим пользователям (хостам и процес-
сам) определенные службы, которые реализуются ими согласно конкретным прави-
лам стандартного обмена сообщениями. Далее будет дано краткое введение в эту тему.
Сетевые службы
Компьютерные сети предоставляют службы пользующимся ими хостам и процессам.
Служба на основе соединения
(conection-oriented service) моделируется так же, как
в телефонной системе. Чтобы поговорить с кем-нибудь, вы берете телефонную трубку,
набираете номер, разговариваете, а затем кладете трубку на место. Точно так же для
пользования сетевой службой на основе соединения обслуживаемый пользователь
сначала устанавливает соединение, использует это соединение, а затем его освобож-
дает. Важный аспект соединения заключается в том, что оно работает как телефон:
отправитель помещает объекты (биты) на одном конце, а получатель берет их в том же
порядке на другом конце.
В отличие от этого служба без установки соединения (connectionless service) модели-
руется наподобие почтовой системы. Каждое сообщение (письмо) несет в себе полный
адрес доставки, и каждое такое сообщение направляется по маршруту по системе не-
зависимо от всех остальных. Как правило, когда два сообщения отправляются одному
и тому же получателю, то первое посланное становится и первым полученным. Но мо-
жет быть и так, что первое отправленное сообщение может задержаться и первым будет
получено второе сообщение. В службе на основе соединения такое просто невозможно.
Каждая служба может характеризоваться качеством обслуживания (quality of service).
Некоторые службы считаются надежными в том смысле, что они никогда не теряют
данные. Обычно надежная служба реализуется за счет того, что получатель подтверж-
дает получение каждого сообщения, отправляя назад специальный подтверждающий
пакет
(acknowledgement packet), чтобы отправитель был уверен, что его сообщение до-
шло до получателя. Процесс подтверждения вызывает издержки и паузы, необходимые
для обнаружения потери пакета, которые замедляют работу.
Типичной подходящей ситуацией для применения надежной службы на основе со-
единения является передача файлов. Владелец файла хочет получить гарантию, что
8.4. Распределенные системы
637
все биты поступили без искажений и в том порядке, в каком они были отправлены.
Вряд ли кто-нибудь из клиентов захочет иметь дело со службой, которая иногда до-
пускает искажения или потери нескольких битов, даже если она работает намного
быстрее всех остальных.
У надежной службы на основе соединения есть два немного различающихся вариан-
та: последовательность сообщений и байтовый поток. В первом из них соблюдаются
границы сообщений. При отправке двух сообщений по 1 Кбайт они поступают к по-
лучателю как два отдельных однокилобайтных сообщения и никогда не поступают
как одно двухкилобайтное сообщение. Во втором варианте соединение представляет
собой простой поток байтов, не имеющий границ между сообщениями. Когда 2 Kбайт
поступят получателю, невозможно сказать, что они были посланы как одно двухкило-
байтное сообщение, два однокилобайтных сообщения, 2048 однобайтных сообщений
или в каком-либо ином виде. Если страницы книги отправляются фотонаборному
устройству по сети как отдельные сообщения, то, может быть, важно соблюдать
границы сообщений. В то же время когда терминал входит в удаленную серверную
систему, то нужен лишь поток байтов от терминала к компьютеру. Здесь нет границ
между сообщениями.
Для некоторых приложений задержки, вызванные подтверждениями, абсолютно не-
приемлемы. Одним из таких приложений является оцифрованный голосовой трафик.
Для пользователя телефона предпочтительнее слышать небольшие шумы на линии
или периодически искаженные слова, чем сталкиваться с паузами, связанными с ожи-
данием подтверждений.
Но соединения требуются не всем приложениям. Например, для тестирования сети
нужен лишь способ отправки одиночного пакета, имеющего высокую, но не гаранти-
рованную вероятность доставки. Ненадежная (в смысле не имеющая подтверждений)
служба без установки соединения часто называется службой дейтаграмм (datagram
service) по аналогии с телеграфной службой, также не предоставляющей подтвержде-
ний отправителю.
В отдельных ситуациях можно не устанавливать соединение для отправки одного ко-
роткого сообщения, но надежность играет не менее важную роль. Для таких приложе-
ний может быть предоставлена служба дейтаграмм с подтверждениями (acknowledged
datagram service). Она похожа на отправку заказного письма с уведомлением о доставке.
При возвращении уведомления отправитель будет абсолютно уверен, что письмо было
доставлено по назначению, а не потеряно по дороге.
Рис. 8.29. Сетевые службы шести различных типов
638
Глава 8. Многопроцессорные системы
Существует также служба запросов и ответов (request-reply service), при использо-
вании которой отправитель посылает одиночную дейтаграмму, содержащую запрос,
а в обратном сообщении получает ответ. Под эту категорию подпадает, например,
запрос к локальной библиотеке о том, где говорят по-уйгурски. Запрос-ответ обычно
используется для реализации обмена данными в клиент-серверной модели: клиент
выдает запрос, а сервер на него отвечает. На рис. 8.29 приведена сводная таблица всех
перечисленных ранее разновидностей служб.
Сетевые протоколы
У всех сетей имеются узкоспециализированные правила для отправляемых сообщений
и возвращаемых на них ответов. При определенных обстоятельствах (например, при
передаче файлов), когда сообщение отправляется от источника к месту назначения, из
места назначения требуется отправка по обратному маршруту подтверждения, свиде-
тельствующего о благополучном получении сообщения. При других обстоятельствах
(например, при использовании цифровой телефонии) подобных подтверждений не
ожидается. Свод правил, по которым происходит обмен данными между взаимодей-
ствующими компьютерами, называется протоколом (protocol). Существует множе-
ство протоколов, включая протоколы обмена данными между маршрутизаторами,
протоколы обмена данными между хостами и т. д. Более подробное рассмотрение
компьютерных сетей и их протоколов дано в книге Computer Networks, 5/e (Tanenbaum
and Wetherall, 2010).
Во всех современных сетях используется так называемый стек протоколов (protocol
stack) для наслоения различных протоколов друг на друга. На каждом уровне реша-
ются разные вопросы. Например, на самом нижнем уровне протоколы определяют,
как сообщить в потоке битов, где начинаются и где заканчиваются пакеты. На более
высоком уровне протоколы занимаются прокладыванием маршрутов для пакетов по
сложным сетям от источника к месту назначения. И на еще более высоком уровне
они обеспечивают надлежащую доставку всех пакетов в многопакетном сообщении
в нужном порядке.
Так как большинство распределенных систем используют Интернет в качестве основы
для своей работы, ключевыми протоколами, используемыми этими системами, явля-
ются два главных интернет-протокола: IP и TCP. IP (Internet Protocol) — это прото-
кол отправки дейтаграмм, согласно которому отправитель вводит в сеть дейтаграмму
размером до 64 Кбайт и надеется, что она дойдет до получателя. При этом не дается
никаких гарантий. По мере прохождения по сети Интернет дейтаграммы могут разби-
ваться на меньшие по размеру пакеты. Эти пакеты путешествуют независимо друг от
друга, возможно, по разным маршрутам. Когда все составляющие прибывают к месту
назначения, они собираются в нужном порядке и доставляются получателю.
В настоящее время используются две версии IP — v4 и v6. На сегодня доминирует
v4, поэтому она и будет здесь рассмотрена, но все большее распространение получает
v6. Каждый пакет v4 начинается с 40-байтного заголовка, содержащего кроме других
полей 32-битный адрес источника и 32-битный адрес приемника. Они называются
IP-адресами
, которые формируют основу маршрутизации в Интернете. Согласно ус-
ловиям, они записываются в виде четырех десятичных чисел в диапазоне от 0 до 255,
разделенных точками, как в адресе 192.31.231.65. Когда пакет поступает на маршрути-
затор, тот извлекает IP-адрес получателя и использует его для маршрутизации пакета.
8.4. Распределенные системы
639
Поскольку в дейтаграммах IP подтверждение не используется, то одного IP недо-
статочно для надежной связи по Интернету. Для предоставления надежной передачи
данных поверх IP обычно накладывается другой протокол — TCP (Transmission Control
Protocol — протокол управления передачей). TCP использует IP для предоставления
потоков, основанных на соединениях. Для использования TCP процесс сначала уста-
навливает соединение с удаленным процессом. Требуемый процесс определяется IP-
адресом машины и номером порта на этой машине, который отслеживается процессами,
заинтересованными в получении входящих соединений. Как только соединение будет
установлено, байты просто закачиваются в соединение, при этом гарантируется, что они
выйдут на другом конце без повреждений и в нужном порядке. При реализации TCP
этой гарантии добиваются за счет использования порядковой нумерации и контроль-
ных сумм, а также повторной передачи при получении пакетов с ошибками. Все это
незаметно применяется к процессам отправки и получения данных. Для них очевидна
лишь надежная связь между процессами, подобная каналу в системе UNIX.
Чтобы понять порядок взаимодействия всех этих протоколов, рассмотрим простейший
случай с использованием очень короткого сообщения, не нуждающегося во фрагмента-
ции ни на каком уровне. Хост находится в сети Ethernet, подключенной к Интернету.
Так что же происходит на самом деле? Пользовательский процесс генерирует сообще-
ние и выдает системный вызов для его отправки по предварительно установленному
TCP-соединению. Стек протоколов, находящийся в ядре, добавляет в начало сообще-
ния TCP-заголовок, а затем IP-заголовок. Затем сообщение поступает к драйверу сети
Ethernet, который добавляет Ethernet-заголовок, направляющий пакет к маршрути-
затору в сети Ethernet. После чего этот маршрутизатор внедряет пакет в Интернет
(рис. 8.30).
Рис. 8.30. Наращивание заголовков пакета
Чтобы установить соединение с удаленным хостом (или хотя бы отправить ему
дейтаграмму), необходимо знать его IP-адрес. Поскольку оперировать списками
с 32-битными адресами людям неудобно, была изобретена система под названием DNS
(Domain Name System — система доменных имен), представляющая собой базу данных,
которая отображает ASCII-имена хостов на их IP-адреса. Таким образом, появилась
возможность воспользоваться DNS-именем
star.cs.vu.nl
вместо соответствующего ему
IP-адреса 130.37.24.6. DNS-имена получили широкую известность благодаря адресам
640
Глава 8. Многопроцессорные системы
электронной почты Интернета, имеющим следующую форму: имя пользователя,
символ
@
, а затем DNS-имя хоста (
user-name@DNS-host-name
). Такая система имен
позволяет почтовой программе на отправляющем почту хосте вести поиск IP-адреса,
принадлежащего хосту назначения в базе данных DNS, устанавливая TCP-соединение
с фоновым процессом электронной почты на этом хосте, и отправлять сообщение в виде
файла. Вместе с сообщением отправляется имя пользователя (
user-name
), чтобы можно
было идентифицировать, в какой почтовый ящик следует поместить сообщение.
8.3.3. Связующее программное обеспечение
на основе документа
Усвоив основные понятия, касающиеся сетей и протоколов, можно приступать к рас-
смотрению различных уровней связующего программного обеспечения, которое может
надстраиваться поверх основной сети для создания единой парадигмы для приложений
и пользователей. Начнем с простого, хорошо известного примера — Всемирной пау-
тины (WWW, World Wide Web). Эта паутина была изобретена Тимом Бернерсом-Ли
в 1989 году в европейском центре ядерных исследований, ЦЕРНе (CERN), и с этого
момента с невероятной скоростью распространилась по всему миру.
В основу Всемирной паутины была положена довольно простая исходная парадигма:
в каждом компьютере может содержаться один или несколько документов, называ-
емых веб-страницами. Каждая веб-страница содержит текст, изображения, значки,
звуки, видеоклипы и т. п., а также гиперссылки (указатели) на другие веб-страницы.
При запросе пользователем веб-страницы используется программа под названием
веб-браузер
, которая отображает страницу на экране. Щелчок на ссылке вызывает за-
мену текущей страницы на экране той страницей, на которую указывает ссылка. Хотя
в последнее время во Всемирную паутину привнесены разнообразные украшательства,
лежащая в ее основе парадигма все еще в силе: она представляет собой колоссально
большой направленный граф документов, который может указывать на другие доку-
менты (рис. 8.31).
Рис. 8.31. Всемирная паутина — это большой направленный граф документов
У каждой веб-страницы есть уникальный адрес, называемый URL (Uniform Resource
Locator — унифицированный указатель ресурса), имеющий форму, где друг за другом
следуют название протокола, двоеточие, двойной прямой слеш, DNS-имя, слеш и имя