OSI 7 層モデル
OSI 7 層モデルは、国際標準化機構によって提案されたネットワーク階層化モデルであり、その一般的な構造と各層が提供する機能を次の図に示します。
各層は 1 つのことを実行することに重点を置いており、各層は次の層によって提供される機能を使用する必要があります。たとえば、トランスポート層はネットワーク層によって提供されるルーティング機能とアドレス指定機能を使用する必要があります。データを送信します。
上の図は抽象的かもしれませんが、ここではより鮮明な図を示します。
OSI 7 層モデルの概要図
以下に示すように:
TCP/IP 4層モデル
TCP/IP 4 層モデルは 現在広く使用されているモデルで、OSI 7 層モデルを合理化したもので、次の 4 層で構成されていると考えることができます。
- アプリケーション層
- トランスポート層
- ネットワーク層
- ネットワークインターフェース層
TCP/IP 4 層モデルと OSI 7 層モデルを完全かつ正確に一致させることはできませんが、次の図に示すように、この 2 つを単純に対応させることはできることに注意してください。
アプリケーション層
アプリケーション層はトランスポート層の上に位置し、主に 2 つの端末デバイス上のアプリケーション間で情報交換サービスを提供します。情報交換の形式を定義し、メッセージは次のトランスポート層に渡されて送信されます。 アプリケーション層の対話のデータ単位をメッセージと呼びます。
アプリケーション層プロトコルはネットワーク通信ルールを定義し、ネットワーク アプリケーションごとに異なるアプリケーション層プロトコルが必要です。インターネット上には、Web アプリケーションをサポートする HTTP プロトコル、電子メールをサポートする SMTP プロトコルなど、多くのアプリケーション層プロトコルが存在します。
トランスポート層
トランスポート層の主なタスクは、2 つの端末デバイス プロセス間の通信に一般的なデータ送信サービスを提供することです。アプリケーション プロセスは、このサービスを使用してアプリケーション層メッセージを送信します。「ユニバーサル」とは、特定のネットワーク アプリケーションを対象としていないが、複数のアプリケーションが同じトランスポート層サービスを使用できることを意味します。
トランスポート層は主に次の 2 つのプロトコルを使用します。
- 伝送制御プロトコル TCP (伝送制御プロトコル) -コネクション型で信頼性の高いデータ伝送サービスを提供します。
- ユーザー データ プロトコル UDP (ユーザー データグラム プロトコル) -コネクションレス型のベストエフォート型のデータ送信サービスを提供します (データ送信の信頼性は保証されません)。
ネットワーク層
ネットワーク層は、パケット交換ネットワーク上のさまざまなホストに通信サービスを提供する役割を果たします。データを送信するとき、ネットワーク層は、トランスポート層によって生成されたメッセージ セグメントまたはユーザー データグラムを送信用のパケットおよびパッケージにカプセル化します。TCP/IP アーキテクチャでは、ネットワーク層で IP プロトコルが使用されるため、パケットは IP データグラム、または略してデータグラムとも呼ばれます。
⚠️注:トランスポート層の「ユーザー データグラム UDP」とネットワーク層の「IP データグラム」を混同しないでください。
ネットワーク層のもう 1 つのタスクは、送信元ホストのトランスポート層によって渡されたパケットがネットワーク層のルーターを介して宛先ホストを見つけられるように、適切なルートを選択することです。
ここで強調しておきたいのは、ネットワーク層の「ネットワーク」という言葉は、もはや私たちが通常話している特定のネットワークではなく、コンピュータ ネットワーク アーキテクチャ モデルの第 3 層の名前を指すことです。
インターネットは、ルーターを介して相互に接続された多数の異種ネットワークで構成されています。インターネットで使用されるネットワーク層プロトコルは、コネクションレス型インターネット プロトコルと多くのルーティング プロトコルであるため、インターネットのネットワーク層はインターネット層またはIP 層とも呼ばれます。
ネットワーク層の一般的なプロトコル:
- IP: Internet Protocol : インターネット プロトコル IP は、TCP/IP プロトコルで最も重要なプロトコルの 1 つであり、ネットワーク層で最も重要なプロトコルの 1 つです。IP プロトコルの機能には、アドレス指定プロトコル、データ パケットの形式の定義、など。ネットワーク層の情報を送信するための主要なプロトコルです。現在、IP プロトコルは主に旧来の IPv4 と新しい IPv6 の 2 種類に分けられ、現在はどちらのプロトコルも使用されていますが、前者に代わるプロトコルとして後者が提案されています。
- ARP プロトコル: ARP プロトコル、フルネーム アドレス解決プロトコルは、ネットワーク層アドレスとリンク層アドレス間の変換の問題を解決します。IP データグラムの物理的な送信中は、ネクスト ホップ (物理的な次の宛先) がどこに行くべきかを常に知る必要がありますが、IP アドレスは論理アドレスであり、MAC アドレスは物理アドレスであるため、ARP プロトコルはいくつかの問題を解決します。 IP アドレスを MAC アドレスに変換する際の問題。
- NAT: ネットワーク アドレス変換プロトコル: NAT プロトコル (ネットワーク アドレス変換) のアプリケーション シナリオは、その名前のとおり、内部ネットワークから外部ネットワークへのアドレス変換プロセスで使用されるネットワーク アドレス変換です。具体的には、小規模なサブネット (ローカル エリア ネットワーク、LAN) 内では、各ホストは同じ LAN 内の IP アドレスを使用しますが、LAN の外側、ワイド エリア ネットワーク (WAN) では、統一された IP アドレスが必要になります。この LAN をインターネット全体に接続します。
- ……
#ネットワークインターフェース層
ネットワーク インターフェイス層は、データ リンク層と物理層を組み合わせたものと考えることができます。
- データ リンク層は通常、リンク層と呼ばれます (2 つのホスト間のデータ送信は常にリンクを介して送信されます)。データリンク層の役割は、ネットワーク層から渡された IP データグラムをフレームに組み立て、そのフレームを 2 つの隣接するノード間のリンク上で送信することです。各フレームにはデータと必要な制御情報(同期情報、アドレス情報、エラー制御など)が含まれます。
- 物理層の機能は、隣接するコンピュータ ノード間でのビット ストリームの透過的な伝送を実現し、特定の伝送メディアと物理デバイス間の差異を可能な限り遮蔽することです。
#概要_
各層に含まれるプロトコルとコアテクノロジーの簡単な概要は次のとおりです。
アプリケーション層プロトコル:
- HTTP プロトコル (ハイパーテキスト転送プロトコル、Web ブラウジングに一般的に使用されるプロトコル)
- DHCP プロトコル (動的ホスト構成)
- DNSシステムの原理(ドメインネームシステム)
- FTPプロトコル(ファイル転送プロトコル)
- Telnetプロトコル(リモートログインプロトコル)
- 電子メールプロトコルなど(SMTP、POP3、IMAP)
- ……
トランスポート層プロトコル:
- TCPプロトコル
- メッセージセグメント構造
- 信頼性の高いデータ転送
- フロー制御
- 輻輳制御
- UDPプロトコル
- メッセージセグメント構造
- RDT (高信頼性データ転送プロトコル)
ネットワーク層プロトコル:
- IPプロトコル(TCP/IPプロトコルの基礎、IPv4とIPv6に分かれる)
- ARP プロトコル (IP アドレスと MAC アドレス間のマッピングを解決するために使用されるアドレス解決プロトコル)
- ICMP プロトコル (制御メッセージ プロトコル、制御メッセージの送信に使用)
- NAT プロトコル (ネットワーク アドレス変換プロトコル)
- RIPプロトコル、OSPFプロトコル、BGPプロトコル(ルーティングプロトコル)
- ……
ネットワークインターフェース層:
- エラー検出技術
- マルチアクセスプロトコル(チャネル多重化技術)
- CSMA/CDプロトコル
- MACプロトコル
- イーサネット技術
- ……
#ネットワーク階層化の原因
なぜネットワークを階層化する必要があるのでしょうか?
階層化について言えば、通常、バックグラウンド プログラムの開発にはフレームワークを使用するという事実から始めましょう。各層が異なることを行うという原則に従って、システムを 3 つの層に分割することがよくあります (複雑なシステムにはより多くの層が必要になります)。
- リポジトリ (データベース操作)
- サービス(業務運営)
- コントローラー (フロントエンドとバックエンドのデータ対話)
各層は 1 種類のものに焦点を当てる必要があるため、複雑なシステムには層が必要です。ネットワークを階層化する理由も同様で、各層は 1 種類の処理のみに重点を置いています。
- 各層は互いに独立しています: 各層は互いに独立しています。各層は、他の層がどのように実装されているかを気にする必要はありません。下位層によって提供される優れた関数を呼び出す方法を知る必要があるだけです (単純に呼び出すことができます)。インターフェイス呼び出しとして理解されます)。これは開発時にシステムを階層化する場合と同じです。
- 全体的な柔軟性の向上: 各層は、提供する機能と公開インターフェイスのルールが変更されていないことを確認するだけで、最適なテクノロジを使用して実装できます。これは、システム開発時に必要な高凝集性と低結合性の原則にも対応します。
- 大きな問題を小さな問題に分割する: レイヤ化により、複雑なネットワーク問題を、処理と解決のための明確で単純な境界を持つ多数の小さな問題に分解できます。これにより、複雑なコンピュータ ネットワーク システムの設計、実装、標準化が容易になります。これは、通常、システム機能を分解し、複雑な問題を理解しやすい小さな問題に分解するときに対応します。これらの小さな問題には、より適切な境界 (ゴールとインターフェイス) の定義があります。