Э. Таненбаум, Д. Уэзеролл - Компьютерные сети (1114668), страница 15
Текст из файла (страница 15)
В дополнение к минимизацииколичества информации, передаваемой между уровнями, ясно разграниченные интерфейсы также значительно упрощают изменение реализации уровня на совершеннодругой протокол или реализацию (например, замену всех телефонных линий спутниковыми каналами), так как при этом всего лишь требуется, чтобы новый протоколили реализация предоставляла такой же набор услуг вышестоящему уровню, чтои предыдущая. Вполне нормальное явление — использование хостов, принадлежащихк разным реализациям, одного и того же протокола (часто написанного различными46 Глава 1. Введениекомпаниями).
Фактически может изменяться сам протокол уровня, так что уровнейвыше и ниже это не затронет.Рис. 1.11. Уровни, протоколы и интерфейсыНабор уровней и протоколов называется архитектурой сети. Спецификация архитектуры должна содержать достаточно информации для написания программногообеспечения или создания аппаратуры для каждого уровня, чтобы они корректновыполняли требования протокола. Ни детали реализации, ни спецификации интерфейсов не являются частями архитектуры, так как они спрятаны внутри машины и невидны снаружи. При этом даже не требуется, чтобы интерфейсы на всех машинах сетибыли одинаковыми, лишь бы каждая машина правильно применяла все протоколы.Список протоколов, используемых системой, по одному протоколу на уровень, называется стеком протоколов.
Сетевые архитектуры, стеки протоколов и сами протоколыи являются основной темой данной книги.Чтобы было проще понять идею многоуровневого общения, можно воспользоваться следующей аналогией. Представьте себе двух философов (одноранговыйпроцесс уровня 3), один из которых говорит на урду и английском, а другой — накитайском и французском.
Поскольку нет общего языка, на котором они смогли быобщаться, каждый из них использует переводчика (одноранговый процесс уровня 2),каждый из которых, в свою очередь, нанимает секретаршу (одноранговый процессуровня 1). Философ 1 желает выразить своему собеседнику свою привязанностьк виду oryctolagus cuniculus. Для этого он передает сообщение (на английском) поинтерфейсу 2/3 своему переводчику, говоря «я люблю кроликов», как изображено на1.3. Сетевое программное обеспечение 47рис. 1.12.
Переводчики договорились общаться на нейтральном языке, голландском,таким образом, сообщение преобразуется к виду «Ik hou van konijnen». Выбор языкаявляется протоколом второго уровня и осуществляется одноранговыми процессамиуровня 2.Рис. 1.12. Архитектура философ-переводчик-секретарьЗатем переводчик отдает сообщение секретарю для передачи, например, по электронной почте (протокол первого уровня). Когда сообщение получено другим секретарем, оно переводится на французский и через интерфейс 2/3 передается философу 2.Заметим, что каждый протокол полностью независим от других, поскольку интерфейсы одинаковы с каждой стороны. Переводчики могут переключиться с голландского,скажем, на финский, при условии, что оба будут согласны, при этом в интерфейсахвторого уровня с первым или с третьим уровнем ничего не изменится. Подобным жеобразом секретари могут сменить факс на электронную почту или телефон, не затрагивая (и даже не информируя) другие уровни.
Каждое изменение добавит лишьобмен информацией на своем уровне. Эта информация не будет передаваться на болеевысокий уровень.Теперь рассмотрим более технический пример: как обеспечить общение для верхнего уровня пятиуровневой сети на рис. 1.13. Сообщение M производится приложением,работающим на уровне 5, и передается уровню 4 для передачи. Уровень 4 добавляетк сообщению заголовок для идентификации сообщения и передает результат уров-48 Глава 1. Введениеню 3.
Заголовок включает управляющую информацию, например адреса, позволяющиеуровню 4 принимающей машины доставить сообщения. Другими примерами управляющей информации, используемой в некоторых уровнях, являются порядковыеномера (в случае если нижний уровень не сохраняет порядок сообщения), размерыи время.Рис. 1.13.
Пример потока информации на уровне 5Во многих сетях сообщения, передаваемые на уровне 4, не ограничиваются по размеру, однако подобные ограничения почти всегда накладываются на протокол третьегоуровня. Соответственно, уровень 3 должен разбить входящие сообщения на болеемелкие единицы — пакеты, предваряя каждый пакет заголовком уровня 3.
В данномпримере сообщение M разбивается на две части, M1 и M2.Уровень 3 решает, какую из выходных линий использовать, и передает пакетыуровню 2. Уровень 2 добавляет не только заголовки к каждому пакету, но также и завершающую последовательность с контрольной суммой (trailer), после чего передаетрезультат уровню 1 для физической передачи. На получающей машине сообщениедвигается по уровням вверх, при этом заголовки убираются на каждом уровне помере продвижения сообщения. Заголовки нижних уровней более высоким уровнямне передаются.Необходимо понять соотношение между виртуальным и реальным общениеми разницу между протоколом и интерфейсом. Одноранговые процессы уровня 4, например, считают свое общение горизонтальным, использующим протокол 4-го уровня.У каждого из них имеется процедура с названием вроде SendToOtherSide (Отправитьдругой стороне) и GetFromOtherSide (Получить от другой стороны), даже если насамом деле эти процедуры общаются не друг с другом, а с нижними уровнями припомощи интерфейсов 3/4.1.3.
Сетевое программное обеспечение 49Абстракция одноранговых процессов является ключевой для проектирования сетей. С ее помощью невыполнимая задача разработки целой сети может быть разбита нанесколько меньших по размеру и вполне разрешимых проблем разработки, а именноразработки индивидуальных уровней.Хотя этот раздел называется «Сетевое программное обеспечение», следует отметить, что нижние уровни в иерархии протоколов часто реализуются аппаратно илипрограммно-аппаратно. Тем не менее при этом используются сложные алгоритмыпротоколов, хотя они и внедряются в аппаратуру частично или целиком.1.3.2.
Разработка уровнейНекоторые из ключевых аспектов разработки, возникающие при создании компьютерных сетей, будут возникать от уровня к уровню. Ниже мы кратко опишем наиболееважные из них.Надежность — проблема проектирования создания сети, которая работает правильно, даже если она составлена из набора компонентов, которые сами по себе ненадежны. Думайте о битах пакета, перемещающегося по сети.
Есть шанс, что некоторые изэтих битов будут получены поврежденными (инвертированными) из-за случайногоэлектрического шума, случайных беспроводных сигналов, недостатков аппаратныхсредств, ошибок программного обеспечения и т. д. Возможно ли находить и исправлять эти ошибки?Один из механизмов, для того чтобы найти ошибки в полученной информациииспользует коды для обнаружения ошибок. Информация, которая неправильнополучена, может быть передана повторно, пока она не будет получена правильно.Более сильные коды учитывают устранение ошибки, где правильное сообщение восстанавливается из первоначально неправильно полученных битов.
Оба эти механизмаработают, добавляя избыточную информацию. Они используются в нижних уровнях,чтобы защитить пакеты, посланные по отдельным каналам, и в верхних уровнях, чтобыпроверить, что было получено правильное содержание.Другая проблема надежности — найти рабочий путь через сеть. Часто есть разнообразные пути между источником и местом назначения, а в большой сети некоторыеканалы или маршрутизаторы могут выйти из строя. Предположите, что в Германии сетьвышла из строя. Пакеты, посланные из Лондона в Рим через Германию, не будут проходить, но мы могли вместо этого послать пакеты из Лондона в Рим через Париж. Сетьдолжна автоматически принять это решение. Эта тема носит название маршрутизации.Вторая проблема проектирования касается развития сети. В течение долгого времени сети становятся больше, и появляются новые проекты, которые должны бытьсоединены с существующей сетью. Мы видели, что основной механизм структурирования, поддерживающий изменения — делить полную проблему и скрывать деталивыполнения: иерархическое представление протокола.
Существует и много другихстратегий.Когда в сети много компьютеров, каждый уровень нуждается в механизме длятого, чтобы идентифицировать отправителей и получателей для каждого сообщения.Этот механизм называют адресацией или наименованием соответственно в нижнихи верхних уровнях.50 Глава 1. ВведениеАспект роста заключается в том, что у различных сетевых технологий часто естьразличные ограничения. Например, не все каналы связи сохраняют порядок сообщений, посланных по ним, приводя к решению нумеровать сообщения. Другой пример — различия в максимальном размере сообщения, которое могут передать сети.Это приводит к механизмам для того, чтобы разделять, передавать и затем повторнособирать сообщения.
Эту тему называют работа с объединенной сетью.Когда сети становятся большими, возникают новые проблемы. В городах могутбыть пробки, нехватка номеров телефона и возможность легко потеряться. Не у многих людей есть эти проблемы вблизи дома, но, охватив весь город, они могут бытьбольшой проблемой.
Проекты, которые продолжают работать хорошо, когда сетьстановится большой, как говорят, масштабируемы.Третья проблема проектирования — распределение ресурсов. Сети оказывают услугу узлам из их основных ресурсов, таких как способность линий передачи. Чтобысделать это хорошо, они нуждаются в механизмах, которые делят их ресурсы так,чтобы один узел не слишком мешал работе другого.Многие проекты совместно используют сетевую пропускную способность динамически, согласно краткосрочным потребностям узлов, а не выделяя каждому узлуфиксированной части пропускной способности, что может использоваться или неиспользоваться.
Этот способ называют статистическим мультиплексированием, означая совместное использование основанного на статистике требования. Это можетбыть применено в нижних уровнях для одного канала связи или в верхних уровняхдля сети или даже приложений, которые используют сеть.Проблема распределения, которая происходит на каждом уровне, состоит в том, какпрепятствовать тому, что быстрый отправитель затопит данными медленного получателя.