Перейти к содержимому

Лекция 5. Транспортный и прикладной уровень


1. Транспортный уровень: задачи и функции

Транспортный уровень (Layer 4 модели OSI, Transport layer в TCP/IP) обеспечивает передачу данных между приложениями на разных узлах сети. Если сетевой уровень (IP) отвечает за доставку пакетов между хостами, то транспортный уровень решает задачу доставки данных конкретному процессу на хосте.

1.1. Ключевые задачи транспортного уровня

ЗадачаОписание
МультиплексированиеНесколько приложений на одном хосте одновременно используют сеть. Транспортный уровень добавляет номер порта отправителя, чтобы различать потоки данных
ДемультиплексированиеНа принимающей стороне транспортный уровень по номеру порта назначения определяет, какому приложению передать полученные данные
Надёжная доставкаОбнаружение потерь, повторная передача, контроль целостности (реализовано в TCP; отсутствует в UDP)
Контроль потокаПредотвращение переполнения буфера получателя — отправитель не должен передавать данные быстрее, чем получатель способен их обработать
Контроль перегрузкиРегулировка скорости передачи для предотвращения перегрузки в промежуточных узлах сети

1.2. Мультиплексирование и демультиплексирование

Каждое сетевое приложение привязывается к определённому порту — числовому идентификатору (0–65535). При отправке данных транспортный уровень инкапсулирует данные приложения в сегмент (TCP) или дейтаграмму (UDP), добавляя порт источника и порт назначения.

Приложение A (порт 12345) ──┐
├──▶ Транспортный уровень ──▶ Сеть
Приложение B (порт 54321) ──┘ (мультиплексирование)
Сеть ──▶ Транспортный уровень ──┬──▶ Приложение A (порт 12345)
(демультиплексирование) └──▶ Приложение B (порт 54321)

Таким образом, сокет — это комбинация IP-адреса и номера порта, однозначно идентифицирующая конечную точку соединения.


2. TCP (Transmission Control Protocol)

TCP — это протокол транспортного уровня, обеспечивающий надёжную, упорядоченную, ориентированную на соединение передачу потока байтов между двумя приложениями.

2.1. Основные характеристики TCP

  • Ориентирован на соединение — перед передачей данных устанавливается логическое соединение (трёхстороннее рукопожатие).
  • Надёжность — гарантия доставки данных: подтверждения (ACK), повторные передачи, контрольные суммы.
  • Упорядоченность — данные доставляются в том порядке, в котором были отправлены.
  • Полнодуплексная связь — одновременная передача данных в обоих направлениях.
  • Потоковая передача — TCP рассматривает данные как непрерывный поток байтов, а не набор отдельных сообщений.

2.2. Формат сегмента TCP

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Rsrvd |R|C|S|S|Y|I| Window Size |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options (variable) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
ПолеРазмерОписание
Source Port16 битПорт отправителя
Destination Port16 битПорт получателя
Sequence Number32 битаПорядковый номер первого байта данных в сегменте
Acknowledgment Number32 битаНомер следующего ожидаемого байта от другой стороны
Data Offset4 битаДлина заголовка (в 32-битных словах)
Flags6 битУправляющие флаги: URG, ACK, PSH, RST, SYN, FIN
Window Size16 битРазмер окна приёма (для контроля потока)
Checksum16 битКонтрольная сумма для проверки целостности

2.3. Трёхстороннее рукопожатие (Three-Way Handshake)

Перед обменом данными TCP устанавливает соединение с помощью трёх сообщений:

Клиент Сервер
| |
| ──── SYN (seq=x) ──────────────▶ | 1. Клиент отправляет SYN
| |
| ◀──── SYN-ACK (seq=y, ack=x+1) ── | 2. Сервер отвечает SYN-ACK
| |
| ──── ACK (ack=y+1) ─────────────▶ | 3. Клиент подтверждает ACK
| |
| ◀════════ Данные ════════════════▶ | Соединение установлено

