• ベストアンサー

ACK信号について

ACK信号は接続してきたノードに対して送り返す 肯定応答であるという認識なのですが ではもし返送路がなくなってしまった場合はどうなるのでしょうか? 例えば端末Aがサーバに通信をした瞬間シャットダウンしてしまったとするとサーバからのACK信号は一度送信してまた再送するといったような動作なのでしょうか? この場合同時刻に通信をした端末Bがいたら、待たされることになりますよね?また、こういったことが連続して起こったらサーバがダウンしてしまうのではないかと考えております ACK信号が返送路を失った場合、その行き先と動作と負荷についてを教えてください、よろしくお願いします。

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

  • ベストアンサー
  • mii-japan
  • ベストアンサー率30% (874/2820)
回答No.2

通信の設計として ACKは一度しか返しません  ACKを受信できなくてどう対処するかは、要求側の設計によります ACKを返す側は、次の要求が来るまで待ちますが、当然タイムアウト処理もあります ACKを返す側は、ACKが送出できさえすれば完了です

その他の回答 (2)

  • joe-
  • ベストアンサー率34% (11/32)
回答No.3

何のACKでしょうか?もしかしてTCPのACKの話をしていますか?

  • fjnobu
  • ベストアンサー率21% (491/2332)
回答No.1

通常のシリアル通信の場合ですが、データの送信側にACKが受信できない場合は、データの送信に失敗したとして再送し、プロトコルにしたがって何度かやり直します。何度か送信してACKが受信できないときはその回線が異常と判断して切り離します。 尚、ACKを2つの装置が同時に発信する事はACKの発信側の責任で無い様にしています。もし有った場合は信号レベルが異常になるので、回線異常として切り離します。 完全に同一タイミングで送信する事が有ったとしても、何度かのやり取り中にデバイスNoの違いで、異常を発見できます。

