目次
2. データリンク層でデータサイズを制限する必要があるのはなぜですか?
3. 大きなデータ パケットを小さなデータ パケットに分割する利点
4. データ パッケージはどのくらいの大きさにすべきですか?
1. なぜ階層化するのか
コンピュータ ネットワークの黎明期には、2 台のコンピュータがネットワーク ケーブルで接続され、指定された方法でデータをやり取りできましたが、この時点では階層化についてあまり考える必要はありませんでした。
ネットワークの発展に伴い、簡単に言えば次のような問題が生じます。
-
私はネットワーク アプリケーションの開発者ですが、ネットワーク インタラクション データを便利に使用するにはどうすればよいですか?
-
コンピューター上のさまざまなプロセスすべてにネットワーク要件がある場合、どのデータが自分たちに必要なものかをどのように判断し、ネットワーク上のプロセス間で相互通信を実現するにはどうすればよいでしょうか?
-
2 台のコンピュータはどのようにして互いを識別し、互いのアドレスをどのようにして認識し、一方のコンピュータがターゲット IP アドレスを通じてリモート コンピュータにどのようにルーティングし、データを送信するための最適なパスを見つけるのでしょうか?
-
ネットワーク データの物理伝送媒体としてどのような素材を選択し、どのような物理インターフェイスを使用する必要がありますか?
これらの問題の解決は、ネットワークプロトコルを指定するだけでよく、特定の数字は特定のデータ、特定の数字は物理伝送のエラー検出に使用され、特定の数字はIPアドレスとポート番号になります。
しかし、この解決策の後、次の 2 つの問題が発生します。
- ネットワークのこれらすべての機能は、プロトコルに結合されています。このプロトコルは大きすぎるため、変更の余地がほとんどありません。フィールドは、ネットワークが発展するにつれて、完全に使用できなくなるまで継続的に追加することしかできません。
- 開発者は、このような複雑なネットワーク データに直面し、物理的な伝送エラーの検出から同じ通信のデータ パケットの結合に至るまで手作業で処理する必要があり、開発効率は非常に低くなります。
したがって、より合理的な方法は、一連のネットワーク階層構造を標準化することです。
-
ネットワーク上の通信は、基本的に上から下に次のステップに分割できます。
ネットワーク アプリケーションはデータを提供し、ターゲット ホストのターゲット プロセスにデータを送信します。データはネットワーク内のルーターとスイッチを通過し、データはネットワーク カードを介してコンピューターとやり取りし、データは物理メディアで送信されます。
-
これは、下から上に、物理メディア、2 つの隣接するネットワーク デバイス、ホストからホスト (ソース IP から宛先 IP)、およびソース プロセスからターゲット プロセスに向けられているためです。
-
このように、さまざまな機能を担うネットワーク機器をいくつかのレベルに分け、各レベルで行うことを規定し、残りは機器自身で実装することができます。
したがって、ネットワークの階層化により、ネットワーク デバイスの異種の違いも保護されます。
2. OSI 7 層参照モデル
- アプリケーション層: アプリケーションがネットワークを使用するための統一インターフェイスを提供する責任を負います。
- プレゼンテーション層: ネットワーク データを他のシステムと互換性のある形式に変換する役割を果たします。
- セッション層: プレゼンテーション層エンティティ間の通信セッションの確立、管理、中断を担当します。
- トランスポート層: エンドツーエンドのデータ送信 (ホスト プロセス間) を担当します。
- ネットワーク層: データのルーティング、転送、断片化を担当します。
- データリンク層: データのカプセル化とフレーミング、エラー検出、MAC アドレス指定を担当します。
- 物理層: 物理媒体でのビット ストリーム データ フレームの送信を担当します。
これは理論上の概念を積み上げただけであり、具体的な解決策は示されていません。
3. TCP/IP参照モデル
4. 5層参照モデル
OSI と TCP/IP の利点を組み合わせて、5 層モデルが提案されています。これは最も広く使用されている参照モデルです。
上から下に向かうにつれて、コミュニケーションの目標はますます明確になっていきます。ボトムアップで、コミュニケーションの目標はますます一般的になっていきます。
1. アプリケーション層
アプリケーション層のタスク:
- ネットワーク上の異なるホスト間でネットワーク アプリケーション データを転送する
- 提供する必要があるのは、両当事者間のアプリケーション層の合意に準拠するデータのみです。
应用层工作在操作系统的用户态,而传输层及以下则工作在内核态,中间借助Socket来交接数据
。
2. トランスポート層
トランスポート層のタスク:
在网络上两台主机的进程间提供数据传输服务
。- 送信元ポート番号と宛先ポート番号による識別
3. ネットワーク層
ネットワーク層のタスク:
- ネットワーク上の適切なネットワーク間ルーティングおよびスイッチング ノードを選択して、データ リンク層のパスを指定します。
- 送信元IPと宛先IPを使用した識別
网络层本身没有传输数据包的能力,它只是给每台网络设备额外分配了一个可修改的、逻辑上的地址,用于找到不同的子网,借助数据链路层来实现数据包传输
。
アドレス指定とルーティング
ネットワーク層は 2 つのネットワーク デバイス間のデータ送信を担当します。ターゲット デバイスを見つけるにはどうすればよいですか? IPアドレスを使用します。
世界中のすべてのネットワーク デバイスを調べて IP アドレスを照合するのは明らかに非現実的であるため、IP アドレスはインデックスと同様に 2 つの部分に分割されます。
- ネットワーク番号。IP がどのサブネットに属しているかを示す役割を果たします。
- ホスト番号。同じサブネット内の異なるホストを表す役割を果たします。
4. データリンク層
データリンク層のタスク:
- ネットワーク内で、データ パケットを宛先 MAC アドレスに転送します。送信元MACアドレスと宛先MACアドレスを利用した識別
- 物理伝送のエラー検出を担当します
MACアドレスの取得方法
ネットワークを介してデータを送信する場合、デバイス (通常はルーター) が複数のネットワーク間に同時に存在する必要があります。
その場合、ルータはネットワーク内のすべてのデバイスを認識する必要があります。そうでないと、IP アドレスを通じてネットワーク デバイスを見つけることができなくなります。
すべてのネットワーク デバイスにはネットワーク カードがあり、ネットワーク カードには一意の MAC アドレスがあります。
ルーターはルーティング テーブルを通じて次の宛先 IP アドレスを学習し、次に「ARP プロトコル」を通じて宛先 MAC アドレスを見つけて、それを固有のデバイスにマッピングします。
データリンク層がデータを送信する方法
隣接する 2 つのノード間でデータが送信される場合、データリンク層はネットワーク層の「IP データグラム」を「フレーム」に組み立て、そのフレームを隣接する 2 つのノード間のリンク上で送信します。
5. 物理層
物理層のタスク:
- 隣接ノード間でのビットストリームの透過的な伝送を実現し、特定の伝送メディアと伝送方式をシールドします。
ただし、物理層にはビット ストリームに意味を与える方法がなく、ネットワーク プロトコルも存在せず、物理メディア間の伝送プロトコルはいくつかあるだけです。
5. 各層の共通プロトコル
- アプリケーション層: HTTP、DNS、FTP
- トランスポート層: TCP、UDP
- ネットワーク層: IP、RIP、ICMP、DHCP
- データリンク層:ARP、RARP
- 物理層
6. 各層でのデータパケットの処理
1. なぜデータを分割するのでしょうか?
1. データをセグメント化しているのは誰ですか?
重要な理由:
- データは実際には物理メディアを介して送信されますが、物理メディア自体はデータを送信するだけで、データの処理は行いません。
- データリンク層は送信のためにデータを物理層に渡すため、データ パケットのサイズを指定するのはデータリンク層です。
- ネットワーク層はデータリンク層を使用してデータを送信するため、ネットワーク層はデータを断片化して、データがデータリンク層のサイズ要件を確実に満たすようにします。
2. データリンク層でデータサイズを制限する必要があるのはなぜですか?
大きなデータ パケットが送信のためにネットワークに直接投入されると、次の問題が発生します。
-
データ パケットは非常に大きいため、送信元ホストのネットワーク デバイス リソースを長時間占有します。
在发送它的期间,别的网络应用完全不能发送数据
このパケットのデータが汚染されている場合、受信側は正常に解析できなくなるためです。
-
ネットワークには帯域幅の制限があるため、ターゲット ホストに完全に転送するには時間がかかります。
この期間中、ルーターはそれを完全に受信して検証し、転送する必要があります。
これは、
大数据包不仅会造成网络严重拥堵,还会占用路由器的缓存资源
ルーターが十分にキャッシュしない場合、大きなパケットを完全に受信できず、ターゲット ホストに到達できないことを意味します。 -
この迅速かつ簡単なアプローチにより、
额外加大传输延迟在整个通信延迟中的比重
3. 大きなデータ パケットを小さなデータ パケットに分割する利点
- 小さなデータパケットを連続的に送信できるため、パイプライン機構と同等であり、途中のネットワーク機器のリソースを有効に活用し、通信遅延全体に占める送信遅延の割合を低減します。
- データを分割するには、必然的に小さなデータ パケットごとに番号を付ける必要があります。これにより、通信していない複数のデータ パケットを分散して送信することができ、同時通信を多重化する機能があります。
- これは、データ パケットに番号を付けた後に行うことができ、特定のパケットでエラーや損失が発生した場合、大きなデータ パケット全体ではなく、問題のあるデータ パケットのみを再送信できるため、ネットワーク リソースが節約されます。
4. データ パッケージはどのくらいの大きさにすべきですか?
- パケットが大きすぎる場合は、議論されています
- データ パケットが小さすぎる場合、データ パケットにはヘッダー情報が必要であるため、データ部分が小さすぎ、実際のデータがデータ パケット全体の長さに占める割合が小さくなり、ネットワーク使用率が低下します。
妥協点として、イーサネット フレームの実際のデータ部分は最大 1500、最小 64 です。
標準のイーサネット フレームのサイズは 1518 で、そのうち 18 バイトはフレーム ヘッダーとフレーム トレーラーに使用され、残りの 1500 バイトは実際のデータの格納に使用されます。
2. 各層でのデータパケットのカプセル化
- アプリケーション層:元のデータがプロトコルにカプセル化されてアプリケーション層のメッセージとなり、このときのデータパケットをメッセージと呼びます。
- トランスポート層: アプリケーション層メッセージに送信元ポート番号、宛先ポート番号、プロトコルフィールドを含むトランスポート層ヘッダーを追加し、このときのデータパケットをセグメントと呼びます。
- ネットワーク層:データパケットを分割し、送信元IP、宛先IP、プロトコルフィールドなどの各部分にネットワーク層ヘッダーを付加し、このときのデータパケットをパケットと呼びます。
- データリンク層:データパケットに送信元MACアドレス、宛先MACアドレス、チェックシーケンスなどのフレームヘッダとフレーム末尾を付加し、このときデータパケットをフレームと呼びます。