netstatのStateについて

このQ&Aのポイント
  • netstatオプションなしとnetstat-aの表示されるStateの種類の違いについて説明します。
  • netstatオプションなしで実行した場合、LISTEN以外が表示されます。裏付ける方法について教えてください。
  • netstatオプションなしでは、ソケットの状態がリストアップされますが、LISTEN以外の状態は表示されません。裏付ける方法について詳しく解説します。
回答を見る
  • ベストアンサー

オプションなしnetstatのStateについて

netstat オプションなしと、netstat -a の表示されるStateの種類の違いについて教えてください。 # netstat # netstat -a を実行したときに表示されるStateの種類の違いは、オプションなしは下記StateのLISTEN以外が表示対象で、-a オプション指定時は下記Stateの全てが表示対象である認識でいます。 では、netstat オプションなしで実行した場合、LISTEN以外が表示であることを裏付けるには、ソースを追うしかないでしょうか? netstat オプションなしで実行した場合、LISTEN以外が表示であることを裏付ける方法について教えてください。 State ESTABLISHED ソケットは確立した接続状態にある。 SYN_SENT ソケットは接続を確立しようと試みている。 SYN_RECV 接続要求をネットワークから受信している。 FIN_WAIT1 ソケットはクローズされており、接続は切断中である。 FIN_WAIT2 接続はクローズされ、ソケットはリモート側からの切断を待っている。 TIME_WAIT ソケットは、クローズ後にリモートからの切断が再送されるのを待っている。 CLOSED ソケットは使用されていない。 CLOSE_WAIT リモート側は既に切断され、ソケットがクローズされるのを待っている。 LAST_ACK リモート側は既に切断され、ソケットもクローズされている。 確認 (acknowledgement) を待っている。 LISTEN ソケットは接続待ち (listen) である。 このようなソケットは、 --listening (-l) または --all (-a) オプションを指定しない限り、出力には含まれない。 CLOSING 両方のソケットが切断されているが、まだ全てのデータが送られていない。 UNKNOWN ソケットの状態は不明である。

質問者が選んだベストアンサー

  • ベストアンサー
  • onosuke
  • ベストアンサー率67% (310/456)
回答No.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通信の概念は、一般的なコンピュータ通信を仕組みを理解する上で 非常に有用です。ぜひ覚えておいてほしい知識です。

sinrin2011
質問者

お礼

わたしもほぼ間違いないと思っていましたが、どうしても裏づけがほしかったのです。 大変参考になりました。 また、丁寧なご説明ありがとうございました。 このお礼は、困っているかたがいたときは善意をもってお返ししたいと思います。