関連するQ&A

  • FIN,ACKとACKについて

    はじめまして。5月よりTCPソケット通信を勉強しているものです。 クライアントとサーバーのプログラムを作り試行錯誤しながら動かしているのですが一つ不思議な現象が起きたので質問させて頂きます。 処理が終わり、通信を切断する時なのですが、ソケット通信に関連する書籍やWebページを見ていると接続を切断するときにFIN,ACKを送信して相手側がACKを送信し、FIN,ACKを送信して最後にACKを送信するとなっています。図にすると以下のような感じでしょうか。 PCA       PCB FIN,ACK送信 → FIN,ACK受信 ACK受信   → ACK送信 FIN,ACK受信 → FIN,ACK送信 ACK送信   → ACK受信 この手順でPCA,PCBともに切断されるとあるのですが、自分が作ったプログラムを実行させて、etherealでパケットをモニタリングすると以下のような状態で終わってしまいます。 PCA       PCB FIN,ACK送信 → FIN,ACK受信 FIN,ACK受信 → FIN,ACK送信 ACK送信   → ACK受信 PCAからのFIN,ACK受信に対してのACKの送信が省略されて、いきなりFIN,ACKを送信してしまいます。その後PCAからはACKが返されて終了となります。 プログラム的には希望通り動作しているので問題は無いのですが、なぜ途中のACKが省略されてしまうのか原因が知りたいです。また、自分の認識が間違っている場合のご指摘等頂ければと思います。 つたない文章で申し訳ありませんがご存知の方がいらっしゃいましたら教えて下さい。

  • TCP/IP ACKについて

    初めて質問させて頂きます。 現在WinpCapを使ってTCPの通信プログラムを作成しています。 単純にパケットの受信や送信は出来たので、ローカルサーバーに接続出来るか試しているのですが、通信が確立しません。 状況としては、こちらからSYN = 1でサーバーに信号を送ると、サーバーから返事が来ます。 サーバーの返事を待ってACK = 1でサーバーに返事をするのですが、そのときの状態をWiresharkで確認すると、ACKの番号が2067011292等と表示されて通信が確立しません。 ACKの値が異常なのは判りますが、この数値はどこから来るのか、又対処方法などが有りましたら教えてください。 環境はVC2003、WInXP/Win7です。

  • WinsockによるUDP通信にて

    WinsockでUDP通信を行うプログラムを作っているのですが、 原因不明の問題が発生していて困っています。 通信手順は以下のとおりです。 (1) クライアントからサーバへ要求パケット送信 (2) 要求パケットを受け取ったサーバは、クライアントへACKを送信 (3) サーバが要求に対する応答パケットをクライアントへ送信 (4) 応答パケットを受け取ったクライアントは、サーバへACKを送信 クライアント-サーバ間でやりとりするデータは最大で992バイト、 それ以上になる場合は、分割して送信します。 パケットの分割が発生しない場合は、(1)~(3)がパケットの損失もなく通信できるのですが、 パケットの分割が発生する場合には、2回目以降の(4)のパケットがクライアントに届きません。再現率は今のところ100%です。 クライアント側のselect関数でもソケットを検出しません。 たしかにUDPは信頼性が低いですが、パケット分割が発生しないパターンでは100%届くので、UDPの仕様とは関係ないような気がします。 原因がさっぱりわからないので、アドバイスをお願いいたします。 ちなみに、クライアント、サーバともに同一端末内にあります(双方がループバックアドレスに対してパケットを送信)が、 これはテスト段階だからであって、本来はそれぞれ別々の端末で動作します。

  • 無線のパケットキャプチャにおけるプロトコルについて

    パケットキャプチャソフト(OmniPeek)を使用して802.11(無線)のパケットキャプチャを取得しています。 取得しているパケットキャプチャにプロトコルが表示されるのですが、”CFE"と言うプロトコルが表示されていますが、このプロトコルだけが調べても見つかりませんでした。 他にRTS,CTS, Encripted Data,ACK,BAのプロトコルがあり、それらは調べて以下のように意味を解釈しましたが、"CFE"については見つからないため、意味が理解できていません。 ご存知の方がいましたらご教示を頂けますようお願い致します。 -------------------------------- RTS(Request To Send):端末側からアクセスポイントに通信許可を問い合わせる信号。 CTS(Clear to Send):アクセスポイントから端末に通信許可を与える信号。 Encrypted Data:WEP、TKIP、AESで暗号化されたデータ。 ACK(Acknowledgment):データ伝送で受信側から送信側へ送られる肯定的な返事。 BA(Block Ack):フレームアグリメーション方式の種類であるA-MPDUにおいて複数のデータに対して一括のACK(肯定的)な返事。 -------------------------------

  • WiresharkのFlow Graph

    現在WiresharkのFlow Graphという機能を使用して、クライアント端末がサーバー端末へのTCP通信での3ウェイハンドシェイクのパケットやりとりを観測したいと思っています。 次のようなパケットをモニターしました。 |Time | 192.168.1.111 | | | | 192.168.1.222 | |6.402 | PSH, ACK - Len: 1212 |Seq = 1 Ack = 1 | |(6057) ------------------> (5000) | |6.606 | PSH, ACK - Len: 1212 |Seq = 1 Ack = 1 | |(6057) ------------------> (5000) | |6.835 | PSH, ACK - Len: 1212 |Seq = 1 Ack = 1213 | |(6057) <------------------ (5000) | |7.039 | ACK | |Seq = 1213 Ack = 1213 | |(6057) ------------------> (5000) | |7.150 | ACK | |Seq = 1213 Ack = 1213 このパケットのやりとりを観ていて思ったのですが、TCP通信は3ウェイハンドシェイクは SYN--->SYN ACK---> ACK という順序でのパケットのやりとりをクライアントとサーバー間で行うと思っていたのですが、 PSH, ACK ----> PSH, ACK ----> ACK ----> ACK このような順序になっているように思うのですが、これはなぜなのかご教授頂けないでしょうか? どうぞ、よろしくお願い致します。

  • HUBスイッチの混在環境におけるCSMA/CDの動作について

    関連記事を探したのですが、見当たらなかったので、 記載させていただきました。 (もし、既出であればご教授願います。) 以下のような環境で、どのような再送の手順と なるのか、教えてください!   [パソコン]-100/full-[スイッチ]-10/half~   ~-[ハブ]-10/half-[スイッチ]-100/full-[パソコン] 本環境で通信していた際、ハブ-スイッチ間にコリジョンが発生 すると。再送が発生すると思います。ここで、再送のための信号 (JAM信号)は、パソコンまで届き再送処理となるのでしょうか? それともスイッチ側でコリジョン検知により信号も破棄される ため、端末側でtimeout待ち後の再送となるのでしょうか?(TCPの場合) 以上、よろしくお願い致します。

  • TCP/IP通信3ハンドシェイクについて

    TCP/IPのTCP通信の3ハンドシェイク通信に関して質問なのですが、インターネットを使ったある端末でセンターのサーバーと6秒に1度程度3ハンドシェイク通信を行ってインターネット回線が正常かどうかを判定する機能を持っているそうなのですが、その時に1回の通信でどの程度のパケットをやり取りしているのかということを質問してみたら、約1.2kbyte程度のパケットをやり取りしていると業者の方が言っていました。 ちょっと興味があってWireSharkでこの端末とサーバ間のパケット通信をのぞいてみたところ、端末が1.2kbyte送信していたのですが、サーバからのACKと思われるパケットが1.2kbyteのパケットを返してきていて、再度端末が60バイト程度のパケットをサーバのIPアドレスに送信していました。 私はてっきり、端末とサーバー間のこの3ウェイハンドシェイクのパケットの総量が1.2kbyteだと思っていたのですが、これだと1.2k + 1.2k + 60 = 2.46kbyteとなると思うのですが、パケットのやり取りとしては正しいのでしょうか? サーバー側が受信したら同じ容量の1.2kbyteのデータをACKとして返してきているように思うのですが、Wiresharkで見ても全く同じデータでは無いようでした。サーバはデータを受け取ったら、ちゃんと受信したという1 or 0のデータみたいなものを返せばよいだけだと思うのですが、理由はあるのでしょうか?

  • anti-virus 対応 IPS の動作について

    anti-virus 対応 IPS(ISS、Cisco等)の動作について疑問があります。 [SMTPサーバA]--[インターネット]--[IDS/IPS]--[SMTPサーバB] という構成で、IPS が anti-virus 対応だったとします。 私の理解では以下(点線にかこまれた部分)のようになります。 -------------------------------- SMTPサーバAのユーザがウイルスに感染し、サーバAを使ってサーバBのユーザ宛ての感染メールを送信したとします。 まず、サーバBとSMTPのコネクションが生成されますが、dataを送る段階になった時に、 経路を監視している IPS がウイルスを含んだメールデータであることを検出しパケットをドロップします。 サーバAはサーバBからのTCPのackが帰ってこなくなるため、TCPレベルの再送を行いますが、IPSはそのたびにパケットをドロップします。 最終的にエラーとしてSMTPのコネクションがクローズし、メールはサーアBに到達しません。 サーバAはサーバBから適切なSMTPエラー応答を受け取ったわけではないため、メールの送信完了を確認できません。 結果的に、メールはサーバAの送信スプールに残り、設定された時間間隔で数度の再送を試みます。 多くの場合、1週間ほどたった後に、メールのErrors-Toヘッダのアドレスに対してbounce を通知するエラーメールが送られることなります。 -------------------------------- これだと、ウイルスの感染は防げますが、サーバAとサーバBの負荷(再送やスプールによる)が高まるような気がします。 経路上のanti-virus対応IPSは、実際にはどのような動作をしているのでしょうか? また、理解が間違っている点があればご指摘いただけないでしょうか。

  • 端末(Windows)をPing応答不可にした場合の問題点

    端末(Windows)をPing応答不可にした場合の問題点 一般的な話で結構なのですが、Ping応答を不可にした場合、 問題は生じますか? ひとつのサーバーとその端末という 役割のマシンなので、通信が全くできないということであ れば、Ping応答は不可にしないつもりです。 使っている通信ソフトは、TCP/IPを使用していると思います。 通信前に、Pingでマシンが存在しているかどうかの 確認はしていないと想像します。 サーバーとは複数のスイッチングハブを介してつながって います。 どういうトラブルが生じうるのか知りたいです。 一般的な話で結構です。 保守の時だけは、使えるようにするつもりです。

  • FINパケット、RSTパケットが返却される理由?

    アパッチのヘルスチェックにて、パケットをみました。 シーケンス番号を追っていきましたが、下記のような 通常ではない動作がありました。 <ケース1> (1)サーバからのHTTPのGETに対して、クライアントがFIN.ACKパケットを返却する。 (2)サーバがFIN.ACKパケットをクライアントに送る。 (3)クライアントからRSTパケットが返却される。 ※RSTパケット内にて、broken tcpとの記載あり <ケース2> (1)サーバからのFIN.ACKパケットに対して、クライアントからRST.ACKパケットが返却される。 ・質問1 それぞれについて、正常な動作とはおもえないのですが、 異常でしょうか? ・質問2 FIN.ACKパケット又はRSTパケットが返却されるのはどんな場合が想定されるのでしょうか? ・質問3 FIN.ACKパケット→RST.ACKパケットは異常な動作でしょうか? よろしくお願いします。