Основы компьютерных сетей
Компьютерная сеть — система устройств, которые обмениваются данными по общим правилам — протоколам. Сетевой стек разделяет взаимодействие на уровни: от передачи сигнала до запросов приложений.
Приложение → TCP/UDP → IP → Ethernet/Wi-Fi → среда передачи- Хост — подключённое к сети устройство.
- Интерфейс — точка подключения хоста к сети.
- Пакет — блок данных сетевого уровня.
- Кадр — блок данных канального уровня.
- Шлюз — узел, через который доступна другая сеть.
- Протокол — набор правил обмена данными.
Содержание
- Модели OSI и TCP/IP
- IP-адресация
- Маски подсети и CIDR
- TCP, UDP, порты и сокеты
- DNS
- HTTP
- Маршрутизация и NAT
- Firewall
- VPN и прокси
- Инструменты
- Алгоритм диагностики
- Путь HTTPS-запроса
- Краткая памятка
Модели OSI и TCP/IP
Модель OSI
| № | Уровень | Назначение | Примеры |
|---|---|---|---|
| 7 | Прикладной | Функции сетевых приложений | HTTP, DNS, SSH |
| 6 | Представления | Форматирование и шифрование | TLS, UTF-8, JSON |
| 5 | Сеансовый | Управление сеансами | Сеансы RPC |
| 4 | Транспортный | Доставка между процессами | TCP, UDP |
| 3 | Сетевой | Адресация и маршрутизация | IPv4, IPv6, ICMP |
| 2 | Канальный | Передача кадров в сегменте | Ethernet, Wi-Fi, ARP |
| 1 | Физический | Передача сигналов и битов | Кабель, оптика, радио |
Модель помогает локализовать проблему:
Нет сигнала → уровень 1
Не виден сосед в LAN → уровень 2
Нет маршрута → уровень 3
Недоступен порт → уровень 4
Ошибка HTTP → уровень 7Модель TCP/IP
| TCP/IP | Уровни OSI | Примеры |
|---|---|---|
| Прикладной | 5–7 | HTTP, DNS, SSH, TLS |
| Транспортный | 4 | TCP, UDP |
| Интернет-уровень | 3 | IP, ICMP |
| Канальный | 1–2 | Ethernet, Wi-Fi, ARP |
При инкапсуляции каждый уровень добавляет служебный заголовок:
HTTP-сообщение
└── TCP-сегмент
└── IP-пакет
└── Ethernet-кадрОсновные протоколы:
| Протокол | Назначение |
|---|---|
| Ethernet, Wi-Fi | Передача кадров в локальной сети |
| ARP | Поиск MAC-адреса по IPv4-адресу |
| IPv4, IPv6 | Адресация и доставка между сетями |
| ICMP | Диагностика и сообщения об ошибках |
| TCP | Надёжный упорядоченный поток байтов |
| UDP | Датаграммы без гарантии доставки |
| DNS | Разрешение доменных имён |
| HTTP/HTTPS | Передача веб-ресурсов и API-запросов |
| DHCP | Автоматическая выдача сетевых настроек |
IP-адресация
IP-адрес идентифицирует сетевой интерфейс на сетевом уровне.
IPv4 и IPv6
IPv4 содержит 32 бита и записывается четырьмя октетами:
192.168.1.10IPv6 содержит 128 бит:
2001:0db8:0000:0000:0000:ff00:0042:8329
2001:db8::ff00:42:8329 # сокращённая записьПоследовательность нулевых групп можно заменить на :: только один раз. IPv6 loopback — ::1.
Специальные IPv4-диапазоны
| Диапазон | Назначение |
|---|---|
10.0.0.0/8 |
Частные сети |
172.16.0.0/12 |
Частные сети |
192.168.0.0/16 |
Частные сети |
127.0.0.0/8 |
Loopback текущего хоста |
169.254.0.0/16 |
Link-local, часто при отсутствии DHCP |
0.0.0.0 |
Неопределённый адрес; при bind — все IPv4-интерфейсы |
Частные адреса напрямую не маршрутизируются в публичном Интернете. Для выхода наружу обычно используется NAT.
Сервис на 127.0.0.1:8080 доступен только локально. Сервис на 0.0.0.0:8080 слушает все IPv4-интерфейсы, но доступ всё равно зависит от firewall и маршрутизации.
Маски подсети и CIDR
Маска делит IP-адрес на часть сети и часть хоста:
IP: 192.168.1.42
Маска: 255.255.255.0
CIDR: 192.168.1.42/24/24 означает 24 бита сети и 8 бит хоста:
Сеть: 192.168.1.0
Хосты: 192.168.1.1–192.168.1.254
Broadcast: 192.168.1.255CIDR записывает сеть через длину префикса. Число IPv4-адресов:
2^(32 − длина префикса)| CIDR | Маска | Адресов | Обычных хостов* |
|---|---|---|---|
/16 |
255.255.0.0 |
65 536 | 65 534 |
/24 |
255.255.255.0 |
256 | 254 |
/25 |
255.255.255.128 |
128 | 126 |
/26 |
255.255.255.192 |
64 | 62 |
/27 |
255.255.255.224 |
32 | 30 |
/28 |
255.255.255.240 |
16 | 14 |
/29 |
255.255.255.248 |
8 | 6 |
/30 |
255.255.255.252 |
4 | 2 |
/32 |
255.255.255.255 |
1 | 1 адрес |
* Для обычных подсетей. /31 может использоваться на соединениях «точка — точка».
Пример расчёта
Для 192.168.10.77/26 маска равна 255.255.255.192. Размер блока:
256 − 192 = 64Границы подсетей: 0, 64, 128, 192. Адрес 77 входит в блок 64–127:
Сеть: 192.168.10.64
Первый хост: 192.168.10.65
Последний хост: 192.168.10.126
Broadcast: 192.168.10.127Если адрес назначения находится в той же подсети, хост обращается к нему напрямую. Иначе пакет отправляется шлюзу.
TCP, UDP, порты и сокеты
TCP
TCP предоставляет надёжный упорядоченный поток байтов:
- устанавливает соединение;
- подтверждает получение;
- повторяет потерянные сегменты;
- сохраняет порядок;
- управляет потоком и перегрузкой;
- не сохраняет границы сообщений.
Трёхэтапное рукопожатие:
Клиент → Сервер: SYN
Сервер → Клиент: SYN, ACK
Клиент → Сервер: ACKTCP используют HTTP/1.1, HTTP/2, SSH, SMTP и многие СУБД.
UDP
UDP передаёт отдельные датаграммы без предварительного соединения:
- доставка и порядок не гарантируются;
- автоматических повторов нет;
- границы датаграмм сохраняются;
- надёжность при необходимости реализует приложение.
UDP используют DNS, голос, потоковое видео, телеметрия и игры. HTTP/3 работает через QUIC поверх UDP.
| Свойство | TCP | UDP |
|---|---|---|
| Соединение | Есть | Нет на уровне UDP |
| Доставка и порядок | Контролируются | Не гарантируются |
| Повторы | Есть | Нет |
| Модель данных | Поток байтов | Датаграммы |
UDP не всегда быстрее: результат зависит от протокола приложения, потерь и задержки.
Порты
Порт — число от 0 до 65535, направляющее трафик нужному процессу.
| Диапазон | Назначение |
|---|---|
0–1023 |
Хорошо известные порты |
1024–49151 |
Зарегистрированные |
49152–65535 |
Динамические/эфемерные |
| Порт | Транспорт | Сервис |
|---|---|---|
| 22 | TCP | SSH |
| 53 | UDP/TCP | DNS |
| 67/68 | UDP | DHCP |
| 80 | TCP | HTTP |
| 123 | UDP | NTP |
| 443 | TCP/UDP | HTTPS; HTTP/3 через QUIC |
| 5432 | TCP | PostgreSQL |
| 3306 | TCP | MySQL |
Порт не гарантирует протокол: приложение можно запустить на нестандартном порту.
Сокет — программная конечная точка обмена. TCP-соединение идентифицируется комбинацией:
протокол + локальный IP:порт + удалённый IP:порт
TCP 192.168.1.10:53144 → 203.0.113.20:443DNS
DNS (Domain Name System) — распределённая система сопоставления доменных имён с данными.
| Запись | Назначение |
|---|---|
A |
IPv4-адрес |
AAAA |
IPv6-адрес |
CNAME |
Псевдоним другого имени |
MX |
Почтовые серверы |
NS |
Авторитетные серверы зоны |
TXT |
Текстовые данные и проверки |
PTR |
Обратное разрешение IP в имя |
SOA |
Параметры зоны |
SRV |
Адрес и порт сервиса |
Как разрешается имя
- Приложение и ОС проверяют кэш и файл
hosts. - Запрос отправляется рекурсивному DNS-резолверу.
- При отсутствии ответа в кэше резолвер обращается к корневому серверу.
- Корневой сервер указывает серверы зоны верхнего уровня, например
.com. - Сервер
.comуказывает авторитетный сервер домена. - Авторитетный сервер возвращает запись.
- Резолвер кэширует результат и отвечает клиенту.
Клиент → рекурсивный резолвер
├→ корневой сервер
├→ сервер зоны .com
└→ авторитетный сервер доменаTTL задаёт срок хранения ответа в кэше. После изменения записи старое значение моет сохраняться до истечения TTL.
Обычные DNS-запросы часто используют UDP/53. TCP/53 применяется, например, для некоторых крупных ответов, повторов после усечения и передачи зон.
Linux/macOS: /etc/hosts
Windows: C:\Windows\System32\drivers\etc\hostsHTTP
HTTP — прикладной протокол запросов и ответов.
GET /users/42?details=true HTTP/1.1
Host: api.example.com
Accept: application/jsonHTTP/1.1 200 OK
Content-Type: application/json
{"id":42,"name":"Анна"}Сообщение содержит стартовую строку, заголовки, пустую строку и необязательное тело.
URL
https://api.example.com:443/users/42?details=true#profile| Часть | Значение |
|---|---|
| Схема | https |
| Хост | api.example.com |
| Порт | 443 |
| Путь | /users/42 |
| Query | details=true |
| Fragment | profile |
Фрагмент после # обычно серверу не отправляется.
Методы
| Метод | Назначение |
|---|---|
GET |
Получить ресурс |
HEAD |
Получить заголовки |
POST |
Создать ресурс или выполнить операцию |
PUT |
Полностью заменить ресурс |
PATCH |
Частично изменить ресурс |
DELETE |
Удалить ресурс |
OPTIONS |
Узнать поддерживаемые возможности |
GET, HEAD, OPTIONS считаются безопасными. GET, HEAD, PUT, DELETE, OPTIONS обычно идемпотентны. POST обычно не идемпотентен.
Статус-коды
| Диапазон | Значение |
|---|---|
1xx |
Информационные |
2xx |
Успех |
3xx |
Перенаправление/кэш |
4xx |
Ошибка запроса клиента |
5xx |
Ошибка серверной обработки |
| Код | Значение |
|---|---|
200 |
Успех |
201 |
Ресурс создан |
204 |
Успех без тела |
301/302 |
Перенаправление |
304 |
Использовать кэш |
400 |
Некорректный запрос |
401 |
Требуется или не прошла аутентификация |
403 |
Недостаточно прав |
404 |
Ресурс не найден |
405 |
Метод не поддерживается |
409 |
Конфликт состояния |
422 |
Семантически некорректные данные |
429 |
Превышен лимит запросов |
500 |
Внутренняя ошибка |
502 |
Некорректный ответ upstream |
503 |
Сервис временно недоступен |
504 |
Upstream не ответил вовремя |
HTTPS — HTTP поверх TLS. TLS обеспечивает шифрование, целостность и проверку сертификата сервера. HTTP/1.1 и HTTP/2 обычно используют TCP, HTTP/3 — QUIC поверх UDP.
Маршрутизация и NAT
Маршрутизация — выбор пути для IP-пакета. Таблица маршрутов содержит сеть назначения, шлюз, интерфейс и метрику.
192.168.1.0/24 → напрямую через eth0
10.10.0.0/16 → через 192.168.1.1
0.0.0.0/0 → через 192.168.1.2540.0.0.0/0 — маршрут IPv4 по умолчанию, ::/0 — IPv6. Если подходят несколько маршрутов, выбирается самый конкретный — с наиболее длинным префиксом.
ip route # Linux
ip route get 8.8.8.8
route print # Windows
netstat -rn # macOSNAT изменяет адреса и иногда порты:
До NAT: 192.168.1.10:53144 → 203.0.113.20:443
После NAT: 198.51.100.25:62001 → 203.0.113.20:443- SNAT меняет адрес источника.
- DNAT меняет адрес назначения.
- PAT/NAPT дополнительно преобразует порты.
- Port forwarding направляет внешний порт внутреннему сервису.
198.51.100.25:8443 → 192.168.1.50:443NAT не заменяет firewall.
Firewall
Firewall разрешает, отклоняет или отбрасывает трафик по правилам. Учитываться могут протокол, адреса, порты, интерфейс, направление и состояние соединения.
- Stateless проверяет каждый пакет отдельно.
- Stateful отслеживает соединения и распознаёт
NEW,ESTABLISHED,RELATED,INVALID. accept— разрешить;drop— молча отбросить;reject— отклонить с ответом;log— записать событие.
Типовая политика сервера:
Разрешить loopback
Разрешить ESTABLISHED/RELATED
Разрешить SSH только из административной сети
Разрешить HTTP/HTTPS извне
Остальной входящий трафик запретитьПри удалённой настройке важно сохранить административный доступ и способ восстановления.
VPN и прокси
VPN создаёт защищённый туннель поверх другой сети. Remote access VPN подключает отдельный хост, site-to-site соединяет сети.
- Full tunnel — весь трафик идёт через VPN.
- Split tunnel — через VPN идут только заданные сети.
VPN добавляет виртуальный интерфейс и маршруты. Он не заменяет TLS, firewall и авторизацию приложений.
Forward proxy находится со стороны клиента:
Клиент → Forward proxy → ИнтернетОн может фильтровать, журналировать и кэшировать запросы.
Reverse proxy находится перед серверами:
Клиент → Reverse proxy → BackendОн может завершать TLS, балансировать нагрузку, маршрутизировать запросы, кэшировать ответы и ограничивать частоту запросов.
| Прокси | VPN |
|---|---|
| Обычно обслуживает приложение или протокол | Обычно влияет на маршруты хоста/сети |
| Часто требует настройки приложения | Работает через виртуальный интерфейс |
| Шифрование зависит от протокола | Шифрование обычно часть туннеля |
Инструменты
ping
Проверяет ICMP-достижимость и RTT:
ping -c 4 example.com # Linux/macOS
ping -n 4 example.com # Windowsping не проверяет конкретный порт. Отсутствие ответа не доказывает, что хост выключен: ICMP может блокироваться.
traceroute / tracert
Показывает промежуточные маршрутизаторы с помощью возрастающего TTL:
traceroute example.com # Linux/macOS
tracert example.com # Windows
traceroute -n example.com # без DNS-разрешения адресовЗвёздочка не обязательно означает обрыв: узел может не отвечать на диагностику, но передавать трафик.
curl
curl https://example.com # GET
curl -i https://example.com # заголовки и тело
curl -I https://example.com # только заголовки
curl -v https://example.com # DNS, TCP, TLS, HTTP
curl -L http://example.com # следовать redirectcurl https://api.example.com/users \
-X POST \
-H 'Content-Type: application/json' \
-d '{"name":"Анна"}'-k отключает проверку TLS-сертификата; использовать только для ограниченной диагностики.
ss / netstat
sudo ss -ltnp # слушающие TCP-порты и процессы
sudo ss -lntup # TCP и UDP
ss -tan # TCP-соединенияnetstat -ano # Windows: соединения и PIDСостояния TCP: LISTEN, SYN-SENT, ESTABLISHED, CLOSE-WAIT, TIME-WAIT. Рост CLOSE-WAIT может означать, что приложение не закрывает сокеты.
dig / nslookup
dig example.com
dig +short example.com
dig example.com MX
dig @1.1.1.1 example.com
dig -x 8.8.8.8
nslookup example.comВ dig важны status, ANSWER SECTION, SERVER, TTL и Query time.
Алгоритм диагностики
ip address # интерфейс и IP
ip route # маршруты и шлюз
ping <шлюз> # локальная сеть
ping 8.8.8.8 # внешняя IP-доступность
dig example.com # DNS
traceroute example.com # путь
nc -vz example.com 443 # TCP-порт
curl -v https://example.com # TLS и HTTP
ss -ltnp # локальный сервисТипичные направления поиска:
Имя не разрешается → DNS
Connection timed out → маршрут, firewall, потери, недоступный узел
Connection refused → порт не слушается или отклонён
TLS certificate error → имя, срок, цепочка сертификата, доверие
HTTP 401/403 → аутентификация или права
HTTP 404 → путь или ресурс
HTTP 500 → приложение/сервер
HTTP 502/504 → reverse proxy или upstreamЭто ориентиры, а не безусловное доказательство причины.
Путь HTTPS-запроса
- Клиент разбирает URL.
- DNS возвращает IP-адрес.
- ОС выбирает маршрут.
- Для удалённой сети пакет отправляется шлюзу.
- В IPv4 LAN ARP определяет MAC-адрес шлюза.
- Устанавливается TCP-соединение с портом
443. - Выполняется TLS-рукопожатие.
- Отправляется HTTP-запрос.
- Сервер или reverse proxy возвращает ответ.
Для HTTP/3 используется QUIC поверх UDP.
Краткая памятка
IP → адресация между сетями
CIDR → длина сетевого префикса
ICMP → диагностика и сетевые сообщения
TCP → надёжный поток байтов
UDP → датаграммы без гарантии доставки
Порт → идентификатор процесса
Сокет → программная конечная точка
DNS → доменное имя в записи, включая IP
HTTP → запрос и ответ приложения
TLS/HTTPS → защищённый HTTP-канал
Маршрут → правило выбора следующего узла
NAT → преобразование адресов и портов
Firewall → фильтрация трафика
VPN → защищённый туннель
Proxy → посредник между клиентом и серверомГлавный принцип диагностики:
Адрес → маршрут → DNS → порт → TLS → HTTP → приложение