IPはプロトコルです。 IPヘッダー形式

14.04.2019 アプリケーション

TCP/IP プロトコルは、グローバル インターネットの基礎です。 より正確に言うと、TCP/IP はプロトコルのリストまたはスタックであり、実際には、情報が交換される (パケット交換モデルが実装される) 一連のルールです。

この記事では、TCP/IP プロトコル スタックの動作原理を分析し、その動作原理を理解しようとします。

注: 多くの場合、TCP/IP の略語は、TCP と IP という 2 つのプロトコルに基づいて動作するネットワーク全体を指します。

このようなネットワークのモデルでは、主要なプロトコルに加えて、 TCP(トランスポート層)とIP(プロトコル) ネットワーク層) アプリケーションおよびネットワーク層プロトコルが含まれます (写真を参照)。 ただし、TCP プロトコルと IP プロトコルに直接戻りましょう。

TCP/IPプロトコルとは何ですか

TCP - 転送制御プロトコル。 伝送制御プロトコル。 これは、2 つのデバイス間の信頼性の高い接続と信頼性の高いデータ転送を確保し、確立するのに役立ちます。 この場合、TCP プロトコルは 最適なサイズ 送信されたパケットデータ、送信が失敗した場合は新しいメッセージを送信します。

IP - インターネットプロトコル. インターネット プロトコルまたはアドレス プロトコルは、データ送信アーキテクチャ全体の基礎です。 IP プロトコルは、ネットワーク データ パケットを配信するために使用されます。 正しいアドレスに。 この場合、情報はパケットに分割され、パケットは独立してネットワークを介して目的の宛先に移動します。

TCP/IPプロトコル形式

IPプロトコル形式

IP プロトコルの IP アドレスには 2 つの形式があります。

IPv4形式。 これは32ビットです 2進数。 IP アドレス (IPv4) を記録する便利な形式は、4 つのグループの形式で記録することです。 10進数(0 ~ 255)、ドットで区切られます。 例: 193.178.0.1。

IPv6形式。 これは 128 ビットの 2 進数です。 原則として、IPv6 アドレスは 8 つのグループの形式で記述されます。 各グループには、コロンで区切られた 4 つの 16 進数が含まれます。 IPv6 アドレスの例 2001:0db8:85a3:08d3:1319:8a2e:0370:7889。

TCP/IPプロトコルの仕組み

都合がよければ、ネットワーク上でデータ パケットを送信することを、手紙を郵便で送信することと考えてください。

不便な場合は、2 台のコンピューターがネットワークで接続されていると想像してください。 さらに、接続ネットワークはローカルでもグローバルでも任意です。 データ転送の原理に違いはありません。 ネットワーク上のコンピュータは、ホストまたはノードとみなすこともできます。

IPプロトコル

ネットワーク上の各コンピュータには独自の一意のアドレスがあります。 グローバル インターネット上では、コンピュータには IP アドレス (インターネット プロトコル アドレス) と呼ばれるこのアドレスが割り当てられます。

メールに例えると、IP アドレスは家の番号です。 しかし、家の番号だけでは手紙を受け取るのに十分ではありません。

ネットワーク上で送信される情報は、コンピュータ自体ではなく、コンピュータにインストールされているアプリケーションによって送信されます。 このようなアプリケーションには、メール サーバー、Web サーバー、FTP などがあります。 パッケージを識別するには 発信された情報、各アプリケーションは特定のポートに接続されます。 例: Web サーバーはポート 80 で待機し、FTP はポート 21 で待機し、メールは SMTPサーバーポート 25 でリッスンし、POP3 サーバーがメールを読み取ります メールボックスポート110で。

したがって、TCP/IP プロトコルのアドレス パケットでは、addressees: port に別の行が表示されます。 メールと同様 - ポートは送信者と受信者のアパート番号です。

例:

送信元アドレス:

IP: 82.146.47.66

宛先アドレス:

IP: 195.34.31.236

覚えておいてほしいのは、IP アドレス + ポート番号を「ソケット」と呼ぶということです。 上の例では、パケットはソケット 82.146.47.66:2049 からソケット 195.34.31.236:53 に送信されます。

TCPプロトコル

TCP プロトコルは、IP プロトコルの次の層のプロトコルです。 このプロトコルは、情報の転送とその完全性を制御することを目的としています。

たとえば、送信される情報は個別のパケットに分割されます。 荷物は個別に受取人に配達されます。 送信プロセス中に、パケットの 1 つが送信されませんでした。 TCP プロトコルは、受信者がパケットを受信するまで再送信を行います。

TCP トランスポート プロトコルはプロトコルから隠蔽されます。 トップレベル(物理、チャネル、ネットワーク IP、データ転送のすべての問題と詳細)。

あなたはネットワーク テクノロジに関する知識が乏しく、基本さえ知らないと仮定します。 しかし、あなたには中小企業に情報ネットワークを迅速に構築するという任務が与えられています。 ネットワーク設計や使用説明に関する分厚いタルムードを勉強する時間も意欲もありません。 ネットワーク機器そしてネットワークセキュリティを詳しく掘り下げます。 そして最も重要なことは、将来この分野の専門家になりたいという願望がないことです。 それなら、この記事はあなたのためのものです。


この記事の 2 番目の部分では、 実用ここで取り上げる基本事項: Cisco Catalyst ノート: VLAN 設定、パスワード リセット、IOS のフラッシュ

プロトコルスタックを理解する

タスクは、情報をポイント A からポイント B に転送することです。情報は継続的に送信できます。 ただし、ポイント A 間で情報を転送する必要がある場合、タスクはさらに複雑になります。<-->BとA<-->C は同じ物理チャネルを介して接続されます。 情報が継続的に送信される場合、C が A に情報を送信したい場合、B が送信を終了して通信チャネルが解放されるまで待たなければなりません。 この情報伝達メカニズムは非常に不便で非現実的です。 そして、この問題を解決するために、情報をいくつかの部分に分割することが決定されました。

受信者では、送信者からの情報を受信するために、これらの部分を 1 つの全体にまとめる必要があります。 しかし、受信者 A では、B と C の両方からの情報が混在していることがわかります。 これは、各部分について次のように入力する必要があることを意味します。 識別番号、受信者 A は、B からの情報と C からの情報を区別し、これらの情報を元のメッセージに組み立てることができます。 当然のことながら、受信者は、送信者がどこで、どのような形式で元の情報に識別データを追加したかを知らなければなりません。 そしてこのために、識別情報の形成と書き込みに関する特定のルールを開発する必要があります。 さらに、「ルール」という言葉は「プロトコル」という言葉に置き換えられます。

現代の消費者のニーズに応えるためには、複数種類の識別情報を一度に表示する必要があります。 また、ランダムな干渉 (通信回線を介した送信中) と意図的な妨害行為 (ハッキング) の両方から、送信される情報を保護することも必要です。 この目的のために、送信される情報の一部には、大量の特別なサービス情報が追加されます。

イーサネット プロトコルには次の番号が含まれています。 ネットワークアダプター送信者 (MAC アドレス)、受信者のネットワーク アダプター番号、転送されるデータの種類、および直接転送されるデータ。 イーサネットプロトコルに従ってまとめられた情報をフレームと呼びます。 同じ番号のネットワーク アダプターは存在しないと考えられます。 ネットワーク機器は、送信されたデータをフレーム (ハードウェアまたはソフトウェア) から抽出し、さらなる処理を実行します。

原則として、抽出されたデータは IP プロトコルに従って形成され、受信者の IP アドレス (4 バイトの数字)、送信者の IP アドレス、およびデータという別の種類の識別情報を持ちます。 その他必要なサービス情報も満載。 IPプロトコルに従って生成されるデータをパケットと呼びます。

次に、パッケージからデータが抽出されます。 ただし、このデータは、原則として、まだ最初に送信されたデータではありません。 この情報も特定のプロトコルに従って編集されます。 最も広く使用されているプロトコルは TCP です。 送信元ポート(2バイトの数字)や送信元ポートなどの識別情報、データやサービス情報が含まれます。 TCP から抽出されたデータは通常、コンピューター B で実行されているプログラムがコンピューター A の「受信プログラム」に送信したデータです。

プロトコルのスタック (この場合は TCP over IP over Ethernet) はプロトコル スタックと呼ばれます。

ARP: アドレス解決プロトコル

クラス A、B、C、D、および E のネットワークがあります。それらは、コンピューターの数と、ネットワーク内で使用できるネットワーク/サブネットの数が異なります。 簡単にするために、また最も一般的なケースとして、IP アドレスが 192.168 で始まるクラス C ネットワークのみを考慮します。 次の番号はサブネット番号で、その後にネットワーク機器番号が続きます。 たとえば、IP アドレス 192.168.30.110 のコンピュータは、同じ論理サブネット内にある別のコンピュータ番号 3 に情報を送信したいとします。 これは、受信者の IP アドレスが 192.168.30.3 になることを意味します。

ノードが次のことを理解することが重要です。 情報ネットワーク 1 つの物理チャネルによってスイッチング装置に接続されたコンピュータです。 それらの。 ネットワーク アダプタから「外に」データを送信する場合、データは 1 つのパスを持ち、ツイスト ペアのもう一方の端から送信されます。 IP アドレス、MAC アドレス、その他の属性を指定することなく、独自のルールに従って生成されたあらゆるデータを送信できます。 そして、このもう一方の端が別のコンピュータに接続されている場合、そこでそれらを受信し、必要に応じて解釈することができます。 しかし、このもう一方の端がスイッチに接続されている場合、この場合、このパケットに対して次に何を行うかをスイッチに指示するかのように、厳密に定義されたルールに従って情報パケットを形成する必要があります。 パケットが正しく形成されている場合、スイッチはパケットに示されているように、パケットをさらに別のコンピュータに送信します。 その後、スイッチはこのパケットをパケットから削除します。 ランダム・アクセス・メモリ。 ただし、パケットが正しく形成されていない場合、つまり、 その中の指示が間違っていた場合、パッケージは「消滅」します。 スイッチはそれをどこにも送信しませんが、すぐに RAM から削除します。

情報を別のコンピュータに転送するには、送信される情報パケットに MAC アドレス、IP アドレス、ポートの 3 つの識別値を指定する必要があります。 相対的に言えば、ポートとは、ポートを発行する番号です。 オペレーティング·システムネットワークにデータを送信したいすべてのプログラム。 受信者の IP アドレスは、プログラムの詳細に応じて、ユーザーが入力するか、プログラム自体が受信します。 MAC アドレスは不明のままです。 受信者のコンピュータのネットワーク アダプタ番号。 必要なデータを取得するために、いわゆる「ARP アドレス解決プロトコル」を使用してコンパイルされた「ブロードキャスト」リクエストが送信されます。 ARPパケットの構造は以下の通りです。

上の図のすべてのフィールドの値を知る必要はありません。 主なものだけに焦点を当てましょう。

フィールドには、送信元 IP アドレス、宛先 IP アドレス、送信元 MAC アドレスが含まれます。

「イーサネット宛先アドレス」フィールドには単位 (ff:ff:ff:ff:ff:ff) が入力されます。 このようなアドレスはブロードキャスト アドレスと呼ばれ、そのようなフレームはすべての「ケーブル上のインターフェイス」に送信されます。 スイッチに接続されているすべてのコンピュータ。

