NETSTAT — утилита командной строки Windows для просмотра активных сетевых соединений, открытых портов, статистики протоколов TCP/UDP и идентификаторов процессов. Используется при поиске несанкционированных подключений, диагностике зависших соединений и проверке того, какое приложение занимает конкретный порт.
- Синтаксис команды NETSTAT
- Ключи и параметры
- Примеры использования
- Все активные соединения и открытые порты
- Найти процесс, занимающий порт
- Показать имена процессов вместе с соединениями
- Только TCP-соединения в числовом виде
- Статистика протоколов
- Мониторинг соединений в реальном времени
- Таблица маршрутизации
- Частые ошибки и решения
- Когда применять, а когда нет
- FAQ
- Как узнать, какая программа слушает конкретный порт?
- Что означает состояние CLOSE_WAIT?
- Можно ли использовать NETSTAT для обнаружения вирусов?
- Чем NETSTAT отличается от TCPView?
- Как вывести только IPv4-соединения?
- Почему один и тот же порт виден несколько раз?
Синтаксис команды NETSTAT
NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p протокол] [-r] [-s] [-t] [-x] [-y] [интервал]
Плейсхолдеры:
протокол— TCP, UDP, TCPv6 или UDPv6.интервал— период повторного вывода в секундах (Ctrl+C для остановки).
Ключи и параметры
| Ключ | Описание | Пример |
|---|---|---|
-a | Все соединения и прослушиваемые порты (включая серверные сокеты) | netstat -a |
-b | Имя исполняемого файла, создавшего соединение (требует прав администратора) | netstat -b |
-e | Статистика Ethernet: байты, пакеты, ошибки | netstat -e |
-f | Полные доменные имена (FQDN) для удалённых адресов | netstat -f |
-n | Адреса и порты в числовом виде (без разрешения имён) | netstat -n |
-o | PID процесса, владеющего соединением | netstat -o |
-p протокол | Фильтрация по протоколу: TCP, UDP, TCPv6, UDPv6 | netstat -p TCP |
-r | Таблица маршрутизации (аналог route print) | netstat -r |
-s | Статистика по протоколам (IP, TCP, UDP, ICMP) | netstat -s |
-t | Показать состояние разгрузки TCP (offload state) | netstat -t |
-x | Соединения NetworkDirect (RDMA) | netstat -x |
-y | Шаблон подключения TCP для всех соединений | netstat -y |
интервал | Обновлять вывод каждые N секунд | netstat -an 5 |
Примеры использования
Все активные соединения и открытые порты
Наиболее распространённый запрос: увидеть полный список того, что слушает и к чему подключено.
netstat -an
Флаг -n ускоряет вывод: адреса показываются как числа без DNS-запросов. В колонке State значение LISTENING означает ожидание входящих подключений, ESTABLISHED — активное соединение.
Найти процесс, занимающий порт
Нужно выяснить, какое приложение использует порт 8080 — например, при конфликте с веб-сервером.
netstat -ano | findstr :8080
В последней колонке отображается PID. Затем выполните tasklist /fi "PID eq НОМЕР" или откройте диспетчер задач для идентификации процесса.
Показать имена процессов вместе с соединениями
Ключ -b выводит имя исполняемого файла для каждого соединения — удобно при анализе подозрительной активности.
netstat -ab
Требует запуска CMD от имени администратора. Вывод может быть медленным на системах с большим числом соединений.
Только TCP-соединения в числовом виде
Быстрый срез состояния всех TCP-соединений без лишней информации.
netstat -np TCP
Выводятся только TCP-соединения с PID. Замените TCP на UDP для просмотра UDP-портов.
Статистика протоколов
Полезно при диагностике потерь пакетов и ошибок на уровне протокола.
netstat -s -p TCP
Показывает число установленных соединений, сбросов, повторных передач, ошибок сегментов. Если счётчик RetransmittedSegments растёт — есть проблемы с каналом.
Мониторинг соединений в реальном времени
Наблюдайте за появлением новых подключений с заданным интервалом.
netstat -an 2
Таблица соединений обновляется каждые 2 секунды. Нажмите Ctrl+C для остановки.
Таблица маршрутизации
Быстрый просмотр маршрутов без отдельной команды route.
netstat -r
Отображаются активные маршруты, таблица постоянных маршрутов и многоадресная таблица маршрутизации.
Частые ошибки и решения
| Ошибка / симптом | Причина | Решение |
|---|---|---|
netstat -b выдаёт «Отказано в доступе» | CMD запущена без прав администратора | Запустите CMD от имени администратора |
| Вывод очень медленный | Разрешение DNS-имён для каждого адреса занимает время | Добавьте флаг -n для отключения DNS-разрешения |
| Порт виден как LISTENING, но браузер не открывает сайт | Брандмауэр блокирует входящие подключения на этот порт | Проверьте правила брандмауэра Windows или стороннего файрвола |
| Соединение зависло в состоянии TIME_WAIT | Нормальное состояние после закрытия TCP-соединения; ожидание истечения таймера | Ждите — TIME_WAIT исчезает автоматически через 2×MSL (обычно 2-4 минуты) |
| findstr не находит нужный порт | Пробел перед двоеточием или лишние символы в шаблоне | Используйте точный шаблон: findstr ":443 " — с пробелом после порта для исключения портов вроде 4430 |
Когда применять, а когда нет
NETSTAT подходит для оперативной диагностики: проверить, занят ли порт, найти PID процесса, посмотреть статистику TCP. Работает на всех версиях Windows без установки дополнительных инструментов.
Ограничения: NETSTAT показывает только текущий моментальный снимок — она не ведёт лог подключений во времени. Для мониторинга трафика в реальном времени используйте Resource Monitor или Microsoft Network Monitor. В PowerShell аналог — Get-NetTCPConnection и Get-NetUDPEndpoint: они возвращают объекты, удобные для фильтрации и экспорта.
FAQ
Как узнать, какая программа слушает конкретный порт?
Выполните netstat -ano | findstr :ПОРТ, получите PID в последней колонке, затем tasklist /fi "PID eq НОМЕР" — увидите имя процесса.
Что означает состояние CLOSE_WAIT?
Удалённая сторона закрыла соединение, но локальное приложение ещё не закрыло свой конец. Большое количество CLOSE_WAIT указывает на утечку соединений в приложении.
Можно ли использовать NETSTAT для обнаружения вирусов?
Косвенно — да. Запустите netstat -b от администратора и изучите список процессов с активными внешними соединениями. Неизвестный процесс с подозрительным внешним адресом — повод для проверки антивирусом.
Чем NETSTAT отличается от TCPView?
TCPView (Sysinternals) — графическая утилита с таким же функционалом, что и netstat -b, но с автообновлением и удобным интерфейсом. NETSTAT встроена в систему и работает везде, TCPView нужно скачивать отдельно.
Как вывести только IPv4-соединения?
Используйте netstat -p TCP или netstat -p UDP для IPv4. Для IPv6 — netstat -p TCPv6 или netstat -p UDPv6.
Почему один и тот же порт виден несколько раз?
Каждое соединение отображается отдельной строкой. Один порт может обслуживать несколько одновременных подключений с разными удалёнными адресами — это нормально для серверных служб.


