ネットワーク通信の基礎(ネットワーク通信の基本概念+TCP/IPモデル)

1. ネットワーク通信の基本概念

ネットワーク相互接続の目的はネットワーク通信、つまりネットワーク上のデータ伝送であり、より具体的には、ネットワークに基づいてネットワークホスト内の異なるプロセス間でデータを伝送することである。

1.LANとWAN

LAN : ローカル エリア ネットワーク。ここで、ローカルとは、LAN がローカルに確立されたプライベート ネットワークであることを示します。ネットワーク通信は、イントラネットとも呼ばれるローカル エリア ネットワーク内のホスト間で簡単に実行できます。

WAN : Wide Area Network は、複数のローカル エリア ネットワークをルーターを介して物理的に接続し、大規模なネットワークを形成し、広域ネットワークを形成します。WAN 内の LAN はすべてそのサブネットに属します。

いわゆる「ローカル エリア ネットワーク」と「ワイド エリア ネットワーク」はまったく同じ相对概念です。グローバルなパブリック ワイド エリア ネットワークの場合は、ワイド エリア ネットワークのサブセットであるインターネット (パブリック ネットワーク、外部ネットワークとも呼ばれます) と呼ばれます。緩やかな文脈で言及されるワイド エリア ネットワークが、実際にはインターネットを指す場合があります。

2.IPアドレス

概念: IP アドレスは主に、ネットワーク ホストおよび他のネットワーク デバイス (ルーターなど) のネットワーク アドレスを識別するために使用されます。簡単に言えば、IP アドレスはホストのネットワーク アドレスを見つけるために使用されます。速達を送るときと同じように、宅配業者が荷物を目的地に届けるために、相手の受け取り住所を知る必要があります。

形式: IP アドレスは 32 ビットの 2 進数で、通常は 01100100.00000100.00000101.00000110 のように 4 つの「8 ビット 2 進数」(つまり 4 バイト) に分割されます
通常、「ドット付き 10 進数」形式、つまり abcd の形式で表されます (a、b、c、および d はすべて 0 ~ 255 の 10 進整数です)。例: 100.4.5.6。