このようなブロードキャスト フレームを受信したスイッチは、あたかも全員に「この IP アドレス (宛先 IP アドレス) の所有者であれば、あなたの MAC アドレスを教えてください。」という質問をするかのように、ネットワーク上のすべてのコンピュータにそのフレームを送信します。 」 別のコンピュータがそのような ARP 要求を受信すると、宛先 IP アドレスを自分の IP アドレスと照合します。 そして、一致する場合、コンピュータはその MAC アドレスの代わりに自分の MAC アドレスを挿入し、送信元と宛先の IP アドレスと MAC アドレスを交換し、サービス情報の一部を変更してパケットをスイッチに送り返します。元のコンピュータ、ARP リクエストの開始者。

このようにして、コンピュータはデータの送信先となる他のコンピュータの MAC アドレスを見つけます。 ネットワーク上にこの ARP 要求に応答するコンピュータが複数ある場合、「IP アドレスの競合」が発生します。 この場合、ネットワーク上に同一のIPアドレスが存在しないように、コンピュータのIPアドレスを変更する必要があります。

ネットワークの構築

ネットワークを構築するという仕事

実際には、原則として、少なくとも 100 台のコンピュータを含むネットワークを構築する必要があります。 また、ファイル共有機能に加えて、ネットワークは安全で管理が容易でなければなりません。 したがって、ネットワークを構築するときは、次の 3 つの要件を区別できます。
  1. 操作が簡単。 会計士のリダが別のオフィスに転勤した場合でも、会計士のアンナとユリアのコンピュータにアクセスする必要があります。 また、情報ネットワークの構築が間違っている場合、管理者はリダに新しい勤務先の他の会計士のコンピュータへのアクセスを許可することが困難になる可能性があります。
  2. 安全。 当社のネットワークのセキュリティを確保するため、次のアクセス権が必要です。 情報リソース区切らなければなりません。 ネットワークは、開示、完全性、およびサービス妨害に対する脅威からも保護されなければなりません。 詳細については、イリヤ・ダビドヴィッチ・メドヴェドフスキー著『インターネットへの攻撃』の「コンピュータ セキュリティの基本概念」の章を参照してください。.
  3. ネットワークパフォーマンス。 ネットワークを構築する場合、伝送速度がネットワーク内のコンピュータの数に依存するという技術的な問題があります。 コンピュータの数が増えるほど速度は遅くなります。 コンピュータの数が多いと、ネットワーク速度が非常に遅くなり、顧客が許容できなくなる可能性があります。
コンピュータの数が多いとネットワーク速度が遅くなる原因は何ですか? - 理由は簡単です。 大量ブロードキャスト メッセージ (BMS)。 AL は、スイッチに到着すると、ネットワーク上のすべてのホストに送信されるメッセージです。 または、大まかに言えば、サブネット上にあるすべてのコンピューターです。 ネットワーク上に 5 台のコンピュータがある場合、各コンピュータは 4 つのアラームを受信します。 それらが 200 台ある場合、そのような各コンピューターは 大規模なネットワーク 199 Shs を受け入れます。

応募数が多い ソフトウェアモジュールおよびブロードキャスト メッセージをネットワークに送信して動作させるサービス。 ARP の段落で説明されています: アドレス決定プロトコルは、コンピューターからネットワークに送信される多数の AL の 1 つにすぎません。 たとえば、「ネットワーク ネイバーフッド」 (Windows OS) に移動すると、コンピュータは、同じネットワーク内にあるコンピュータの存在についてネットワークをスキャンするために、NetBios プロトコルを使用して生成された特別な情報を含むさらにいくつかの AL を送信します。 ワーキンググループ。 その後、OS は見つかったコンピュータを「ネットワーク コンピュータ」ウィンドウに描画し、表示します。

また、何らかのプログラムによるスキャン プロセス中、コンピュータは 1 つのブロードキャスト メッセージを送信するのではなく、たとえば、インストールするために複数のブロードキャスト メッセージを送信することにも注意してください。 リモートコンピュータ仮想セッション、またはこのアプリケーションのソフトウェア実装の問題によって引き起こされるその他のシステム ニーズに対応します。 したがって、ネットワーク上の各コンピュータは、他のコンピュータと対話するために、多数の異なる AL を送信する必要があり、その結果、通信チャネルに不要なデータがロードされます。 エンドユーザー情報。 実践が示すように、 大規模なネットワークブロードキャスト メッセージがトラフィックの大部分を占める可能性があるため、ユーザーから見たネットワークの速度が低下します。

仮想LAN

1 つ目と 3 つ目の問題を解決し、2 つ目の問題を解決するために、個別のローカル ネットワーク (仮想ローカル エリア ネットワーク) のように、ローカル ネットワークをより小さなネットワークに分割するメカニズムが広く使用されています。 大まかに言えば、VLAN は、同じネットワークに属するスイッチ上のポートのリストです。 「同じ」とは、他の VLAN に他のネットワークに属するポートのリストが含まれるという意味です。

実際、1 つのスイッチに 2 つの VLAN を作成することは、2 つのスイッチを購入することと同じです。 2 つの VLAN を作成することは、1 つのスイッチを 2 つに分割することと同じです。 このようにして、100 台のコンピュータからなるネットワークが 5 ~ 20 台のコンピュータからなる小さなネットワークに分割されます。通常、この数は、ファイル共有が必要なコンピュータの物理的な位置に対応します。

  • ネットワークを VLAN に分割することで、管理が容易になります。 したがって、会計士の Lida が別のオフィスに移動した場合、管理者は、ある VLAN からポートを削除して、別の VLAN に追加するだけで済みます。 これについては、「VLAN、理論」セクションで詳しく説明します。
  • VLAN は、ネットワーク セキュリティ要件の 1 つである分離を解決するのに役立ちます。 ネットワークリソース。 したがって、ある教室の生徒は、別の教室のコンピューターや校長のコンピューターに侵入することはできません。 彼らは実際にいます 異なるネットワーク.
  • なぜなら 私たちのネットワークは VLAN に分割されています。 小規模な「あたかもネットワーク」では、ブロードキャスト メッセージの問題は解消されます。

VLAN、理論

おそらく、「管理者は 1 つの VLAN からポートを削除し、別の VLAN に追加するだけでよい」という表現がわかりにくいかもしれないので、さらに詳しく説明します。 この場合のポートは、プロトコル スタックの段落で説明したように、OS によってアプリケーションに発行される番号ではなく、RJ-45 コネクタを接続 (挿入) できるソケット (場所) です。 このコネクタ(電線の先端)は、「ツイストペア」と呼ばれる8芯電線の両端に取り付けられています。 この図は、24 ポートを備えた Cisco Catalyst 2950C-24 スイッチを示しています。
「ARP: アドレス決定プロトコル」の段落で述べたように、各コンピュータは 1 つの物理チャネルによってネットワークに接続されます。 それらの。 24 台のコンピュータを 24 ポートのスイッチに接続できます。 ツイストペアこのスイッチからの 24 本のワイヤはすべて、企業のすべての施設を物理的に貫通し、さまざまな部屋に伸びています。 たとえば、17 本のワイヤが教室の 17 台のコンピュータに接続され、4 本のワイヤが特別部門のオフィスに接続され、残りの 3 本のワイヤが新しく修理されたコンピュータに接続されるとします。 新しいオフィス経理部 そして、特別サービスのために会計士のリダがまさにこのオフィスに異動しました。

前述したように、VLAN はネットワークに属するポートのリストとして表すことができます。 たとえば、スイッチには 3 つの VLAN がありました。 スイッチのフラッシュ メモリに保存されている 3 つのリスト。 あるリストには 1、2、3...17 という数字が書かれ、別のリストには 18、19、20、21、そして 3 番目には 22、23、24 が書き込まれていました。リダのコンピュータは以前はポート 20 に接続されていました。 そして彼女は別の事務所に異動した。 彼らは彼女の古いコンピュータを新しいオフィスに引きずり込むか、彼女はオフィスに座りました 新しいコンピュータ- 関係ない。 重要なことは、彼女のコンピュータがツイスト ペア ケーブルで接続されており、もう一方の端がスイッチのポート 23 に挿入されていることです。 そして、彼女が新しい場所から同僚にファイルを送信し続けるためには、管理者は 2 番目のリストから番号 20 を削除し、番号 23 を追加する必要があります。1 つのポートは 1 つの VLAN にのみ所属できることに注意してください。しかし、これを壊します。この段落の最後にあるルール。

また、ポートの VLAN メンバーシップを変更する場合、管理者はスイッチにワイヤを「接続」する必要がないことにも注意してください。 しかも、席から立ち上がる必要すらありません。 管理者のコンピュータはポート 22 に接続されており、これを使用してスイッチをリモート管理できるためです。 もちろん、後で説明する特別な設定のおかげで、管理者のみがスイッチを管理できます。 VLAN の設定方法については、[次の記事の] VLAN のセクションを参照してください。

お気づきかと思いますが、最初に (「ネットワークの構築」セクションで) ネットワーク内に少なくとも 100 台のコンピュータがあると述べましたが、スイッチに接続できるのは 24 台のコンピュータだけです。 もちろんスイッチも付いています 多額のポート。 しかし、企業/エンタープライズ ネットワークにはさらに多くのコンピュータが存在します。 また、無数のコンピュータをネットワークに接続するには、いわゆるトランク ポートを介してスイッチが相互に接続されます。 スイッチを構成する場合、24 個のポートのいずれかをトランク ポートとして定義できます。 また、スイッチ上のトランク ポートの数はいくつでも構いません (ただし、2 つ以下にするのが合理的です)。 ポートの 1 つがトランクとして定義されている場合、スイッチは、ISL または 802.1Q プロトコルを使用して、受信したすべての情報を特別なパケットに形成し、これらのパケットをトランク ポートに送信します。

入ってきたすべての情報、つまり、他のポートから入ってきたすべての情報です。 そして、802.1Q プロトコルは、イーサネットと、このフレームが伝送するデータを生成したプロトコルとの間のプロトコル スタックに挿入されます。

この例では、お気づきかと思いますが、管理者は Lida と同じオフィスに座っています。 ポート 22、23、24 からのツイスト ケーブルは同じオフィスにつながっています。 ポート 24 はトランク ポートとして設定されます。 そして、配電盤自体は、古い会計士事務所と 17 台のコンピューターを備えた教室の隣にあるユーティリティ ルームにあります。

ポート 24 から管理者のオフィスに向かうツイスト ペア ケーブルは別のスイッチに接続され、さらにそのスイッチがルーターに接続されます。これについては次の章で説明します。 他の 75 台のコンピュータを接続する他のスイッチは、企業の他のユーティリティ ルームにあります。これらのスイッチには、原則として、オフィス内にあるメイン スイッチにツイスト ペアまたは光ファイバ ケーブルで接続されたトランク ポートが 1 つあります。管理者。

上で、トランク ポートを 2 つ作成することが合理的な場合があると述べました。 この場合の 2 番目のトランク ポートは、ネットワーク トラフィックの分析に使用されます。

これは、Cisco Catalyst 1900 スイッチの時代に大規模なエンタープライズ ネットワークを構築するのとほぼ同じでした。おそらく、このようなネットワークには 2 つの大きな欠点があることに気づいたでしょう。 まず、トランク ポートを使用すると、いくつかの問題が発生し、 残業機器を構成するとき。 次に、最も重要なことですが、会計士、経済学者、派遣担当者の「ネットワーク」が 3 つに対して 1 つのデータベースを必要としていると仮定しましょう。 彼らは、同じ会計士が、経済学者または派遣担当者が数分前に行ったデータベースの変更を確認できるようにしたいと考えています。 これを行うには、3 つのネットワークすべてにアクセスできるサーバーを作成する必要があります。

