Введение в терминологию, интерфейсы и протоколы сетевого взаимодействия

Введение

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

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

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

Сетевой глоссарий

Сначала мы определим некоторые общие термины, которые вы встретите в этом руководстве, а также в других руководствах и документации по сетевым технологиям.

Эти термины будут раскрыты в соответствующих разделах, которые следуют:

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

  • Пакет: Пакет – это наименьшая единица, которая намеренно передается по сети. При общении через сеть пакеты – это конверты, которые переносят ваши данные (по частям) от одной конечной точки к другой.

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

  • Сетевой интерфейс: Сетевой интерфейс может относиться к любому типу программного интерфейса к сетевому оборудованию. Например, если у вас в компьютере две сетевые карты, вы можете управлять и настраивать каждый сетевой интерфейс, связанный с ними индивидуально.

A network interface may be associated with a physical device, or it may be a representation of a virtual interface. The “loopback” device, which is a virtual interface available in most Linux environments to connect back to the same machine, is an example of this.

  • LAN: LAN означает “локальная сеть”. Это относится к сети или части сети, которая не является общедоступной для интернета в целом. Домашняя или офисная сеть – это пример LAN.

  • Широкополосная сеть (ШПС): ШПС означает “широкополосная вычислительная сеть”. Это сеть, значительно превосходящая ЛВС. Хотя ШПС – это соответствующий термин для описания общих обширных сетей, обычно это означает интернет в целом.

Если интерфейс подключен к ШПС, обычно считается, что к нему можно получить доступ через интернет.

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

Некоторые протоколы низкого уровня включают TCP, UDP, IP и ICMP. Некоторые примеры протоколов прикладного уровня, построенных на этих более низких протоколах, включают HTTP (для доступа к веб-содержимому), SSH и TLS/SSL.

  • Порт: Порт – это адрес на одном компьютере, который может быть привязан к конкретному программному обеспечению. Это не физический интерфейс или местоположение, но он позволяет вашему серверу общаться с использованием более чем одного приложения.

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

  • NAT: NAT означает перевод сетевых адресов. Это способ переупаковки и отправки входящих запросов на маршрутизационный сервер к соответствующим устройствам или серверам в локальной сети. Это обычно реализуется в физических локальных сетях как способ маршрутизации запросов через один IP-адрес к необходимым внутренним серверам.

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

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

Сетевые уровни

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

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

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

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

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

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

Модель TCP/IP

Модель TCP/IP, более известная как интернет-протокольный набор, является широко принятой моделью наложения. Она определяет четыре отдельных уровня:

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

  • Транспорт: Транспортный уровень отвечает за взаимодействие между процессами. Этот уровень сетевой инфраструктуры использует порты для обращения к различным службам.

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

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

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

Интерфейсы

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

Обычно на вашем сервере будет настроен один конфигурируемый сетевой интерфейс для каждой сетевой карты Ethernet или беспроводного подключения, которые у вас есть.

Кроме того, будет определен виртуальный сетевой интерфейс, называемый “петлевым” или интерфейсом localhost. Он используется в качестве интерфейса для соединения приложений и процессов на одном компьютере с другими приложениями и процессами. Вы можете увидеть это как “lo” интерфейс во многих инструментах.

Часто администраторы настраивают один интерфейс для обслуживания трафика в Интернете и другой интерфейс для локальной сети или частной сети.

В дата-центрах с включенной частной сетью (включая виртуальные серверы DigitalOcean), ваш VPS будет иметь два сетевых интерфейса. Интерфейс “eth0” будет настроен для обработки трафика из Интернета, в то время как интерфейс “eth1” будет использоваться для связи с частной сетью.

Протоколы

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

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

Управление доступом к среде

Управление доступом к среде – это протокол связи, который используется для идентификации конкретных устройств. Каждое устройство должно получать уникальный, жестко закодированный адрес управления доступом к среде (MAC-адрес) при производстве, что отличает его от всех других устройств в Интернете.

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

MAC-адресация – это один из немногих протоколов из низкоуровневого уровня связи, с которым вы, вероятно, взаимодействуете на регулярной основе.

IP

Протокол IP является одним из основных протоколов, позволяющих работать интернету. IP-адреса уникальны в каждой сети и позволяют машинам обращаться друг к другу в сети. Он реализуется на уровне интернета в модели TCP/IP.

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

Существует ряд различных реализаций протокола. Самая распространенная реализация на сегодняшний день – это адреса IPv4, которые следуют образцу 123.123.123.123, хотя адреса IPv6, которые следуют образцу 2001:0db8:0000:0000:0000:ff00:0042:8329, становятся все более популярными из-за ограниченного числа доступных адресов IPv4.

ICMP

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

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

TCP

TCP расшифровывается как протокол управления передачей данных. Он реализован в транспортном уровне модели TCP/IP и используется для установления надежных соединений.

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

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

После передачи данных соединение разрывается с использованием аналогичного четырехстороннего рукопожатия.

TCP – протокол выбора для многих наиболее популярных использований интернета, включая WWW, SSH и электронную почту.

UDP

UDP расшифровывается как протокол пользовательских дейтаграмм. Это популярный компаньонский протокол для TCP и также реализован в транспортном уровне.

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

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

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

HTTP

HTTP означает протокол передачи гипертекста. Это протокол, определенный на прикладном уровне, который является основой для общения в вебе.

HTTP определяет ряд глаголов, которые сообщают удаленной системе, что вы запрашиваете. Например, GET, POST и DELETE взаимодействуют с запрашиваемыми данными по-разному. Чтобы увидеть пример различных запросов HTTP в действии, обратитесь к Как определить маршруты и методы HTTP-запросов в Express.

DNS

DNS расшифровывается как система доменных имен. Это протокол прикладного уровня, используемый для предоставления удобного для человека механизма именования ресурсов интернета. Именно он связывает доменное имя с IP-адресом и позволяет вам получить доступ к сайтам по их именам в вашем браузере.

SSH

SSH означает secure shell. Это зашифрованный протокол, реализованный на прикладном уровне, который можно использовать для безопасного общения с удаленным сервером. Множество дополнительных технологий построены вокруг этого протокола из-за его шифрования end-to-end и всеобщей распространенности.

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

Заключение

На этом этапе вы должны быть знакомы с некоторой терминологией сетевых технологий и способны понимать, как различные компоненты могут взаимодействовать друг с другом. Это должно помочь вам в понимании других статей и документации вашей системы.

Далее, для примера из реального мира, вы можете прочитать Как делать HTTP-запросы на Go.

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-networking-terminology-interfaces-and-protocols