• 締切済み

TCP/IPでのエラーシーケンス

TCP/IPで1台のサーバSから複数のコンピュータA,B,C...に データを送信している途中で、 Cがハングパップした時のエラーシーケンスを知りたいのですが。 例えば、 サーバSからA,B,Cに1つのデータを複数のパケットに分けて送信するときに、 送信途中でCがハングアップ(通信不能)した場合に、 サーバSがCにパケットを送信しなくなるのは、どのタイミングなのでしょうか? 例えば、5つ目のパケットで通信不能になった時は Cへのそれ以降のパケットを送信しないのでしょうか? 初歩できなことですが、お願いいたします。 ここら辺のことで、参考になる文献がある場合にも教えて頂きたく思います。

みんなの回答

  • kawausok
  • ベストアンサー率46% (13/28)
回答No.1

おっしゃっている「ハングアップ」とは、突然通信不能状態に陥るような事象を指していると仮定してですが・・ TCPプロトコルでは、データを送る場合、数個のデータ毎に送達確認を行います。簡単に言うと、「データを受け取ったよ」という「応答パケット」を返信します。 おっしゃっているように、通信相手が「ハングアップ」した状態になると、この「応答パケット」が帰ってこない状態になります。 応答がなくても、送信側はある程度データを送ることができます(これをウィンドウサイズといいます)。 ですので、相手側がハングアップしたからといって、サーバが直ちにパケット送信を止めるわけではありません。 # これで答えになっていますかね?? ご質問の例ですと、5個目でCが受信不能になっても、サーバー側は6個目、7個目・・・と送信します。送信ウィンドウサイズが一杯担った時点で、それ以上送信できなくなり、応答がくるまで待ち状態になります。 応答待ち時間はあらかじめ設定された値があり(通常は数分ぐらいだったかな??)その時間を過ぎても応答がなければ初めてリンクの障害とみなしてリンクを切断 という動作になります。 # 説明を簡単にするために、厳密に言うとすこし不正確な点もあるとおもいますが、イメージとしてはこのような感じですよ。

Fumizoh
質問者

お礼

有り難うございます。イメージすることができました。 「ハングアップ」は、予告なく通信不能状態になることです。 あと、このようにCが通信不能状態になった場合に、 サーバSのパフォーマンス(レスポンス?)が悪くなると聴いたのですが、 このようなことが起こるのでしょうか? 起こるとすれば、TCPが原因なのでしょうか? それより上のアプリケーションが原因なのでしょうか? 心当たりがあれば教えていただきたく思います。