この段落の途中で述べたように、ポートは 1 つの VLAN にのみ存在できます。 ただし、これは Cisco Catalyst 1900 シリーズ以前のスイッチと、Cisco Catalyst 2950 などの一部の新しいモデルにのみ当てはまります。他のスイッチ、特に Cisco Catalyst 2900XL では、このルールが破られる可能性があります。 このようなスイッチでポートを構成する場合、各ポートは、スタティック アクセス、マルチ VLAN、ダイナミック アクセス、ISL トランク、および 802.1Q トランクの 5 つの動作モードを持つことができます。 2 番目の操作モードは、まさに上記のタスクに必要なものです。つまり、サーバーから即座にサーバーへのアクセスを許可します。 3つのネットワーク、つまり サーバーを同時に 3 つのネットワークに所属させます。 これは、VLAN クロスまたはタグ付けとも呼ばれます。 この場合、接続図は次のようになります。

IPアドレス (インターネットプロトコルバージョン4、インターネット プロトコル バージョン 4) - ネットワーク間でパケットを転送するために OSI モデルのネットワーク層で使用される主なタイプのアドレスです。 IP アドレスは 4 バイトで構成されます (例: 192.168.100.111)。

ホストへの IP アドレスの割り当ては次のように実行されます。

  • 手動で構成された システム管理者コンピュータネットワークをセットアップするとき。
  • 特別なプロトコル (特に、DHCP プロトコル - 動的ホスト構成プロトコル、動的ホスト構成プロトコル) を使用して自動的に実行されます。

IPv4プロトコル 1981年9月に開発されました。

IPv4プロトコル TCP/IP プロトコル スタックのインターネットワーク (ネットワーク) レベルで動作します。 このプロトコルの主なタスクは、送信ホストから宛先ホストにデータのブロック (データグラム) を転送することです。送信者と受信者は、固定長のアドレス (IP アドレス) によって一意に識別されるコンピューターです。 また、インターネット プロトコル IP は、必要に応じて、より小さいパケット サイズで他のネットワークを介してデータを送信するために、送信されたデータグラムのフラグメント化と収集を実行します。

IP プロトコルの欠点は、プロトコルの信頼性が低いことです。つまり、送信の開始前に接続が確立されません。これは、パケットの配信が確認されず、受信データの正しさが監視されないことを意味します (チェックサム)、確認操作は実行されません(宛先ノードとのサービス メッセージの交換と、パッケージの受信準備)。

IP プロトコルは、各データグラムを独立したデータとして送信し、処理します。つまり、グローバル インターネット上の他のデータグラムへの他の接続はありません。

データグラムが IP 経由でネットワークに送信された後、 さらなるアクションこのデータグラムでは、送信者はいかなる方法でも制御しません。 データグラムが何らかの理由でネットワーク上でさらに送信できなくなると、そのデータグラムは破棄されることがわかりました。 データグラムを破壊したノードには、返信アドレスを介して(特に、 ICMPプロトコル)。 データ配信の保証は、そのための特別なメカニズム (TCP プロトコル) を備えた上位レベルのプロトコル (トランスポート層) に委ねられます。

ご存知のとおり、ルーターは OSI モデルのネットワーク層で動作します。 したがって、IP プロトコルの最も基本的なタスクの 1 つは、データグラム ルーティングの実装です。つまり、ネットワークの送信ノードからネットワーク上の他のノードまでのデータグラムの最適なパスを (ルーティング アルゴリズムを使用して) 決定することです。 IPアドレス。

ネットワークからデータグラムを受信するネットワーク ノードでは、次のようになります。

IPヘッダー形式

IPパケットバージョン4の構造を図に示します。

  • バージョン - IPv4 の場合、フィールド値は 4 である必要があります。
  • IHL - (インターネット ヘッダー長) 32 ビット ワード (dword) で表した IP パケット ヘッダーの長さ。 パケット内のデータ ブロックの始まりを示すのはこのフィールドです。 このフィールドの有効な最小値は 5 です。
  • Type of Service (TOS の頭字語) - 図に示すように、IP パケットのサービスの種類を決定する一連の基準を含むバイト。

サービスのバイトごとの説明:

    • 0-2 - この IP セグメントの優先順位 (優先順位)
    • 3 - IP セグメント送信の遅延時間の要件 (0 - 通常、1 - 低遅延)
    • 4 - 要件 帯域幅(スループット) IP セグメントが送信されるルート (0 - 低スループット、1 - 高スループット)
    • 5 - IP セグメント伝送の信頼性 (信頼性) の要件 (0 - 通常、1 - 高信頼性)
    • 6-7 - ECN - 明示的な遅延メッセージ (IP フロー制御)。
  • パケット長 - ヘッダーとデータを含むパケットの長さ (オクテット単位)。 このフィールドの有効な最小値は 20、最大値は 65535 です。
  • 識別子はパッケージの送信者によって割り当てられる値であり、パッケージを組み立てるときにフラグメントの正しい順序を決定することを目的としています。 フラグメント化されたパケットの場合、すべてのフラグメントが同じ ID を持ちます。
  • 3つのフラグビット。 最初のビットは常に 0 である必要があり、2 番目のビット DF (フラグメント化しない) はパケットをフラグメント化できるかどうかを決定し、3 番目のビット MF (フラグメントを増やす) はこのパケットがパケット チェーンの最後のかどうかを示します。
  • フラグメント オフセットは、データ ストリーム内のフラグメントの位置を決定する値です。 オフセットは 8 バイト ブロックの数で指定されるため、この値をバイトに変換するには 8 を乗算する必要があります。
  • 生存時間 (TTL) は、このパケットが通過する必要があるルーターの数です。 ルーターが通過すると、この数値は 1 ずつ減ります。 このフィールドの値がゼロの場合、パケットは破棄されなければならず、時間超過メッセージ (ICMP コード 11 タイプ 0) がパケットの送信者に送信されても​​よい。
  • プロトコル - 次の層のインターネット プロトコル識別子は、TCP や ICMP など、パケットに含まれるプロトコル データを示します。
  • ヘッダー チェックサム - RFC 1071 に従って計算

Wireshark スニファーを使用して傍受された IPv4 パケット:

IPパケットの断片化

送信者から受信者へのパケットのパス上には、ローカル ネットワークとグローバル ネットワークが存在する場合があります。 他の種類リンク層フレームのデータ フィールドの許容サイズが異なります (最大転送単位 - MTU)。 したがって、イーサネット ネットワークは最大 1500 バイトのデータを伝送するフレームを送信でき、X.25 ネットワークは 128 バイトのフレーム データ フィールド サイズを特徴とし、FDDI ネットワークはサイズ 4500 バイトのフレームを送信でき、その他のネットワークには独自の制限があります。 IP プロトコルは、フラグメンテーションにより、中間ネットワークの MTU を超える長さのデータグラムを送信できます。これは、「大きなパケット」を多数の部分 (フラグメント) に分割し、それぞれのサイズが中間ネットワークを満たすようにすることです。 。 すべてのフラグメントが中間ネットワークを介して送信された後、それらは受信ノードで IP プロトコル モジュールによって収集され、「ビッグ パケット」に戻されます。 パケットは受信者によってのみフラグメントから組み立てられ、中間ルーターによって組み立てられることはないことに注意してください。 ルーターはパケットを断片化することしかできず、再組み立てすることはできません。 これは、同じパケットの異なるフラグメントが必ずしも同じルータを通過するとは限らないためです。

異なるパケットのフラグメントを混同しないようにするために、識別フィールドが使用されます。このフィールドの値は、1 つのパケットのすべてのフラグメントで同じでなければならず、両方のパケットの有効期限が切れるまで、異なるパケットで繰り返されません。 パケットデータを分割する場合、最後のフラグメントを除くすべてのフラグメントのサイズが 8 バイトの倍数である必要があります。 これにより、ヘッダー内のフラグメント オフセット フィールドに割り当てるスペースを減らすことができます。

[その他のフラグメント] フィールドの 2 番目のビットが 1 に等しい場合、このフラグメントがパケットの最後ではないことを示します。 パケットがフラグメント化せずに送信される場合、「More flags」フラグは 0 に設定され、Fragment Offset フィールドには 0 ビットが埋められます。

Flags フィールドの最初のビット (フラグメント化しない) が 1 に等しい場合、パケットのフラグメント化は禁止されます。 このパケットが MTU が不十分なネットワーク経由で送信された場合、ルーターは強制的にパケットを破棄します (そして、これを ICMP 経由で送信者に報告します)。 このフラグは、受信者がフラグメントからパケットを再構築するための十分なリソースを持っていないことを送信者が知っている場合に使用されます。

すべての IP アドレスは、ネットワーク番号とネットワーク ノード番号 (ホスト番号) という 2 つの論理部分に分割できます。 IP アドレスのどの部分がネットワーク番号に属し、どの部分がホスト番号に属するかを判断するには、アドレスの最初のビットの値によって決まります。 また、IP アドレスの最初のビットは、特定の IP アドレスがどのクラスに属するかを決定するために使用されます。

この図は、さまざまなクラスの IP アドレスの構造を示しています。

アドレスが 0 で始まる場合、ネットワークはクラス A として分類され、ネットワーク番号が 1 バイトを占め、残りの 3 バイトがネットワーク内のノード番号として解釈されます。 クラス A ネットワークには 1 ~ 126 の範囲の番号があります。(番号 0 は使用されず、番号 127 は後述するように特別な目的のために予約されています)。クラス A ネットワークの数は少ないですが、その中のノード数は 2 に達する場合があります。 24、つまり 16,777,216 ノットです。

アドレスの最初の 2 ビットが 10 に等しい場合、ネットワークはクラス B に属します。クラス B ネットワークでは、16 ビット、つまり 2 バイトがネットワーク番号とノード番号に割り当てられます。 したがって、クラス B ネットワークは、最大ノード数が 2 16、つまり 65,536 ノードを持つ中規模のネットワークです。

アドレスがシーケンス 110 で始まる場合、これはクラス C ネットワークです。この場合、ネットワーク番号に 24 ビット、ノード番号に 8 ビットが割り当てられます。 このクラスのネットワークが最も一般的であり、ネットワーク内のノード数は 2 8、つまり 256 ノードに制限されています。

アドレスがシーケンス 1110 で始まる場合、それはクラス D アドレスであり、特別なマルチキャスト アドレスを示します。 パケットに宛先アドレスとしてクラス D アドレスが含まれている場合、このアドレスが割り当てられているすべてのノードはそのようなパケットを受信する必要があります。

アドレスがシーケンス 11110 で始まる場合、これはこのアドレスがクラス E に属することを意味します。このクラスのアドレスは将来の使用のために予約されています。

この表は、各ネットワーク クラスに対応するネットワーク番号の範囲と最大ノード数を示しています。

大規模ネットワークはクラス A アドレスを受け取り、中規模ネットワークはクラス B アドレスを受け取り、小規模ネットワークはクラス C アドレスを受け取ります。

IP アドレッシングでのマスクの使用

特定の範囲の IP アドレスを取得するために、企業は登録フォームに記入するよう求められ、そこには現在のコンピューター数とコンピューター数の増加予定が記載されており、その結果、その企業には次のクラスが与えられました。 IP アドレス: A、B、C、登録フォームで指定したデータに応じて。

IP アドレス範囲を発行するためのこのメカニズムは正常に機能しました。これは、当初、組織のコンピュータの数が少なく、それに応じてコンピュータの規模も小さかったためです。 コンピューターネットワーク。 しかし、インターネットのさらなる急速な発展により、 ネットワーク技術ここで説明した IP アドレス配布のアプローチでは、主にクラス「B」ネットワークに関連した障害が発生し始めました。 実際、コンピュータの数が数百 (たとえば 500) を超えない組織は、クラス "B" ネットワーク全体を登録する必要がありました (クラス "C" は 254 台のコンピュータのみであり、クラス "B" は 254 台のコンピュータのみを対象とするためです) 65534)。 そのせいで 利用可能なネットワーククラス「B」だけでは十分ではありませんでしたが、同時に広範囲の IP アドレスが無駄になりました。

