Компьютерные сети: виды, топологии, IP-адрес и диагностика

Компьютерные сети: виды, топологии, IP-адрес и диагностика Полезное

Компьютерная сеть — это узлы (компьютеры, телефоны, серверы, принтеры), соединенные каналами связи и сетевым оборудованием, которые обмениваются данными по общим правилам — протоколам. Ниже разберем, какими бывают сети по масштабу и топологии, как данные проходят через уровни модели TCP/IP, как узел по IP-адресу, маске и шлюзу решает, куда отправить пакет, и как по шагам найти причину, если связи нет.

Код и вывод команд проверены 23 сентября 2026 года: Python 3.14 и контейнер Ubuntu 24.04. Адреса в вашей сети будут другими.

Мини-словарь: кто есть кто в сети

Эти термины часто путают, а от них зависит понимание всего остального:

Термин Что делает Уровень
Узел (хост) Отправляет и получает данные: ПК, телефон, сервер —
Коммутатор (switch) Передает кадры между устройствами одной локальной сети по MAC-адресам канальный
Маршрутизатор (router) Передает пакеты между разными сетями по IP-адресам сетевой
Точка доступа Wi-Fi Подключает беспроводные устройства к локальной сети канальный
Протокол Правила обмена: формат сообщений и порядок действий (IP, TCP, DNS, HTTP) любой

Домашний «роутер» обычно совмещает маршрутизатор, коммутатор и точку доступа в одной коробке, в офисе это отдельные устройства.

Виды компьютерных сетей по масштабу

Границы между видами условные: их задают не метры, а владелец сети и технологии.

Вид Охват Типичные технологии Пример
PAN (персональная) Несколько метров вокруг человека Bluetooth, USB Телефон и беспроводные наушники
LAN (локальная) Квартира, офис, этаж, здание Ethernet, Wi-Fi Домашняя сеть за роутером
MAN (городская) Город или район Оптика провайдера, Metro Ethernet Сеть городского провайдера
WAN (глобальная) Регионы, страны, континенты Магистральная оптика, каналы операторов Интернет, сеть филиалов банка

Отдельно стоит WLAN — это беспроводная локальная сеть (обычно Wi-Fi), то есть разновидность LAN, а не еще один масштаб. Не путайте WLAN (Wireless LAN) и WAN (Wide Area Network): это разные понятия, отличающиеся одной буквой.

Сеть банка с филиалами в разных городах — это несколько LAN, связанных через WAN (каналы оператора или туннели через интернет).

Топологии: как соединены узлы

Физическая топология — как проложены кабели и радиоканалы, логическая — как движутся данные. Они могут не совпадать.

Топология Как устроена Плюсы Минусы Где сейчас
Шина Все узлы на одном общем кабеле Мало кабеля Обрыв кабеля кладет сегмент, коллизии Историческая (ранний Ethernet на коаксиале)
Кольцо Каждый узел связан с двумя соседями Предсказуемая очередность передачи Разрыв без резервного кольца ломает связь Некоторые оптические и промышленные сети
Звезда Все узлы подключены к центральному коммутатору Сбой одного кабеля не задевает остальных Центр — единая точка отказа Почти любая современная LAN
Дерево Звезды, соединенные иерархией коммутаторов Легко расширять по этажам и зданиям Отказ верхнего уровня отрезает ветку Офисные и кампусные сети
Ячеистая (mesh) Узлы связаны несколькими путями Есть обходные маршруты Дороже и сложнее в настройке Магистрали операторов, mesh-системы Wi-Fi

Важная поправка к распространенному объяснению: в центре «звезды» стоит коммутатор, а не сервер. Сервер — просто один из узлов на лучах, и его отказ не останавливает передачу данных между остальными компьютерами.

По ролям узлов сети бывают одноранговые (каждый компьютер и клиент, и сервер) и клиент-серверные (выделенные серверы обслуживают клиентов). Это деление про роли программ, а не про кабели.

Как данные идут по сети: модели OSI и TCP/IP

