Файл: Debian Таненбаум Бос.pdf

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 48163

Скачиваний: 190

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

636  

 Глава 8. Многопроцессорные системы 

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

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

8.3.2. Сетевые службы и протоколы

Все компьютерные сети предоставляют своим пользователям (хостам и процес-
сам) определенные службы, которые реализуются ими согласно конкретным прави-
лам стандартного обмена сообщениями. Далее будет дано краткое введение в эту тему.

Сетевые службы

Компьютерные сети предоставляют службы пользующимся ими хостам и процессам. 
Служба на основе соединения

 (conection-oriented service) моделируется так же, как 

в телефонной системе. Чтобы поговорить с кем-нибудь, вы берете телефонную трубку, 
набираете номер, разговариваете, а затем кладете трубку на место. Точно так же для 
пользования сетевой службой на основе соединения обслуживаемый пользователь 
сначала устанавливает соединение, использует это соединение, а затем его освобож-
дает. Важный аспект соединения заключается в том, что оно работает как телефон: 
отправитель помещает объекты (биты) на одном конце, а получатель берет их в том же 
порядке на другом конце.

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

Каждая служба может характеризоваться качеством обслуживания (quality of service). 
Некоторые службы считаются надежными в том смысле, что они никогда не теряют 
данные. Обычно надежная служба реализуется за счет того, что получатель подтверж-
дает получение каждого сообщения, отправляя назад специальный подтверждающий 
пакет

 (acknowledgement packet), чтобы отправитель был уверен, что его сообщение до-

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

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


background image

8.4. Распределенные системы   

637

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

У надежной службы на основе соединения есть два немного различающихся вариан-
та: последовательность сообщений и байтовый поток. В первом из них соблюдаются 
границы сообщений. При отправке двух сообщений по 1 Кбайт они поступают к по-
лучателю как два отдельных однокилобайтных сообщения и никогда не поступают 
как одно двухкилобайтное сообщение. Во втором варианте соединение представляет 
собой простой поток байтов, не имеющий границ между сообщениями. Когда 2 Kбайт 
поступят получателю, невозможно сказать, что они были посланы как одно двухкило-
байтное сообщение, два однокилобайтных сообщения, 2048 однобайтных сообщений 
или в каком-либо ином виде. Если страницы книги отправляются фотонаборному 
устройству по сети как отдельные сообщения, то, может быть, важно соблюдать 
границы сообщений. В то же время когда терминал входит в удаленную серверную 
систему, то нужен лишь поток байтов от терминала к компьютеру. Здесь нет границ 
между сообщениями.

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

Но соединения требуются не всем приложениям. Например, для тестирования сети 
нужен лишь способ отправки одиночного пакета, имеющего высокую, но не гаранти-
рованную вероятность доставки. Ненадежная (в смысле не имеющая подтверждений) 
служба без установки соединения часто называется службой дейтаграмм (datagram 
service) по аналогии с телеграфной службой, также не предоставляющей подтвержде-
ний отправителю.

В отдельных ситуациях можно не устанавливать соединение для отправки одного ко-
роткого сообщения, но надежность играет не менее важную роль. Для таких приложе-
ний может быть предоставлена служба дейтаграмм с подтверждениями (acknowledged 
datagram service). Она похожа на отправку заказного письма с уведомлением о доставке. 
При возвращении уведомления отправитель будет абсолютно уверен, что письмо было 
доставлено по назначению, а не потеряно по дороге.

Рис. 8.29. Сетевые службы шести различных типов


background image

638  

 Глава 8. Многопроцессорные системы 

Существует также служба запросов и ответов (request-reply service), при использо-
вании которой отправитель посылает одиночную дейтаграмму, содержащую запрос, 
а в обратном сообщении получает ответ. Под эту категорию подпадает, например, 
запрос к локальной библиотеке о том, где говорят по-уйгурски. Запрос-ответ обычно 
используется для реализации обмена данными в клиент-серверной модели: клиент 
выдает запрос, а сервер на него отвечает. На рис. 8.29 приведена сводная таблица всех 
перечисленных ранее разновидностей служб.

Сетевые протоколы

У всех сетей имеются узкоспециализированные правила для отправляемых сообщений 
и возвращаемых на них ответов. При определенных обстоятельствах (например, при 
передаче файлов), когда сообщение отправляется от источника к месту назначения, из 
места назначения требуется отправка по обратному маршруту подтверждения, свиде-
тельствующего о благополучном получении сообщения. При других обстоятельствах 
(например, при использовании цифровой телефонии) подобных подтверждений не 
ожидается. Свод правил, по которым происходит обмен данными между взаимодей-
ствующими компьютерами, называется протоколом (protocol). Существует множе-
ство протоколов, включая протоколы обмена данными между маршрутизаторами, 
протоколы обмена данными между хостами и т. д. Более подробное рассмотрение 
компьютерных сетей и их протоколов дано в книге Computer Networks5/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-адрес получателя и использует его для маршрутизации пакета.


background image

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-имена получили широкую известность благодаря адресам 


background image

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-имя, слеш и имя