IP アドレスをネットワーク番号 (NetID) とホスト番号 (HostID) に分割する従来の方式は、アドレスの最初の数ビットの値によって決定されるクラスの概念に基づいています。 アドレス 185.23.44.206 の最初のバイトが 128 ~ 191 の範囲にあるため、このアドレスはクラス B に属していると言えます。これは、ネットワーク番号が最初の 2 バイトに 2 つのゼロ バイトが追加されたものであることを意味します。 185.23.0.0、および番号ノード - 0.0.44.206。

ネットワーク番号とノード番号の間の境界をより柔軟に設定するために使用できる他の機能を使用したらどうなるでしょうか? マスクはそのようなサインとして現在広く使用されています。

マスク- これは、IP アドレスと組み合わせて使用​​される番号です。 バイナリ マスク エントリには、IP アドレスのネットワーク番号として解釈されるビットが含まれています。 ネットワーク番号はアドレスの不可欠な部分であるため、マスク内の番号も連続したシーケンスを表す必要があります。

標準ネットワーク クラスの場合、マスクは次の意味を持ちます。

  • クラス A - 11111111.00000000.00000000.00000000 (255.0.0.0);
  • クラス B - 11111111.11111111.00000000.00000000 (255.255.0.0);
  • クラス C - 11111111.11111111.11111111。 00000000 (255.255.255.0)。

各 IP アドレスにマスクを提供することで、アドレス クラスの概念を放棄し、アドレス指定システムをより柔軟にすることができます。 たとえば、上で説明したアドレス 185.23.44.206 がマスク 255.255.255.0 に関連付けられている場合、ネットワーク番号は、クラス システムで定義されている 185.23.0.0 ではなく、185.23.44.0 になります。

マスクを使用したネットワーク番号とノード番号の計算:

マスクでは、アドレスのバイトへの分割を繰り返すために、ネットワーク番号の境界を定義するシーケンス内の 1 の数が 8 の倍数である必要はありません。 たとえば、IP アドレス 129.64.134.5 に対して、マスク 255.255.128.0 がバイナリ形式で指定されているとします。

  • IP アドレス 129.64.134.5 ~ 10000001. 01000000.10000110。 00000101
  • マスク 255.255.128.0 - 11111111.11111111.10000000。 00000000

マスクを無視した場合、クラス システムに従って、アドレス 129.64.134.5 はクラス B に属します。これは、ネットワーク番号が最初の 2 バイト - 129.64.0.0、ノード番号が 0.0.134.5 であることを意味します。

マスクを使用してネットワーク番号の境界を決定する場合、マスク内の連続する 17 個の単位が IP アドレスに「重ね合わされて」(論理積)、その数値が 2 進数表現のネットワーク番号として決定されます。

または 10 進数表記 - ネットワーク番号は 129.64.128.0、ノード番号は 0.0.6.5 です。

と呼ばれるマスク表記法の短縮バージョンもあります。 接頭語または短いマスク。 特に、マスク 255.255.255.252 を持つネットワーク 80.255.147.32 は、80.255.147.32/30 と書くことができます。ここで、「/30」はマスク内のバイナリ単位の数、つまり 30 個のバイナリ単位を示します (左から数えて)。右に)。

わかりやすくするために、次の表にプレフィックスとマスクの対応を示します。

マスク メカニズムは IP ルーティングで広く普及しており、マスクはさまざまな目的に使用できます。 彼らの助けを借りて、管理者はサービス プロバイダーに依頼することなくネットワークを構築できます。 追加の番号ネットワーク。 同じメカニズムに基づいて、サービス プロバイダーは、いわゆる「」を導入することで、複数のネットワークのアドレス空間を組み合わせることができます。 接頭辞「ルーティング テーブルのサイズを削減し、それによってルーターのパフォーマンスを向上させるためです。 さらに、マスクをプレフィックスとして記述する方がはるかに短くなります。

特別な IP アドレス

IP プロトコルには、IP アドレスを異なる方法で解釈するためのいくつかの規則があります。

  • 0.0.0.0 - デフォルト ゲートウェイ アドレスを表します。つまり、 ローカル ネットワーク (ルーティング テーブル) で宛先が見つからなかった場合に情報パケットが送信されるコンピュータのアドレス。
  • 255.255.255.255 – ブロードキャスト アドレス。 このアドレスに送信されたメッセージは、メッセージの送信元であるコンピューターを含むローカル ネットワークのすべてのノードによって受信されます (他のローカル ネットワークには送信されません)。
  • 「ネットワーク番号」 「すべてゼロ」 – ネットワークアドレス (例: 192.168.10.0)。
  • 「すべてゼロ」 「ノード番号」 – このネットワーク内のノード (たとえば、0.0.0.23)。 ローカル ネットワーク内の特定のノードにメッセージを送信するために使用できます。
  • 宛先ノード番号フィールドに 1 だけが含まれている場合、そのようなアドレスを持つパケットは、指定されたネットワーク番号を持つすべてのネットワーク ノードに送信されます。 たとえば、アドレス 192.190.21.255 のパケットは、ネットワーク 192.190.21.0 上のすべてのノードに配信されます。 このタイプの配信はブロードキャスト メッセージと呼ばれます。 対処するときは、導入されている制限を考慮する必要があります。 特別な目的いくつかの IP アドレス。 したがって、ネットワーク番号もノード番号も、2 進数の 1 だけや 2 進数の 0 だけで構成することはできません。 したがって、 最高額各クラスのネットワークの表に示されているノード数は、実際には 2 減らす必要があります。たとえば、クラス C ネットワークでは、ノード番号に 8 ビットが割り当てられ、0 ~ 255 の 256 個の数値を設定できます。実際には、アドレス 0 と 255 には特別な目的があるため、ネットワーク クラス C のノードの最大数は 254 を超えることはできません。 同じ考察から、このクラス A アドレスのノード番号は 2 進数のみで構成されるため、エンド ノードは 98.255.255.255 のようなアドレスを持つことができないということになります。
  • IP アドレスには特別な意味があり、その最初のオクテットは 127.x.x.x です。 これは、プログラムをテストし、同じマシン内で対話を処理するために使用されます。 プログラムが IP アドレス 127.0.0.1 にデータを送信すると、「ループ」が形成されます。 データはネットワーク経由で送信されず、モジュールに返されます。 トップレベル受け取ったばかりのとおり。 したがって、IP ネットワークでは、127 で始まる IP アドレスをマシンに割り当てることは禁止されています。このアドレスはループバックと呼ばれます。 アドレス 127.0.0.0 を割り当てることができます。 内部ネットワークノード ルーティング モジュール、およびアドレス 127.0.0.1 - 内部ネットワーク上のこのモジュールのアドレス。 実際、ネットワーク アドレス 127.0.0.0 は、127.0.0.1 だけでなく、たとえば 127.0.0.3 のようにルーティング モジュールを指定する役割を果たします。

IP プロトコルには、データを完全にすべてのノードに配信する必要があるローカル ネットワークのリンク層プロトコルで使用されるようなブロードキャストの概念がありません。 制限付きブロードキャスト IP アドレスとブロードキャスト IP アドレスの両方にはインターネット伝播制限があり、パケットの送信元ホストが属するネットワーク、または宛先アドレスで指定された番号を持つネットワークに制限されます。 したがって、ルーターを使用してネットワークを部分に分割すると、複合ネットワークのすべてのネットワークのすべてのノードに同時にパケットをアドレス指定する方法がないため、ブロードキャスト ストームはネットワーク全体を構成する部分の 1 つの境界に局地化されます。

ローカルネットワークで使用されるIPアドレス

インターネット上で使用されるすべてのアドレスは登録する必要があり、これにより世界規模での一意性が保証されます。 これらのアドレスは、実際の IP アドレスまたはパブリック IP アドレスと呼ばれます。

インターネットに接続されていないローカル ネットワークの場合は、原理的にはあらゆるアドレスを使用できるため、IP アドレスの登録は当然必要ありません。 ただし、このようなネットワークを後でインターネットに接続するときに競合が発生する可能性を回避するために、ローカル ネットワーク上のいわゆるプライベート IP アドレスの以下の範囲のみを使用することをお勧めします (これらのアドレスはインターネット上には存在せず、そこでは使用できません)を表に示します。

IP(インターネット プロトコル) は、TCP/IP ファミリ (「スタック」) のネットワーク層プロトコルであるルーテッド ネットワーク プロトコルです。 IPv4 は RFC 791 (1981 年 9 月) に記載されています。

キーポイント:

    IP は TCP/IP スタックの主要なプロトコルであり、複合ネットワークのノード間のメッセージ配信の問題を解決します。

    IP はデータグラム プロトコルです。IP 経由で情報を送信する場合、各パケットはノードからノードに送信され、ノードで他のパケットとは独立して処理されます。

    IP はコネクションレス型プロトコルを指します。 IP は、あるネットワーク ノードから別のネットワーク ノードへのいわゆるパケットに分割されたデータの非保証配信に使用されます。 これは、このプロトコルのレベル (第 3 層) で、 ネットワークモデル OSI) は、受信者へのパケットの信頼性の高い配信を保証しません。 特に、パケットは、送信された順序から外れて到着したり、重複したり (同じパケットの 2 つのコピーが到着する場合。実際にはこれは非常にまれです)、破損したり (通常、破損したパケットは破棄されます)、またはまったく到着しない可能性があります。 エラーのないパケット配信の保証は、IP をトランスポートとして使用する、OSI ネットワーク モデルの上位 (トランスポート層) プロトコル (TCP ポートなど) によって提供されます。

    IP プロトコルはルーティングの原理を使用します。 IP ルーティング テーブルのタイプは特定のルーターの実装によって異なりますが、すべてのタイプのルーターには、ルーティングを実行するために必要なすべてのキー フィールドがあります。 ルーティング テーブル エントリを提供するソースがいくつかあります。

    • まず、初期化時 ソフトウェア TCP/IP スタックは、直接接続されたネットワークとデフォルト ルーターのエントリ、および 特別なアドレス 127.0.0.0と入力します。

      次に、管理者は、特定のルートまたはデフォルト ルーターに関する静的エントリを手動で入力します。

      3 番目に、ルーティング プロトコルは、利用可能なルートの動的レコードをテーブルに自動的に入力します。

    IP プロトコルを他のネットワーク プロトコルと区別する重要な特徴は、次のことを実行できることです。 動的パケットの断片化異なる MTU を持つネットワーク間で転送する場合。

IPパケットの構造

IP プロトコル パケットはヘッダーとデータ フィールドで構成されます。 最大パケット長は 65,535 バイトです。 ヘッダーは通常 20 バイトの長さで、送信者と受信者のネットワーク アドレス、フラグメンテーション パラメーター、パケットの有効期間、チェックサムなどに関する情報が含まれています。 IP パケットのデータ フィールドには、より高いレベルのメッセージが含まれています。

