Компьютерная сеть — это как город, в котором каждый компьютер — житель с уникальным адресом. Чтобы жители могли общаться, нужны правила, уличные знаки и почта. В этой статье мы с вами вместе разберёмся, как устроена эта инфраструктура от самого низкого уровня — физического соединения — до высокоуровневых протоколов, отвечающих за надежную передачу данных.

Особое внимание уделим протоколу RARP — той загадочной штуке, благодаря которой бездисковые компьютеры узнают свой IP-адрес и начинают жить полноценной сетевой жизнью. Также погрузимся в детали Ethernet, узнаем, как устроена модель TCP/IP, как происходит установка соединения по TCP, и как настраивать и диагностировать сеть на Linux — всё это с живыми примерами, таблицами и полезными советами.


Что такое протокол RARP и для чего он нужен?

Представьте, что вы — компьютер без паспорта (IP-адреса), а знаете только свой уникальный отпечаток пальца — аппаратный адрес (MAC). Как получить паспорт, чтобы ходить по сетевым улицам? Тут на помощь приходит RARP — Reverse Address Resolution Protocol, или обратный протокол определения адреса.

RARP позволяет бездисковым системам (например, тонким клиентам или X-терминалам) узнать свой IP-адрес, отправив запрос в сеть с указанием своего MAC-адреса. Специальный RARP-сервер, получив запрос, отвечает, предоставляя нужный IP. Этот процесс — как обращение к паспортному столу: показываешь отпечатки — получаешь документ.


Как работает RARP: запрос и отклик

Процесс выглядит так:

  • Бездисковая система считывает свой MAC-адрес с сетевой карты.
  • Она отправляет в сеть широковещательный RARP-запрос — «Кто знает мой IP?»
  • RARP-серверы слушают сеть и отвечают персональным RARP-откликом с нужным IP-адресом.
  • Получив IP, бездисковая система начинает загрузку с сети, например, через TFTP.

На практике RARP-запрос — это Ethernet-кадр с типом 0x8035, а поле операции (op) имеет значение 3 для запроса и 4 для отклика.

Пример:
В сети несколько RARP-серверов, но бездисковая система использует первый полученный отклик, игнорируя остальные. Это немного похоже на выбор первого свободного такси из нескольких — не всегда идеально, но работает.


В чём разница между RARP и ARP?

ARP (Address Resolution Protocol) — это как карта для определения, по какому физическому адресу (MAC) отправить данные, зная IP. RARP — наоборот, по MAC узнать IP. ARP обычно встроен в ядро ОС, а RARP-серверы — пользовательские процессы.

ARP — это как спросить: «Где живёт этот IP?», а RARP — «Какой у меня IP, если я знаю MAC?»


Ограничения и проблемы RARP

  • RARP использует широковещательные запросы на канальном уровне, которые не проходят через маршрутизаторы.
  • Передаётся только IP-адрес, без дополнительной информации.
  • Реализация RARP зависит от операционной системы и не везде поддерживается.
  • Множество RARP-серверов увеличивает трафик и вероятность коллизий.

Современные протоколы, такие как BOOTP и DHCP, дают гораздо больше информации и являются более гибкими.


Ethernet: магистраль сети

Ethernet — это основной способ, по которому данные движутся по локальной сети. Представьте Ethernet как общий шоссе, по которому мчатся кадры данных.

Формат Ethernet-кадра:

Поле Размер Назначение
Преамбула (Preamble) 7 байт Синхронизация передачи
Начальный ограничитель 1 байт Обозначает начало кадра
MAC-адрес назначения 6 байт Кому адресован кадр
MAC-адрес источника 6 байт Кто отправил кадр
Тип/Длина 2 байта Тип протокола верхнего уровня или длина данных
Данные (Data) 46–1500 байт Передаваемые данные
Заполнение (Padding) до 46 байт Дополняет кадр до минимальной длины
Контрольная сумма (FCS) 4 байта Проверка целостности кадра

Минимальный размер кадра — 72 байта, максимальный — 1526.


Коллизии в Ethernet — когда машины встречаются на узкой дороге

Поскольку все узлы используют одну среду передачи, иногда два компьютера могут начать передачу одновременно — и вот вам коллизия!

С помощью метода CSMA/CD (слушай несущую и обнаруживай коллизии) Ethernet обнаруживает столкновение, прерывает передачу и заставляет узлы подождать случайное время перед повторной попыткой.

