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

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

Глоссарий

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

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

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

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

Сетевой интерфейс может быть как физическим, так и виртуальным. loopback — пример виртуального устройства, на локальном компьютере.

  • LAN — локальная сеть. Так называют участок сети, к которому запрещен доступ из внешних сетей. Домашняя и офисные сети — пример LAN.
  • WAN — глобальная сеть. Сеть, намного превосходящая по своим размерам LAN. Это довольно относительный термин, который, как правило, применяется для обозначения интернета как такового.

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

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

Примером низкоуровневых протоколов служат TCP, UDP, IP и ICMP. Наверняка, вы слышали про протоколы, построенные на их основе — HTTP, SSH, TLS/SSL, FTP.

  • Порт — адрес на одном компьютере, к которому привязан какой-то программный продукт. Это не физическое устройство или адрес, это, своего рода, способ использования одного интерфейса несколькими программами одновременно.
  • Firewall — программное обеспечение, отвечающее за соединения разрешение или запрет серверного трафика. Обычно, создаётся определенный набор правил, оговаривающих допустимый тип трафика на определенных портах. По сути, firewall блокирует все порты, за исключением оговоренных правилами.
  • NAT — преобразование сетевых адресов. То есть, это способ передавать входящие на роутер запросы соответствующим сетевым устройствам в пределах LAN. Таким образом, несколько машин могут работать в сети интернет используя один IP адрес.
  • VPN — виртуальная частная сеть. Способ соединения нескольких сетей LAN с соблюдением требований безопасности. При помощи VPN можно соединить удаленные сетевые сегменты, таким образом, для пользователя они будут выглядеть так, что все они находятся в одной сети.

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

Протоколы сетевого уровня

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

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

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

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

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

Сетевая модель OSI

Исторически сложилось так, что модель OSI используется для описания сетевых уровней. OSI — базовая эталонная модель взаимодействия открытых систем.

Модель содержит в себе 7 уровней:

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

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

Модель TCP/IP

TCP/IP — еще одна модель, которая, чаще всего, используется для описания протокола сети интернет. Она заключает в себе 4 уровня, которые иногда пересекаются с ровнями модели OSI.

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

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

Интерфейсы

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

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

В дополнении ко всеми, у вас появится, интрефейс под названием “петля” (loopback). Он используется для построения связи между приложениями в пределах одной машины. Иногда он называется “lo” интерфейс.

Чаще всего, администраторы используют один интерфейс для связи с сетью интернет, а второй для работы с LAN сетями или VPN.

Протоколы

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

Уровень управления доступом к среде (Media Access Control)

Этот протокол отвечает за выделения отдельных сетевых устройств. Каждое сетевое устройство имеет свой уникальный адрес (MAC адрес), который задаётся при производстве. Вы можете обратиться к устройству по уникальному MAC адресу, даже если его имя было изменено ранее.

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

IP

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

Существует несколько вариантов этого протокола. Сегодня, самый распространенный из них — IPv4, хотя, вполне возможно, его место в будущем займет IPv6 из-за нехватки адресов.

ICMP

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

TCP

TCP — протокол управления передачей. Используется на транспортном уровне для установки надежных соединений.

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

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

После передачи данных соединение разрывается путем четырехэтапного согласования. TCP протокол используется в основе WWW, FTP, SSH и email. Можно смело утверждать, что интернета не было бы без этого протокола.

UDP

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

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

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

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

HTTP

Протокол передачи гипертекста. Он используется на прикладном уровне и определяет основу веб-соединений.

Он задает ряд функций для управления удаленным содержимым. Например, запросы, GET, POST и DELETE означают разные действия.

FTP

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

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

DNS

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

SSH

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

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

Заключение

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