October 1st, 2020

Сетевое ПО: Таненбаум, 1.3

Начало:
1. Компьютерные сети, книга, Таненбаум и Уэзеролл
2. Применение компьютерных сетей: Таненбаум, 1.1
3. Сетевое оборудование: Таненбаум, 1.2

Прочел раздел 1.3 «Сетевое программное обеспечение» главы 1 «Введение».

Тут настоящее начало этой книги. Раздел состоит из пяти подразделов: иерархия протоколов, проблемы проектирования слоев (уровней), служба (сервис) на основе соединения и без установления соединения, примитивы служб, связь между понятиями службы и протокола.

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

Между слоями (уровнями) сетевого ПО есть некие интерфейсы. Интерфейс (он же — «служба» или «сервис») определяет набор примитивных операций (примитивов), обеспечиваемых нижним слоем (уровнем) сетевого ПО верхнему слою (уровню).

Дано определение архитектуры сети (с точки зрения программиста) как набора слоев (уровней) и протоколов. Дано определение стека протоколов как списка протоколов, используемых системой, упорядоченных по слоям (уровням) сетевого ПО.

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

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

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

Субъект каждого из слоев (уровней) в этой системе считает, что общается с субъектом того же слоя (уровня) противоположного узла (стороны) системы (сети). Например, секретарь общается по факсу с секретарем противоположной стороны (их протокол — правила передачи сообщений по факсу). Первый переводчик считает, что общается со своим коллегой противоположной стороны (их протокол — нидерландский язык). Философы считают, что общаются друг с другом (их протокол — язык, на котором они привыкли общаться).

На самом же деле, фактически, сообщение проходит от отправителя по слоям сверху вниз, затем по физической среде (факс), затем у получателя — по слоям снизу вверх. Переводчик предоставляет философу сервис (службу), состоящий из операций отправки и получения сообщения. Секретарь предоставляет переводчику сервис (службу), тоже состоящий из операций отправки и получения сообщения. Хоть названия этих операций у этих разных сервисов (служб) одинаковые, их реализация (протоколы) разная.

Такая организация сети позволяет менять реализацию (протоколы) операций (примитивов) служб, как захочется, если при этом набор операций, предоставляемых службой, не изменится. Например, переводчики для общения между собой могут использовать не нидерландский язык, а, скажем, японский или русский. Философы этого даже не заметят. Точно также, на другом слое (уровне) — секретари могут вместо факса использовать, скажем, электронную почту. Переводчики этого тоже не заметят. Изменение протокола на нижнем уровне не влияет на работу верхнего уровня сетевого ПО.

Проблемы проектирования слоев (уровней) сетевого ПО. Обеспечение надежности передачи информации по сети. Механизм обнаружения ошибок (пакет, переданный с ошибкой, передается повторно). Механизм коррекции ошибок (пакет, переданный с ошибкой, исправляется при получении, поэтому его повторная передача не требуется).

Еще одна проблема обеспечения надежности — маршрутизация («routing», нахождение оптимального пути к нужному узлу в сети, а при необходимости — обходного пути, если какой-то из промежуточных узлов неисправен).

Рассказано о сокрытии реализации операций, предоставляемых службами (сервисами) при разделении сетевого ПО на слои, каждый с собственным протоколом — protocol layering. Механизмы идентификации отправителей и получателей — адресация и именование (naming). Нумерация сообщений, ограничение максимального размера сообщений. Разборка и сборка сообщений (internetworking). Масштабируемость сетей.

Распределение ресурсов сети. Статистическое мультиплексирование. Что такое QoS («quality of service»). Безопасность сетей.

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

Служба без установления соединения создана по аналогии с почтой. Порядок пакетов в такой службе обычно не сохраняется: пакет, отправленный раньше, может прийти позже пакетов, отправленных после него. Коммутация с промежуточной буферизацией (store-and-forward switching). Сквозная передача (cut-through switching). Что такое надежная служба. Подтверждение доставки пакета. «Датаграммы» по аналогии с телеграммами. Служба вида «запрос-ответ».

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

Примитивы служб. Сервис (служба) — набор операций (примитивов). В качестве примера набора примитивов приводится упрощенный набор примитивов интерфейса сокетов Беркли: LISTEN, CONNECT, ACCEPT, RECEIVE, SEND, DISCONNECT. Дан очень подробный пример работы этого набора операций при коммуникации клиента и сервера с использованием подтверждаемых датаграмм.

Связь между понятиями службы и протокола. Автор считает очень важным еще раз подчеркнуть разницу между этими понятиями и подробнее объяснить эти понятия.