# ss - кто слушает и кто подключён _Команды · LinuxLab Knowledge Base_ **TL;DR:** `ss` - современная замена netstat. Показывает сокеты: LISTEN, ESTABLISHED, поддерживает фильтры по адресу/порту/state и extended TCP info. ## Базовые флаги - `-t` - TCP - `-u` - UDP - `-l` - только LISTEN - `-n` - не резолвить имена/порты (быстрее, видим числа) - `-p` - показать процесс (PID и имя; нужен sudo чтобы увидеть чужие) - `-a` - все (включая established + listen + closed) - `-i` - extended TCP info: RTT, cwnd, MSS, retransmits - `-s` - summary по протоколам ## Самые ходовые комбинации ```bash ss -tuln # все слушающие TCP/UDP сокеты ss -tnp # все TCP-сессии с PID процесса (sudo) ss -tn state established # только ESTABLISHED ss -tn state time-wait | wc -l # сколько TIME_WAIT (см. [tcp-states](/kb/tcp-states.md)) ss -tnli # LISTEN + extended info ``` ## Фильтры по адресу/порту ```bash ss -tn '( dport = 443 or sport = 443 )' ss -tn dst 8.8.8.8 ss -tn src 10.0.0.5/24 ``` Поддерживаются также `dport > 1024`, `sport != 80`, и т.п. ## ss -ti - внутренности TCP-сессии Самая полезная команда при дебаге производительности: ```bash ss -ti dst 1.2.3.4 # ESTAB ... 192.168.1.10:54321 1.2.3.4:443 # cubic wscale:7,7 rto:212 rtt:10.5/2.5 ato:40 mss:1448 # pacing_rate 12.3Mbps delivery_rate 11.8Mbps app_limited # sndbuf=87040 rcvbuf=131072 retrans:0/0 ... ``` Главное: - `cubic` / `bbr` - алгоритм congestion control - `rtt` - измеренный round-trip time (mean / mdev) - `rto` - retransmit timeout - `mss` - max segment size - `cwnd` - congestion window (показывается в `pacing_rate`) - `retrans` - `cur/total`: сколько ретрансмитов сейчас в полёте / всего; высокое - потери на маршруте ## Замена netstat Старые команды → новые: | netstat | ss | |---|---| | `netstat -tuln` | `ss -tuln` | | `netstat -tnp` | `ss -tnp` (с sudo) | | `netstat -s` | `ss -s` | `ss` быстрее (лучше API через netlink, меньше парсинга `/proc`) и выдаёт больше деталей. На современных дистро netstat даже не установлен. ## Команды ```bash ss -tuln ``` Всё что слушает на TCP/UDP, без резолвинга имён ```bash sudo ss -tnp ``` Все TCP-сессии с PID/именем процесса (без sudo не видно чужие) ```bash ss -tn state time-wait | wc -l ``` Счётчик TIME_WAIT - может расти на сервисах с короткими соединениями ```bash ss -ti dst 1.2.3.4 ``` Подробности TCP-сессии: RTT, cwnd, retransmits, congestion algo ```bash ss -K dst 1.2.3.4 dport = 8080 ``` Принудительно убить (RST) подходящие сокеты - крайняя мера ## См. также - [TCP three-way handshake](/kb/tcp-handshake.md) - [TCP states (LISTEN, ESTABLISHED, TIME_WAIT)](/kb/tcp-states.md) - [ip - швейцарский нож сетевой настройки](/kb/cmd-ip.md)