← Назад к вопросам

В чем разница между netstat и ss в Linux?

2.3 Middle🔥 161 комментариев
#Linux и администрирование#Сети и протоколы

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Разница между netstat и ss в Linux

netstat (network statistics) и ss (socket statistics) — это утилиты командной строки в Linux для анализа сетевых подключений, интерфейсов и статистики. Хотя обе служат схожим целям, между ними есть фундаментальные различия в архитектуре, производительности и функциональности.

Исторический контекст и архитектура

  • netstat — классическая утилита, поставляемая в составе пакета net-tools. Её код основан на чтении файлов в виртуальной файловой системе /proc/net (например, /proc/net/tcp, /proc/net/udp). Это делает её относительно медленной, особенно на системах с большим количеством сетевых соединений, так как требует многократного парсинга текстовых файлов.
  • ss — современная утилита, входящая в пакет iproute2. Она получает информацию о сокетах напрямую из пространства ядра Linux через сетевой сокет NETLINK. Этот механизм более эффективен и позволяет получать данные практически мгновенно, даже при работе с десятками тысяч соединений.

Ключевые различия в производительности и использовании

Нагляднее всего разницу видно при работе с системами под высокой нагрузкой. Сравните время выполнения:

# Измерение скорости выполнения netstat
time netstat -tuna

# Измерение скорости выполнения ss
time ss -tuna

Результат будет показывать, что ss отрабатывает на порядки быстрее, особенно при использовании ключа -n (без резолвинга имён).

Сравнение синтаксиса и функциональности

Хотя синтаксис команд часто похож, есть нюансы:

Функцияnetstatss
Показать TCP-соединенияnetstat -tss -t
Показать UDP-соединенияnetstat -uss -u
Показать все сокетыnetstat -ass -a
Показать listening-портыnetstat -lss -l
Отключить резолвинг имёнnetstat -nss -n
Показать процессы (PID)netstat -pss -p

ss предлагает расширенные возможности фильтрации, которых нет в классическом netstat:

# Показать TCP-соединения в состоянии ESTABLISHED к определенному порту
ss -t state established dport = :443

# Показать все UDP-сокеты, слушающие на портах ниже 1024
ss -ul sport < :1024

# Фильтрация по адресу источника
ss src 192.168.1.100

# Показать соединения в конкретном состоянии (например, TIME-WAIT)
ss -t state time-wait

Особенности вывода и информации

  • netstat предоставляет более "человекочитаемый" вывод по умолчанию (например, преобразует IP-адреса в имена), что иногда удобно для быстрой ручной проверки.
  • ss выводит более структурированную информацию, включая детали о tcp-таймерах, окнах, параметрах拥堵控制 (congestion control), что критически важно для глубокой сетевой диагностики.
# Расширенная информация о TCP-соединениях с ss
ss -ti

Эта команда покажет ключевые метрики каждого соединения: RTT (round-trip time), cwnd (congestion window), ssthresh (slow start threshold), количество ретрансмиссий.

Рекомендации по использованию в DevOps-практике

  1. Для скриптов и автоматизации всегда используйте ss. Его скорость и предсказуемый вывод делают его идеальным для мониторинга и сбора метрик.
  2. netstat сегодня считается устаревшим (legacy). Пакет net-tools не развивается активно, а многие дистрибутивы Linux даже не включают его в базовую поставку.
  3. Для глубокой диагностики сетевых проблем ss незаменим. Возможность фильтрации по состоянию сокета и просмотр внутренних TCP-параметров часто помогает быстро локализовать проблемы с сетевым стеком, нагрузкой или настройками фаервола.
  4. При работе в контейнерах (Docker, Kubernetes) ss также предпочтительнее, так как в ограниченных окружениях важна минимальная нагрузка и быстрое выполнение.

Вывод: В современном Linux ss полностью вытеснил netstat как основной инструмент для работы с сетевой статистикой. Его преимущества в скорости, богатых возможностях фильтрации и доступе к низкоуровневой информации делают его обязательным для изучения любым инженером DevOps или системным администратором. Netstat можно использовать разве что для совместимости со старыми скриптами или в тех редких случаях, когда требуется его специфический формат вывода.

В чем разница между netstat и ss в Linux? | PrepBro