Шаги:

  1. SYN — клиент отправляет сегмент с флагом SYN и начальным порядковым номером x.
  2. SYN-ACK — сервер отвечает сегментом с флагами SYN и ACK, своим начальным номером y и подтверждением ack = x + 1.
  3. ACK — клиент отправляет подтверждение ack = y + 1. Соединение установлено, можно передавать данные.

Начальные порядковые номера (ISN) выбираются случайным образом для защиты от атак подмены.

2.4. Контроль потока (Flow Control) — Sliding Window

TCP использует механизм скользящего окна (sliding window) для управления скоростью передачи. Получатель сообщает отправителю размер своего свободного буфера через поле Window Size.

Данные: [1][2][3][4][5][6][7][8][9][10]...
▲ ▲
отправлено граница окна
и подтверждено (window = 4)
[отправлено и ACK] [можно отправлять] [нельзя отправлять]
◄────────────────► ◄───────────────► ◄──────────────────►
  • Отправитель может передавать данные только в пределах текущего окна.
  • По мере получения ACK окно «сдвигается» вперёд.
  • Если получатель перегружен, он уменьшает Window Size (вплоть до 0 — «нулевое окно»).

2.5. Контроль перегрузки (Congestion Control)

Контроль перегрузки предотвращает коллапс сети, когда множество отправителей одновременно заполняют промежуточные маршрутизаторы. TCP использует переменную congestion window (cwnd), ограничивающую объём неподтверждённых данных.

Основные фазы:

ФазаМеханизмОписание
Slow StartЭкспоненциальный рост cwndНачинается с cwnd = 1 MSS. При каждом ACK cwnd удваивается. Быстрый набор скорости до первой потери
Congestion AvoidanceЛинейный рост cwndПосле достижения порога (ssthresh) cwnd увеличивается на 1 MSS за каждый RTT. Плавный рост
Fast Retransmit3 дублирующих ACKПри получении трёх одинаковых ACK — немедленная повторная передача без ожидания таймаута
Fast RecoveryЧастичное снижение cwndПосле fast retransmit: ssthresh = cwnd / 2, cwnd = ssthresh + 3, продолжение в режиме congestion avoidance

2.6. Завершение соединения (Four-Way Handshake)

Клиент Сервер
| |
| ──── FIN ───────────────────────▶ | 1. Клиент инициирует закрытие
| |
| ◀──── ACK ────────────────────── | 2. Сервер подтверждает
| |
| ◀──── FIN ────────────────────── | 3. Сервер закрывает свою сторону
| |
| ──── ACK ───────────────────────▶ | 4. Клиент подтверждает
| |

После отправки финального ACK клиент переходит в состояние TIME_WAIT (обычно 2 × MSL ≈ 60 секунд), чтобы гарантировать, что последний ACK дошёл до сервера.


3. UDP (User Datagram Protocol)

UDP — это простой протокол транспортного уровня, обеспечивающий передачу данных без установления соединения и без гарантий доставки.

3.1. Основные характеристики UDP

  • Без соединения — нет рукопожатия, данные отправляются немедленно.
  • Без гарантий доставки — дейтаграммы могут теряться, дублироваться, приходить не по порядку.
  • Без контроля потока и перегрузки — отправитель передаёт данные с любой скоростью.
  • Минимальные накладные расходы — заголовок всего 8 байт (против минимум 20 байт у TCP).
  • Сохранение границ сообщений — каждая дейтаграмма — отдельное сообщение.

3.2. Формат дейтаграммы UDP

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
ПолеРазмерОписание
Source Port16 битПорт отправителя (необязателен, может быть 0)
Destination Port16 битПорт получателя
Length16 битДлина дейтаграммы (заголовок + данные), минимум 8 байт
Checksum16 битКонтрольная сумма (необязательна в IPv4, обязательна в IPv6)

