Основы интернет-протоколов [109.1]

Рейтинг: 70.1% · 9 голосов
Полный курс LPIC-1 (экзамены 101-500 и 102-500): архитектура, загрузка, пакеты, команды и текст, ФС и права, шелл-скрипты, пользователи, сервисы, сеть, безопасность. Debian и RHEL.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

Основы интернет-протоколов [109.1]

Сообщение Sergey_Sysadmin »

Оглавление курса (41)
  1. Введение в LPIC-1 и как устроен путь администратора
  2. Железо, устройства и модули ядра [101.1]
  3. Загрузка системы: от BIOS до systemd [101.2]
  4. systemd, цели и уровни выполнения [101.3]
  5. План разметки диска и swap [102.1]
  6. Загрузчик GRUB 2 [102.2]
  7. Разделяемые библиотеки [102.3]
  8. Управление пакетами в Debian: dpkg и apt [102.4]
  9. Управление пакетами RPM, DNF и Zypper [102.5]
  10. Linux как гость виртуализации [102.6]
  11. Командная строка Bash [103.1]
  12. Обработка текста фильтрами [103.2]
  13. Базовое управление файлами [103.3]
  14. Потоки, конвейеры и перенаправление [103.4]
  15. Процессы: создание, мониторинг, сигналы [103.5]
  16. Приоритеты выполнения процессов [103.6]
  17. Регулярные выражения [103.7]
  18. Редактор vi и vim [103.8]
  19. Разделы и создание файловых систем [104.1]
  20. Целостность и обслуживание ФС [104.2]
  21. Монтирование файловых систем [104.3]
  22. Урок 21. Права доступа и владение: rwx, chmod, umask и специальные биты
  23. Жёсткие и символические ссылки
  24. FHS и поиск файлов в системе [104.7]
  25. Окружение и кастомизация оболочки [105.1]
  26. Урок 25. Написание простых bash-скриптов [105.2]
  27. Графика, рабочие столы и доступность
  28. Учётные записи пользователей и групп
  29. Автоматизация задач: cron, at, таймеры [107.2]
  30. Локализация и интернационализация [107.3]
  31. Системное время и синхронизация [108.1]
  32. Системное логирование [108.2]
  33. Основы почтового агента (MTA) [108.3]
  34. Печать и CUPS [108.4]
  35. Основы интернет-протоколов [109.1] (вы здесь)
  36. Постоянная конфигурация сети [109.2]
  37. Диагностика сети [109.3]
  38. DNS на стороне клиента [109.4]
  39. Задачи администрирования безопасности [110.1]
  40. Настройка безопасности хоста [110.2]
  41. Шифрование данных: SSH и GnuPG [110.3]
Урок 34. Основы интернет-протоколов [109.1]

Без понимания адресации и стека протоколов любая диагностика сети превращается в гадание. Этот урок дает базу, на которую опирается все остальное в блоке 109: как устроены IPv4 и IPv6 адреса, чем маска и CIDR режут сеть на подсети, почему один пакет идет по UDP, а другой по TCP, как ядро по таблице маршрутизации решает, куда отправить кадр, и где в системе лежат справочники портов и протоколов.

Изображение

Как это работает

Стек TCP/IP - это четыре уровня, каждый добавляет свой заголовок. Канальный (Ethernet, MAC-адреса) доставляет кадр в пределах одного сегмента. Сетевой (IP) отвечает за адресацию между сетями и маршрутизацию. Транспортный (TCP, UDP) разводит трафик по приложениям через порты. Прикладной (HTTP, DNS, SSH) - это уже сами сервисы. Модель OSI с ее семью уровнями - удобная теория, но в реальном Linux работает именно TCP/IP.

Адрес IPv4 - это 32 бита, записанные как четыре октета (192.168.10.5). Маска делит адрес на две части: сетевую и хостовую. В записи CIDR /24 означает, что первые 24 бита - это номер сети, остальные 8 бит адресуют хосты внутри нее. Маска /24 это тот же 255.255.255.0, просто счет единиц слева. Зная сеть и маску, ядро вычисляет: адрес назначения в моей подсети - отдаю напрямую через канальный уровень, нет - отправляю на шлюз.

В каждой подсети два адреса служебные и хостам не выдаются. Адрес сети (все хостовые биты в нуле, например 192.168.10.0/24) - это идентификатор подсети. Broadcast (все хостовые биты в единице, 192.168.10.255) - широковещание на всех в сегменте. Для /24 это дает 254 рабочих адреса. Частные диапазоны (RFC 1918) не маршрутизируются в интернет: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16. Отдельно стоит APIPA 169.254.0.0/16 - его хост назначает себе сам, когда DHCP недоступен.

IPv6 - это 128 бит, восемь групп по 16 бит в шестнадцатеричной записи. Чтобы не писать простыни, действуют два правила сокращения: ведущие нули в группе опускаются, а одна самая длинная цепочка нулевых групп заменяется на двойное двоеточие, причем такое сжатие допустимо только один раз в адресе. Адреса link-local начинаются с fe80::/10, существуют только в пределах сегмента и обязательны на каждом интерфейсе. Глобальные адреса начинаются с 2000::/3.

Транспорт. TCP - соединение с гарантией: тройное рукопожатие (SYN, SYN-ACK, ACK), нумерация, подтверждения, повторная отправка потерянного. Это HTTP, SSH, SMTP - там, где важна целостность. UDP - без соединения и гарантий, зато быстро и дешево по накладным: DNS, DHCP, VoIP, NTP. ICMP вообще не транспорт для приложений - это служебные сообщения сетевого уровня (ping, недостижимость хоста, превышение TTL для traceroute). Порт TCP 80 и порт UDP 80 - это две разные сущности.