関連するQ&A

  • netstat、netstat -a のState

    netstat オプションなしと、netstat -a の表示されるStateの種類の違いについて教えてください(Linux) # netstat # netstat -a を実行したときに表示されるStateの種類の違いは、オプションなしは下記StateのLISTEN以外が表示対象で、-a オプション指定時は下記Stateの全てが表示対象である認識で間違っていないでしょうか。 State ESTABLISHED ソケットは確立した接続状態にある。 SYN_SENT ソケットは接続を確立しようと試みている。 SYN_RECV 接続要求をネットワークから受信している。 FIN_WAIT1 ソケットはクローズされており、接続は切断中である。 FIN_WAIT2 接続はクローズされ、ソケットはリモート側からの切断を待っている。 TIME_WAIT ソケットは、クローズ後にリモートからの切断が再送されるのを待っている。 CLOSED ソケットは使用されていない。 CLOSE_WAIT リモート側は既に切断され、ソケットがクローズされるのを待っている。 LAST_ACK リモート側は既に切断され、ソケットもクローズされている。 確認 (acknowledgement) を待っている。 LISTEN ソケットは接続待ち (listen) である。 このようなソケットは、 --listening (-l) または --all (-a) オプションを指定しない限り、出力には含まれない。 CLOSING 両方のソケットが切断されているが、まだ全てのデータが送られていない。 UNKNOWN ソケットの状態は不明である。

  • NETSTATコマンドのCLOSE_WAITが怖い

    質問させていただきます、自分はパソコンは素人もいいところなのですがセキュリティに関してふと気まぐれで調べた際にNETSTATとCMDというところで入力してSYN_SENTという文字がでてきたらそのパソコンは危ない、という話をふと目にしたのでこれくらいの操作なら説明を見ながらやれば自分でもできるかと興味本位でやってみたのですが、SYN_SENTという文字は出なかったのですが、CLOSE_WAITという文字が何個かありました、このCLOSE_WAITというのは「通常でるはずがない」という説明もそこに書いてあったのです。それが自分のパソコンでは何度やっても普通にでてきてしまい、これはひょっとしてまずいのではないか・・と怖くなってしまい質問することに致しました。実際これはなにかまずいことでも起きているのでしょうか?おきているとしたら何か私にやるべきことなどはあるのでしょうか?お答えいただけると幸いです。

  • コマンドプロンプトでnetstatのCLOSE_WAITについて

    xpのコマンドプロンプトで、 netstatコマンドを実行しましたところ、 Port1053のところに、 TCP 名前:1053 a202-239-172-70.deploy.akamaitechnologies.com:https CLOSE_WAIT というように表示されます。 逆に、ファイアウォールで全遮断すると、 このport1053についてのCLOSE_WAITは出てきません。 私の情報が外部に漏れているのでしょうか?? ネットワークに詳しい方、アドバイスお願いします。

  • netstatについて

    はじめまして。ネットワークを勉強しているエンジニアの卵です。 このサイトでの投稿は初めてになりますが、是非とも、ご教授 頂きたいことがある為、宜しくお願いします。 ●まず1点は、netstatについてです。 〔 -a〕〔 -e〕〔 -s〕〔 -r〕をDOSプロンプトで打ち込んだ時に表示される、「LISTENING」「TIME_WAIT」の意味・解釈について教えて下さい。また、netstatについて分かりやすいサイトがありましたら、分かりやすく丁寧なURLを教えて下さい。

  • コマンド netstat -a(an)について

    PC起動 ⇒ スタート ⇒ プログラム ⇒ アクセサリ ⇒ コマンドプロンプト ⇒ netsata -aを実行したら以下になってますが、なぜこのような表示になるのか分かりません。 ntt.setup(192.168.1.1)にはアクセスしてないのに・・・。 ***以下*** C:\Documents and Settings\yuuya>netstat -an Active Connections Proto Local Address Foreign Address State TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING TCP 192.168.1.6:139 0.0.0.0:0 LISTENING TCP 192.168.1.6:2740 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2741 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2746 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2749 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2762 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2766 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2774 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2777 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2793 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2795 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2813 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2829 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2847 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2862 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2865 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2870 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2880 192.168.1.1:80 TIME_WAIT TCP 192.168.1.6:2882 192.168.1.1:80 TIME_WAIT UDP 0.0.0.0:445 *:* UDP 192.168.1.6:137 *:* UDP 192.168.1.6:138 *:* UDP 192.168.1.6:500 *:* UDP 192.168.1.6:4500 *:* ***************** またサイトを二つ開いていてしばらく置いた後、 同じくnetstat -anを実行した時は下記のように表示されてるが、 サイトをいくつ開いたままでもねは表示されないとのことでしょうか? **下記** C:\>netstat -an Active Connections Proto Local Address Foreign Address State TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING UDP 0.0.0.0:445 *:* UDP 127.0.0.1:1246 *:* UDP 127.0.0.1:1348 *:*

  • Windowsログイン後にnetstat -n を実行すると・・・

    Windowsログイン直後にコマンドプロンプトを立ち上げて netstat -n を実行すると インターネットエクスプローラーを開いていないのに ------------------------------------- C:\>netstat -n Active Connections  Proto Local Address Foreign Address State TCP 192.168.1.2:1027 211.10.xxx.xxx:80 TIME_WAIT TCP 192.168.1.2:1036 210.148.xxx.xxx:80 TIME_WAIT ------------------------------------- とインタネットエクスプローラーを使用している時と 同じ表示になります。 これはなぜでしょうか? ちなみにWeb閲覧してすぐ再起動して netstat -n を実行したときに上記の接続が確認されます。 セキュリティソフト     Norton InterNetSecurity2005

  • netstat が変です。

    パソコンの挙動が不審なのでnetstatしました。 すると不審なアクセスが見えます。これはハイジャックされている状態ですか? C:\Users\user>netstat アクティブな接続 プロトコル ローカル アドレス 外部アドレス 状態 TCP 127.0.0.1:49260 www:49261 ESTABLISHED TCP 127.0.0.1:49261 www:49260 ESTABLISHED TCP 127.0.0.1:49872 www:21332 TIME_WAIT TCP 127.0.0.1:49873 www:21332 TIME_WAIT TCP 127.0.0.1:49874 www:21332 TIME_WAIT TCP 127.0.0.1:49875 www:21332 TIME_WAIT TCP 127.0.0.1:49876 www:21332 TIME_WAIT TCP 127.0.0.1:49877 www:21332 TIME_WAIT TCP 127.0.0.1:49878 www:21332 TIME_WAIT TCP 127.0.0.1:49879 www:21332 TIME_WAIT TCP 127.0.0.1:49880 www:21332 TIME_WAIT TCP 127.0.0.1:49881 www:21332 TIME_WAIT TCP 127.0.0.1:49882 www:21332 TIME_WAIT TCP 127.0.0.1:49883 www:21332 TIME_WAIT TCP 127.0.0.1:49884 www:21332 TIME_WAIT TCP 127.0.0.1:49885 www:21332 TIME_WAIT TCP 127.0.0.1:49886 www:21332 TIME_WAIT TCP 127.0.0.1:49887 www:21332 TIME_WAIT TCP 127.0.0.1:49889 www:21332 TIME_WAIT TCP 127.0.0.1:49890 www:21332 TIME_WAIT TCP 127.0.0.1:49891 www:21332 TIME_WAIT TCP 127.0.0.1:49892 www:21332 TIME_WAIT TCP 127.0.0.1:49893 www:21332 TIME_WAIT TCP 127.0.0.1:49894 www:21332 TIME_WAIT TCP 127.0.0.1:49898 www:21332 TIME_WAIT TCP 192.168.11.3:49168 17.167.137.42:https CLOSE_WAIT TCP 192.168.11.3:49175 17.167.137.39:https CLOSE_WAIT TCP 192.168.11.3:49282 ec2-54-214-248-72:http ESTABLISHED TCP 192.168.11.3:49780 tf-in-f95:http TIME_WAIT TCP 192.168.11.3:49781 nrt19s02-in-f16:http TIME_WAIT TCP 192.168.11.3:49802 210.158.146.137:http TIME_WAIT TCP 192.168.11.3:49803 210.158.146.137:http TIME_WAIT TCP 192.168.11.3:49804 210.158.146.137:http TIME_WAIT TCP 192.168.11.3:49805 210.158.146.137:http TIME_WAIT TCP 192.168.11.3:49806 210.158.146.137:http TIME_WAIT TCP 192.168.11.3:49829 74.125.203.157:http TIME_WAIT TCP 192.168.11.3:49839 nrt19s12-in-f6:http TIME_WAIT TCP 192.168.11.3:49844 nrt04s08-in-f2:http TIME_WAIT TCP 192.168.11.3:49895 tf-in-f84:https ESTABLISHED TCP 192.168.11.3:49896 nrt19s02-in-f15:https ESTABLISHED TCP 192.168.11.3:49897 nrt19s01-in-f14:https ESTABLISHED あまりにwwwとか怖いので、hostsに 127.0,.0.1 www としてみたり、ファイアーウォールの設定のin-bound,out-boundの設定に49000-49999でブロックとしたのですが、netstat -naoで見ると49000番台にアクセスしているアプリケーションのpidがsystem32のsvchost.exeらしく、このアプリケーションの設定では任意のポートがオープンになっているようで、ブロックされていないようです。 システムファイルが書き換えられているのか? と思い、sfc.exe /scannow として復旧してみたのですが変わりませんでした。 どうしたらこの危険な?? 状態 を普通に近い状態に直せるのでしょうか。 アドバイスを下さい。 よろしくお願いいたします

  • netstatでclose_waitのままの接続が消えない

    はじめまして。 インターネットの接続を切ろうとすると時々「切断しますか」というダイアログが出るので、コマンドプロンプトでnetstatを取ってみると一つだけCLOSE_WAITのままの接続があり、それが接続を切ってもずっと消えずに残っています。これは何なんでしょうか?  Foreign Addressはlocal host:1207でいつも同じ、Local Addressは毎回違うポート番号です。これが何か調べる方法はないでしょうか? パソコン初心者なのでもしかしたらとんちんかんな質問をしているかも知れませんが、盗聴ソフトのようなものが仕込まれているのではないかと不安です。 ノートンアンチウィルスや各スパイウェア検出ソフトで調べても何も検出されないのですが・・・。 教えていただけると嬉しいです。 よろしくお願いします。 ちなみに接続はフレッツISDN、OSはXP-home、ノートンインターネットセキュリティ2003が入っています。

  • 【ソケット通信】TIME_WAITを0にする方法

    【現状】 VC#でソケット通信のソフトを作成しています。 【問題】 クライアント―サーバ型のソケット通信をしようとしているのですが、切断後すぐに再接続できないという問題が生じております。 【調査結果】 調べたところ、TCP/IPの状態遷移でアクティブクローズ側がTIME_WAIT状態になることが分かっています。TIME_WAITの設定値には意味合いがあり、漂流中の重複パケットの問題を回避するためや最後のACK再送のためであることは理解しております。 【やりたいこと】 今回は基本的に1:1通信でルータを挟まずにやりとりするネットワークなので、TIME_WAITを0、もしくは数msecにしたいと考えています。 ※ 同じIPアドレス、ポート番号で接続したい為(ポート固定での再接続) 【自分で出した解決案の一つ】 どうもサーバ(Listenする側)からアクティブクローズすると、TIME_WAITは生じるもののクライアントから接続要求を出すと同じポートからでももう一度接続できてしまうというのは判明したので、必ずサーバから切断要求を出す仕様にすればTIME_WAITが0になるように思われます。 ただし、なぜ再接続できるのかは不明のため、すっきりしない(&環境や設定が異なると再接続できない可能性あり) 【質問】 (1) クライアント側からアクティブクローズする場合に、TIME_WAIT状態を1秒未満に設定する方法はありますか?(VC#で) (2) サーバからアクティブクローズした場合に、なぜ再接続できてしまうのでしょうか? 以上の2点の質問に、どうかご回答のほどよろしくお願いいたします。

  • Linuxのnetstatの表記について

    疑問に思ったので質問させてください。 netstat -naを実行した結果が下記のようになっています。 --- (一部抜粋) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0    0.0.0.0:3306 0.0.0.0:* LISTEN tcp 0 0    :::80    :::*   LISTEN --- Local Address とForeign Addressの表記がIPv4とIPv6と違うのですが 原因や機能としての差異など違いはあるのでしょうか?? *今のところIPv4でapacheは接続できています。 ちなみに環境は下記を利用しています。 環境 OSはCentOS release 6.6 (Final) webミドルウェアはhttpd-2.2.15-39.el6.centos.x86_64 DBミドルウェアはmysql-5.1.73-3.el6_5.x86_64 どうぞよろしくお願いいたします。