3.3. Области применения UDP

  • DNS — запросы и ответы обычно укладываются в одну дейтаграмму; скорость важнее надёжности (при потере — повторный запрос).
  • VoIP и видеозвонки — задержка критичнее потери отдельных пакетов; повторная передача бессмысленна.
  • Стриминг видео/аудио — потеря одного кадра менее заметна, чем задержка из-за повторной передачи.
  • Онлайн-игры — минимальная задержка критически важна для игрового процесса.
  • DHCP, SNMP, NTP — простые протоколы запрос-ответ, где достаточно UDP.

3.4. Почему иногда UDP лучше TCP

  1. Низкая задержка — нет рукопожатия, нет ожидания ACK.
  2. Приложение само управляет надёжностью — протокол прикладного уровня может реализовать только нужные механизмы (например, QUIC поверх UDP).
  3. Multicast и broadcast — TCP не поддерживает многоадресную рассылку, UDP — поддерживает.
  4. Простота реализации — для IoT-устройств с ограниченными ресурсами UDP — оптимальный выбор.

4. Сравнение TCP и UDP

ХарактеристикаTCPUDP
СоединениеДа (трёхстороннее рукопожатие)Нет
НадёжностьГарантированная доставка (ACK, повторная передача)Нет гарантий
Порядок доставкиГарантированНе гарантирован
Контроль потокаДа (sliding window)Нет
Контроль перегрузкиДа (slow start, congestion avoidance)Нет
Размер заголовка20–60 байт8 байт
СкоростьНиже (из-за overhead)Выше
Тип передачиПотоковая (stream)Дейтаграммная (message)
ПрименениеHTTP, HTTPS, FTP, SSH, SMTP, базы данныхDNS, VoIP, стриминг, игры, DHCP, NTP

Практическое правило: если важны целостность и порядок данных — TCP; если важна скорость и допустима частичная потеря — UDP.


5. Порты

5.1. Понятие порта

Порт — 16-битное число (0–65535), идентифицирующее конкретное приложение или службу на хосте. Порт совместно с IP-адресом образует сокет — уникальный адрес конечной точки соединения.

Сокет = IP-адрес : Номер порта
Пример: 192.168.1.10:443

5.2. Диапазоны портов

ДиапазонНазваниеОписание
0–1023Well-known (системные)Зарезервированы за стандартными службами. Требуют привилегий root/администратора для привязки
1024–49151Registered (зарегистрированные)Регистрируются в IANA для конкретных приложений и служб
49152–65535Dynamic / Ephemeral (динамические)Назначаются ОС автоматически клиентским приложениям для исходящих соединений

5.3. Примеры well-known портов

ПортПротоколСлужба
20, 21TCPFTP (данные / управление)
22TCPSSH
23TCPTelnet
25TCPSMTP (отправка почты)
53TCP/UDPDNS
80TCPHTTP
110TCPPOP3
143TCPIMAP
443TCPHTTPS
3306TCPMySQL
5432TCPPostgreSQL
6379TCPRedis

Проверить, какие порты слушаются на Linux-системе:

Окно терминала
# Показать все прослушиваемые порты
ss -tlnp
# Или с помощью netstat
netstat -tlnp

6. DNS (Domain Name System)

6.1. Назначение DNS

Людям удобно запоминать доменные имена (google.com), а компьютерам нужны IP-адреса (142.250.74.206). DNS — это распределённая иерархическая система, преобразующая доменные имена в IP-адреса и обратно.

DNS можно представить как глобальную «телефонную книгу» интернета.

6.2. Иерархия DNS

. (root)
/ | \
com org ru ← TLD (Top-Level Domain)
/ | |
google github yandex ← SLD (Second-Level Domain)
/ \
www mail ← поддомены

Уровни серверов:

  1. Root-серверы (13 кластеров, обозначаются A–M) — знают, где находятся TLD-серверы.
  2. TLD-серверы (для .com, .org, .ru и т.д.) — знают авторитативные серверы для доменов второго уровня.
  3. Авторитативные серверы — содержат фактические DNS-записи для конкретного домена.