具体的な例を使用して、IP パケットの構造のフィールドを見てみましょう。

    ヘッダー長 (IHL) フィールド IP パケットの長さは 4 ビットで、32 ビット ワードで測定されたヘッダー長の値を指定します。 通常、IP パケット ヘッダーの長さは 20 バイト (32 ビット ワード 5 つ) ですが、オーバーヘッド情報の量が増加するにつれて、この長さは増加する可能性があります。 最大のヘッダーは 60 オクテットです。

    「サービスの種類」フィールド 1 バイトを占め、パケットの優先順位とルート選択基準のタイプを指定します。 このフィールドの最初の 3 ビットは、パケット優先度サブフィールド (Precedence) を形成します。 優先順位の範囲は、最低の 0 (通常のパケット) から最高の 7 (パケット) までです。 制御情報)。 ルーターとコンピューターはパケットの優先順位を考慮して、より重要なパケットを最初に処理できます。 Type of Service フィールドには、ルート選択基準を定義する 3 ビットも含まれています。 実際には、低遅延、高信頼性、高スループットの 3 つの選択肢から選択が行われます。 多くのネットワークでは、これらのパラメータの 1 つが改善されると、もう 1 つのパラメータが低下します。さらに、それぞれのパラメータを処理するには追加の計算コストが必要になります。 したがって、これら 3 つのルート選択基準のうち少なくとも 2 つを同時に設定することはほとんど意味がありません。 予約ビットは、 NULL値。 D (遅延) ビットが設定されている * は、配送遅延を最小限に抑えるためにルートを選択する必要があることを示します このパッケージの* T ビット - スループットを最大化します。 * R ビット - 配信の信頼性を最大化します。

    全長フィールド 2 バイトを占め、ヘッダーとデータ フィールドを考慮したパケットの合計長を意味します。 最大パケット長は、この値を定義するフィールドの幅によって制限され、65,535 バイトですが、ほとんどのコンピュータやネットワークはそのような大きなパケットを使用しません。 ネットワーク経由で送信される場合 さまざまな種類パケット長は、IP パケットを伝送する下位層プロトコル パケットの最大長を考慮して選択されます。 これらがイーサネット フレームの場合、次のパケット 最大長さ 1500 バイト、イーサネット フレームのデータ フィールドに収まります。 この規格では、すべてのホストが最大 576 バイトの長さのパケット (全体として到着するか断片で到着するかに関係なく) を受け入れる準備ができている必要があると規定しています。 経験則として、ホストは、受信ホストまたは中間ネットワークがそのサイズのパケットを処理できると確信している場合にのみ、576 バイトを超えるパケットを送信することが推奨されます。

    識別フィールド 2 バイトを要し、元のパケットを断片化して形成されたパケットを認識するために使用されます。 すべてのフラグメントは、このフィールドに同じ値を持つ必要があります。

    フラグフィールド 3 ビットを占有し、断片化関連の機能が含まれます: ビットを設定 DF (フラグメント化しない)ルーターがこのパケットを断片化するのを防ぎ、ビットが設定されます。 MF (その他のフラグメント)このパケットが中間 (最後ではない) フラグメントであることを示します。 残りのビットは予約されています。

    フラグメントオフセットフィールド 13 ビットを占め、元の断片化されたパケットの一般データ フィールドの先頭からの、このパケットのデータ フィールドのオフセットをバイト単位で指定します。 MTU値が異なるネットワーク間でパケットフラグメントを送信する際に、パケットのフラグメントを組み立て/分解するときに使用されます。 オフセットは 8 バイトの倍数である必要があります。

    生存時間フィールド 1 バイトを占め、パケットがネットワーク上を移動できる時間制限を示します。 特定のパケットの有効期間は秒単位で測定され、送信元によって設定されます。 ルーターやその他のネットワーク ノードでは、1 秒ごとに現在の有効期間から 1 が減算されます。 遅延時間が 1 秒未満の場合も 1 が減算されます。 最近のルーターは 1 秒を超えてパケットを処理することはほとんどないため、生存時間は、特定のパケットが宛先に到達するまでに通過できるノードの最大数と等しいと考えることができます。 パケットが受信者に到達する前に存続時間パラメータがゼロになると、パケットは破棄されます。 生涯は、時計仕掛けの自己破壊のメカニズムとみなすことができます。 このフィールドの値は、IP パケット ヘッダーが処理されるときに変化します。

    識別子 トップレベルプロトコル (プロトコル) 1 バイトを占め、パケットのデータ フィールドに配置された情報がどの上位レベル プロトコルに属しているかを示します (たとえば、これらは上位レベル プロトコルまたはルーティング プロトコルのセグメントである可能性があります)。 ID値 さまざまなプロトコルは、RFC 3232 - Assigned Numbers で提供されます。

    ヘッダーチェックサムは 2 バイトを必要とし、ヘッダーからのみ計算されます。 一部のヘッダー フィールドは、パケットがネットワークを通過するときに値を変更するため (生存時間など)、IP ヘッダーが処理されるたびにチェックサムがチェックされ、再計算されます。 チェックサム (16 ビット) は、すべての 16 ビットのヘッダー ワードの合計への加算として計算されます。 チェックサムを計算するとき、「チェックサム」フィールド自体の値はゼロに設定されます。 チェックサムが正しくない場合、エラーが検出されるとすぐにパケットは破棄されます。

    送信元IPアドレスフィールドそして

    宛先IPアドレス同じ長さ (32 ビット) と同じ構造を持っています。

    「IP オプション」フィールドはオプションであり、通常はネットワークをデバッグする場合にのみ使用されます。 オプション メカニズムは、特定の状況で必要な、または単に役立つ制御機能を提供しますが、通常の通信には必要ありません。 このフィールドはいくつかのサブフィールドで構成されており、各サブフィールドは 8 つの事前定義されたタイプのいずれかになります。 これらのサブフィールドでは、ルーターの正確なルートを指定したり、パケットが通過するルーターを登録したり、セキュリティ データやタイムスタンプを配置したりできます。 サブフィールドの数は任意であるため、パケット ヘッダーを 32 ビット境界に揃えるために、オプション フィールドの末尾に数バイトを追加する必要があります。

    フィールドの配置 (パディング) IP ヘッダーが 32 ビット境界で終わることを保証するために使用されます。 アライメントはゼロで行われます。

IP フラグメンテーション、MTU、MSS、および PMTUD

IP パケットの断片化: MTU、MSS、および PMTUD。 PMTUD (Path MTU Discovery) とパケットの断片化の問題 (ネットワーク MTU ping パケット)

MTU に問題があるときに ping が機能するのはなぜですか? ICMP リクエストおよび Relpy パケットのサイズは 32 ~ 64 バイトで、ping を受けたサーバーは、すべてのヘッダーとともに許容サイズ内に収まる非常に小さな情報を返します。

TCP ポート プロトコルを使用すると、双方が最大セグメント サイズ (MSS) 値をネゴシエートできます。 各側は、TCP パケット ヘッダーの OPTIONS フィールドで提案された MSS サイズを指定します。 2 つの値のうち小さい方が受け入れられます。 このネゴシエーションにより、遅延や伝送速度の低下につながるパケットがルーターやゲートウェイを通過する際の断片化と、その後のターゲット ホスト上での再組み立てが回避されます。

断片化には、データのブロック (パケット) が等しい部分に分割されることが含まれます。 したがって、断片化の次のステップは断片の組み立てです。 IP プロトコルでは、ルーターの入力ポートに到着するパケットのみの断片化が許可されます。 送信ノードでのメッセージの断片化とルーターでの動的メッセージの断片化を区別する必要があります。 実際、ほとんどすべてのプロトコル スタックには、アプリケーション レベルのメッセージをリンク レベルのフレームに収まる部分に断片化するプロトコルが含まれています。 たとえば、TCP/IP スタックでは、このタスクは TCP トランスポート層プロトコルによって解決されます。 このプロトコルは、アプリケーション層から渡されたバイト ストリームを、必要なサイズのメッセージ (たとえば、イーサネット プロトコルの場合は 1460 バイト) に分割できます。

したがって、送信ノードの IP プロトコルは、パケットのフラグメンテーション機能を使用しません。

ただし、パケット サイズが大きすぎるパケットを次のネットワークに転送する必要がある場合は、IP フラグメンテーションが必要になります。

IP 層の機能には、特定のタイプのネットワーク コンポーネントにとって長すぎるメッセージを短いパケットに分割し、その後のフラグメントを元のメッセージに組み立てるために必要な対応するサービス フィールドを作成することが含まれます。

ほとんどのタイプのローカルおよび グローバルネットワーク MTU 値、つまり IP プロトコルがパケットをカプセル化する必要があるデータ フィールドの最大サイズは大きく異なります。

イーサネット ネットワークの MTU は 1500 バイト、FDDI ネットワークの MTU は 4096 バイト、X.25 ネットワークはほとんどの場合、MTU 128 バイトで動作します。

そこで、IP レベルでのパケットのフラグメンテーションの必要性について説明しました。 次に、IP パケットのフラグメンテーション自体のプロセスに移りましょう。

レッスンの前のセクションですでにわかったように、IP パケットはヘッダーの Flags フィールドで断片化不可能としてマークできます。 このようにマークされたパケットは、いかなる状況でも IP モジュールによってフラグメント化できません。

断片化不可能としてマークされたパケットが断片化せずに受信者に到達できない場合でも、そのパケットは単純に破棄され、対応するメッセージが送信ノードに送信されます。

IP プロトコルを使用すると、サブネットは、IP プロトコルには認識できない独自のフラグメンテーション機能を使用できます。

たとえば、ATM テクノロジは、セグメンテーション層を使用して着信 IP パケットを 48 バイトのデータ フィールドを持つセルに分割し、ネットワークから出るときにセルを元のパケットに再組み立てします。 ただし、ATM などのテクノロジーは原則ではなく例外です。

IP プロトコルのフラグメンテーションと再組み立ての手順は、パケットを事実上任意の数の部分に分割し、後で再組み立てできるように設計されています。

異なるタイプのフラグメントを混同しないように、IP パケット ヘッダーでは識別フィールドが使用されます。

パケットを送信する IP プロトコル モジュールは、特定の送信側と受信側のペアに対して一意である必要がある値に ID フィールドを設定します。 さらに、送信者は、パケットがネットワーク上でアクティブになれる時間をパケット ヘッダーに設定します。

フラグメント オフセット フィールドは、元のパケット内のフラグメントの位置を受信者に伝えます。 フラグメントのオフセットと長さによって、そのフラグメントによって伝送される元のパケットの部分が決まります。 「その他のフラグメント」フラグは、最後のフラグメントの出現を示します。 フラグメント化されていないパケットを送信する IP プロトコル モジュールは、「モア フラグメント」フラグとフラグメント オフセットを 0 に設定します。

これらのフィールドはすべて、パッケージを構築するのに十分な情報を提供します。

したがって、大きなパケットを断片化するために、たとえばルータにインストールされた IP プロトコル モジュールはいくつかの新しいパケットを作成し、大きなパケットの IP ヘッダー フィールドの内容をすべての新しいパケットの IP ヘッダーにコピーします。 古いパケットのデータは適切な数の部分に分割されます。各部分のサイズは、最後の部分を除いて 8 バイトの倍数でなければなりません。

データの最後の部分のサイズは、結果の剰余と等しくなります。

受信した各データは新しいパケットに入れられます。

フラグメンテーションが発生すると、一部の IP ヘッダー パラメーターはすべてのフラグメントのヘッダーにコピーされますが、その他のパラメーターは最初のフラグメントのヘッダーにのみ残ります。

フラグメント化プロセスでは、パラメータ フィールドにあるデータ値とヘッダー チェックサム値が変更され、「モア フラグメント」フラグとフラグメント オフセットの値が変更され、IP ヘッダーの長さとパケット全体の長さが変更されます。 。

