追記 11/14
お世話になっております。
現在も、こちらの現象について調査中です。調査の中でわかってきた現象は以下の通りです。
1番:1時間毎に数件づつEstablishedが増えていく。
2番:そのEstablishedになっているIPアドレスと送信元番号をWiresharkで調べてみると、そのパケットが見つからない。
この2番目の現象の”外部のIPアドレスからのパケットが見つからない”ことから、”サーバソフトが勝手サーバソケットを作ってる?”という疑いが出てきました。
しかし、netstatで表示されているEstablishedの結果は、外部からのパケット通信がなくても表示されてしまうものなんでしょうか?
もしよければ、ご教示よろしくお願いします。
前提
現在、windowsのPCで起動しているサーバソフト(TCP 8000番ポートをサーバとして使用)があるのですが、数か月程度に1度、接続されているクライアントPCとの通信が不安定状態になるという警告が出ることが多発したりします
(*サーバークライアント端末間は1分間に1kbyte程度のパケットの送受信で通信正常かを判定)。
この時に、netstat -aコマンドを実行すると、40台程度しか接続されていないはずのクライアント端末が1000台近く接続されていると表示が出てきます。
実現したいこと
一応、緊急対応でサーバソフトを再起動すれば不具合現象も解消することは確認できたのですが、現在不具合が出ている時は、このEstablished状態の接続が大量に発生している時が確認できているので、windowsコマンドなどで、これらの接続を強制切断させたいです。
そのような方法やコマンドはありますでしょうか?
発生している問題・エラーメッセージ
(省略) 127.0.0.1:8000 ---.---.---.---:27024 ESTABLISHED 127.0.0.1:8000 ---.---.---.---:27025 ESTABLISHED 127.0.0.1:8000 ---.---.---.---:27026 ESTABLISHED (省略)
このようなログ内容が1000個近く表示されていました。
このサーバソフトを一旦終了すると、このログはなくなり、40個程度のEstablished表示に戻ります。
また、今後、サーバソフト自体も修正を加えていきたいと思っています。
現在原因を調べているのですが、なんとなく、インターネット側から大量にパケットを送り付けられたりしてないかと思ったりするのですが、確認する方法などもありましたら教えて下さい。
Establishedに対する根本的な疑問
現在、想像で、何か大量の接続やデータをサーバーポートの8000番に対してやられていると思っているのですが、サーバソフトを一旦再起動することで1400--->40個程度の接続に減少することから、空の接続が大量に接続されてるのかなと思っています。
そこで、疑問なのですが、接続がEstablished状態なのに、特に何のデータもやり取りもない空の状態ならば、Establishedは自動的に消滅しないのでしょうか?
Established状態ならば、どこかのグローバルIPから接続されて、何らかのデータやり取りが発生しているということなのでしょうか?
これも想像ですが、close信号なり端末から来ないとEstablished状態は消滅するようなことではないのでしょうか?
また、このような現象は、
”サーバーソフト側の不具合で、ソケットを大量に作成してメモリを占有させてしまう現象だ”
という推測をする人ががいるのですが、そのような可能性はありますでしょうか?
netstatで表示される外部のIPアドレスからの通信のEstablishedというのは、外部IPからアクセスがなかったとしても、メモリの不具合等で表示されることもありますでしょうか?