• 締切済み

TCP/IPでRST(リセット)フラグのデータって?

TCP/IPのデータで質問です。 パソコンのサーバーと無線ハンディをTCP/IPで通信しています。サーバー側は無線ハンディからの要求に応えるプログラム(Visual Basic,Winsockコントロール使用)が起動されています。 このサーバーに無線ハンディ30台(もっと多いこともある)から,いっせいに接続要求を出すのですが,この接続に失敗するハンディがあったりします。 このときLAN上のデータを見てみると,パソコン側からRST(リセット)フラグ(強制切断)のデータが出ていました。どうやらこれが接続に失敗している原因のようなのです。 このRST(リセット)フラグのデータが出るのは,どう行ったときなのでしょうか? どういう理由でRST(リセット)フラグのデータが出るのでしょうか? ご存知の方,いらしゃいましたら教えていただけないでしょうか? よろしくお願い致します。

みんなの回答

noname#43581
noname#43581
回答No.5

ちなみに、ですが、手元の「TCP/IPバイブル」(SOFTBANK)では、 --------------- RST  リセットフラグ(reset flag)は、他の全てが失敗するとき使われる。これは エラーが起こり、コネクションが強制的にクローズされるべきであること(ある いは、コネクションオープン要求に対する応答として送信されるならば、その要 求が拒否されること)を示す。 --------------- とあります。 実装でどう使われているかというのは、実装によるので難しいですね。 もしかしたら、という事で、MicrosoftのKBを挙げておきます。

参考URL:
http://www.microsoft.com/japan/support/kb/articles/j044/6/99.htm
satohei
質問者

お礼

ご回答ありがとうございます。 調べている中で、Winsockコントロールのキューも怪しそうだという情報もありました。どうもありがとうございました。

すると、全ての回答が全文表示されます。
回答No.4

このあたりの資料は書籍のほうが確実だと思います。 思いっきり専門書となりますが、オライリージャパンから出ているものでTCP/IPを 解説しているものがあったはずです。(私のところには「TCP/IPネットワーク管 理」というものしか置いてないので調べてみてください) このほかにも専門書をたくさん置いてあるところにいけば結構あったと思います。 WebではRSTフラグは「強制切断」としか書いてないところが多数なんで何とも言い ようがないですが、JPNICホームページのカテゴリ「教育」あたりにあるかもしれま せん。

satohei
質問者

お礼

ご回答ありがとうございます。 いくつか書店をまわってみましたが「これ!」というものがなくて...。WEBでいろいろ探し回って、少しずつ情報が集まりかけてはいます。

すると、全ての回答が全文表示されます。
回答No.3

>ただ、1度目で失敗したときに、ハンディで接続処理をリトライさせるとつながる >ようになります。 と いうことで、リトライ時点でその他のハンディのコネクションがまったく切れ ていないのであれば、ハンディのプログラムを「コネクションを確立できなければ 何度かリトライする」というように改修するべきです。または、サーバにきたコネ クション確立要求をパケットエラーでない限り受け入れるように改修するべきで す。 コネクションを確立するのは要求する側の要求であって、要求された側はその要求 がのめる状態かどうかをチェックして初めて要求をのむかどうかを判断します。 コネクション確立要求がはねられる理由は ・資源(通信帯域やコネクションを確立するのに必要なメモリ)を使い切る寸前で ある ・コネクション要求を受けたあと、返信するまでにある一定時間を経過してしまった ・パケットのエラー などの原因ですので、このあたりをきちんと検討してみるといいでしょう。 ※前回答にも書きましたが、きちんと実験してデータを取り、どこを改修するべき かはきちんと検討する必要があります。

satohei
質問者

お礼

ご回答ありがとうございます。 もう少しこちらでも情報を集めてみようと思います。 接続要求や、rstフラグのデータについて説明してあるホームページや書籍をご存知ないでしょうか。もしご存知でしたら、教えていただけると助かります。

すると、全ての回答が全文表示されます。
回答No.2

TCPプロトコルは1対1のハンドシェーク通信を行います。 コネクションが成立するとFINを送受信するまでコネクションは成立したまま となります。 コネクションをエラーなどで切断する必要が出るとRSTを送信してコネクショ ンを解放します。 また、セキュリティポリシーなどで制限がかかっていてコネクションを成立さ せたくない相手からのコネクション要求に対してもRSTでコネクションを不成 立させます。 といったところでどうでしょう? 現状はサーバー側からRSTを発信しているとのことですが、すべてのハンディ からのコネクション要求が受け付けられているのか(つまり、RSTが出るのが コネクション要求時なのか、コネクション成立後なのか)が分からないのでこ のあたりに関しては現状をもっと詳しく解析されてみてはいかがでしょう? (たとえばサーバ負荷とRSTが出てくる状態に関係があるとか)

satohei
質問者

お礼

ご回答ありがとうございます。 すべてのハンディからのコネクション要求を受け付けられているのか、というと接続できなかったハンディに対しては受け付けられていないようです(VBのプログラムで接続要求イベントがあがっていない)。 ただ、1度目で失敗したときに、ハンディで接続処理をリトライさせるとつながるようになります。

すると、全ての回答が全文表示されます。
noname#43581
noname#43581
回答No.1

多分ですが、以下のことが想像できます。 ・無線チャンネルが使いつくされてしまっている ・ハンディのIPアドレスが重複している ・VBのリスンが間に合っていない ・VBプログラムの構造に欠陥がある ・メモリ不足により、スレッド、タスク、プログラムのどれかを起動できなかった。 ・不正アクセス監視プログラムによりアタックと認識され、阻止された。 で、RSTになるのは、確か該当サービスが起動していない時、あるいはエラー発生だったかと思います。 だから、無線チャンネルの奪い合い、IP重複という可能性が結構考えられそうです。

satohei
質問者

お礼

ご回答ありがとうございます。 挙げられた中で言うと、IPアドレスの重複はありません。またPCにはメモリを1GB積んでいますから、不足ということはないと思います。 VBのリスンが間に合っていない、ということはCPUの性能ということでしょうか。ちなみにPen3 800Mhzを使用しています。 不正アクセス監視...という説もありえない話でなさそうですが、「こういう理由でRSTを出した」という情報がどこかで取得できないでしょうか...。

すると、全ての回答が全文表示されます。

関連するQ&A