各パケットのヘッダーには「フラグメント オフセット」フィールドに対応する値が含まれており、各パケットの長さは合計パケット長フィールドに配置されます。

したがって、最初のフラグメントの「フラグメント オフセット」フィールドの値はゼロになります。 最後のパケットを除くすべてのパケットでは、「モア フラグメント」フラグが 1 に設定され、最後のフラグメントでは 0 に設定されます。

次に、パッケージ フラグメントを構築するプロセスを見てみましょう。

パケット フラグメントを組み立てるために、IP プロトコル モジュールは、識別子、送信元、宛先、およびプロトコル フィールドに同じ値を持つ IP パケットを連結します。

したがって、送信者は、特定の送信者と受信者のペアに対して一意になるような識別子を選択する必要があります。 このプロトコルのパケット (またはそのフラグメント) が複合 IP ネットワーク上に存在する限り。

パケットを送信する IP プロトコル モジュールには識別子テーブルが必要であることは明らかです。識別子テーブルでは、各エントリが通信された個々の受信者に関連付けられ、IP ネットワーク上のパケットの最大存続期間の最後の値が示されます。

ただし、識別子フィールドでは 65,536 の異なる値が許可されるため、ホストによっては、受信者のアドレスに依存しない一意の識別子を単に使用する場合もあります。

場合によっては、IP パケット識別子は IP よりも上位のプロトコルによって選択されることが適切です。

マージ手順は、各フラグメントのデータを、パケット ヘッダーの「フラグメント オフセット」フィールドに指定された位置に配置することで構成されます。

各 IP モジュールは、さらに断片化することなく 68 バイトのパケットを送信できなければなりません。 これは、IP ヘッダーが最大 60 バイトであり、最小データ フラグメントが 8 バイトであるためです。 各受信者は、576 バイトのパケットを単一の部分として、または再組み立て可能な部分として受信できなければなりません。 Don't Fragment (DF) フラグ ビットが設定されている場合、パケットが失われる場合でも、このパケットのフラグメンテーションは禁止されます。

この機能は、受信側ホストにフラグメントを組み立てるための十分なリソースがない場合に、フラグメンテーションを防ぐために使用できます。

多くの説明を行った後、IP パケットのフラグメンテーションについてこれまで学んだ内容を例を使って強化しましょう。

この図に示す例を使用して、パケット サイズが異なるネットワーク間で IP パケットが送信される場合の IP パケットの断片化のプロセスを考えてみましょう。

チャネル層と物理層は、それぞれ K1、F1、K2、F2 として指定されます。

コンピュータ 1 が、FDDI ネットワークなど、4096 バイトの MTU を持つネットワークに接続されているとします。

トランスポート層からの 5600 バイトのメッセージがコンピュータ 1 の IP 層に到着すると、IP プロトコルはそれを 2 つの IP パケットに分割します。 最初のパケットで、フラグメンテーション フラグを設定し、それをパケットに割り当てます。 一意の識別子、たとえば 486。

最初のパケットのオフセット フィールド値は 0 で、2 番目のパケットでは 2800 です。

2 番目のパケットのフラグメンテーション フラグは 0 で、これがパケットの最後のフラグメントであることを示します。

IP パケットの合計サイズは 2800 プラス 20 (IP ヘッダー サイズ)、つまり 2820 バイトで、FDDI フレームのデータ フィールドに収まります。

ネットワーク インターフェイスはフレームを次のルーターに送信します。

フレームがルータのネットワーク インターフェイス レベル (K1 および F1) を通過し、FDDI ヘッダーから解放されると、IP モジュールは ネットワークアドレス到着した 2 つのパケットをネットワーク 2 に送信することを指定します。ネットワーク 2 はイーサネット ネットワークであり、MTU 値は 1500 です。

したがって、到着する IP パケットは断片化する必要があります。

ルーターは各パケットからデータ フィールドを抽出し、各部分がイーサネット フレームのデータ フィールドに収まるようにそれをさらに半分に分割します。

次に、新しい IP パケットが形成されます。各パケットの長さは 1400 + 20 = 1420 バイトであり、1500 バイト未満であるため、通常はイーサネット フレームのデータ フィールドに収まります。

その結果、共通の識別子 486 を持つ 4 つの IP パケットがイーサネット ネットワークを介してコンピュータ 2 に到着します。

コンピュータ 2 で実行されている IP プロトコルは、元のメッセージを正しく再構築する必要があります。

パケットが送信時とは異なる順序で到着した場合、オフセットはパケットが結合された正しい順序を示します。

IP ルーターは、途中に集約を許可するネットワークがある場合でも、パケット フラグメントを大きなパケットに集約しないことに注意してください。 これは、個々のメッセージのフラグメントが異なるルートを介してインターネット上を移動する可能性があるため、すべてのフラグメントがそのパスに沿って中間ルーターを通過するという保証がないためです。

パケットの最初のフラグメントが到着すると、宛先ノードはタイマーを開始し、このパケットの残りのフラグメントの到着までの最大許容待機時間を決定します。

タイマーは次の 2 つの最大値に設定されます。 設定時間受信したフラグメントで指定された期待値と有効期間。

したがって、 初期インストールタイマーはc6opk時の待ち時間の下限値です。 最後のフラグメントが到着する前にタイマーが期限切れになると、そのパケットに関連付けられたすべてのアセンブリ リソースが解放され、その時点までに受信したすべてのパケット フラグメントが破棄され、元のパケットを送信したノードにエラー メッセージが送信されます。

TCP/IP プロトコル スタックのトランスポート手段の基礎は、インターネット プロトコル (IP) です。 IP プロトコルの主な機能は次のとおりです。

  • さまざまな種類のアドレス情報を統一された形でネットワーク間で転送し、
  • 異なるネットワーク間でパケットが送信されるときのパケットの組み立てと分解 最大値パッケージの長さ。

IPパケットフォーマット

IP パケットはヘッダーとデータ フィールドで構成されます。 パケット ヘッダーには次のフィールドがあります。

  • バージョン番号 (VERS) フィールドは、IP プロトコルのバージョンを示します。 現在、バージョン 4 が広く使用されており、IPng (IP Next Generation) とも呼ばれるバージョン 6 への移行の準備が進められています。
  • IP パケットのヘッダ長 (HLEN) フィールドは 4 ビット長で、32 ビット ワードで測定されたヘッダ長を示します。 通常、ヘッダーの長さは 20 バイト (32 ビット ワード 5 つ) ですが、オーバーヘッド情報の量が増えると、IP OPTIONS フィールドで追加のバイトを使用してこの長さを増やすことができます。
  • SERVICE TYPE フィールドは 1 バイトを占め、パケットの優先順位とルート選択基準のタイプを指定します。 このフィールドの最初の 3 ビットは、パケット優先度サブフィールド (PRECEDENCE) を形成します。 優先度の範囲は 0 (通常のパケット) から 7 (制御情報パケット) までです。 ルーターとコンピューターはパケットの優先順位を考慮して、より重要なパケットを最初に処理できます。 Service Type フィールドには、ルート選択基準を定義する 3 ビットも含まれています。 D (遅延) ビット セットは、特定のパケットの配信遅延を最小限に抑えるためにルートを選択する必要があることを示し、T ビットはスループットを最大化するために、R ビットは配信の信頼性を最大化するために選択する必要があります。
  • TOTAL LENGTH フィールドは 2 バイトで、ヘッダー フィールドとデータ フィールドを含むパケットの全長を示します。
  • パケット識別子フィールド (IDENTIFICATION) は 2 バイトを占め、元のパケットの断片化によって形成されたパケットを認識するために使用されます。 すべてのフラグメントは、このフィールドに同じ値を持つ必要があります。
  • Flags フィールド (FLAGS) は 3 ビットを占め、パケットの断片化の可能性 (Do not Fragment - DF ビットが設定されており、ルーターによるこのパケットの断片化が禁止されています) と、このパケットが中間パケットであるかどうかを示します。元のパケットの最後のフラグメント (More ビットが設定されている)、パッケージが中間フラグメントを転送することを示します。
  • FRAGMENT OFFSET フィールドは 13 ビット長で、元の断片化されたパケットの一般データ フィールドの先頭からのこのパケットのデータ フィールドのオフセットをバイト単位で示すために使用されます。 最大パケット長の値が異なるネットワーク間でパケットフラグメントを送信する際に、パケットフラグメントを組み立て/分解するときに使用されます。
  • TIME TO LIVE フィールドは 1 バイトを占め、パケットがネットワーク上を移動できる時間制限を指定します。 このパケットの有効期間は秒単位で測定され、IP プロトコルを使用して送信元によって設定されます。 ゲートウェイおよび他のネットワーク ノードでは、1 秒ごとに現在の有効期間から 1 が減算されます。 また、トランジット送信ごとに 1 つ減算されます (1 秒が経過していない場合でも)。 有効期限が切れると、パッケージはキャンセルされます。
  • 上位レベル プロトコル識別子 (PROTOCOL) は 1 バイトを占め、パケットがどの上位レベル プロトコルに属しているかを示します (たとえば、TCP、UDP、RIP など)。
  • チェックサム (HEADER CHECKSUM) は 2 バイトを要し、ヘッダー全体にわたって計算されます。
  • SOURCE IP ADDRESS フィールドと DESTINATION IP ADDRESS フィールドは同じ長さ (32 ビット) で、同じ構造です。
  • Reserve (IP OPTIONS) フィールドはオプションであり、通常はネットワークをデバッグする場合にのみ使用されます。 このフィールドはいくつかのサブフィールドで構成されており、各サブフィールドは 8 つの事前定義されたタイプのいずれかになります。 これらのサブフィールドでは、ルーターの正確なルートを指定したり、パケットが通過するルーターを登録したり、セキュリティ データやタイムスタンプを配置したりできます。 サブフィールドの数は任意であるため、パケット ヘッダーを 32 ビット境界に揃えるために、予約フィールドの末尾に数バイトを追加する必要があります。

パケット データ フィールドの最大長は、この値を決定するフィールドの幅によって制限され、65535 バイトですが、さまざまな種類のネットワーク上で送信される場合、パケット長は下位フィールドの最大長を考慮して選択されます。 IP パケットを伝送するレベルのプロトコル パケット。 これらがイーサネット フレームの場合、イーサネット フレームのデータ フィールドに収まる最大長 1500 バイトのパケットが選択されます。

断片化管理

ネットワーク層を使用してパケットを送信するトランスポート層プロトコル (TCP または UDP プロトコル) は、IP パケットの最大データ フィールド サイズを 65535 と見なすため、その長さのメッセージをインターネット経由で転送するために渡すことができます。 IP 層の機能には、特定のタイプのネットワーク コンポーネントにとって長すぎるメッセージを短いパケットに分割し、その後のフラグメントを元のメッセージに組み立てるために必要な対応するサービス フィールドを作成することが含まれます。

ほとんどの種類のローカル ネットワークおよびグローバル ネットワークでは、IP プロトコルがパケットをカプセル化する必要があるフレームまたはパケットのデータ フィールドの最大サイズなどの概念が定義されています。 この値は通常、最大輸送単位と呼ばれます。 最大転送単位、MTU。 イーサネット ネットワークの MTU は 1500 バイト、FDDI ネットワークの MTU は 4096 バイト、X.25 ネットワークはほとんどの場合、MTU 128 バイトで動作します。

ホストとルーターでパケットを断片化する IP プロトコルの動作を図 4.1 に示します。

コンピューター 1 が、FDDI ネットワークなど、4096 バイトの MTU を持つネットワークに接続されているとします。 サイズが 5600 バイトのトランスポート層からのメッセージがコンピューター 1 の IP 層に到着すると、IP プロトコルはメッセージを 2 つの IP パケットに分割し、最初のパケットに断片化フラグを設定して、そのパケットに一意の識別子を割り当てます。 486. 最初のパケットでは、オフセット フィールドの値は 0、2 番目では 2800 です。2 番目のパケットのフラグメンテーション符号は 0 で、これがパケットの最後のフラグメントであることを示します。 IP パケットの合計サイズは 2800+20 (IP ヘッダー サイズ)、つまり 2820 バイトで、FDDI フレームのデータ フィールドに収まります。

米。 4.1. 異なるネットワーク間で送信される場合の IP パケットの断片化
最大パケットサイズ。 K1 および F1 チャネルとネットワーク 1 の物理層、
K2 および F2 リンクとネットワーク 2 の物理層

ルーターは、ネットワーク アドレスから、到着した 2 つのパケットを、MTU 値が 1500 と低いネットワーク 2 に転送する必要があることを認識します。これは、おそらくイーサネット ネットワークです。 ルーターは各 FDDI パケットからトランスポート メッセージ フラグメントを抽出し、各部分がイーサネット フレームのデータ フィールドに収まるようにそれをさらに半分に分割します。 次に、新しい IP パケットが形成されます。各パケットの長さは 1400 + 20 = 1420 バイトであり、1500 バイト未満であるため、通常はイーサネット フレームのデータ フィールドに収まります。

その結果、共通の識別子 486 を持つ 4 つの IP パケットがイーサネット ネットワーク経由でコンピュータ 2 に到着します。これにより、コンピュータ 2 で実行されている IP プロトコルが元のメッセージを正しく組み立てることができます。 パケットが送信時とは異なる順序で到着した場合、オフセットはパケットが結合された正しい順序を示します。

IP ルーターは、途中に集約を許可するネットワークがある場合でも、パケット フラグメントを大きなパケットに集約しないことに注意してください。 これは、個々のメッセージのフラグメントが異なるルートを介してインターネット上を移動する可能性があるため、すべてのフラグメントがそのパスに沿って中間ルーターを通過するという保証がないためです。

パケットの最初のフラグメントが到着すると、宛先ノードは、このパケットの残りのフラグメントの到着までの最大許容待ち時間を決定するタイマーを開始します。 最後のフラグメントが到着する前にタイマーが期限切れになると、その時点までに受信したすべてのパケット フラグメントが破棄され、ICMP プロトコルを使用して元のパケットを送信したホストにエラー メッセージが送信されます。

IPアドレスを使用したルーティング

ここで、IP ネットワークにおいて、ネットワーク間でパケットを送信する経路がどのような原理に基づいて選択されるかを考えてみましょう。

まず、ルーターだけでなくエンドノード (コンピューター) もルートの選択に参加する必要があるという事実に注意する必要があります。 図 4.2 に示す例は、この必要性を示しています。 ここでは、ローカル ネットワーク上に複数のルーターがあり、コンピューターはどのルーターにパケットを送信するかを選択する必要があります。

米。 4.2. エンドノードによるルーター選択

ルートの長さは、コンピュータがドイツにあるサーバーにパケットを転送するためにどのルーターを選択するかによって大きく異なります。たとえば、ルーター 1 にコペンハーゲンのルーターへの専用回線があり、ルーター 2 に衛星リンクが接続されている場合です。東京へ。

TCP/IP スタックでは、ルーターとエンドノードは、いわゆるルーティング テーブルに基づいて、パケットを宛先ノードに正常に配信するために誰にパケットを渡すかを決定します。

次の表は、ネットワーク IP アドレスを使用したルート テーブルの一般的な例です。

ネットワークアドレス
予定
次のルータアドレス週末番号
ポート
までの距離
宛先ネットワーク
56.0.0.0 198.21.17.7 1 20
56.0.0.0 213.34.12.4. 2 130
116.0.0.0 213.34.12.4 2 1450
129.13.0.0 198.21.17.6 1 50
198.21.17.0 - 2 0
213. 34.12.0 - 1 0
デフォルト198.21.17.7 1 -

この表の列の 「宛先ネットワークアドレス」このルータがパケットを送信できるすべてのネットワークのアドレスが示されます。 TCP/IP スタックは、いわゆる ワンステップアプローチパケット転送ルート (ネクストホップ ルーティング) を最適化する - 各ルーターとエンド ノードは、1 つのパケット送信ステップのみの選択に参加します。 したがって、ルーティング テーブルの各行は、パケットが通過する必要があるルーターの一連の IP アドレスとしてルート全体を示すのではなく、パケットが送信される必要がある次のルーターのアドレスである 1 つの IP アドレスのみを示します。 パケットとともに、次のルーティング ホップを選択する責任が次のルーターに移されます。 ルーティングへの 1 ホップ アプローチは、ルート選択問題に対する分散ソリューションを意味します。 これにより、パケットのパスに沿った中継ルーターの最大数の制限がなくなりました。

(ワンホップ アプローチの代替方法は、パケットがパス上で通過する必要があるルーターのシーケンス全体をパケット内で指定することです。このアプローチはソース ルーティングと呼ばれます。この場合、ルートの選択はエンドによって行われます。ソース ルーティング アルゴリズムは、IP ネットワークではデバッグ時にのみ使用されます。ルートはパケットの Reserve (IP OPTIONS) フィールドで指定されます。)

ルート テーブルに同じ宛先ネットワーク アドレスに対応する行が複数ある場合、パケットを送信するかどうかを決定する際に、「宛先ネットワークまでの距離」フィールドの値が最も小さい行が使用されます。

この場合、距離は、ネットワーク パケットで指定されたサービス クラスに従って使用されるメトリックとして理解されます。 これは、特定のルート内の中継ルーターの数 (ホップからのホップ数)、パケットが通信回線に沿って移動するのにかかる時間、通信回線の信頼性、または通信回線の品質を反映する別の値である可能性があります。特定のサービス クラスに関連する特定のルート。 ルーターが複数のクラスのパケット サービスをサポートしている場合、ルート テーブルがコンパイルされ、サービスのタイプ (ルート選択基準) ごとに個別に適用されます。

パケットを次のルーターに転送するには、そのローカル アドレスの知識が必要ですが、TCP/IP スタックでは、ルーティング テーブル内の IP アドレスのみを使用してパケットを保存するのが一般的です。 ユニバーサルフォーマット、インターネットに含まれるネットワークの種類には依存しません。 既知の IP アドレスからローカル アドレスを検索するには、ARP プロトコルを使用する必要があります。

ルーターと同様に、エンド ノードは統一フォーマットのルート テーブルを自由に持ち、そのデータに基づいて、どのルーターがネットワーク N にパケットを送信する必要があるかを決定します。コンピュータは、このパケットが送信する必要があるかどうかを決定します。パケットの宛先ネットワーク アドレスが自分のネットワークのアドレスと異なることがわかった場合、ルーティングはまったく行われません (各コンピュータを構成するとき、管理者はその IP アドレス、またはコンピュータが複数のネットワークに同時に接続されている場合は複数の IP アドレスを割り当てます)。 コンピュータが次のルーターを選択すると、そのルーターのアドレスのキャッシュ テーブルを調べます。 ARPプロトコルそしておそらく、次のルータの IP アドレスとその MAC アドレスの間に対応関係があることがわかります。 そうでない場合は、ARP 要求がローカル ネットワーク上でブロードキャストされ、ARP 応答からローカル アドレスが抽出されます。

次にコンピュータは、選択したポートで使用されるプロトコル用のフレーム (イーサネット フレームなど) を生成し、その中にルータの MAC アドレスを配置します。 ルーターはイーサネット フレームを受信し、そこから IP パケットを抽出し、ルーティング テーブルを検索して次のルーターを見つけます。 その際、エンドノードと同じアクションを実行します。

ワンホップ ルーティングにはもう 1 つの利点があります。通常、ルーティング テーブルの最後の行を宛先ネットワーク番号として占める、いわゆるデフォルト ルートを使用することで、エンド ノードとルーターのルーティング テーブルのサイズを削減できます。 ルーティング テーブルにそのようなエントリがある場合、ルーティング テーブルにないネットワーク番号を持つすべてのパケットは、その行で指定されたルーターに送信されます。 デフォルト。 したがって、ルーターは多くの場合、インターネット ネットワークに関する限られた情報をテーブルに保存し、他のネットワークへのパケットをデフォルトのポートとルーターに転送します。 デフォルト ルーターはパケットをバックボーンに転送すると想定されており、バックボーンに接続されているルーターはインターネットの構成を完全に知っています。

エンドノードは特にデフォルトのルーティング手法を使用する可能性が高くなります。 一般に自由に使えるルーティング テーブルもありますが、ルーティングはコンピュータの主なアクティビティではないため、そのサイズは通常は重要ではありません。 IP 概念におけるパケット ルーティングの主な役割は当然ながらルーターに割り当てられ、ルーターはエンド ノードよりもはるかに完全なルーティング テーブルを持たなければなりません。 多くの場合、エンド ノードはルーティング テーブルをまったく使用せずに動作し、デフォルト ルーターの IP アドレスしか知りません。 ローカル ネットワーク上にルーターが 1 台ある場合、このオプションはすべてのエンド ノードで使用できる唯一のオプションです。 ただし、ローカル ネットワーク上に複数のルーターがある場合でも、エンド ノードがルーターの選択に問題に直面した場合、コンピュータではルーティング テーブルのサイズを削減するためにデフォルト ルートの設定がよく使用されます。

コンピュータを大規模なルーティング テーブルを維持する必要性から解放するもう 1 つの方法は、一部のルーティング テーブルに関する合理的なルートに関する情報をルーターから受け取ることです。 特定のネットワーク ICMP プロトコルを使用します。

デフォルト ルートに加えて、ルーティング テーブルには 2 種類の特別なエントリが存在する場合があります。1 つはホスト固有のルートに関するエントリ、もう 1 つはルータ ポートに直接接続されているネットワークのアドレスに関するエントリです。

ホスト固有のルートには、ネットワーク番号の代わりに完全な IP アドレスが含まれます。つまり、ネットワーク番号フィールドだけでなくホスト番号フィールドにもゼロ以外の情報を持つアドレスが含まれます。 このようなエンド ノードの場合、そのエンド ノードが属するネットワーク内の他のすべてのノードとは異なるルートを選択する必要があると想定されます。 テーブルにネットワーク全体のパケット転送に関する異なるレコードが含まれている場合 N とその 別個のノード、アドレス N,D を持つ、ノード N,D 宛てのパケットが到着すると、ルータは N,D のエントリを優先します。

ルーターに直接接続されているネットワークのルーティング テーブルのエントリの [宛先ネットワークまでの距離] フィールドにはゼロが含まれています。

ルートを選択する際のルーターとエンドノードの動作のもう 1 つの違いは、ルーティング テーブルの構築方法です。 通常、ルーターがサービス情報を交換することによって自動的にルーティング テーブルを作成する場合、エンド ノードのルーティング テーブルは原則として管理者によって手動で作成され、ディスク上に永続的なファイルとして保存されます。

ワンホップルーティング用のテーブルを構築するためのさまざまなアルゴリズムがあります。 それらは 3 つのクラスに分類できます。

  • 固定ルーティングアルゴリズム、
  • シンプルなルーティングアルゴリズム、
  • 適応型ルーティング アルゴリズム。

