Поиск по сайту:

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


Введение

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

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

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

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

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

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

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

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

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

Сетевой интерфейс может быть связан с физическим устройством или представлять собой виртуальный интерфейс. Примером этого является устройство «loopback», которое представляет собой виртуальный интерфейс, доступный в большинстве сред Linux для обратного подключения к той же машине.

  • LAN: LAN означает «локальная сеть». Это относится к сети или части сети, которая не является общедоступной для большего Интернета. Домашняя или офисная сеть является примером локальной сети.
  • WAN: WAN означает «глобальная сеть». Это означает сеть, которая намного шире, чем локальная сеть. Хотя WAN является подходящим термином для описания больших, рассредоточенных сетей в целом, обычно он означает Интернет. , в целом.

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

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

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

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

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

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

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

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

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

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

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

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

Модель TCP/IP

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

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

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

Интерфейсы

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

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

Кроме того, он будет определять виртуальный сетевой интерфейс, называемый интерфейсом loopback или 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-запросов в действии, обратитесь к разделу How To Define Routes and HTTP Request Methods in Express.

DNS

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

SSH

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

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

Заключение

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

Далее, в качестве высокоуровневого примера для чтения, вы можете прочитать How To Make HTTP Requests in Go.