Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 21
Текст из файла (страница 21)
Было разработано множество стандартов физического уровня для различных носителей, например стандартRS-232-C для последовательных линий связи.Канальный уровеньФизический уровень только пересылает биты. Пока нет ошибок, все хорошо. Однако в реальных сетях происходят ошибки, и их нужно как-то находить и исправлять. Это и является главной задачей канального уровня. Он группирует битыв модули, обычно называемые кадрами {frames), и следит за тем, чтобы каждыйкадр был передан правильно.Канальный уровень делает это путем помещения специальной битовой маскив начало и конец каждого кадра для их маркировки, а также путем вычисленияконтрольной суммы {checksum), то есть суммирования всех байтов кадра опреде-Глава 2.
Связь86ленным образом. Канальный уровень добавляет контрольную сумму к кадру. Когда кадр принимается, приемник повторно вычисляет контрольную сумму данныхи сравнивает результат с контрольной суммой, пришедшей вместе с кадром. Если они совпадают, кадр считается верным и принимается. Если они различны,получатель просит отправителя снова отправить этот кадр. Кадры последовательно нумеруются с указанием номеров в заголовке, так что все понимают, гдекакой кадр.На рис. 2.3 мы видим случай (отчасти патологический) посылки двух сообщений 1 и 2 с машины Л на машину В.
Сообщение с данными О посылается с машины Л в момент времени 0. Когда в момент времени 1 это сообщение достигаетмашины В, обнаруживается, что оно повреждено помехами в линии передачии контрольная сумма не соответствует действительности. Машина В обнаруживает это и в момент времени 2 запрашивает повторную посылку, отправляя соответствующее контрольное сообщение 0.
К сожалению, в тот же самый моментмашина Л посылает сообщение 1. В ответ на полученный машиной Л запрос наповторную посылку отправляется сообщение 0. Когда машина В получает сообщение с данными 1 (а ведь она запрашивала сообщение с данными О!), она посылает машине Л новое контрольное сообщение 1, настаивая на том, что она хочетполучить сообщение с данными О, а не 1. Когда контрольное сообщение 1 доходит до машины Л, та посылает сообщение с данными О в третий раз.Время0АВСобытиеМашина А посылает сообщениесданными 0Сообщениесданными 012Сообщениесданными 13Контрольное jсообщение 04Сообщениесданными 0\ / /Сообщениесданными 0Машина В получает сообщениесданными 0Контрольноесообщение 0Машина А посылает сообщение с данными 1.Машина В обнаруживает несовпадениеконтрольной суммы...X.../^Сообщениесданными 1Оба сообщения достигают своейцели без ошибокКонтрольноесообщение 1Машина А снова посылает сообщение с данными 0.Машина В говорит: «Мне нужно сообщениесданными 0, а не 1»\ Х..рк!..Контрольное ic^ 4 ( Сообщение5 сообщение 1Оба сообщения достигают1 сданными 0 своей цели без ошибокСообщениесданными 0Машина А снова посылаетсообщение с данными 067Сообщениес данными 0В конце концов машина В получаетсообщение с данными 0Рис.
2.3. Обмен между получателем и отправителем канального уровняЗадача этого обсуждения — не показать, насколько хорош описанный протокол (он очень плох), а объяснить, что на каждом уровне существует необходимость во взаимодействии между отправителем и получателем. Типичные сообщения: «Пошли, пожалуйста, сообщение п заново» — «Уже посылал дважды» —2.1. Уровни протоколов87«Нет, ты этого не делал» — «А я говорю, делал» ~ «Ну ладно, пускай делал, всеравно пошли еще раз» и т. д.
Это взаимодействие происходит в полях заголовка,где определены различные запросы и ответы и могут поддерживаться параметры(например, номера кадров).Сетевой уровеньв локальных сетях у отправителя обычно нет необходимости находить местоположение получателя. Он просто бросает сообщение в локальную сеть, а получатель забирает его оттуда. Глобальные сети, однако, содержат множество машин,каждая из которых имеет собственные линии связи с другртми машинами.
Так накрупномасштабной карте показано множество городов и соединяющих их дорог.Сообщение, посылаемое от отправителя к получателю, должно пройти массусетевых сегментов, на каждом из которых происходит выбор исходящей линии.Задача выбора наилучшего пути называется маршрутизацией (routing) и является основной задачей сетевого уровня.Проблема усложняется тем, что наиболее короткий путь не всегда являетсянаилучшим.
На самом деле важна величина задержки на выбрагиюм маршруте.Она, в свою очередь, зависит от объема трафика и числа сообщений, стоящихв очереди на отправку по различным линиям. С течением времени задержка может меняться. Некоторые алгоритмы маршрутизации могут подстраиваться подизменения загруженности линий, некоторые же удовлетворяются тем, что принимают решение на основе усредненных значений.В настоящее время, вероятно, наиболее широко распространенным сетевымпротоколом является не требующий установкрг соединения протокол Интернета {Internet protocol, IP), входящий в комплект протоколов Интернета. На сетевом уровне сообщение именуется термином пакет {packet).
IP-пакет может бытьпослан без какой-либо предварительной подготовки. Маршрут каждого из IP-пакетов до места назначения выбирается независимо от других пакетов. Никакиевнутренние пути не выбираются заранее и не запомрнлаются.Протоколом с соединением, приобретающим популярность в настоящее время, является виртуальный канал {virtual channel) на базе сетей ATM. Виртуальный канал в ATM — это непрямое соединение, устанавливаемое от источникак приемнику, возможно, проходящее через несколько промежуточных АТМ-коммутаторов. Чтобы между двумя компьютерами не устанавливать каждый из виртуальных каналов по отдельности, набор виртуальных каналов может быть сгруппирован в виртуальный путь {virtual path). Виртуальный путь сравним с предопределенным маршрутом между двумя узлами, вдоль которого выстраиваютсявсе его виртуальные каналы.
Р1зменение маршрута виртуального пути означаетавтоматическую перекладку всех ассоциированных с ним каналов [194].2.1.2. Транспортные протоколыТранспортный уровень — это последняя часть того, что называют базовым стекомсетевых протоколов, поскольку в нем реализованы все службы, которые необходимы для построения сетевых приложений и которые не вошли в интерфейс се-88Глава 2. Связьтевого уровня. Другими словами, транспортный уровень дает возможность разработчикам приложений использовать базовую сеть, лежащую в его основе.Функции транспортного уровняНа пути от отправителя к получателю пакеты могут теряться.
В то время как одни приложения задействуют собственные процедуры исправления ошибок, другие предпочитают надежную связь. Предоставить им эту службу — дело транспортного уровня. Идея состоит в том, что приложение должно быть в состояниипередать сообщение транспортному уровню и ожидать того, что оно будет доставлено без потерь.После получения сообщения с прикладного уровня транспортный уровеньразбивает его для успешной передачи на достаточно мелкие части, присваиваетим последовательные номера и пересылает их. Взаимодействие на уровне заголовка транспортного уровня сводится к обсуждению того, какой пакет был послан, какой — принят, сколько места есть у адресата для приема дальнейших сообщений, что следует послать повторно и тому подобным вопросам.Надежное транспортное соединение (которое по определению представляетсобой связь с установкой соединения) можно построить поверх сетевых службкак с соединениями, так и без соединений.
В первом случае все пакеты будутдоставлены в правильной последовательности (если они посылаются одновременно), а в последнем возможно, что один из пакетов пойдет по другому маршруту и придет раньше, чем пакет, посланный до него. Это побуждает программноеобеспечение транспортного уровня складывать пакеты в правильной последовательности, чтобы поддержать представление о транспортном соединении како большой трубе — вы кладете в него сообщения на одном конце, и они добираются до другого неповрежденными, в том же порядке, в котором и отправлялись.Транспортный протокол для Р1нтернета называется протоколом управленияпередачей {Transmission Control Protocol, TCP).
Он детально разобран в книге [109].Комбинация T C P / I P в настоящее время является стандартом де-факто при сетевых взаимодействиях. Комплект протоколов Интернета также включает в себяне требующий соединения транспортный протокол под названием UDP {Universal Datagram Protocol — универсальный протокол датаграмм), который, по сути,представляет собой IP с некоторыми небольшими дополнениями. Пользовательские программы, не нуждающиеся в протоколе с соединениями, обычно используют UDP.Официальный транспортный протокол ISO имеет пять разновидностей — отТРО до ТР4. Различия относятся к обработке ошибок и к возможности работатьс несколькими транспортными соединениями на базе одного соединения низкого уровня (особенно Х.25).