View Categories

Основные сетевые понятия

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

Сеть #

Сеть (Network, Net) - несколько устройств, соединённых для обмена данными по определённым правилам

  • Интернет, WAN (Wide Area Network) - глобальная сеть, объединяет компьютеры и сети по всему миру, "сеть сетей"
  • Локальная сеть, LAN (Local Area Network) - локальная сеть, внутри квартиры, дома, офиса, может быть не подключена к Интернету
  • VPN (Virtual Private Network) - виртуальная защищённая сеть, "туннель", проложенный через другую сеть. Например, сеть между двумя компьютерами через Интернет, а не просто по проводу: Hamachi или Radmin для игры по сети, своё облачное хранилище или просто доступ к домашней локальной сети из любой точки мира

Роли #

В сети каждое устройство имеет свою роль:

  • Хост (Host) - любое устройство в сети, имеет свой адрес (IP), также может иметь hostname - человекочитаемое имя на латинице
  • Коммутатор (Switch) - соединяет устройства внутри локальной сети (квартира, офис)
  • Маршрутизатор или роутер (Router) - соединяет между собой сети, направляет трафик по оптимальному маршруту. Множество маршрутизаторов по всему миру и представляют собой Интернет: домашний роутер соединяет компьютеры и смартфоны в квартире, маршрутизатор в подъезде соединяет сети от квартир, маршрутизатор дома соединяет сети от подъездов и так далее
  • Шлюз (Gateway) - устройство, через которое одна сеть подключается к другой сети, причем может иметь другой протокол и тип трафика. Например, домашний роутер является шлюзом для соединения локальной сети с Интернет. Есть шлюзы для ZigBee устройств (стандарт беспроводной связи для умных устройств) - соединяют их с обычной домашней сетью
  • Точка доступа (Access Point) - устройство, создающее сеть для WiFi устройств. К точке доступа можно подключиться, зная её имя - SSID (Service Set Identifier). Подключение может быть защищено паролем, здесь он называется PSK (Pre-Shared Key)
  • "Домашний" роутер - совмещает в себе коммутатор, маршрутизатор, шлюз и точку доступа, а также выполняет ряд других функций
  • Сервер (Server) - компьютер или программа, предоставляющая услуги другим устройствам в сети (общее определение). Более конкретные серверы: веб-сервер - по запросу отдаёт файлы сайта, которые затем отображаются в браузере, Rest API сервер - принимает запросы в определенном формате и отвечает на них (Телеграм-бот, погодный сервис), отдельные типы серверов обслуживают электронную почту, файловые менеджеры, базы данных и многое другое
  • Клиент (Client) - приложение, которое подключается к серверу для запроса или отправки данных. Например, веб-браузер подключается к веб-серверу и запрашивает файл сайта

Параметры #

Чтобы устройства могли общаться в сети, у них и у сети есть набор параметров:

  • IP адрес (IP Adress) - адрес устройства в сети, по которому к нему можно обратиться. Состоит из нескольких 8-бит чисел (0.. 255), одно число называется октетом. Бывает v4 и v6 - первый задаётся четырьмя октетами, второй - шестью. IPv4 принято записывать в десятичном виде через точку, например 192.168.1.3. IP адрес в локальной сети может выдаваться маршрутизатором автоматически при подключении устройства (технология DHCP), такой адрес называется динамическим IP адресом. Также можно задать конкретный адрес в маршрутизаторе для этого устройства, это будет статический IP адрес. Сам маршрутизатор тоже имеет IP адрес, у домашнего роутера это обычно 192.168.x.x - по этому адресу можно зайти на сам роутер для его настройки через веб-интерфейс, по сути - обычный сайт, сервером которого является роутер. Адрес в локальной сети является приватным IP - по нему можно обратиться только из этой же сети. Публичные IP адреса доступны из Интернета, это адреса серверов сайтов, мессенджеров и прочих публичных сервисов. Ваш домашний роутер выходит в Интернет через адрес, который ему дал провайдер из своей сети. Обычно этот адрес относится к целому району города, т.е. это тоже приватный, "серый" IP адрес - к роутеру нельзя обратиться из интернета. За отдельную плату провайдер может выдать вам публичный, "белый" IP - тогда можно будет держать дома полноценный сервер
  • Порт (Port) - виртуальный "сетевой разъём", на который придут или с которого будут отправлены данные. Порт задаётся 16-битным числом (0.. 65535), одно устройство может иметь 65536 портов. Порты могут обслуживаться разными приложениями и работать на разных сетевых протоколах. Чтобы обратиться к конкретному приложению "на том конце" IP адреса, нужно знать также порт, который этим приложением обслуживается. Порт принято указывать в десятичном виде после IP адреса через двоеточие: 192.168.1.2:1234. Один сервер может держать несколько веб-сайтов, обслуживать онлайн-игры и другие сервисы (облачные хранилища, API серверы, базы данных и т.д.) и каждое такое приложение будет "сидеть" на своём порту. Примеры стандартных портов: HTTP - 80, HTTPS - 443, SSH - 22, сервер Minecraft - 25565
  • Маска подсети (Subnet Mask) определяет диапазон IP-адресов, относящихся к одной сети. Маска задаётся в роутере, узнать её можно только там. В IPv4 задаётся 4-мя октетами, например 255.255.255.0 (стандарт для домашнего роутера) означает, что в сети допустимы адреса x.x.x.0–255. Зная маску и любой IP адрес из сети можно вычислить диапазон адресов и широковещательный адрес этой сети
  • MAC адрес (Media Access Control) - уникальный идентификатор сетевого устройства - сетевой карты или WiFi чипа. Используется в различных целях внутри локальной сети: идентификация устройства, блокировка в сети и т.д. MAC кодируется 6 байтами, его принято записывать в HEX формате через двоеточие: A4:7B:1C:92:0F:8E

