ss コマンドとは?使い方やポートやプロセス名の見方を解説

ss(Socket Statistics) コマンドss コマンドとは、ソケットを調査するためのソフトウェアです。(netstat の後継)
上記は一例です
sudo ss -antp
State (中略)   Local Address:Port  Peer Address:Port Process
LISTEN (中略) 0.0.0.0:22             0.0.0.0:*                 users:(("sshd",pid=1111,fd=10))  
LISTEN (中略) 0.0.0.0:443           0.0.0.0:*                 users:(("nginx",pid=2222,fd=10))                                      
ESTAB (中略) 172.168.0.2:443  192.0.2.1:54001  users:(("nginx",pid=2222,fd=10))

本記事では、ss コマンドの見方やオプションの使い方を解説していきます。

ネットワークのコマンド
スポンサーリンク

ss コマンドのオプション

ss コマンドの各オプションを紹介します。

-t TCP ソケットのみ表示

オプション無しの場合は、全てのソケットが表示されるので、-t でフィルタリングします。

ss -t
State          Recv-Q     Send-Q         Local Address:Port       Peer Address:Port      Process           
ESTAB         0              0                  172.168.0.2:ssh           192.0.2.1:53000
ESTAB         0              0                  172.168.0.2:https        192.0.2.1:54001
出力説明
Stateソケットの状態 (後述)
Recv-Qソケットの状態が ESTABLISHED
ソケットの受信バッファに残っている受信データのバイト数
(まだユーザープログラムに渡されてないデータ)

ソケットの状態が LISTEN
キューにある確立済み TCP コネクションの数 (accept 前)
Send-Qソケットの状態が ESTABLISHED
ソケットの送信バッファに残っている送信データのバイト数
(リモートホストから ACK が返ってきてないデータ)

ソケットの状態が LISTEN
確立済み TCP コネクションをキューイングするキューの数
(accept 前)
Local Address:Portローカル側ソケットのアドレスとポート番号
(ss コマンドを叩いた PC 側)
Peer Address:Portリモート側ソケットのアドレスとポート番号
https://hana-shin.hatenablog.com/entry/2022/11/01/203229
https://hana-shin.hatenablog.com/entry/2022/09/18/191918
ソケットの状態説明
CLOSEDソケットは使用されていない。パッシブオープンは LISTEN に遷移
LISTEN相手からの SYN 待ちの状態。
SYN_SENT自分から SYN を送信。ソケットはコネクションを確立しようと試みている
SYN_RECV相手から SYN を受信し、自分から SYN/ACK を返した
ESTABLISHEDソケットはコネクションを確立している
FIN_WAIT1ソケットがクローズされ、コネクションを停止中
FIN_WAIT2コネクションがクローズされ、ソケットは相手側の停止待ち
TIME_WAITソケットはクローズした後、ACK の再送が不要になるまで待機
(すぐに CLOSED に移行すると、再送先がわからなくなるため)
CLOSEDソケットは使用されていない
CLOSE_WAIT相手側は停止しており、自分のソケットのクローズ待ち
LAST_ACK相手側は停止しており、自分のソケットがクローズされる
相手からの ACK を待ち
CLOSING両方のソケットが停止しているが、相手からの ACK 待ち

-l LISTEN 状態のソケットを表示

ss -lt
$ ss -tl
State             Recv-Q      Send-Q        Local Address:Port       Peer Address:Port   Process          
LISTEN           0               128              0.0.0.0:ssh                   0.0.0.0:*                               
LISTEN.          0               511              0.0.0.0:https                0.0.0.0:*                                                                                  
LISTEN           0               128              [::]:ssh                           [::]:*                               
LISTEN           0               511              [::]:https                        [::]:* 

State が LISTEN 状態のソケットだけを確認できました。

-a 全てのソケットを表示

LISTEN 状態と non-LISTEN 状態のソケットをどちらも表示します。

ss -at
$ ss -at
State             Recv-Q      Send-Q        Local Address:Port       Peer Address:Port    Process          
LISTEN           0               128              0.0.0.0:ssh                   0.0.0.0:*                               
LISTEN           0               511              0.0.0.0:https                0.0.0.0:*                               
ESTAB            0               52                172.168.0.2:ssh         192.0.2.1:5300                                                     
LISTEN           0               128              [::]:ssh                           [::]:*                               
LISTEN           0               511              [::]:https                        [::]:* 

-n ポートやアドレスを数値で表示

ss -tn
State          Recv-Q     Send-Q         Local Address:Port       Peer Address:Port      Process           
ESTAB         0              0                  172.168.0.2:22           192.0.2.1:53000
ESTAB         0              0                  172.168.0.2:443         192.0.2.1:54001

先ほどまでプロトコル名 (ssh, https) で表示されていた箇所が、ポート番号で表示されています。

-p プロセス名を表示

権限が無いとプロセス情報を取得できないので、sudo を付けています。

sudo ss -tp
State (中略)   Local Address:Port  Peer Address:Port Process           
ESTAB (中略) 172.168.0.2:ssh    192.0.2.1:53000  users:(("sshd",pid=1111,fd=10))
ESTAB (中略) 172.168.0.2:https 192.0.2.1:54001  users:(("nginx",pid=2222,fd=10))

-s ソケットのサマリー統計を表示

ss -s
Total: 175
TCP:   5 (estab 1, closed 0, orphaned 0, timewait 0)

Transport Total     IP        IPv6
RAW	  1         0         1        
UDP	  4         2         2        
TCP	  5         3         2        
INET	  10        5         5        
FRAG	  0         0         0

現在の TCP ソケットの合計と各ソケットの状態などがわかります。(LISTEN は表示されてない)

全てのソケットを表示すると、たしかに5つのソケットが存在することを確認できます。

ss -at
$ ss -at
State             Recv-Q      Send-Q        Local Address:Port       Peer Address:Port    Process          
LISTEN           0               128              0.0.0.0:ssh                   0.0.0.0:*                               
LISTEN           0               511              0.0.0.0:https                0.0.0.0:*                               
ESTAB            0               52                172.168.0.2:ssh         192.0.2.1:5300                                                     
LISTEN           0               128              [::]:ssh                           [::]:*                               
LISTEN           0               511              [::]:https                        [::]:* 
スポンサーリンク

関連記事

学習ロードマップ
ネットワークのコマンド
OSI 参照モデル