Передачу делят на уровни: каждый решает свою задачу и пользуется услугами уровня ниже. Модель OSI из семи уровней — учебная и справочная, в ней удобно называть проблемы («проблема на втором уровне»). Реально работающий стек интернета описывает модель TCP/IP из четырех уровней.

TCP/IP Уровни OSI Задача Примеры
Прикладной 7, 6, 5 Смысл данных для программ HTTP, DNS, SMTP, SSH
Транспортный 4 Доставка между программами по портам TCP, UDP
Сетевой (межсетевой) 3 Адресация и маршрут между сетями IP, ICMP
Канальный (доступ к сети) 2, 1 Передача кадра по конкретной среде Ethernet, Wi-Fi

Соответствие уровней в таблице упрощенное: протоколы не всегда укладываются в один уровень OSI, а TLS, например, по-разному относят к разным уровням. Для диагностики этой модели хватает.

Пример цепочки: вы открываете сайт. Браузер формирует HTTP-запрос (прикладной уровень), TCP доставляет его на порт 443 сервера (транспортный), IP ведет пакет через цепочку маршрутизаторов (сетевой), а Ethernet или Wi-Fi передают кадр до ближайшего устройства (канальный).

IP-адрес, маска и шлюз

Чтобы узел мог работать в IP-сети, ему нужны три параметра (обычно их выдает DHCP-сервер, чаще всего — домашний роутер):

  • IP-адрес — адрес узла. В IPv4 это 32 бита, записанные четырьмя числами от 0 до 255: 192.168.1.37.
  • Маска подсети — какая часть адреса обозначает сеть, а какая — узел. 255.255.255.0 то же самое, что префикс /24: первые 24 бита — номер сети.
  • Шлюз по умолчанию — адрес маршрутизатора в той же сети, через который уходят пакеты в другие сети.

Для локальных сетей выделены частные диапазоны: 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Из интернета напрямую они недоступны, наружу такие узлы выходят через трансляцию адресов (NAT) на роутере. Кроме IPv4 используется IPv6 с 128-битными адресами, но логика «адрес + префикс + шлюз» там та же.

Главное решение, которое узел принимает для каждого пакета: получатель в моей сети или нет. Если в моей — отправить напрямую, если нет — отправить шлюзу. Вот как это вычисляется модулем ipaddress из стандартной библиотеки Python:

import ipaddress

def plan(host_cidr, gateway, targets):
    iface = ipaddress.ip_interface(host_cidr)      # адрес узла + длина префикса
    net = iface.network
    gw = ipaddress.ip_address(gateway)
    print(f"Узел {iface.ip}, маска {iface.netmask}, сеть {net}")
    if gw not in net:
        print(f"  Ошибка: шлюз {gw} вне сети {net}, наружу узел не выйдет")
        return
    for dst in targets:
        if ipaddress.ip_address(dst) in net:
            print(f"  {dst:>14} -> своя сеть, отправка напрямую")
        else:
            print(f"  {dst:>14} -> чужая сеть, отправка через шлюз {gw}")

targets = ["192.168.1.200", "192.168.2.10", "203.0.113.10"]
plan("192.168.1.37/24", "192.168.1.1", targets)   # правильная настройка
plan("192.168.1.37/25", "192.168.1.1", targets)   # маска /25 вместо /24
plan("192.168.1.37/24", "192.168.0.1", targets)   # шлюз из другой сети

Результат запуска на Python 3.14:

Узел 192.168.1.37, маска 255.255.255.0, сеть 192.168.1.0/24
   192.168.1.200 -> своя сеть, отправка напрямую
    192.168.2.10 -> чужая сеть, отправка через шлюз 192.168.1.1
    203.0.113.10 -> чужая сеть, отправка через шлюз 192.168.1.1
Узел 192.168.1.37, маска 255.255.255.128, сеть 192.168.1.0/25
   192.168.1.200 -> чужая сеть, отправка через шлюз 192.168.1.1
    192.168.2.10 -> чужая сеть, отправка через шлюз 192.168.1.1
    203.0.113.10 -> чужая сеть, отправка через шлюз 192.168.1.1
