Компьютерные сети от чайника до самовара

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

Если рассмотреть выполняемые функции в домашнем маршрутизаторе, или роутере (router), то можно понять, что это комбайн, который охватывает сразу несколько уровней модели OSI. Он одновременно и коммутатор, и маршрутизатор, и точка доступа Wi-Fi, и фаэрвол (firewall), что делает его довольно удобным девайсом для бытового использования. Однако это не подходит для промышленных масштабов уровня офиса в несколько десятков рабочих компьютеров, а может и серверов.

Модель OSI

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

L1 — перый уровень. Физический

На нём передаются биты данных. Это самый простой и очевидный уровень. Он представляет собой среду передачи простейших сигналов (единиц и нулей). А очевидный он потому, что это провода, которые подключаются к компьютеру. По ним передаётся Манчестерский код. Также Wi-Fi относится к среде передачи данных. Да-да, Wi-Fi — это просто способ соединения, а не сам доступ в интернет, как это принято ошибочно считать.

L2 — второй уровень. Канальный

На этом уровне сигналы от отправителя собираются в кадры (frame) на стороне получателя. А как понять кто является отправителем, а кто получателем? Для этого предусмотрен адрес, который задаётся производителем сетевой карты и всегда присутствует на сетевом оборудовании. Называется он MAC-адрес (Media Access Control). Он охватывает первые три уровня модели OSI, называемых Media layers.

Оборудование, которое предназначено для работы на этом уровне, это: Концентраторы (hub), коммутаторы (switch), точки доступа Wi-Fi. На домашнем маршрутизаторе эти компоненты есть в виде антенн точки доступа Wi-Fi и коммутатора в виде портов LAN.

Коммутаторы используются для эффективной передачи данных между множеством устройств в локальной сети LAN (Local Area Network). Когда в коммутатор подключается устройство, то коммутатор считывает его MAC-адрес. Коммутатор заносит MAC-адрес в свою таблицу коммутации, запоминая номер порта, в котором адрес обнаружен. Когда в коммутаторе сформирована таблица соответствия MAC-адрес — физический порт коммутатора (таблица коммутации), то кадры отправляются напрямую от порта отправителя — в порт получателя.

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

Взаимодействие между устройствами (компьютерами) в одной сети происходит исключительно по MAC-адресам. Для этого на устройстве формируется ARP-таблица.

L3 — третий уровень. Сетевой

Описанные выше уровни — это прохождение трафика в рамках локальной сети. Как упоминалось в предыдущей главе, устройства формируют себе ARP-таблицу, в которой хранится соответствие IP-адрес — MAC-адрес. Третий уровень позволяет преодолеть ограничения коммутации (L2) и обмениваться пакетами данных между сетями при помощи маршрутизаторов, или роутеров. Они обычно указываются на компьютерах и других сетевых устройствах как шлюз по-умолчанию. Если устройство хочет обратиться в другую сеть, то оно сделает это через роутер, такие правила у протокола IP.

L4 — четвёртый уровень. Транспортный

На транспортном уровне мы подошли максимально близко к чистым данным. Здесь нет никакой адресации, однако есть такое понятие как сетевые порты и протоколы гарантированной доставки (TCP) и негарантированной, но быстрой доставки (UDP). На базе этих портов и протоколов работает NAT и межсетевые экраны, затрагивая уровни L3,L4 и выше.

Порты и протоколы позволяют на одном узле в интернете запускать различные службы (программы) и принимать обращения. Есть стандартизированные номера портов для определённых служб, типа веб-сайтов (HTTP-порт 80 TCP, HTTPS-порт 443 TCP), сервис доменных имён (DNS 53 UTP/TCP) и т.д.

NAT

Network Address Translation. Этот протокол заслуживает отдельного внимания. Он есть в каждом домашнем маршрутизаторе. Благодаря ему, домашние сети остаются вне зоны досягаемости потенциальных атак из интернета. Он скрывает (маскируя) «Серые» адреса домашней сети типа 192.168.X.X, которых может быть сотни на одном устройстве, за единым «Белым» адресом открытого интернета. Также это позволяет экономить адреса IP в интернете.

Прямой доступ

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

ПротоколЛокальный адрес:портУдалённый адрес:портИсходящий адрес:порт
TCP192.168.0.10:456711.22.33.44:44355.66.77.88:7654

так маршрутизатор запоминает, что TCP-запрос от 192.168.0.10 с порта 4567 ушёл на адрес в интернет 11.22.33.44, порт 443. Сервер 11.22.33.44 увидит обращение с адреса 55.66.77.88 и порта 7654 и ответит на них. Ответ вернётся на маршрутизатор и, согласно таблице NAT, будет передан на адрес 192.168.0.10, порт 4567. Весь обмен по протоколу TCP будет вестись в рамках этой записи, которая представляет собой соединение. Если изменятся порты подключения, это уже будет новое соединение и появится новая запись в таблице. Тоже касается и изменения IP-адресов участников соединения.

Проброс портов

Помимо прямого доступа через NAT, есть и обратный. Это можно организовать через «проброс портов» на определённый узел внутренней сети с «серым» адресом.

Внешний портВнутренний портАдрес узла сети
4438443192.168.0.20

В таблице приведён пример записи, согласно которой все запросы на 443 порт внешнего адреса маршрутизатора, будут перенаправлены на порт 8443 узла с адресом 192.168.0.20 во внутренней сети.

Прокрутить вверх