質問する質問する
 

質問WindowsXP Embedded SP2 TCPプロトコルについて

  • 2009年10月7日 4:10yossy.tkb ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     コードあり
    はじめまして。質問させて頂きます。

    お聞きしたい内容としましては、
    TCP通信を行っている際の確認応答を返す条件についてです。

    環境としましては、WindowsXP Embedded SP2を搭載した機器をクライアントとして、
    サーバーに相当する機器(OS等、不明。)に接続します。

    クライアント側には遅延確認応答が実装されており、基本的には、
    以下のようなシーケンスでクライアントより確認応答が送信される、
    ということまでは確認できました。

                     サーバー                 クライアント
                       |                            |
                       |                            |
    ①データ(1460byte) | -------------------------> |
                       |                            |
    ②データ           | -------------------------> |
      (1~1460byte)    |                            |
                       | <------------------------- | ③確認応答
                       |                            |
                    ~~~~~~~~~~~~~~~~~~~
                       |                            |
    ④データ           | -------------------------> |
      (1~1460byte)    |                            |
                       |                            |[120ms~200ms]
                       |                            |
                       | <------------------------- | ⑤(遅延確認応答) #2つ目のフレームの到着を待つが、
                       |                            |                  #こないため、120ms~200ms後に
                       |                            |                  #遅延確認応答を送信。


    ※ 図中の矢印(--->)はEthernetフレームを示しています。
    ※ ①~③の各フレーム間は1ms程度の時間間隔です。


    基本的には上記の動作をしているのですが、
    以下のようなシーケンスとなることがあります。
    頻度としては、80msに1回程度です。
                     サーバー                 クライアント
                       |                            |
    ①データ(1460byte) | -------------------------> |
                       |                            |
    ②データ(1460byte) | -------------------------> |
                       |                            |
                      | <------------------------- |③確認応答
                       |                            |
    ④データ(1460byte) | -------------------------> |
                       |                            |
                       | <------------------------- |⑤確認応答
                       |                            |
    ⑥データ(1460byte) | -------------------------> |
                       |                            |
    ⑦データ(1460byte) | -------------------------> |
                       |                            |
                       | <------------------------- |⑧確認応答
                       |                            |
    ⑨データ(1460byte) | -------------------------> |
      (1~1460byte)    |                            |
                       |                            |[120ms~200ms]
                       |                            |
                       | <------------------------- | ⑩(遅延確認応答)

    ※ ①~⑨の各フレーム間は1ms程度の時間間隔です。

    問題は⑤の確認応答で、Windows XPの遅延確認応答の仕様から考えると、
    ⑥のデータがクライアント側に到着してから確認応答を送信するはず、
    と考えています。
    なお、Windows XPの遅延確認応答の仕様は、以下のサイトで確認しました。
      http://support.microsoft.com/kb/328890/ja

    確認したい点は以下の通りです。

       (1) Windows XPとXP Embeddedでは、遅延確認応答の仕様が異なるのでしょうか?
       (2) 2つ目のフレームをまたずに確認応答を送信するのも仕様なのでしょうか?

    TCPの仕様上は問題ないのですが、上記の動作をすることが解せなく、
    もしお分かりになる方がいらっしゃればと思い、質問させていただきました。


    以上です。
    • 移動高橋 忍MSFT2009年10月8日 5:21スレッドのカテゴリが異なっていました (移動元:Windows CE)
    •