Узел 192.168.1.37, маска 255.255.255.0, сеть 192.168.1.0/24
  Ошибка: шлюз 192.168.0.1 вне сети 192.168.1.0/24, наружу узел не выйдет

Что показывают три сценария:

  • При маске /24 сеть — это 192.168.1.0—192.168.1.255: сосед .200 доступен напрямую, все остальное идет через шлюз.
  • Маска /25 делит ту же сеть пополам (.0—.127), и узел .37 считает соседа .200 чужим. Пакеты к нему уходят шлюзу, связь становится лишним кругом через роутер или пропадает совсем — зависит от настроек маршрутизатора.
  • Шлюз из другой сети недостижим: узел не может отправить ему кадр напрямую, поэтому локальная сеть работает, а интернет — нет.

Адрес 203.0.113.10 взят из диапазона, зарезервированного для документации, поэтому в примере он ни с кем реальным не пересечется.

Типичная ошибка: адрес узла вместо адреса сети

import ipaddress
print(ipaddress.ip_network("192.168.1.37/24"))

Результат:

ValueError: 192.168.1.37/24 has host bits set

ip_network ждет адрес сети (с нулевой узловой частью), а .37 — это адрес узла. Исправление: для настроек конкретного узла берите ip_interface("192.168.1.37/24").network, а если нужен именно объект сети — ip_network("192.168.1.37/24", strict=False). Оба варианта вернут 192.168.1.0/24.

Как посмотреть сетевые настройки своего компьютера

Задача Windows Linux macOS
Адрес и маска ipconfig /all ip addr ifconfig
Шлюз и маршруты route print ip route netstat -rn
Проверка доступности ping узел ping -c 4 узел ping -c 4 узел
Путь до узла tracert узел traceroute узел или tracepath узел traceroute узел
Проверка DNS nslookup имя nslookup имя или dig имя nslookup имя
Проверка TCP-порта Test-NetConnection узел -Port 443 nc -vz узел 443 nc -vz узел 443

В Linux ping без -c шлет запросы бесконечно, до Ctrl+C; в Windows по умолчанию отправляет четыре. Некоторые утилиты (traceroute, dig, nc) в минимальных сборках Linux нужно доставить из пакетов.

Вывод ip -4 addr и ip route в контейнере Ubuntu 24.04 (строки сокращены):

2: eth0@if741: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
    inet 172.17.0.10/16 brd 172.17.255.255 scope global eth0
default via 172.17.0.1 dev eth0
172.17.0.0/16 dev eth0 proto kernel scope link src 172.17.0.10

Читается так: адрес узла 172.17.0.10, префикс /16, шлюз по умолчанию 172.17.0.1, а вся сеть 172.17.0.0/16 доступна напрямую через интерфейс eth0.

Диагностика: ping, traceroute и что они на самом деле проверяют

ping отправляет ICMP-запрос и ждет ответ. Он проверяет, что узел достижим по IP и отвечает на ICMP, но не проверяет, что работает нужный сервис. Верно и обратное: многие серверы и фаерволы блокируют ICMP, поэтому отсутствие ответа на ping еще не значит, что узел выключен.

PING 172.17.0.1 (172.17.0.1) 56(84) bytes of data.
64 bytes from 172.17.0.1: icmp_seq=1 ttl=64 time=0.038 ms
64 bytes from 172.17.0.1: icmp_seq=2 ttl=64 time=0.143 ms

--- 172.17.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1020ms

Главное в выводе: packet loss (доля потерянных пакетов) и time (время туда и обратно). В проводной LAN это обычно доли миллисекунды или единицы миллисекунд, до серверов в других странах — десятки и сотни, в зависимости от расстояния и загрузки каналов.

traceroute (в Windows — tracert) показывает маршрутизаторы по пути. Утилита шлет пакеты с растущим TTL, и каждый маршрутизатор, на котором TTL обнулился, сообщает о себе. Строка * * * значит, что этот узел не ответил, а не обязательно обрыв:

traceroute to 1.1.1.1 (1.1.1.1), 5 hops max, 60 byte packets
 1  172.17.0.1  0.017 ms  0.009 ms  0.003 ms
 2  * * *
 3  * * *