6.3. Типы DNS-записей

ТипНазначениеПример
AСопоставление имени с IPv4-адресомexample.com → 93.184.216.34
AAAAСопоставление имени с IPv6-адресомexample.com → 2606:2800:220:1:...
CNAMEПсевдоним (alias) — указывает на другое доменное имяwww.example.com → example.com
MXПочтовый сервер для домена (с приоритетом)example.com → mail.example.com (prio 10)
NSАвторитативные DNS-серверы для доменаexample.com → ns1.example.com
TXTПроизвольная текстовая информация (SPF, DKIM, верификация)example.com → "v=spf1 include:_spf.google.com ~all"
SOAStart of Authority — основная информация о зоне (серийный номер, TTL, контакт)Содержит параметры зоны

6.4. Процесс резолвинга

Рекурсивный запрос — клиент просит DNS-резолвер (обычно DNS-сервер провайдера или публичный, например, 8.8.8.8) полностью разрешить имя. Резолвер самостоятельно обходит иерархию DNS.

Итеративный запрос — сервер отвечает ссылкой на следующий сервер в иерархии, а клиент (или рекурсивный резолвер) обращается к нему сам.

Браузер ──▶ Резолвер ──▶ Root-сервер ──▶ "Обратись к .com"
──▶ TLD-сервер (.com) ──▶ "Обратись к ns1.example.com"
──▶ Авторитативный (ns1.example.com) ──▶ "93.184.216.34"
◀────── Ответ: 93.184.216.34
◀────── Ответ: 93.184.216.34

6.5. Кэширование и TTL

Каждая DNS-запись содержит параметр TTL (Time To Live) — время (в секундах), в течение которого запись может храниться в кэше. После истечения TTL запись считается устаревшей и должна быть обновлена.

  • Локальный кэш ОС (/etc/hosts, systemd-resolved, dnsmasq).
  • Кэш рекурсивного резолвера.
  • Кэш браузера.
Окно терминала
# Просмотр DNS-записей
dig example.com A
nslookup example.com
# Просмотр TTL
dig +nocmd +noall +answer example.com

7. HTTP/HTTPS

7.1. Протокол HTTP

HTTP (HyperText Transfer Protocol) — протокол прикладного уровня для передачи гипертекстовых документов (и не только). Работает по модели запрос-ответ (клиент-сервер) поверх TCP (порт 80).

7.2. Структура HTTP-запроса

GET /api/users?page=1 HTTP/1.1 ← стартовая строка (метод, URI, версия)
Host: example.com ← заголовки
Accept: application/json
Authorization: Bearer <token>
User-Agent: Mozilla/5.0
← пустая строка
← тело (для POST/PUT)

7.3. Структура HTTP-ответа

HTTP/1.1 200 OK ← строка статуса (версия, код, описание)
Content-Type: application/json ← заголовки
Content-Length: 256
Cache-Control: max-age=3600
← пустая строка
{"users": [...]} ← тело ответа

7.4. Основные HTTP-методы

МетодНазначениеИдемпотентностьТело запроса
GETПолучение ресурсаДаНет
POSTСоздание ресурсаНетДа
PUTПолная замена ресурсаДаДа
PATCHЧастичное обновление ресурсаНетДа
DELETEУдаление ресурсаДаНет (обычно)
HEADПолучение только заголовков (без тела)ДаНет
OPTIONSЗапрос поддерживаемых методов (CORS preflight)ДаНет

7.5. Коды ответов HTTP

КлассДиапазонОписаниеПримеры
1xx100–199Информационные100 Continue, 101 Switching Protocols
2xx200–299Успех200 OK, 201 Created, 204 No Content
3xx300–399Перенаправление301 Moved Permanently, 302 Found, 304 Not Modified
4xx400–499Ошибка клиента400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests
5xx500–599Ошибка сервера500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable

7.6. HTTPS = HTTP + TLS

HTTPS — это HTTP, защищённый протоколом TLS (Transport Layer Security). Работает на порту 443.

Что обеспечивает TLS:

  • Конфиденциальность — данные шифруются (симметричное шифрование после установления соединения).
  • Целостность — данные не могут быть незаметно изменены (MAC — Message Authentication Code).
  • Аутентификация — сервер подтверждает свою личность с помощью сертификата.

Упрощённый процесс TLS-рукопожатия:

  1. Клиент отправляет ClientHello (поддерживаемые версии TLS, шифры).
  2. Сервер отвечает ServerHello (выбранный шифр) и отправляет свой сертификат.
  3. Клиент проверяет сертификат (подписан доверенным CA — Certificate Authority?).
  4. Стороны обмениваются ключами (Diffie-Hellman или RSA) и вырабатывают сессионный ключ.
  5. Все последующие данные шифруются сессионным ключом (симметричное шифрование — AES и т.д.).

8. SSH (Secure Shell)

8.1. Назначение SSH

SSH — протокол для безопасного удалённого доступа к серверам и передачи данных по зашифрованному каналу. Работает на порту 22 (TCP).

SSH заменил небезопасные протоколы Telnet и rlogin, в которых данные (включая пароли) передавались в открытом виде.

8.2. Принцип работы

  1. Клиент подключается к SSH-серверу (sshd).
  2. Устанавливается зашифрованное соединение (обмен ключами, выбор алгоритмов).
  3. Происходит аутентификация пользователя.
  4. После аутентификации открывается безопасный канал для передачи команд и данных.

8.3. Аутентификация по паролю vs по ключу

По паролю:

  • Пользователь вводит логин и пароль.
  • Пароль передаётся по зашифрованному каналу (не в открытом виде).
  • Уязвимо к brute-force атакам.

По ключу (рекомендуемый способ):

  • Используется асимметричная криптография — пара ключей:
    • Приватный ключ — хранится у клиента, никогда не передаётся.
    • Публичный ключ — размещается на сервере (в ~/.ssh/authorized_keys).
  • Сервер отправляет challenge, клиент подписывает его приватным ключом, сервер проверяет подпись публичным ключом.
Окно терминала
# Генерация пары ключей
ssh-keygen -t ed25519 -C "user@example.com"
# Копирование публичного ключа на сервер
ssh-copy-id user@server.example.com
# Подключение
ssh user@server.example.com

8.4. Применение SSH

  • Удалённый доступ — интерактивная оболочка на удалённом сервере.
  • SSH-туннелирование — проброс портов через зашифрованный канал (forward/reverse tunneling).
  • SCP — копирование файлов по SSH (scp file.txt user@server:/path/).
  • SFTP — интерактивная передача файлов поверх SSH.
  • Git по SSH — аутентификация при работе с удалёнными репозиториями.

9. Другие прикладные протоколы

9.1. FTP / SFTP

FTP (File Transfer Protocol) — протокол передачи файлов. Использует два TCP-соединения: управляющее (порт 21) и для данных (порт 20). Данные передаются в открытом виде — небезопасен.

SFTP (SSH File Transfer Protocol) — передача файлов поверх SSH. Полностью зашифрован, использует порт 22. Не путать с FTPS (FTP + TLS).

9.2. SMTP / IMAP / POP3

ПротоколПортНазначение
SMTP25 (587 с STARTTLS)Отправка электронной почты
IMAP143 (993 с TLS)Чтение почты с сервера (письма хранятся на сервере, синхронизация)
POP3110 (995 с TLS)Загрузка почты на клиент (обычно удаляется с сервера)

SMTP отвечает за маршрутизацию и доставку писем между серверами. IMAP и POP3 — протоколы для получения писем клиентом.

9.3. NTP (Network Time Protocol)