特殊 IP : IP アドレス 127.* はローカル ループバック テストに使用されます。IP アドレスは 127.0.0.1 です。ローカル ループバックは主にローカル間のネットワーク通信に使用されます (パフォーマンス上の理由から、システムはネットワーク通信を開発するプログラム (つまり、ネットワーク プログラミング) の場合、一般的な開発方法はローカル間のネットワーク通信です。

3. ポート番号

概念: ポート番号は、ネットワーク通信において特定のアプリケーションまたはサービスを識別するために使用される数値識別子です。ネットワーク通信中、データはさまざまなポート番号を介して適切なアプリケーションまたはサービスに転送されます。速達の場合と同様に、お届け先(IPアドレス)だけでなく荷受人(ポート番号)も指定する必要があります。

形式: ポート番号は 0 ~ 65535 の範囲の数値です。ネットワーク通信では、プロセスはポート番号をバインドすることでネットワーク データを送受信できます。

: 同じホスト上の 2 つの異なるプロセスは同じポート番号をバインドできませんが、1 つのプロセスは複数のポート番号をバインドできます。

4. 同意

IPアドレスとポート番号があれば、ネットワーク上で唯一のプロセスを特定することができますが、ここで問題が発生します ネットワーク通信は0/1のバイナリデータで通信されますが、どのようなデータが送られてきたのかを相手にどうやって伝えるか?

ネットワーク通信では、写真、ビデオ、テキストなど、さまざまな種類のデータが送信されることがあります。同じ種類のデータでも、テキスト文字列「Hello!」を送信するなど、異なる形式を持つ場合があります。送信されるデータがテキスト タイプであることを識別する方法と、テキストのエンコード形式は何ですか? ネットワークデータ伝送に基づいています需要使用协议来规定双方的数据格式

概念: プロトコル (ネットワーク プロトコルの略) ネットワーク プロトコルは、ネットワーク通信 (つまり、ネットワーク データ送信) を通過するすべてのネットワーク デバイスが準拠する必要がある一連の規則と規則です。接続を確立する方法、お互いを識別する方法など。この規約に従うことによってのみ、コンピュータは相互に通信することができます。プロトコルは最終的に、ネットワーク上で送信されるデータ パケットの形式に反映されます。

5. 既知のプロトコルのデフォルトポート

システム ポート番号の範囲は 0 ~ 65535 で、そのうち: 0 ~ 1023 は既知のポート番号です。これらのポートは、サーバー プログラムが次のような広く使用されているプロトコルをバインドするために予約されています应用层

  • ポート 22: SSH サーバー バインディング SSH プロトコル用に予約されています。
  • ポート 21: FTP プロトコルをバインドする FTP サーバー用に予約されています。
  • ポート 23: Telnet サーバーが Telnet プロトコルをバインドするために予約されています。
  • ポート 80: HTTP サーバー バインディング HTTP プロトコル用に予約されています。
  • ポート 443: HTTPS サーバー バインディング HTTPS プロトコル用に予約されています。

2. TCP/IP 5層モデル

1. TCP/IPプロトコルスイート

ネットワーク通信では、複雑な環境に直面した場合、複雑なプロトコルについて合意する必要があります。プロトコルが複雑すぎるため、複数のプロトコルに分割される可能性があります。分割されたプロトコルを分類し、異なるカテゴリを階層化することで、合意に達することができます。レベル間の関係: 上位層プロトコルは下位層プロトコルを呼び出すために必要ですが、下位層プロトコルは前のプロトコルのサポートを提供するため、層を越えて呼び出すことはできません。

プロトコル階層化の利点:

  1. インターフェイス指向プログラミングに似ています。2 つの層間のインターフェイス仕様を定義し、両者がこの仕様に従って接続できるようにします。
  2. ユーザーにとっては、プロバイダーがどのように実装するかは気にせず、インターフェイスを使用するだけで済みます。
  3. プロバイダーにとっては、カプセル化の特性を利用して、実装の詳細は隠蔽され、インターフェイスのみを開く必要があります。

ここで説明する TCP/IP プロトコルは、次のような複数のプロトコルを含むネットワーク プロトコル スイートです。物理層データリンク層ネットワーク層トランスポート層アプリケーション層複数のレベルを待ちます。これらのさまざまなレベルのプロトコルが一緒になって、完全なネットワーク プロトコル システムを構成します。

TCP/IP 通信プロトコルは 5 層の階層構造を採用しており、各層は次の層が提供するネットワークを呼び出して、それぞれのニーズを満たします。

  • アプリケーション層: アプリケーション層は TCP/IP モデルの最上位層であり、さまざまなネットワーク アプリケーションが含まれますが、主な関心事は送信されたデータが何に使用されるかです。広く使用されているアプリケーション層プロトコル HTTP および HTTPS の 1 つ。

  • トランスポート層: 2 つのホスト間のデータ転送を担当し、中間パスを考慮せず、開始点と終了点のみを考慮し、データがソース ホストからターゲット ホストに確実に送信されるようにします。より一般的なトランスポート層プロトコルは TCP と UDP です。

  • ネットワーク層: アドレス管理とルーティング選択、および 2 つのリモート ネットワーク ノード間のパス計画を担当します。たとえば、ネットワーク層の IP プロトコルでは、ホストはその IP アドレスによって識別され、2 つのホスト間のデータ伝送路 (ルーティング) はルーティング テーブルによって計画されます。

  • データリンク層: デバイス間のデータ フレームの送信と識別を担当し、主に 2 つの隣接するノード間の送信に重点を置きます。たとえば、物理アドレス(MAC アドレスなど)を介して隣接するノード間で送信されます。データリンク層の最も代表的なプロトコルはイーサネットプロトコルです。

  • 物理層: 光・電気信号の伝送方式を担当し、通常はネットワーク通信のインフラを指します。ネットワークケーブル、光ファイバー、ネットワークインターフェースなど

2. プロトコル階層化のコンテキストでは、データはネットワークを介してどのように送信されますか?

答えは次のとおりです。カプセル化と分散化

  1. カプセル化: 送信者がデータを送信するとき、カプセル化のためにデータは対応するプロトコル層に上から下まで渡される必要があります。
  2. 分散化: 受信者はデータを受信すると、分析のために対応するプロトコル層に下から上にデータを渡す必要があります。

(1) 中間転送プロセスのカプセル化と分散化を無視する

例として、Li Hua が WeChat を使用して Xiao Ming に「Hello world」というメッセージを送信します。以下は、Li Hua によって送信されるメッセージのカプセル化プロセスです。

  1. まずアプリケーション層では、Li Hua のホスト上の WeChat アプリケーションが上記のデータを取得した後、まず対応するアプリケーション層プロトコルを使用してデータをアプリケーション層データ パケットにカプセル化します。

  2. 次に、アプリケーション層はトランスポート層が提供する API を呼び出してデータを処理します。トランスポート層は上記のデータを取得した後、トランスポート層プロトコルを使用してデータを再度カプセル化します。上図は UDP プロトコルを例にしています。

  3. トランスポート層はネットワーク層を呼び出します。ネットワーク層は UDP パケットを取得した後、ネットワーク層プロトコルを使用してパケットのカプセル化を続けます。上の図は IP プロトコルを例にしています。

  4. ネットワーク層はデータ リンク層を呼び出します。データ リンク層は IP データ パケットを取得した後、データ リンク層プロトコルを使用してそれをカプセル化します。上の図では例としてクラシック イーサネット プロトコルを使用しています。

  5. データリンク層は物理層と呼ばれ、物理層はイーサネットのデータフレームを受け取った後、上記の0/1バイナリデータを光信号や電気信号などに変換して伝送します。

以下は、Xiao Ming がメッセージを受信する分散化プロセスです。

  1. 物理層では、Xiao Ming のホストはネットワーク カードを介して高レベルおよび低レベルのバイナリ信号を受信し、信号分析を通じて 0/1 などのバイナリ シーケンスに復元します。

  2. 次に、物理層はデータリンク層を呼び出し、イーサネットプロトコルを使用して上記の 0/1 バイナリデータをイーサネットフレームに復元し、フレームヘッダーとフレーム末尾を削除し、イーサネットデータパケットのペイロードを取り出して送信します。ネットワーク層まで上向きに送信されます (イーサネットには、ネットワーク層のプロトコル タイプをマークするフィールドがあります)。

  3. ネットワーク層はペイロードを取得した後、ペイロード プロトコル タイプに従ってそれを解析します。これが IP パケットです。次に、IP ヘッダーを削除し、ペイロードを取り出してトランスポート層に送信します (IP パケットにはフィールドがあります)トランスポート層プロトコルのタイプを示します)。

  4. トランスポート層はペイロードを取得し、ペイロード プロトコル タイプに従ってそれを解析します。これは UDP パケットであり、UDP ヘッダーを削除してペイロードを取り出し、ポート番号に従ってアプリケーション層に渡します。

  5. アプリケーション層の WeChat アプリケーションがペイロードを取得すると、対応するアプリケーション層プログラムに従ってペイロードの内容を解析し、対応するフィールドを抽出して、フロントエンド ページに表示します。

(2) 実ネットワーク環境におけるカプセル化分離

おすすめ

転載: blog.csdn.net/LEE180501/article/details/132954686