1.3.2. Разработка уровней
Некоторые из ключевых аспектов разработки, возникающие при создании компьютерных сетей, будут возникать от уровня к уровню. Ниже мы кратко опишем наиболее важные из них.
Надежность — проблема проектирования создания сети, которая работает правильно, даже если она составлена из набора компонентов, которые сами по себе ненадежны. Думайте о битах пакета, перемещающегося по сети. Есть шанс, что некоторые из этих битов будут получены поврежденными (инвертированными) из-за случайного электрического шума, случайных беспроводных сигналов, недостатков аппаратных средств, ошибок программного обеспечения и т. д. Возможно ли находить и исправлять эти ошибки?
Один из механизмов, для того чтобы найти ошибки в полученной информации использует коды для обнаружения ошибок. Информация, которая неправильно получена, может быть передана повторно, пока она не будет получена правильно. Более сильные коды учитывают устранение ошибки, где правильное сообщение восстанавливается из первоначально неправильно полученных битов. Оба эти механизма работают, добавляя избыточную информацию. Они используются в нижних уровнях, чтобы защитить пакеты, посланные по отдельным каналам, и в верхних уровнях, чтобы проверить, что было получено правильное содержание.
Другая проблема надежности — найти рабочий путь через сеть. Часто есть разнообразные пути между источником и местом назначения, а в большой сети некоторые каналы или маршрутизаторы могут выйти из строя. Предположите, что в Германии сеть вышла из строя. Пакеты, посланные из Лондона в Рим через Германию, не будут проходить, но мы могли вместо этого послать пакеты из Лондона в Рим через Париж. Сеть должна автоматически принять это решение. Эта тема носит название маршрутизации.
Вторая проблема проектирования касается развития сети. В течение долгого времени сети становятся больше, и появляются новые проекты, которые должны быть соединены с существующей сетью. Мы видели, что основной механизм структурирования, поддерживающий изменения — делить полную проблему и скрывать детали выполнения: иерархическое представление протокола. Существует и много других стратегий.
Когда в сети много компьютеров, каждый уровень нуждается в механизме для того, чтобы идентифицировать отправителей и получателей для каждого сообщения. Этот механизм называют адресацией или наименованием соответственно в нижних и верхних уровнях.
Аспект роста заключается в том, что у различных сетевых технологий часто есть различные ограничения. Например, не все каналы связи сохраняют порядок сообщений, посланных по ним, приводя к решению нумеровать сообщения. Другой пример — различия в максимальном размере сообщения, которое могут передать сети. Это приводит к механизмам для того, чтобы разделять, передавать и затем повторно собирать сообщения. Эту тему называют работа с объединенной сетью.
Когда сети становятся большими, возникают новые проблемы. В городах могут быть пробки, нехватка номеров телефона и возможность легко потеряться. Не у многих людей есть эти проблемы вблизи дома, но, охватив весь город, они могут быть большой проблемой. Проекты, которые продолжают работать хорошо, когда сеть становится большой, как говорят, масштабируемы.
Третья проблема проектирования — распределение ресурсов. Сети оказывают услугу узлам из их основных ресурсов, таких как способность линий передачи. Чтобы сделать это хорошо, они нуждаются в механизмах, которые делят их ресурсы так, чтобы один узел не слишком мешал работе другого.
Многие проекты совместно используют сетевую пропускную способность динамически, согласно краткосрочным потребностям узлов, а не выделяя каждому узлу фиксированной части пропускной способности, что может использоваться или не использоваться. Этот способ называют статистическим мультиплексированием, означая совместное использование основанного на статистике требования. Это может быть применено в нижних уровнях для одного канала связи или в верхних уровнях для сети или даже приложений, которые используют сеть.
Проблема распределения, которая происходит на каждом уровне, состоит в том, как препятствовать тому, что быстрый отправитель затопит данными медленного получателя. Часто используется обратная связь от получателя к отправителю. Ее называют управлением потоками. Иногда проблема состоит в том, что сеть перегружена, потому что слишком много компьютеров хотят послать слишком большие объемы информации, и сеть не может передать все. Эту перегрузку сети называют скоплением. Одна стратегия решения — требовать в таком случае от каждого компьютера уменьшения его запросов. Это также может использоваться во всех уровнях.