Добавить в цитаты Настройки чтения

Страница 17 из 64



1.3.3. Службы на основе соединений и службы без установления соединений

Уровни могут предлагать вышестоящим уровням услуги двух типов: с наличием или отсутствием установления соединения. В этом разделе мы рассмотрим, что означает каждый из этих типов и в чем состоит разница между ними.

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

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

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

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

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

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

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



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

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

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

Рис. 1.14. Шесть типов служб

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

1.3.4. Примитивы служб

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