Это похоже на две машины, которые случайно выехали на узкий мост одновременно: они гудят друг другу, притормаживают и решают, кто поедет первым.


Стек TCP/IP: слои, протоколы и их роли

Как и любой хорошо организованный город, сеть построена из уровней:

Уровень Назначение и протоколы
Прикладной (Application) HTTP, SMTP, FTP — приложения для взаимодействия пользователей
Транспортный (Transport) TCP (надежная доставка), UDP (быстрая доставка без гарантий)
Межсетевой (Network) IP — маршрутизация и доставка пакетов
Канальный (Data Link) Ethernet, ARP, RARP — доставка кадров и разрешение адресов MAC
Физический (Physical) Кабели, радиоволны — передача битов

TCP: как устанавливается надёжное соединение

Процесс «трёхстороннего рукопожатия»:

  1. Клиент отправляет сегмент с флагом SYN (запрос на соединение).
  2. Сервер отвечает SYN+ACK (подтверждение и согласие).
  3. Клиент отправляет ACK (подтверждение) — соединение установлено.

Данные передаются в виде сегментов с порядковыми номерами, чтобы получатель мог восстановить правильный порядок.


IP: доставка пакетов по назначению

IP — как почтальон, который доставляет пакеты между сетями, маршрутизируя их через множество промежуточных узлов.

IP-адрес — это уникальный адрес узла в сети.


Настройка сетевых интерфейсов и управление сетью в Linux

Linux предоставляет множество инструментов для управления сетью:

Инструмент Описание
ip Универсальная утилита для настройки адресов, маршрутов, интерфейсов
ifconfig Старый инструмент для настройки интерфейсов
nmcli Командный интерфейс NetworkManager
nmtui Текстовый интерфейс NetworkManager
systemctl Управление системными службами, включая сеть

Настройка IP-адреса с помощью ip:

sudo ip address add 192.168.0.10/24 dev eth0
sudo ip link set eth0 up

Диагностика сети: как проверить, что всё работает?

  • ping — проверить доступность узла и время отклика.
  • traceroute — показать путь до узла через промежуточные маршрутизаторы.
  • ip neigh — просмотреть ARP-кэш.
  • ip route — таблица маршрутизации.
  • ss и netstat — показать активные соединения и порты.

Сокеты: программный интерфейс сетевого взаимодействия

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

  • SOCK_STREAM (TCP) — для надежных соединений.
  • SOCK_DGRAM (UDP) — для быстрых, но ненадежных сообщений.

Unix-сокеты (AF_UNIX) — общение между приложениями на одном компьютере — быстрее, чем через TCP/IP.


Практические советы и чек-лист по настройке сети в Linux

  • Перед настройкой интерфейса проверьте текущее состояние:
    bash ip a
  • Для временного изменения IP:
    bash sudo ip address add 192.168.1.10/24 dev eth0
  • Для постоянной настройки используйте /etc/network/interfaces или NetworkManager.
  • После изменений перезапустите сеть:
    bash sudo systemctl restart networking.service
  • Проверьте таблицу маршрутизации:
    bash ip route show
  • Проверьте ARP-кэш:
    bash ip neigh show
  • Для диагностики используйте:
    bash ping <ip-address> traceroute <hostname> ss -tulpn
  • Если сеть не работает, проверьте, активен ли интерфейс:
    bash ip link show eth0 sudo ip link set eth0 up

FAQ

В: Зачем нужен RARP, если есть DHCP?
О: RARP используется для бездисковых систем, чтобы получить IP при загрузке. DHCP даёт больше информации и более функционален, но RARP проще и применяется в некоторых старых или специализированных системах.

В: Можно ли использовать несколько IP-адресов на одном интерфейсе?
О: Да, с помощью команды ip address add можно добавить дополнительные IP.

В: Почему не всегда удаётся "пинговать" IP из интернета?
О: Возможны блокировки на межсетевых экранах, настройки NAT или отсутствие маршрута.


Сетевой мир — это смесь науки, инженерии и чуть-чуть магии. Теперь вы вооружены знаниями, как устроены протоколы, как они взаимодействуют и как их можно контролировать в Linux. Не забывайте, что лучшая практика — экспериментировать и учиться на практике. Удачи в ваших сетевых приключениях!