ルーティング テーブルの構築に使用されるアルゴリズムに関係なく、作業結果は単一の形式になります。 このため、同じネットワーク内では、異なるノードが独自のアルゴリズムに従ってルーティング テーブルを構築し、これらのテーブルの形式が固定されているため、欠落したデータを相互に交換できます。 したがって、適応ルーティング アルゴリズムを使用するルーターは、固定ルーティング アルゴリズムを使用するエンド ノードに、エンド ノードが何も知らないネットワークへのパス情報を提供できます。

固定ルーティング

このアルゴリズムは、単純な接続トポロジのネットワークで使用され、ネットワーク管理者によるルーティング テーブルの手動コンパイルに基づいています。 このアルゴリズムは高速道路でも効果的に機能することがよくあります 大規模なネットワーク、高速道路自体は明らかな単純な構造をしている可能性があるため、 最良の方法パケットはバックボーンに接続されたサブネットにルーティングされます。

宛先ごとに 1 つのパスが指定される単一ルート テーブルと、宛先ごとに複数の代替パスを定義するマルチルート テーブルがあります。 マルチルート テーブルを使用する場合、そのうちの 1 つを選択するためのルールを指定する必要があります。 ほとんどの場合、1 つのパスがメイン パスで、残りはバックアップ パスです。

シンプルなルーティング

単純なルーティング アルゴリズムは 3 つのサブクラスに分割されます。

  • ランダム ルーティング - パケットは元の方向以外のランダムな方向に送信されます。
  • フラッド ルーティング - パケットは、元の方向を除くすべての方向に送信されます (配信アドレスが不明なパケット用のブリッジで使用されます)。
  • 以前の経験によるルーティング - ルート テーブルは、ルーターを通過するパケットに含まれるデータに基づいてコンパイルされます。 これはまさに透過的なブリッジの仕組みであり、ネットワーク セグメントに含まれるノードのアドレスに関する情報を収集します。 このルーティング方法は、ネットワーク トポロジの変化に適応するのが遅くなります。

適応型ルーティング

これは、最新のネットワークのルーターで使用される主なタイプのルーティング アルゴリズムです。 複雑なトポロジ。 適応ルーティングは、ルーターがインターネット上で利用可能なネットワークおよびルーター間の接続に関する特別なトポロジ情報を定期的に交換するという事実に基づいています。 通常、リンクのトポロジだけでなく、リンクの容量と状態も考慮されます。

アダプティブ プロトコルにより、すべてのルーターがネットワーク内の接続のトポロジに関する情報を収集し、接続構成のすべての変更を迅速に処理できるようになります。 これらのプロトコルには分散型の性質があり、それはネットワーク内にトポロジ情報を収集して要約する専用のルータが存在しないという事実に表れています。この作業はすべてのルータに分散されます。

IPプロトコルを使用したノード対話の例

図 4.3 に示すインターネットの例を使用して、コンピューターがルーターを介してどのように対話し、宛先コンピューターにパケットを配信するかを見てみましょう。

米。 4.3. インターネットを介したコンピュータ対話の例

与えられた例では、IP アドレス 194.87.23.0 (クラス C アドレス) を持つイーサネット ネットワーク上にあるコンピューター cit.dol.ru のユーザーが、 FTPプロトコルコンピューター s1.msk.su を使用して、 ネットワークに属している IP アドレス 142.06.0.0 (クラス B アドレス) のイーサネット。 コンピュータ cit.dol.ru の IP アドレスは 194.87.23.1.17 で、コンピュータ s1.msk.su の IP アドレスは 142.06.13.14 です。

1. コンピュータ cit.dol.ru のユーザーは、コンピュータ s1.msk.su のシンボリック名は知っていますが、その IP アドレスは知らないため、次のコマンドを入力します。

> ftp s1.msk.su

FTP セッションを組織します。

コンピュータ cit.dol.ru には、割り当てられたタスクを実行できるように、TCP/IP スタック用にいくつかのパラメータが設定されている必要があります。

これらの設定には、自分の IP アドレス、DNS サーバーの IP アドレス、およびデフォルトのルーターの IP アドレスが含まれている必要があります。 コンピューター cit.dol.ru が属するイーサネット ネットワークにはルーターが 1 台だけ接続されているため、このネットワークのエンド ノードにはルーティング テーブルは必要ありません。デフォルト ルーターの IP アドレスがわかれば十分です。 この例では、194.87.23.1 です。

ユーザーが入っているので、 FTPコマンド通信するホストの IP アドレスが指定されていない場合は、TCP/IP スタックがそれを自身で決定する必要があります。 彼は次のようなリクエストを行うことができます DNSサーバー通常、各コンピュータはまず、シンボル名と IP アドレスの独自のテーブルを調べます。 このようなテーブルは、ほとんどの場合、単純な構造のテキスト ファイルとして保存されます。各行には 1 つのシンボル名とその IP アドレスのレコードが含まれます。 Unix OS では、このようなファイルは伝統的に HOSTS と呼ばれています。

142.06.13.14 s1.msk.su。

したがって、名前解決はローカルで実行され、IP プロトコルはコンピュータ s1.msk.su と通信するための宛先アドレス 142.06.13.14 を持つ IP パケットを生成できるようになります。

3. コンピュータ cit.dol.ru の IP プロトコルは、アドレス 142.06.13.14 にパケットをルーティングする必要があるかどうかを確認します。 宛先ネットワークアドレスは 142.06.0.0、コンピュータが所属するネットワークアドレスは 194.87.23.0 なのでルーティングが必要です。

4. コンピュータ cit.dol.ru はイーサネット フレームの形成を開始し、IP アドレス 194.87.23.1 のデフォルト ルータに IP パケットを送信します。 これを行うには、ネットワークに接続されているルーター ポートの MAC アドレスが必要です。 このアドレスは、コンピュータの ARP キャッシュ テーブルにすでに存在している可能性が高くなります。 最後に電源を入れた状態他のネットワーク上のコンピュータとデータを交換します。 この例では、このアドレスがキャッシュ メモリ内にあるとします。 ルーターとそのポートの番号に従って、これを MAC 11 と表記します。

5. その結果、コンピューター cit.dol.ru は、次のフィールドを含むイーサネット フレームをローカル ネットワーク経由で送信します。

DA(イーサネット)... 宛先IP... ...
マス11 142.06.13.14

6. このポートの MAC ノードは MAC アドレス 11 を認識するため、フレームはイーサネット プロトコルに従ってルータ 1 のポート 1 で受信されます。 イーサネット プロトコルは、このフレームから IP パケットを抽出し、IP プロトコルを実装するルーター ソフトウェアに渡します。 IP プロトコルはパケットから宛先アドレスを抽出し、そのルーティング テーブル エントリを調べます。 ルーター 1 のルーティング テーブルにエントリを持たせます。

142.06.0.0 135.12.0.11 2 1,

これは、パケットがネットワーク 142.06 宛てであることを示します。 0.0 は、ルーター 1 のポート 2 と同じネットワークに接続されているルーター 135.12.0.11 に送信される必要があります。

7. ルータ 1 はポート 2 のパラメータを調べ、それが FDDI ネットワークに接続されていることを確認します。 なぜなら FDDIネットワーク最大トランスポート MTU 値がイーサネット ネットワークより大きい場合、IP パケットのデータ フィールドの断片化は必要ありません。 したがって、ルーター 1 は、ARP キャッシュ テーブルで見つかったルーター 2 のポートの MAC アドレスを指定する FDDI フレームを生成します。

9. 最後に、パケットが宛先ネットワーク ルーター (ルーター 3) に到着すると、このパケットを宛先コンピューターに転送できるようになります。 ルーター 3 は、最初のポートに直接接続されているネットワーク 142.06.0.0 にパケットを転送する必要があることを認識します。 したがって、コンピューターの IP アドレス s1.msk.su (この情報はキャッシュにないと仮定します) を使用してイーサネット ネットワーク経由で ARP 要求を送信し、MAC アドレス s1 を含む応答を受信し、イーサネット フレームを形成します。 IP パケットをローカル ネットワーク経由で受信者に配信します。

DA(イーサネット)... 宛先IP... ...
MAC s1 142.06.13.14

マスクを利用したIPネットワークの構築

ネットワーク管理者は、一元的に割り当てられたネットワーク番号の数だけではネットワークを適切に構築するのに十分ではないため、たとえば、相互作用の弱いすべてのコンピュータを別のネットワークに配置するなど、不便を感じることがよくあります。

このような状況では、2 つの選択肢が考えられます。 1 つ目は、NIC からの追加のネットワーク番号の取得に関連しています。 2 番目の方法は、より頻繁に使用されますが、いわゆる マスクを使用すると、1 つのネットワークを複数のネットワークに分割できます。

マスクは、ネットワーク番号として解釈されるべきビットが含まれるバイナリ表記の数値です。

たとえば、標準ネットワーク クラスの場合、マスクは次の意味を持ちます。

255.0.0.0 - クラス A ネットワークのマスク、

255.255.0.0 - クラス B ネットワークのマスク、

255.255.255.0 - クラス C ネットワークのマスク。

管理者がネットワーク数を増やすために使用するマスクでは、アドレスのバイトへの分割を繰り返すために、ネットワーク番号の境界を定義するシーケンス内の 1 の数が 8 の倍数である必要はありません。

たとえば、マスクの値が 255.255.192.0 (11111111 11111111 11000000 00000000) であるとします。 また、ネットワーク番号を 129.44.0.0 (10000001 00101100 00000000 00000000) とすると、クラス B に属していることがわかります。このアドレスにマスクを適用した後、ネットワーク番号として解釈されるビット数は 16 から 16 に増加しました。 18、つまり、管理者は、中央で割り当てられた 1 つのネットワーク番号ではなく、4 つのネットワーク番号を使用できるようになりました。

129.44.0.0 (10000001 00101100 00000000 00000000)

129.44.64.0 (10000001 00101100 01000000 00000000)

129.44.128.0 (10000001 00101100 10000000 00000000)

129.44.192.0 (10000001 00101100 11000000 00000000)

たとえば、IP アドレス 129.44.141.15 (10000001 00101100 10001101 00001111) は、IP 標準に従ってネットワーク番号 129.44.0.0 とホスト番号 0.0.141.15 を指定しますが、マスクを使用する場合はペアとして解釈されます。

129.44.128.0 - ネットワーク番号、0.0。 13.15 - ノード番号。

したがって、新しいマスク値を設定すると、ルータに IP アドレスを別の方法で解釈させることができます。 この場合、ネットワーク番号の最後の 2 ビットがサブネット番号として解釈されることがよくあります。

もう 1 つの例。 特定のネットワークがクラ​​ス B に属し、アドレス 128.10.0.0 を持つとします (図 4.4)。このアドレスは、ネットワークをインターネットの他の部分に接続するルーターによって使用されます。 そして、ネットワーク内のすべてのステーションの中に、相互に弱く相互作用するステーションがあると仮定します。 それらを異なるネットワークに分離することが望ましいでしょう。 これを行うには、ネットワークを 2 つのネットワークに分割し、ルーターの対応するポートに接続し、これらのポートをマスクとして設定します (たとえば、番号 255.255.255.0)。つまり、ネットワーク内に 2 つのクラス C サブネットを編成します。中央で指定された番号を持つ元のネットワーク (サブネット アドレス フィールドに異なるサイズを選択することも可能です)。 外側から見ると、ネットワークは次のように見えます。 単一のネットワークローカル レベルでは、これらは 2 つの別個のクラス C ネットワークとなり、受信する一般トラフィックはサブネット間のローカル ルーターによって分割されます。

米。 4.4. マスクを使用してネットワークを構築する例

マスク メカニズムを使用することが決定された場合は、ネットワーク上のルーターとコンピューターの両方をそれに応じて構成する必要があることに注意してください。