Порт - это 16-битное число, отделяющее одно соединение от другого на хосте. Диапазон 0-1023 - привилегированные порты (нужны права root для bind). Соответствия имя-порт лежат в /etc/services, а номера протоколов сетевого уровня - в /etc/protocols. Эти файлы - локальные справочники для утилит, менять реальное поведение сервиса они не обязаны.

Команды и примеры

Современный инструмент - пакет iproute2 (команда ip). Устаревшие ifconfig, route, netstat в 2026 не ставятся по умолчанию.

Код: Выделить всё

ip addr show          # адреса на интерфейсах
ip -br addr           # краткий вид, по строке на интерфейс
ip route show         # таблица маршрутизации
ip -6 route show      # маршруты IPv6
ip route get 8.8.8.8  # какой маршрут выберет ядро для адреса
Маршрут по умолчанию (шлюз) виден как строка default:

Код: Выделить всё

default via 192.168.10.1 dev eth0 proto dhcp metric 100
Все, что не попало в явные подсети, уходит на 192.168.10.1. Без default-маршрута хост видит только свою подсеть.

Справочники портов и протоколов одинаковы в обоих семействах:

Код: Выделить всё

getent services ssh      # ssh  22/tcp
getent services 53/udp   # domain
grep -E '^(tcp|udp|icmp)\b' /etc/protocols
Где различаются пакеты. Debian/Ubuntu и RHEL/Fedora ставят инструменты из разных пакетов, имена команд те же:

Код: Выделить всё

# Debian 13 / Ubuntu 24.04
apt install iproute2 iputils-ping dnsutils

# RHEL 10 / Fedora 41
dnf install iproute iputils bind-utils
Проверка достижимости и пути:

Код: Выделить всё

ping -c3 192.168.10.1     # ICMP echo до шлюза
ping6 fe80::1%eth0        # link-local требует указания интерфейса
ss -tlnp                  # слушающие TCP-сокеты с портами и PID
ss -ulnp                  # то же для UDP
traceroute -I 8.8.8.8     # путь через ICMP
Команда ss заменила netstat: те же сведения, быстрее, через netlink.

Частые грабли
  • Путают broadcast и адрес сети. .0 - это сеть, .255 (для /24) - broadcast. Ни тот ни другой не назначают хосту.
  • Считают, что /24 всегда дает 256 рабочих адресов. Рабочих 254 - минус сеть и broadcast.
  • Забывают, что в /31 (двухточечные линки, RFC 3021) служебных адресов нет вовсе - оба адреса рабочие.
  • Пингуют link-local IPv6 без зоны интерфейса и получают ошибку. Нужен суффикс %eth0 - адрес не уникален между интерфейсами.
  • Думают, что запись в /etc/services открывает порт. Файл - это только справочник имен, сервис слушает порт независимо от него.
  • Ставят два default-маршрута без разных метрик и удивляются нестабильной маршрутизации.
  • Сжимают двойным двоеточием IPv6 дважды - адрес становится неоднозначным и невалидным.
  • Используют ifconfig на чистой системе и получают command not found - его больше нет из коробки.
Мини-лаба
  • Посмотрите свои адреса: ip -br addr. Запишите IPv4-адрес, его маску (CIDR) и link-local IPv6 (fe80::).
  • Для своей IPv4-сети вручную вычислите адрес сети и broadcast. Проверьте логику командой ipcalc (Debian: apt install ipcalc; Fedora: dnf install ipcalc) или через ip route get.
  • Покажите таблицу маршрутизации ip route show и найдите строку default. Определите IP шлюза.
  • Выполните ip route get для адреса в своей подсети и для 8.8.8.8 - сравните, через какой интерфейс и шлюз пойдет каждый.
  • Пропингуйте свой шлюз и свой link-local IPv6 с суффиксом %интерфейс.
  • Найдите в /etc/services порты для ssh, http, domain через getent services. Сопоставьте с реально слушающими портами в ss -tlnp.
Контрольные вопросы
  • Сколько назначаемых хостам адресов в подсети /26 и какие два адреса служебные?
  • Чем адрес сети отличается от broadcast и как каждый из них вычисляется по маске?
  • Запишите 2001:0db8:0000:0000:0000:0000:0000:0001 в максимально сжатой форме и объясните правила сокращения.
  • Когда выбирают UDP вместо TCP и почему ICMP нельзя назвать транспортным протоколом для приложений?
  • Что произойдет с пакетом к 8.8.8.8, если на хосте нет default-маршрута, и почему?
  • Какой префикс у link-local IPv6 и зачем при работе с ним указывать зону интерфейса?
👍3 ❤️4 🔥3 😄 🤔2
Аватара пользователя
zaytsev
Сообщения: 1
Зарегистрирован: 30 май 2026, 14:23

Re: Основы интернет-протоколов [109.1]

Сообщение zaytsev »

А ipcalc на проде обязателен или можно в уме? У меня /26 и /27 каждый раз туплю с broadcast, считаю на бумажке
👍 ❤️ 🔥 😄 🤔1
Аватара пользователя
seniorredteam
Сообщения: 1
Зарегистрирован: 11 май 2026, 06:33

Re: Основы интернет-протоколов [109.1]

Сообщение seniorredteam »

Поймал командой ss -tlnp висящий процесс на 8080, которого в /etc/services нет вообще. Получается файл и правда чисто справочник, порт слушается без всякой записи там
👍 ❤️2 🔥 😄 🤔
Ответить
← Предыдущая глава
Печать и CUPS [108.4]
Следующая глава →
Постоянная конфигурация сети [109.2]

Все главы курса «LPIC-1: администратор Linux (101 + 102)»

Поделиться темой: ✈ Telegram VK

Вернуться в «LPIC-1: администратор Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость