- ベストアンサー
netstatのStateについて
- netstatオプションなしとnetstat-aの表示されるStateの種類の違いについて説明します。
- netstatオプションなしで実行した場合、LISTEN以外が表示されます。裏付ける方法について教えてください。
- netstatオプションなしでは、ソケットの状態がリストアップされますが、LISTEN以外の状態は表示されません。裏付ける方法について詳しく解説します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>netstat オプションなしで実行した場合、LISTEN以外が表示であることを >裏付ける方法について教えてください。 100%の裏付けをとるには、確かにソースコード解読しかないと思います。 しかし、通常は、netstatのmanページの記述で十分な裏付けかと。 ここは憶測の話(間違っていたらゴメンナサイ)になりますが、 sinrin2011 さんが以下の話を知らないため、 netstat manページの重要な記述を読み落としているように思います。 ------------------------------ UNIXでは、socket通信という概念があります。 socket通信とは、通信にソケットというものを利用するのですが、 これには以下の2種類があります。というか2種類しかありません。 ・アクティブソケット(図中のactive) ・パッシブソケット(図中のpassive) http://www.lincoln.edu/math/rmyrick/ComputerNetworks/InetReference/20.htm TCPのSTATEで分類すると… ・アクティブソケットは、いろいろなSTATE(LISTEN以外)をとる ・パッシブソケットは、LISTEN状態しかとらない となります。 -------------------------------- 以上を踏まえた上で、 netstat のmanページを参照すると、 >デフォルトでは、 netstat はオープンされているソケットの一覧を表示する。 >アドレスファミリーが指定されていなければ、 >設定されている全てのアドレスファミリーに関して、 >アクティブなソケットが表示される。 という記述を見つけることができます。 これをちょっといいかえると 『netstatは、デフォルトではアクティブソケットを表示する』 となります。 しかし、世の中には、 「アクティブソケット」と「パッシブソケット」の2種類しかありません。 つまり、 『netstatは、デフォルトではパッシブソケットを表示しない』 となるわけです。 アクティブソケットを表示する⇒いろいろなSTATE(LISTEN以外)を表示する パッシブソケットを表示しない⇒LISTEN状態を表示しない ともなるわけで、 「netstat オプションなしで実行した場合、LISTEN以外が表示であること」 の十分な裏付けになると思います。 最後に、蛇足ですが、 socket通信の概念は、一般的なコンピュータ通信を仕組みを理解する上で 非常に有用です。ぜひ覚えておいてほしい知識です。
お礼
わたしもほぼ間違いないと思っていましたが、どうしても裏づけがほしかったのです。 大変参考になりました。 また、丁寧なご説明ありがとうございました。 このお礼は、困っているかたがいたときは善意をもってお返ししたいと思います。