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

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

Рис. 1.13. Пример потока информации на уровне 5

Во многих сетях сообщения, передаваемые на уровне 4, не ограничиваются по размеру, однако подобные ограничения почти всегда накладываются на протокол третьего уровня. Соответственно, уровень 3 должен разбить входящие сообщения на более мелкие единицы — пакеты, предваряя каждый пакет заголовком уровня 3. В данном примере сообщение M разбивается на две части, Mt и M2.

Уровень 3 решает, какую из выходных линий использовать, и передает пакеты уровню 2. Уровень 2 добавляет не только заголовки к каждому пакету, но также и завершающую последовательность с контрольной суммой (trailer), после чего передает результат уровню 1 для физической передачи. На получающей машине сообщение двигается по уровням вверх, при этом заголовки убираются на каждом уровне по мере продвижения сообщения. Заголовки нижних уровней более высоким уровням не передаются.

Необходимо понять соотношение между виртуальным и реальным общением и разницу между протоколом и интерфейсом. Одноранговые процессы уровня 4, например, считают свое общение горизонтальным, использующим протокол 4-го уровня. У каждого из них имеется процедура с названием вроде SendToOtherSide (Отправить другой стороне) и GetFromOtherSide (Получить от другой стороны), даже если на самом деле эти процедуры общаются не друг с другом, а с нижними уровнями при помощи интерфейсов 3/4.

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

Хотя этот раздел называется «Сетевое программное обеспечение», следует отметить, что нижние уровни в иерархии протоколов часто реализуются аппаратно или программно-аппаратно. Тем не менее при этом используются сложные алгоритмы протоколов, хотя они и внедряются в аппаратуру частично или целиком.

1.3.2. Разработка уровней

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

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

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





Другая проблема надежности — найти рабочий путь через сеть. Часто есть разнообразные пути между источником и местом назначения, а в большой сети некоторые каналы или маршрутизаторы могут выйти из строя. Предположите, что в Германии сеть вышла из строя. Пакеты, посланные из Лондона в Рим через Германию, не будут проходить, но мы могли вместо этого послать пакеты из Лондона в Рим через Париж. Сеть должна автоматически принять это решение. Эта тема носит название маршрутизации.

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

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

Аспект роста заключается в том, что у различных сетевых технологий часто есть различные ограничения. Например, не все каналы связи сохраняют порядок сообщений, посланных по ним, приводя к решению нумеровать сообщения. Другой пример — различия в максимальном размере сообщения, которое могут передать сети. Это приводит к механизмам для того, чтобы разделять, передавать и затем повторно собирать сообщения. Эту тему называют работа с объединенной сетью.

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

Третья проблема проектирования — распределение ресурсов. Сети оказывают услугу узлам из их основных ресурсов, таких как способность линий передачи. Чтобы сделать это хорошо, они нуждаются в механизмах, которые делят их ресурсы так, чтобы один узел не слишком мешал работе другого.

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

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

Интересно заметить, что сеть может предложить больше ресурсов, чем просто пропускная способность. Для использования передачи видео в реальном времени, своевременность доставки имеет большое значение. Большинство сетей должно предоставить сервис приложениям, которые хотят получить эту доставку в реальном времени в то же самое время, когда они работают с приложениями, которые хотят получить высокую пропускную способность. Качество службы — это механизмы, которые регулируют эти конкурирующие требования.

Последняя главная проблема устройства сети — обеспечить сеть защитой от различных видов угроз. Одна из угроз, которые мы упомянули ранее, — подслушивание коммуникаций. Механизмы, которые обеспечивают конфиденциальность, защищают от этой угрозы, и они используются во многих уровнях. Механизмы для аутентификации препятствуют тому, чтобы кто-то исполнил роль кого-то другого. Они могли бы использоваться, чтобы отличать поддельные банковские веб-сайты от реальных или позволить сотовой связи проверять, что вызов действительно происходит из вашего телефона, чтобы вы оплатили счет. Другие механизмы для целостности предотвращают тайные изменения сообщений, таких как изменение «снимите с моего счета $10» на «снимите с моего счета $1000». Все эти проекты основаны на криптографии, которую мы изучим в главе 8.