web-dev-qa-db-ja.com

なぜ単一(?)TCPパケットがここで複数のPDUユニットに分割されるのですか?

写真関連:alt text

これらのセグメントが個別のパケットとしてマークされるのはなぜですか(すべてAck、Seq = 509)?パケットが分割されたのはなぜですか?

5
kagali-san

56〜78の範囲の可視フレームを参照していると思います。
この順序で物事に取り組みましょう、

  1. 概要:「TCP segment of a reassembled PDU
    これは、wireshark(ethereal?)が再構築されたことを意味しますTCPビュー用にセグメントをまとめます。
    したがって、この文字列は無視してかまいません。害はありません。
    これらのフレームが何であるかを以下のポイント4で詳しく説明しました。
  2. 概要:同じ 'seq'番号の異なるフレーム。
    フレーム58、60、62、64などは同じシーケンス番号を示しています。
    ただし、これらはnot「個別のパケットとしてマークされた」単一のパケットではないことに注意してください-分割はありません。
    これらのパケットには「ACK」フラグのみが設定されており、ACK番号が増加していることがわかります。
    これらは、異なるTCPセグメントが到達したときに、マシンからHTTPサーバーに送信されるACKです。
  3. 'ACK'シーケンスはフレーム152で始まり、FINフレーム964678で終わります。
    この間、ブラウザからHTTPサーバーに向かうすべてのフレームが最後に送信されたシーケンス番号(609)を繰り返しています-これは正常ですTCPプロトコル動作。
    ブラウザは、最初のHTTPリクエスト(フレーム52)の後にそれ以上のデータを送信していません。
    HTTPサーバーはフレーム54でこれを確認しました。
  4. フレーム54は、「再構築されたPDUのTCPセグメント」とマークされたフレームで形成された(wireshark)再構築されたサーバー応答であると思います。
    したがって、そのようにマークされた後続のフレームはすべて、HTTPサーバーからクライアントへのものです。
    ([ソース]列と[宛先]列をスクラブしたため、その詳細は画像に表示されません)。

元のキャプチャファイルを再確認すると、TCP送信元ポート80(HTTPの場合)がHTTPサーバーからの9646バイトの応答データに追加されるフレーム54〜67が見つかります。

ここに表示されるのは、HTTPサーバーからの9KBの応答で、いくつかのMTU制限付きTCPセグメントとしてブラウザーに到達します。各セグメントは、TCPあなたのOS。

これは、通信の高レベルのシーケンスです。

  1. ブラウザは、3ウェイTCPハンドシェイクでHTTPサーバーへの接続を開始しました。
  2. この接続でサーバーに単一のHTTPリクエストを送信しました
  3. サーバーはこれに9KBの応答で応答し、これは複数のTCP/IPパケットに( TCPセグメント )として分散されました。
  4. ブラウザマシンのTCP/IPスタックは、サーバーから受信した各TCPパケットを確認しました
  5. 最後に、FINパケットで始まる接続を閉じました。
    フレーム78の後にFINおよびACKパケットがさらに2つ(または1つのRSTパケット)あったと思います。

Wireshark TCP再アセンブリの処理については Wireshark Wiki でさらに詳しく読むことができます。

3
nik

画像は見えませんが、低レベルのプロトコル(たとえば、イーサネット)は、高レベルのプロトコル(たとえば、TCPパケット)をMTUのサイズ(最大)に基づいてフラグメントに分割できます。伝送ユニット)。

7
kmarsh

ウィキペディアは プロトコルデータユニット を次のように定義しています:

電気通信では、プロトコルデータユニット(PDU)という用語には次の意味があります。

  1. ネットワークのピアエンティティ間で1つの単位として配信され、制御情報、アドレス情報、またはデータを含む可能性のある情報。
  2. 階層化システムにおいて、特定の層のプロトコルで指定され、プロトコル制御情報と、場合によってはその層のユーザー・データで構成されるデータの単位。例:BridgePDUまたはiSCSIPDU 1

PDUは、 OSIモデル の最初の4つのレイヤーのそれぞれに関連しています(レイヤー5以上はデータと呼ばれます)。

したがって、実際には、PDUは、独自のコンテキストで定義された単なるデータの単位です。

From WireSharkを理解する

パケットが1つにまとめられない場合があります。代わりに、パケットは複数のプロトコルデータユニット(PDU)として到着します。 WireSharkは、これらのユニットを1つのパケットに再構成しようとします。このようなパケットは、再構成されたPDUと呼ばれます。

再構築されたPDUを使用する場合、表示は通常のパケットほどきれいではありません。応答のヘッダーは、図2.11の下部ペインにあります。

これは、これらがTCP/IPメッセージのセグメントであり、通常、最後のセグメントのみがTCP/IPメッセージに関する意味のある完全な情報を持っていることを意味します。

From Wireshark TCP再構築されたPDUのセグメント

TCPプロトコルでサブディセクタにTCPストリームのデセグメント化を許可する」のチェックを外すことで、TCPセグメントの再構築を無効にできますそうすれば、アプリケーションPDUのすべての部分が独自に表示されます。

これは、最後のパケットだけでなく、TCP/IPセグメントを意味のある形で表示するために必要なすべての情報がすべてのセグメントに含まれるようにする方法です。

4
harrymc