netstat
最新版 |
1.60
/ 2001年4月15日 |
---|---|
プログラミング 言語 | C |
ライセンス | GPL |
公式サイト |
net-tools |
netstatは、ネットワーク接続、ルーティングテーブル、各種ネットワークインタフェースの統計情報などを表示するコマンド行ツール。UNIX、Unix系、Windows NT系オペレーティングシステムで利用可能。"network statistics" の略。
ネットワークに関わる問題を探したり、トラフィック量を調べて性能を測定するといった用途に使う[1]。
パラメータ
[編集]このコマンドのパラメータには、スラッシュ (/) ではなくハイフン (-) を前置する。
- -a : 全てのアクティブなTCPコネクションと、そのマシンがlistenしているTCPポートおよびUDPポートを表示する。
- -b : 各コネクションやlistenポートに対応したプログラム名を表示する(Windows XPと2003 Server以降のみ)。
- -e : イーサネットの統計情報を表示する(受信した総バイト数やパケット数など)。-s と組み合わせて使うことができる。
- -f : 外部のアドレスについて完全修飾ドメイン名 <FQDN> を表示する(Windowsでは使えない)。
- -i : ネットワークインタフェースとそれらの統計情報を表示する(Windowsでは使えない)。
- -n : アクティブなTCPコネクションを表示するが、アドレスやポート番号は数値的に表示され、名前への変換は行わない。
- -o : アクティブなTCPコネクションと対応するプロセスID (PID) を表示する。Windowsタスクマネージャを併用するとPIDからどのアプリケーションかがわかる。-a, -n,および-pと共に指定できる。Windows XPと2003 Server以降で利用可能(Windows 2000ではホットフィックスがある[2])。
- -p Windows: Protocol : Protocolで指定したプロトコルのコネクションを表示する。Protocolに指定できるのはtcp, udp, tcpv6, udpv6のいずれかである。-sと組み合わせてプロトコルの統計情報を表示する場合はtcp, udp, icmp, ip, tcpv6, udpv6, icmpv6, ipv6のいずれかを指定できる。
- -p Linux: Process : ソケットごとのプロセスの対応を表示する(Windowsの-bに相当)。root権限が必要。
- -P Solaris: Protocol : Protocolで指定したプロトコルのコネクションを表示する。Protocolにはip, ipv6, icmp, icmpv6, igmp, udp, tcp, rawipが指定できる。
- -r : ルーティングテーブルの内容を表示する。Windowsでのroute printコマンドに相当。
- -s : プロトコル毎の統計情報を表示する。デフォルトでは、TCP、UDP、ICMP、IPの統計情報を表示する。Windows XP以降でIPv6をインストールしている場合、TCP over IPv6、UDP over IPv6、ICMPv6、IPv6についての統計情報も表示する。-pを併用すると、指定したプロトコルの情報を表示できる。
- -v : -bと組み合わせると、コネクション作成やlistenポートに関わるコンポーネントを羅列する。
- Interval : 指定された情報をInternal秒ごとに表示する。CTRL+Cで表示が停止する。これを省略すると1回だけ表示する。
- /? : ヘルプ情報を表示する(Windowsのみ)。
netstatで得られる情報
[編集]- Proto(プロトコル) - プロトコル名(TCPまたはUDP)
- Local Address(ローカルアドレス) - ローカルコンピュータで使われているIPアドレスとポート番号。-nパラメータを指定しない場合、対応する名前が表示される。
- Foreign Address(外部アドレス) - ソケットが接続されているリモートコンピュータのIPアドレスとポート番号。-nパラメータを指定しない場合、対応する名前が表示される。コネクションが確立していない場合、ポート番号はアスタリスク (*) で表示される。
- State(状態) - TCPコネクションの状態を表示。とりうる状態はCLOSE_WAIT, CLOSED, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, LAST_ACK, LISTEN, SYN_RECEIVED, SYN_SEND, TIME_WAITである。TCPコネクションの状態について詳しくはRFC 793を参照。
例
[編集]TCPまたはUDPプロトコルの統計情報を表示する場合、次のようなコマンド行となる。
netstat -sp tcp
netstat -sp udp
アクティブなTCPコネクションと対応するプロセスIDを5秒間隔で表示する場合、次のようなコマンド行となる(Windows XP、2003、2000(ホットフィックス)以降のみ)。
netstat -o 5
macOSでは次の通り。
netstat -w 5
アクティブなTCPコネクションと対応するプロセスIDを数値として表示する場合、次のようなコマンド行になる(Windows XP、2003、2000(ホットフィックス)以降)。
netstat -no
特定のプロセスIDのプロセスがオープンした全ポートを表示する場合は、次の通り。
netstat -ao | find "pid"
注意
[編集]一部のバージョンでは、printf出力に明確なフィールド区切り文字が指定されていないため、フィールドが重なってしまい、データが読み取れなくなる場合がある。
プラットフォーム固有の注意点
[編集]Linuxでは、netstatでは上述のprintf問題で表示が壊れることがあるため、/proc/net/devからデータを得る場合がある。
Windowsでは、netstatはIP Helper APIまたはIPHLPAPI.DLLのGetTcpTableおよびGetUdpTableという関数を呼び出して情報を収集している。これらで得られる情報は、ローカルおよびリモートのIPアドレスとポート番号、TCP状態コードである。また、TCP/IPがインストールされていない場合は使えない。
Mac OS X v10.5では、 /Applications/UtilitiesフォルダにNetwork Utilityというユーティリティがあり、そのNetstatタブで同等の情報を表示できる。
関連項目
[編集]脚注
[編集]外部リンク
[編集]- Net Statistics (NetStats) home page – フリーウェアのネットワーク監視ツール
- Microsoft TechNet Netstat article
- The netstat Command (Linux)
- Security Now #49 - The NETSTAT Command – Security Now!のポッドキャスト
- From linux-ip.net 表示内容に関する詳細な説明
- netstat(8) man page (JM Project)
- netstat(1M) man page (Solaris 10 Reference Manua)
- netstat(1) man page(HP-UX リファレンス)
- netstat コマンド Solaris のシステム管理(IP サービス)