Разберем основные понятия в компьютерных сетях, протокол, сервис и интерфейс

Рассмотрим понятия протоколы, интерфейсы и сервисы на примере транспортного уровня, стека протоколов TCP/IP

Базовые понятия компьютерных сетей

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

Интерфейс в компьютерных сетях

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

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

Транспортный уровень TCP/IP

Рассмотрим пример для транспортного уровня (ТУ) стека протоколов tcp ip. В стеке протоколов, есть два протокола транспортного уровня, tcp и udp. Они используются, чтобы транспортные уровни различных хостов взаимодействовали друг с другом. 

В качестве интерфейса ТУ используется интерфейс сокетов. С использованием интерфейса сокетов пишут программы, которые взаимодействуют с сетью на ТУ.

Интерфейс сокетов

Зачем разделять понятия протокол и интерфейс

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

Изоляция решений

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

Внутри компьютера

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

Между компьютерами

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

Разделение интерфейса и протокола необходимо, чтобы отделять описание от реализации

Зачем разделять интерфейс и сервис

Эти понятия важно различать, чтобы правильно проектировать сети, протоколы и сетевые технологии. 

Сервис этот абстрактное описание того, что делает уровень. Оно позволяет сформулировать, чтобы мы хотели, чтобы уровень делал, не привязываясь ни к каким конкретным деталям реализации. Например, стек протоколов tcp ip предоставляет на транспортном уровне, два типа сервисов:

  • Это надежная передача потока байт, которая реализуется протоколом tcp;
  • Ненадёжная передача коротких сообщений, для реализации которой, используется протокол UDP. 

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

Сервисы — абстрактное описание функций

Представим, что мы не ограничиваем себя текущей реализацией стека протоколов tcp ip, а подумаем, какие есть сервисы на транспортном уровне и чего бы нам еще хотелось. 

Описание двух сервисов можно разбить на две части. Первое, обеспечивает сервис надежность или нет. Второе, тип передаваемых данных. Может передаваться поток байт или короткое сообщение. В стеке tcp ip выбрали всего две комбинации: надежная передача потока байт и ненадежная передача коротких сообщений. 

Вполне допустимы две другие комбинации, ненадежная передача потока байт и надежная передача коротких сообщений. Если для ненадежной передачи потока байт сложно придумать подходящие примеры использования, то надежная доставка коротких сообщений очень полезный тип сервиса и  этого сервиса в стеке протоколов tcp ip в настоящее время нет. 

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

На самом деле это типовая ситуация, которая используется часто и кажется нерациональным перекладывать эту работу на приложения, если есть возможность предоставить такой тип сервиса прямо в стеке протоколов tcp/ip. Было разработано несколько протоколов ТУ, которые реализуют такой сервис, но к сожалению они не пользуются большой популярностью.  

Ссылка на основную публикацию