Первый шаг — шлюз контейнера, дальше узлы виртуальной сети на пробы не отвечают. В Linux и macOS traceroute по умолчанию шлет UDP-пакеты, а Windows tracert — ICMP, поэтому результаты с разных систем могут отличаться.

Порядок проверки, если «нет интернета»

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

  1. Есть ли подключение: кабель, Wi-Fi, индикатор на интерфейсе (ip addr: статус UP).
  2. Есть ли корректный адрес, маска и шлюз (ipconfig /all или ip addr и ip route).
  3. Отвечает ли шлюз: ping <адрес шлюза>.
  4. Идут ли пакеты за пределы сети: ping по IP-адресу внешнего узла, traceroute до него.
  5. Работает ли DNS: nslookup example.com.
  6. Открыт ли нужный порт сервиса: nc -vz <узел> 443 или Test-NetConnection.
Симптом Вероятная причина Что сделать
Адрес вида 169.254.x.x Узел не получил настройки от DHCP Проверить подключение к роутеру, перезапросить адрес
Шлюз не отвечает Неверная маска или шлюз, проблемы с кабелем или Wi-Fi Сверить настройки с роутером, проверить физическое подключение
Ping по IP есть, сайты по именам не открываются Не работает DNS Проверить DNS-серверы в настройках, nslookup
Name or service not known Имя не резолвится (опечатка или DNS) Проверить имя и DNS
Connection refused Узел доступен, но на порту никто не слушает Проверить, запущен ли сервис и на каком порту

Последние две строки — реальные ответы утилит в Ubuntu 24.04: ping: nonexistent-host.invalid: Name or service not known и nc: connect to 127.0.0.1 port 8080 (tcp) failed: Connection refused.

Про безопасность: все команды выше только читают состояние и ничего не меняют. Не отключайте фаервол «для проверки» и не сканируйте порты чужих узлов без разрешения владельца — в корпоративной сети это воспринимается как атака.

Выводы

  • Компьютерная сеть — узлы, каналы и оборудование, которые обмениваются данными по протоколам; коммутатор связывает устройства внутри сети, маршрутизатор — разные сети.
  • По масштабу выделяют PAN, LAN, MAN и WAN; WLAN — беспроводная LAN, а не отдельный масштаб. Большинство современных LAN построены звездой или деревом вокруг коммутаторов.
  • OSI — справочная модель из семи уровней, TCP/IP — рабочий стек интернета из четырех.
  • По IP-адресу и маске узел решает, отправить пакет напрямую или шлюзу; ошибка в маске или шлюзе ломает связь частично или полностью.
  • Диагностику ведите снизу вверх: интерфейс, адрес, шлюз, внешний IP, DNS, порт. Ping и traceroute проверяют достижимость по IP, но не работу сервиса.

Где применяется / связь с практикой

Адресация и маршрутизация нужны не только сетевым инженерам: разработчик выясняет, почему контейнер не видит базу, тестировщик — почему API отвечает по IP, но не по имени.

Освойте тему на практике

Системно освоить адресацию, коммутацию и маршрутизацию можно на курсе «Network Engineer. Basic». А на открытых уроках Otus можно бесплатно послушать преподавателей и понять, подходит ли вам направление.

FAQ

Чем интернет отличается от локальной сети?
Локальная сеть объединяет устройства одной организации или квартиры, интернет — это глобальная сеть, связывающая сети множества независимых операторов. Домашняя LAN выходит в интернет через роутер провайдера.

Нужен ли IPv6, если все работает на IPv4?
Адресов IPv4 не хватает на все устройства, поэтому операторы переходят на IPv6, и у многих провайдеров он уже включен. Узел может работать сразу с обоими протоколами.

Можно ли узнать внешний IP-адрес командой ipconfig или ip addr?
Обычно нет: они показывают адрес узла в локальной сети (часто частный, вида 192.168.x.x). Внешний адрес принадлежит роутеру или оборудованию провайдера после NAT, его видят сервисы в интернете.

OTUS Журнал