NTP — протокол синхронизации системных часов по сети (UDP, порт 123). Обеспечивает точность до миллисекунд. Критически важен для:

  • логирования событий;
  • работы сертификатов TLS (проверка срока действия);
  • распределённых систем (согласованность данных);
  • аутентификации (Kerberos, TOTP).

10. Межсетевые экраны (Firewalls)

10.1. Понятие межсетевого экрана

Межсетевой экран (firewall) — программный или аппаратный компонент, фильтрующий сетевой трафик на основе набора правил. Основная задача — контроль доступа между сетевыми зонами (например, интернет и внутренняя сеть).

10.2. Типы межсетевых экранов

ТипОписаниеУровень OSI
Пакетный фильтр (Packet Filter)Анализирует заголовки пакетов (IP, порт, протокол). Не отслеживает состояние соединенийL3–L4
Stateful firewall (с отслеживанием состояний)Отслеживает состояние TCP-соединений. Пропускает пакеты, принадлежащие установленным соединениямL3–L4
Прикладной (Application-level gateway / WAF)Анализирует содержимое данных на уровне приложений (HTTP, SQL и т.д.)L7

10.3. Зоны и цепочки правил

В Linux (iptables/nftables) трафик проходит через цепочки (chains):

ЦепочкаОписание
INPUTВходящий трафик, адресованный самому хосту
OUTPUTИсходящий трафик от самого хоста
FORWARDТранзитный трафик (хост выступает как маршрутизатор)

10.4. Правила фильтрации

Каждое правило содержит условие (matching criteria) и действие (target):

  • ACCEPT — пропустить пакет.
  • DROP — отбросить пакет (без уведомления отправителя).
  • REJECT — отбросить пакет и отправить ICMP-ошибку.
  • LOG — записать информацию о пакете в журнал.

Правила обрабатываются последовательно — первое совпавшее правило применяется.

10.5. Примеры настройки

iptables (классический инструмент Linux):

Окно терминала
# Разрешить SSH (порт 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Разрешить HTTP и HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Разрешить установленные соединения
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Запретить всё остальное (default policy)
iptables -P INPUT DROP

ufw (упрощённый интерфейс для iptables в Ubuntu):

Окно терминала
# Включить firewall
sudo ufw enable
# Разрешить SSH, HTTP, HTTPS
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Запретить всё входящее по умолчанию
sudo ufw default deny incoming
# Посмотреть правила
sudo ufw status verbose

Windows Firewall (PowerShell):

Окно терминала
# Разрешить входящие TCP-соединения на порт 8080
New-NetFirewallRule -DisplayName "Allow Port 8080" `
-Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow

11. Вопросы для самопроверки

  1. В чём заключаются задачи мультиплексирования и демультиплексирования на транспортном уровне?
  2. Опишите процесс установления TCP-соединения (трёхстороннее рукопожатие). Какова роль каждого из трёх сообщений?
  3. Как работает механизм скользящего окна в TCP и зачем он нужен?
  4. Чем отличаются фазы Slow Start и Congestion Avoidance в механизме контроля перегрузки TCP?
  5. Почему UDP предпочтительнее TCP для VoIP и онлайн-игр?
  6. Что такое сокет? Чем отличаются well-known, registered и ephemeral порты?
  7. Опишите иерархию DNS. Как происходит резолвинг доменного имени? В чём разница между рекурсивным и итеративным запросом?
  8. Перечислите основные типы DNS-записей (A, AAAA, CNAME, MX, NS, TXT) и их назначение.
  9. Какова структура HTTP-запроса и HTTP-ответа? Приведите примеры кодов ответов из классов 2xx, 4xx, 5xx.
  10. Как работает HTTPS? Что обеспечивает TLS и из каких основных шагов состоит TLS-рукопожатие?
  11. Чем аутентификация по SSH-ключу отличается от аутентификации по паролю? Почему ключи безопаснее?
  12. Какие типы межсетевых экранов существуют и чем отличается stateful firewall от простого пакетного фильтра?