tanenbaum_seti_all.pages (525408), страница 13
Текст из файла (страница 13)
В некоторых системах данные могут перемешаться только в одном направлении, в других— в любом направлении. Протокол также должен определять количество логических каналов, относящихся к соединению, и их приоритеты. Многие сети обеспечивают минимум по два логических канала на соединение: один для обычных данных и еше один — для срочных. Важным аспектом является контроль ошибок, поскольку физические каналы связи несовершенны. Известно множество колов, опознающих н исправляющих ошибки, однако обе стороны соединения должны договориться между собой о том, какой именно код будет выбран.
Кроме того, получатель должен иметь возможность сообщить отправителю, какие из сообщений были получены правильно, а какие — нет. Не все каналы связи сохраняют последовательность посылаемых по ним сообщений. Чтобы исправить возможную потерю порядка сообшений, протокол должен явно снабжать получатсля номерами пакетов, чтобы получаемые фрагменты сообшений могли быть собраны в правильном порядке. Очевидным решением проблемы является нумерация пакетов, однако остается открытым вопрос что делать с пакетами, приходящими в неверном порядке? Кроме того, на каждом уровне возникает вопрос: как организовать пересылку данных так, чтобы быстрая персдаюшая сторона нс завалила пакетами медленную принимающую сторону? Для разрешения данной проблемы существуют различные решения, которые будут обсуждаться далее. Некоторыс из пих предполагают прямые или косвенные ответы получателя посылающей стороне, информирующие ее о текушсм состоянии получателя. Другим решением может быть ограничение скорости передачи до некоторого договорного уровня.
В целом это называется управлением потоком. Вше одна проблема, которую необходимо разрешать на различных уровпях,— это неспособность всех процессов принимать сколь угодно длинные сообпгения. С этим может быть связан вопрос: что делать, если процесс настаивает на передаче данных столь малыми порциями, что передача становится неэффективной? Для решения подобной проблемы можно объединять посылаемые сообщения в один большой пакет и снова разбивать его после пересылки на отдельные сооб'щения.
Когда неудобно или неэффективно устанавливать отдельное соединение для кахгдой пары общающихся процессов, располагающийся ниже уровень может принять решение использовать одно и то же соединение для различных не связанных друг с другом разговоров. Пока это уплотнение каналов, или мультиплексирование, происходит прозрачно, оно может использоваться любым уровнем. Мультиплексирование, например, необходимо на физическом уровне, где вся 'связь должна осуществляться по ограниченному числу контуров. 56 Гпввв 1.
Введение Когда между отправителем и получателем существует несколько возможных путей следования сообщения, возникает задача выбора пути. Иногда она может быть разделана между несколькими уровнями. Например, при посылке сообщения из Лондона в Рим верхний уровень может выбрать путь через Францию или Германию, основывая свой выбор на знании законов, касающихся тайны переписки в данных странах, тогда как выбор нижнего уровня может основываться на текущей загруженности линий связи.
Эта задача называется маршрутизацией. Службы на основе соединений и службы без установления соединений Уровни могут прсдлагать вышестоящим уровням услуги двух типов: с наличием или отсутствием установлсция соединения. В этом разделе мы рассмотрим, что означает каждый из этих типов и в чсм состоит разница между ними, Типичным примером сервиса с установлснисм сослинсния являстся тслсфопная связь.
Чтобы поговорить с кем-нибудь, нсобхолимо поднять трубку, набрать номер, а после окончания разговора положить трубку. Нечто подобное происходит и в компьютерных сетях: при использовании сервиса с установлением сослинения абонент сперва устанавливает соединсиис, а после окончания сеанса разрывает его. Это напоминает трубу: биты сообщсния влетают в один ее конец, а вылетают с другого. В болышшстве случаев нс возникаст путаницы с последоватсльностью псрсдачи этих битов. В некоторых случаях пород началом передачи отправляющая и получающая машины обмениваются приветствиями, отсылая друг другу приемлемые параметры соединения: максимальный размер сообщения, необходимое качество сервиса и др.
В большинстве случаев одна из сторон посылает запрос, а другая его принимает, отвергает или же выставляет встречные условия. Что касается сервисов без установления сосднненя, то типичный примср такой технологии — почтовые системы. Каждое письмо содержит полный адрес назначения и проходит по некоему маршруту, который совершенно не зависит от других писем. Обычно то письмо, которое отнравлсно раныпс, в место назначения приходит раныпе. Каждая служба характеризуется качеством обслуживания. Нскоторые службы являются надежными в том смысле, что они никогда не тсряк~т данных. Обычно надежная служба реализуется при помощи подтверждсний, посылаемых получателем в ответ на каждос принятос сообщение, так что отправитель знает, дошло очередное сообщение или нет. Процесс пересылки подтвсрждений требует некоторых накладных расходов и снижает пропускную способность канала. Впрочем, подобные затраты обычно не очень велики и окупаются, хотя иногда могут быть нежелательными.
Типичным примером необходимости надежной службы на основе соединений является пересылка файлов. Владелец файла хочет быть уверенным, что все биты файла прибыли без искажений и в том жс порядке, в котором были отправле- Сетевое программное обеспечение 57 иы. Вряд ли кто-нибудь отдаст предпочтение службе, которая случайным образом искажает и~формацию, даже если передача происходит значительно быстрее. Надежные службы па основе соединеп ий бывак>т двух типов: последовательностии сообщений и байтовые потоки. В первом варианте сохраняк>тся границы между сообщениями. Когда посылаются два сообшсния размером по 1 Кбайт, то оии прибывают в виде двух сообщений размером по 1 Кбайт и никогда — как одно двухкилобайтное сообщение.
При втором варианте связь представляет собой просто поток байтов, без разделения на отдельные сообшсния. Когда 2048 байт прибывают к получателю, то иет никакой возможиости определить, было это одно сообщение длипой 2 Кбайт, два сообщения длиной 1 Кбайт или же 2048 одно- байтных сообщений. Если страницы книги посылаются по сети фотонаборной машине в виде отдельных сообщений, то, возможпо, необходимо сохранить границы между сообщениями. С другой стороны, при регистрации с удаленного терминала в системе разделения времени вполне достаточно потока байтов с терминального компьютера. Как уже упоминалось ранее, существуют системы, для которых задержки, связанные с пересылкой подтверждений, неприемлемы.
В качестве примера такой системы можно назвать цифровую голосовую связь. В данном случае предпочтительнее допустить шумы на линии или искаженные слова, нежели большие паузы, вызванные отсылкой подтверждений и повторной передачей блоков данных. Аналогично, при проведении видеоконференции отдельные неправильные пикселы окажутся меньшей проблемой, нежели дергакпциеся и останавливающиеся кадры, Не все приложения требуют установки соединения.
Например, при рассылке рекламы по электронной почте устаиовка связи для перссылки каждого отдельного сообщения нежелательна. Также не требуется в этом случае и 100-процентная надежность, особенно, если это существенно увеличит стоимость, Все, что нужно, — это способ переслать сообщение с высокой вероятностью его получения, но без гарантии. Ненадежная (то есть без подтверждений) служба без установления соединения часто называется службой дейтаграмм, или дейтаграммной службой — по аналогии с телеграфной службой, также не предоставляющей подтверждений отправителю.
В других ситуациях бывает желательпо не устаианавливать соединение для пересылки коротких сообщений, но надежность, тем не менее, существенна. Такая служба называется службой дейтаграмм с подтверждениями, Она подобна отправке заказного письма с подтверждением получения. Получив полтверждеиие, отправитель уверен, что письмо доставлено адресату, а не потеряно по дороге. Кроме того, сушествует служба запросов и ответов, в которой отправитель посылает дейтаграммы, содержащие запросы, и получает ответы от получателя.
Например, к данной категории можно отнести вопрос к библиотеке о том, где говорят по-уйгурски. Обьшно модель запросов и ответов применяется для реализации обшения в модели «клиент-сервергс клиент посылает запрос, а сервер отвечает на него. Обсуждавшиеся ранее типы слУжб сведены в таблицу на рис. 1.13. 86 Глава 1. Введение Пример Надежный поток сообщений Последовательность страниц Ориентированная на соединение Надежный поток байт Удаленная регистрвция Цифровая голосовая связь Ненадежное соединение Рассылке рекламы злактронной почтой Ненадежная дейтаграмма Без установления соединения Дейтаграмма с подтверждениями Заказные письма Запрос к базе данных Запрос — ответ Рис.