TCP/IP プロトコルは、ヘッダーとデータで構成される IP データグラムと呼ばれる、インターネット上で送信されるパケットを定義します。ヘッダーの最初の部分は固定長で、合計 20 バイトであり、すべての IP データグラムで必要です。ヘッダーの固定部分に続くいくつかのオプション フィールドは、長さが可変です。
このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。
TCP/IP プロトコルは、IP データグラムと呼ばれる、インターネット上で送信されるパケットを定義します。これは、ハードウェアとは関係のない仮想的なパケットであり、ヘッダーとデータで構成されます。ヘッダーの最初の部分は固定です。長さは合計 20 バイトであり、すべての IP データグラムで必要です。ヘッダーの固定部分に続いて、いくつかのオプション フィールドがあり、その長さは可変です。
IP プロトコルは、信頼性の高いコネクションレス型データグラム送信サービスを提供しません。 IP層が提供するサービスは、IP層でデータグラムのカプセル化とカプセル化解除を行うことで実現されます。 IPデータグラムのフォーマットは、高度なデータを正しく伝送するために付加される各種制御情報であるヘッダー領域と、高度なプロトコルに必要なデータが含まれるデータ領域の2つに分かれています。送信します。
IP データグラムの形式は次のとおりです。
#上図に示すデータでは、最上位ビットが左側にあることに注意してください。 0 ビットとして記録され、最下位ビットは右側にあり、31 ビットとして記録されます。ネットワーク内でデータを送信する場合、最初にビット 0 ~ 7 が送信され、次にビット 8 ~ 15、次にビット 16 ~ 23、最後にビット 24 ~ 31 が送信されます。 TCP/IP プロトコル ヘッダー内のすべての 2 進数は、ネットワーク上で送信されるときにこの順序である必要があるため、ネットワーク バイト オーダーと呼ばれます。実際のプログラミングでは、他の形式で格納された 2 進数は、データを送信する前に、ネットワーク プログラミング API の対応する関数を使用して、ヘッダーをネットワーク バイト オーダーに変換する必要があります。
IP データグラムの各フィールドの機能は次のとおりです。
1) バージョン番号: 4 桁の 2 進数を占め、IP データグラムで使用される IP プロトコルのバージョンを示します。現在、インターネットでは主に、TCP/IP プロトコル スイートのバージョン番号 4 の IP プロトコルが使用されています。
2) ヘッダ長: 4 バイナリ ビットを占めます。このフィールドは、ヘッダ全体 (オプションを含む) の長さを示します。長さは、カウント単位として 32 ビットの 2 進数に基づいています。受信側は、このフィールドを通じて計算され、送信ヘッダーがどこで終了し、データの読み取りが開始されるかが決まります。通常の IP データグラム (オプションなし) の場合、このフィールドの値は 5 (つまり、長さ 20 バイト) です。
3) サービス タイプ (TOS、サービスの種類): 8 バイナリ ビットを占め、このデータグラムの処理方法を指定するために使用されます。サービス タイプ フィールドの 8 ビットは、5 つのサブフィールドに分割されます。
#(1) - 優先順位 (0 ~ 7) の数値が大きいほど、サービスの優先順位が高くなります。データグラム。ネットワーク内のルーターは、輻輳制御に優先順位を使用できます。たとえば、ネットワーク内で輻輳が発生した場合、データグラムの優先順位を使用して、どのデータグラムを選択するかを決定できます。
(2) - 短遅延ビット D (遅延): このビットが 1 の場合、データグラム要求は短遅延チャネルで送信され、0 は通常の遅延を示します。
(3) - 高スループット ビット T (スループット): このビットが 1 の場合、データグラムは高スループット チャネルでの送信を要求します。0 は通常を意味します。
(4)-高信頼性ビット R (信頼性): このビットが 1 の場合、データグラムは高信頼性チャネルでの送信を要求します。0 は通常を意味します。
(5) - 予約ビット。
現在インターネットで使用されている TCP/IP プロトコルは、ほとんどの場合、ネットワークは TOS を処理しませんが、実際のプログラミングでは、このフィールドの各ドメインを設定するための特別な関数があります。一部の重要なインターネット アプリケーション プロトコルでは、推奨 TOS 値が設定されています:
上の表からわかるように、ユーザーと直接やり取りするアプリケーションでは、通常、短い遅延が使用されます。大量のデータを送信する必要があるアプリケーションの場合は、一般に高スループットが選択され、データグラムで制御情報を送信する必要があるアプリケーションの場合は、一般に高信頼性が選択されます。データグラムの存続期間中に TOS がサポートされない場合、TOS フィールドは 0x00 に設定されます。
4) 全長: 16 バイナリ ビットを占める全長フィールドは、IP データグラム全体 (ヘッダー領域データ領域) の長さをバイト単位で示します。 IP データグラム内のデータ内容の開始位置と長さは、ヘッダー長フィールドと合計長フィールドを使用して計算できます。このフィールドの長さは 16 ビットの 2 進数であるため、理論上の IP データグラムは最大 65536 バイトになります (実際には、物理ネットワークの制限により、この値よりもはるかに小さくなります)。
5) 生存時間 (TTL、生存時間): 8 バイナリ ビットを占め、ネットワーク内でデータグラムを送信できる最大時間を指定します。実際のアプリケーションでは、ライフタイムフィールドは、データグラムが通過できるルーターの最大数に設定されます。 TTL の初期値は送信元ホストによって設定され (通常は 32、64、128、または 256)、その値は、TTL を処理するルーターを通過すると 1 ずつ減ります。このフィールドが 0 の場合、データグラムは破棄され、送信元ホストに通知するために ICMP メッセージが送信され、ループに入ったときにデータグラムが際限なく送信されるのを防ぎます。
6) 上位層プロトコル識別子: 8 バイナリ ビットを占める IP プロトコルは、さまざまな上位層プロトコルを伝送できます。ターゲット エンドは、受信した IP データグラムを、メッセージを処理する TCP または UDP などの上位層に送信できます。プロトコル識別子。合意に達しました。
一般的に使用されるインターネット プロトコル番号:
7) チェックサム: 16 ビットの 2 進数を占め、プロトコル ヘッダー データの有効性を検証するために使用されます。 . 送信中に IP ヘッダー領域の正確性と完全性を保証できます。ヘッダーチェックサムフィールドは、IP プロトコルヘッダーに基づいて計算されるチェックサムであり、ヘッダー以降のデータは計算されません。
原則: 送信者はまずチェックサム フィールドを 0 に設定し、次にヘッダー内の各 16 ビット 2 進数に対して補数和演算を実行し、結果をチェックサム フィールドに保存します。受信者は計算プロセス中に送信者によってヘッダーに配置されたチェックサムを含めるため、送信中にヘッダーにエラーが発生しなければ、受信者の計算結果はすべて 1 になるはずです。
8) 送信元アドレス: 32 ビットの 2 進数を占め、送信側 IP アドレスを表します。
9) 宛先アドレス: 宛先 IP アドレスを表す 32 ビットの 2 進数を占めます。
======================IP データグラムの断片化と再構築================ = ======
最大送信単位:
IP データグラムがインターネット上で送信される場合、送信元からネットワークに送信される前に、複数の物理ネットワークを通過する必要がある場合があります。行き先。ネットワークが異なれば、リンク層や媒体の物理特性も異なるため、データを送信する際には、データ フレームの最大長に制限があり、この制限値が最大送信単位 (MTU) です。
When同じネットワーク上の 2 つのホスト間で通信する場合、ネットワークの MTU 値が決定され、断片化の問題は発生しません。断片化の問題は通常、MTU 値が異なるインターネット上でのみ発生します。現在、インターネットではネットワーク接続に主にルーターが使用されているため、通常はルーターがシャーディングを担当します。
2 つのホスト間の通信が異なる MTU 値を持つ複数のネットワークを通過する場合、MTU ボトルネックは通信パス上の最小 MTU 値であり、これをパス MTU と呼びます。ルーティングは必ずしも対称ではないため (A から B へのルートは B から A へのルートとは異なる場合があります)、パス MTU は両方向で必ずしも一致するとは限りません。次の表は、一般的に使用されるいくつかのネットワークの MTU です。値:
フラグメンテーション:
ネットワーク送信に合わせてデータグラムを複数のデータグラムに分割するプロセスはフラグメンテーションと呼ばれ、フラグメント化されます。後続の各 IP データグラムは、異なるパスを介してターゲットホストにアクセスします。
IP データグラムは、送信中に断片化される場合と断片化されない場合があります。断片化された場合、断片化された IP データグラムは、断片化されていない元の IP データグラムと同じ構造になります。つまり、IP ヘッダーと IP データ領域の 2 つの部分でも構成されます。 # フラグメント化された IP データグラムでは、データ領域は元の IP データグラムのデータ領域の連続部分であり、ヘッダーは元の IP データグラムのヘッダーのコピーですが、フラグメント化されていない元の IP データグラムとは異なります。ヘッダーの違い: フラグとフラグメント オフセット:
(1)-フラグ: IP データグラム ヘッダーには「フラグ」と呼ばれるフィールドがあり、3 桁の 2 進数で表されます:
DF (フラグメント化禁止) フラグが 1 に設定されている場合、送信中にデータグラムをフラグメント化することはできません。たとえば、ネットワーク接続テスト コマンド ping を使用できます。 -F パラメーターデータ送信時にフラグメントしないように設定されていますが、MTU が小さいネットワークをデータが通過できない場合、データ到達不能エラーが発生します。
フラグメント未完了 MF (More Fragment) フラグが 1 に設定されている場合、データグラムがフラグメント化後の最後のデータグラムではなく、最後のデータグラムのビットが 0 に設定されていることを意味します。
(2) - フラグメント オフセット: IP データグラムがフラグメント化された後、元の IP データ領域内の各フラグメント データ領域の位置は 13 ビットのフラグメント オフセットで表されます。上図では、フラグメント 1 のオフセットは 0、フラグメント 2 のオフセットは 600、フラグメント 3 のオフセットは 1200 です。実際、IP アドレスでは、オフセットは 8 バイト単位で計算されるため、 IP データグラム内のフラグメント 1 のオフセットは 0、フラグメント 2 のオフセットは 75、フラグメント 3 のオフセットは 150 です。 再アセンブリ:断片化された IP データグラムが最終ターゲット ホストに到達すると、ターゲット ホストは各フラグメントを組み立て、ソース ホストから送信されたときに IP データグラムに復元します。このプロセスは再アセンブリと呼ばれます。 IP データグラムの。 IP データグラム ヘッダーでは、識別情報は 16 ビットの 2 進数で表され、ホストによって送信された各データグラムを一意に識別します。データグラムがフラグメント化されると、各フラグメントはデータグラムの「識別」フィールドの値をコピーするだけなので、データグラムのすべてのフラグメントは同じ識別情報を持ちます。 ターゲット ホストがデータグラムを再構築する原理は次のとおりです。 (1) - 「識別」フィールドに従って、受信したフラグメントがどの元の IP データグラムに属しているかを判断できます。(2) - フラグメントが最後のフラグメントであるかどうかは、「Flag」フィールドの「Unfinished MF」サブフィールドに基づいて判断できます。
(3) - フラグメントに基づいて判断できます。 「オフセット」フィールド 元のデータグラム内のフラグメントの位置。
コンピュータ関連の知識について詳しくは、FAQ 列をご覧ください。
以上がIPデータグラムの形式は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。