
- •Глава 2 Связь
- •2.1. Уровни протоколов
- •2.1. Уровни протоколов 83
- •84 Глава 2. Связь
- •2.1. Уровни протоколов 85
- •2.1.1. Низкоуровневые протоколы
- •86 Глава 2. Связь
- •2.1. Уровни протоколов 87
- •2.1.2. Транспортные протоколы (метод_Метелап лр_1)
- •88 Глава 2. Связь
- •2.1. Уровни протоколов 89
- •92 Глава 2. Связь
- •2.1.3. Протоколы верхнего уровня
- •2.1. Уровни протоколов 91
- •92 Глава 2. Связь
- •2.2. Удаленный вызов процедур 93
- •2.2. Удаленный вызов процедур
- •94 Глава 2. Связь
- •2.2.1. Базовые операции rpc
- •2.2. Удаленный вызов процедур 95
- •96 Глава 2. Связь
- •2.2. Удаленный вызов процедур 97
- •98 Глава 2. Связь
- •2.2.2. Передача параметров
- •2.2. Удаленный вызов процедур 99
- •100 Глава 2. Связь
- •2.2. Удаленный вызов процедур 101
- •102 Глава 2. Связь
- •2.2. Удаленный вызов процедур 103
- •2 .2.3. Расширенные модели rpc
- •104 Глава 2. Связь
- •2.2. Удаленный вызов процедур 105
- •106 Глава 2. Связь
- •2.2.4. Пример — dce rpc
- •2.2. Удаленный вызов процедур 107
- •108 Глава 2. Связь
- •2.2. Удаленный вызов процедур 109
- •110 Глава 2. Связь
- •2.3. Обращение к удаленным объектам 111
- •2.3. Обращение к удаленным объектам
- •112 Глава 2. Связь
- •2.3.1. Распределенные объекты
- •2.3. Обращение к удаленным объектам 113
- •114 Глава 2. Связь
- •2.3.2. Привязка клиента к объекту
- •2.3. Обращение к удаленным объектам 115
- •116 Глава 2. Связь
- •2.3. Обращение к удаленным объектам 117
- •2.3.3. Статическое и динамическое удаленное обращение к методам
- •118 Глава 2. Связь
- •2.3.4. Передача параметров
- •2.3. Обращение к удаленным объектам 119
- •120 Глава 2. Связь
- •2.3.5. Пример 1 — удаленные объекты dce
- •2.3. Обращение к удаленным объектам 121
- •122 Глава 2. Связь
- •2.3.6. Пример 2 — Java rmi
- •2.3. Обращение к удаленным объектам 123
- •124 Глава 2. Связь
- •2.3. Обращение к удаленным объектам 125
- •126 Глава 2. Связь
- •2.4. Связь посредством сообщений
- •2.4.1. Сохранность и синхронность во взаимодействиях
- •2 .4. Связь посредством сообщений 127
- •128 Глава 2. Связь
- •2.4. Связь посредством сообщений 129
- •130 Глава 2. Связь
- •2.4. Связь посредством сообщений 131
- •2.4.2. Нерезидентная связь на основе сообщений
- •132 Глава 2. Связь
- •2.4. Связь посредством сообщений 133
- •134 Глава 2. Связь
- •2.4. Связь посредством сообщений 135
- •136 Глава 2. Связь
- •2.4.3. Сохранная связь на основе сообщений
- •2.4. Связь посредством сообщений 137
- •1 38 Глава 2. Связь
- •2.4. Связь посредством сообщений 139
- •140 Глава 2. Связь
86 Глава 2. Связь
ленным образом. Канальный уровень добавляет контрольную сумму к кадру. Когда кадр принимается, приемник повторно вычисляет контрольную сумму данных и сравнивает результат с контрольной суммой, пришедшей вместе с кадром. Если они совпадают, кадр считается верным и принимается. Если они различны, получатель просит отправителя снова отправить этот кадр. Кадры последовательно нумеруются с указанием номеров в заголовке, так что все понимают, где какой кадр.
На рис. 2.3 мы видим случай (отчасти патологический) посылки двух сообщений 1 и 2 с машины А на машину В. Сообщение с данными 0 посылается с машины А в момент времени 0. Когда в момент времени 1 это сообщение достигает машины В, обнаруживается, что оно повреждено помехами в линии передачи и контрольная сумма не соответствует действительности. Машина В обнаруживает это и в момент времени 2 запрашивает повторную посылку, отправляя соответствующее контрольное сообщение 0. К сожалению, в тот же самый момент машина А посылает сообщение 1. В ответ на полученный машиной А запрос на повторную посылку отправляется сообщение 0. Когда машина В получает сообщение с данными 1 (а ведь она запрашивала сообщение с данными 0!), она посылает машине А новое контрольное сообщение 1, настаивая на том, что она хочет получить сообщение с данными 0, а не 1. Когда контрольное сообщение 1 доходит до машины А, та посылает сообщение с данными 0 в третий раз.
Задача этого обсуждения — не показать, насколько хорош описанный протокол (он очень плох), а объяснить, что на каждом уровне существует необходимость во взаимодействии между отправителем и получателем. Типичные сообщения: «Пошли, пожалуйста, сообщение п заново» — «Уже посылал дважды» —
2.1. Уровни протоколов 87
« Нет, ты этого не делал» — «А я говорю, делал» — «Ну ладно, пускай делал, все равно пошли еще раз» и т. д. Это взаимодействие происходит в полях заголовка, где определены различные запросы и ответы и могут поддерживаться параметры (например, номера кадров).
Сетевой уровень
В локальных сетях у отправителя обычно нет необходимости находить местоположение получателя. Он просто бросает сообщение в локальную сеть, а получа-тель забирает его оттуда. Глобальные сети, однако, содержат множество машин, каждая из которых имеет собственные линии связи с другими машинами. Так на крупномасштабной карте показано множество городов и соединяющих их дорог. Сообщение, посылаемое от отправителя к получателю, должно пройти массу сетевых сегментов, на каждом из которых происходит выбор исходящей линии. Задача выбора наилучшего пути называется маршрутизацией (routing) и является
основной задачей сетевого уровня.
Проблема усложняется тем, что наиболее короткий путь не всегда является наилучшим. На самом деле важна величина задержки на выбранном маршруте. ма. в свою очередь, зависит от объема трафика и числа сообщений, стоящих в очереди на отправку по различным линиям. С течением времени задержка может меняться. Некоторые алгоритмы маршрутизации могут подстраиваться под •\:енения загруженности линий, некоторые же удовлетворяются тем, что при-
нимают решение на основе усредненных значений.В настоящее время, вероятно, наиболее широко распространенным сетевым
протоколом является не требующий установки соединения протокол Интерне- (Internet protocol, IP), входящий в комплект протоколов Интернета. На сете-
вом уровне сообщение именуется термином пакет (packet). IP-пакет может быть
послан без какой-либо предварительной подготовки. Маршрут каждого из 1Р-па-
кетов до места назначения выбирается независимо от других пакетов. Никакие внутренние пути не выбираются заранее и не запоминаются.
Протоколом с соединением, приобретающим популярность в настоящее вре-мя является виртуальный канал (virtual channel) па базе сетей ATM. Виртуальный канал в ATM — это непрямое соединение, устанавливаемое от источника к приемнику, возможно, проходящее через несколько промежуточных АТМ-комутаторов. Чтобы между двумя компьютерами не устанавливать каждый из виртуальных каналов по отдельности, набор виртуальных каналов может быть сгрупирован в виртуальный путь (virtual path). Виртуальный путь сравним с предопределенным маршрутом между двумя узлами, вдоль которого выстраиваются его виртуальные каналы. Изменение маршрута виртуального пути означает юматическую перекладку всех ассоциированных с ним каналов [194].