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/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 参照モデル | |||
---|---|---|---|