Представьте: вы настроили сервер, развернули приложение, оно работает — локально. Открываете localhost:3000 — всё отлично. А потом коллега спрашивает: «Скинь ссылку, я хочу посмотреть». И тут вы понимаете, что понятия не имеете, как сделать так, чтобы ваш сервер был доступен кому-то кроме вас.

Или другая ситуация: сайт не открывается. Что сломалось — DNS, сервер, сеть, файрвол? Без понимания основ сетей вы даже не знаете, с чего начать диагностику.

Этот блок исправит обе проблемы. Начнём с фундамента. Когда вы отправляете письмо по почте, на конверте нужен адрес: город, улица, дом, квартира. В компьютерных сетях роль адреса выполняет IP-адрес.

Существует два формата:

# IPv4 — четыре числа от 0 до 255
192.168.1.10
8.8.8.8

# IPv6 — восемь групп шестнадцатеричных чисел
2001:0db8:85a3:0000:0000:8a2e:0370:7334

IPv4 — то, с чем вы будете работать в 99% случаев. IPv6 придумали, потому что адресов IPv4 на всех не хватает (их всего ~4.3 миллиарда, а устройств в мире — десятки миллиардов). Но пока IPv4 жив и здоров — так что сосредоточимся на нём.

Не все IP-адреса одинаковые. Есть два принципиально разных вида:

Тип Диапазоны Где виден
Частный (private) 10.x.x.x, 172.16–31.x.x, 192.168.x.x Только внутри вашей сети (дом, офис)
Публичный (public) Все остальные Виден из интернета

Ваш домашний компьютер скорее всего имеет адрес вроде 192.168.1.10 — это частный адрес. Из интернета к нему напрямую обратиться нельзя. А сервер в облаке имеет публичный адрес — например, 84.201.175.42 — и доступен всему миру.

Окей, IP-адрес — это адрес дома. Но в доме может быть много квартир. Как почтальон узнает, кому именно письмо — nginx, PostgreSQL или вашему приложению? Для этого существуют порты.

Аналогия работает идеально: IP-адрес = дом, порт = номер квартиры. Адрес 84.201.175.42:443 означает: «машина 84.201.175.42, программа, слушающая на порту 443».

Некоторые порты зарезервированы за конкретными сервисами — это как «квартира №1 — всегда консьерж»:

Порт Сервис Для чего
22 SSH Удалённый доступ к серверу
80 HTTP Веб-сайты (без шифрования)
443 HTTPS Веб-сайты (с шифрованием)
5432 PostgreSQL База данных
3306 MySQL База данных
6379 Redis Кеш / очередь
3000, 8080 Часто используются для dev-серверов

Когда вы набираете https://google.com в браузере, он обращается к порту 443 — просто не показывает его, потому что для HTTPS это порт по умолчанию. А когда вы запускаете dev-сервер на localhost:3000 — порт 3000 нужно указать явно, потому что это нестандартный порт.

IP-адрес + порт — это «куда» доставить данные. Но как именно их доставить? Для этого нужен протокол — набор правил общения.

Два главных транспортных протокола, на которых строится всё остальное:

TCP (Transmission Control Protocol) — надёжная доставка. Гарантирует, что данные дойдут, дойдут в правильном порядке и без повреждений. Если пакет потерялся — отправит заново. Как заказное письмо с уведомлением о вручении.

UDP (User Datagram Protocol) — быстрая доставка без гарантий. Отправил и забыл. Пакет потерялся? Ну и ладно. Как бросить открытку в почтовый ящик — может дойдёт, может нет, но зато быстро.

TCP UDP
Гарантия доставки Да Нет
Порядок пакетов Гарантирован Не гарантирован
Скорость Медленнее (overhead на проверки) Быстрее
Где используется Веб, SSH, почта, файлы Видеозвонки, игры, DNS-запросы

Почему видеозвонки используют UDP? Потому что если один кадр потерялся — лучше показать следующий, чем ждать повторной отправки. Небольшие артефакты в видео лучше, чем подвисание на 2 секунды. Поверх TCP и UDP работают протоколы уровнем выше — те, с которыми вы сталкиваетесь каждый день:

Протокол Поверх Для чего
HTTP / HTTPS TCP Веб-страницы, API
SSH TCP Удалённый доступ к серверу
DNS UDP (обычно) Перевод имён в IP-адреса
FTP / SFTP TCP Передача файлов
SMTP TCP Отправка электронной почты

Это как матрёшка: ваш HTTP-запрос упакован в TCP-пакет, который упакован в IP-пакет, который отправляется по сети. Каждый уровень добавляет свою обёртку со служебной информацией. Давайте соберём всё вместе и проследим, что происходит, когда вы набираете https://example.com в браузере. Это тот вопрос, который обожают задавать на собеседованиях — и теперь вы знаете ответ:

1. Браузер спрашивает DNS-сервер: «Какой IP у example.com?» Ответ: 93.184.216.34.

2. Браузер устанавливает TCP-соединение с 93.184.216.34 на порт 443 (HTTPS).

3. Поверх TCP устанавливается TLS-соединение (шифрование).

4. Браузер отправляет HTTP-запрос: GET / HTTP/1.1.

5. Сервер отвечает HTML-страницей.

6. Браузер отрисовывает страницу.

DNS → TCP → TLS → HTTP → ответ. Шесть шагов — и они происходят за доли секунды.

Подведём итог. Три кита сетей: IP-адрес (какая машина), порт (какая программа на машине), протокол (как общаться). Всё остальное в этом блоке — инструменты для работы с этими тремя вещами: диагностика, подключение, защита.

В следующем уроке — практика. Возьмём в руки ip, ping и curl и посмотрим, как выглядит сеть изнутри Linux.

IP-адрес — уникальный числовой адрес устройства в сети. Частные адреса (192.168.x.x, 10.x.x.x) видны только внутри локальной сети, публичные — из интернета. 127.0.0.1 — localhost, «сам себе».

Порт — номер (0–65535), определяющий программу на машине. IP = дом, порт = квартира. Стандартные: 22 (SSH), 80 (HTTP), 443 (HTTPS), 5432 (PostgreSQL).

TCP — надёжная доставка с гарантией порядка. UDP — быстрая доставка без гарантий.

HTTP/HTTPS, SSH, DNS — протоколы поверх TCP/UDP для конкретных задач (веб, удалённый доступ, преобразование имён).

Путь запроса в браузере: DNS → TCP → TLS → HTTP → ответ.

Обсуждение урока

0
Комментарии видны всем. Чтобы участвовать в обсуждении, войдите или зарегистрируйтесь.
Модерация сообщества

Пожаловаться на комментарий

Расскажите модераторам, что именно требует внимания.