Базовые флаги
-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]])
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 controlrtt- измеренный round-trip time (mean / mdev)rto- retransmit timeoutmss- max segment sizecwnd- 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 даже не установлен.