Передача данных #

Сетевые протоколы #

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

  • UDP (User Datagram Protocol) - самый простой протокол, в котором пакет данных просто отправляется получателю (IP адрес и порт) без гарантии доставки, соблюдения очередности пакетов, обратной связи и шифрования. Это делает UDP самым ненадёжным, но самым быстрым способом связи с минимальной задержкой, поэтому часто используется в онлайн-играх, звонках и стриминге. В то же время, поверх UDP можно организовать более сложные и надёжные протоколы с гарантией доставки и шифрованием, так например работает QUIC
  • TCP (Transmission Control Protocol) - самый распространенный способ передачи данных по сети, поверх него работает множество других протоколов. Сам TCP просто передаёт данные в том виде, в котором они есть - текстовые или бинарные, неважно. В TCP строгая топология - есть сервер, к которому подключается клиент. После успешного подключения они могут обмениваться данными, протокол гарантирует целостность данных, очерёдность доставки и обработку ошибок на всех этапах взаимодействия. TCP поддерживает шифрование - SSL или TLS
  • HTTP (HyperText Transfer Protocol) - текстовый протокол поверх TCP, на нём работают сайты и многие другие Интернет-сервисы: из браузера мы отправляем запрос на HTTP-сервер, который отвечает полотном текста, содержащим служебную информацию (заголовки) и код страницы сайта (тело), после чего сервер обычно отключает клиента - соединение завершается. Поддерживает шифрование - HTTPS
  • WebSocket, WS - лёгкий протокол поверх TCP, позволяющий серверу и клиенту обмениваться сообщениями в обе стороны в любом порядке и в любом виде (текстом или бинарно), без переподключения и без лишней служебной информации. Используется в веб-сервисах, где нужно быстрое и частое обновление информации: браузерные игры, мессенджеры, торговые платформы. Поддерживает шифрование - WSS (WebSocket Secure)
  • MQTT (Message Queuing Telemetry Transport) - протокол связи, в котором устройства обмениваются данными через дополнительное звено - брокера. Работает поверх TCP или WS, в том числе с шифрованием. Брокер - сервер в локальной или глобальной сети, занимается хранением и пересылкой сообщений от клиентов. Если брокер подключен к глобальной сети, то устройства могут общаться через интернет. Например - умная розетка на даче подключена к интернету через 4G модем, а смартфон - в городе через домашний WiFi. MQTT используется в интернете вещей, т.к. он очень экономичный - постоянно в сети находится только брокер, а устройства могут иногда заходить в сеть и проверять, если ли для них "новые сообщения"

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

Порядок запроса #

Давайте рассмотрим, как происходит банальное открытие сайта в браузере:

  • Мы вводим в браузере доменное имя сайта, например google.com
  • Здесь вступает в работу технология DNS (Domain Name System), по сути это таблица, в которой хранятся IP адреса всех существующих сайтов. Часть этой таблицы (недавно посещённые) может кешироваться в браузере/операционной системе/роутере, а так запрос отправляется к Интернет-провайдеру или дальше, в корневые каталоги. В итоге получаем IP адрес сервера, на котором находится сайт
  • Браузер формирует HTTP запрос и отправляет его на IP адрес сервера по TCP на 80 порт, запрос передаётся в роутер (шлюз). В запросе указан IP адрес компьютера или смартфона, как адрес отправителя
  • Роутер использует технологию NAT (Network Address Translation) и заменяет адрес отправителя на свой адрес, который ему выдал маршрутизатор подъезда/дома, но запоминает старый адрес отправителя в NAT таблице
  • Это повторяется по цепочке маршрутизаторов, пока не дойдет до одного из узлов, который сможет направить запрос на целевой IP адрес сервера
  • Запрос попадает на сервер или в дата-центр. На одном адресе может быть несколько сайтов, но в запросе буквально указан конкретный домен - запрос передаётся соответствующему приложению (веб-сервер буквально запущен на компьютере как программа), которое обслуживает этот сайт
  • Веб-север выдаёт нужный ответ и отправляет его обратно
  • Ответ проходит через всю цепочку маршрутизаторов в обратном порядке - каждый запомнил адрес отправителя и пересылает ему ответ
  • Последний в этом списке - наш домашний роутер, он получает ответ и отправляет его на на компьютер, браузер получает файл сайта и отображает его

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

Полезные страницы #

Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Прокрутить вверх