序文
空の反対側にある 2 台のコンピューターはどのように通信するのでしょうか? 何千ものコンピュータの中から、あるコンピュータが別のコンピュータを正確に見つけてデータを送信できるのはなぜですか?
ネットワーク通信の 5 層モデルについて聞いたことがある人は多いかもしれませんが、なぜ 5 層モデルが必要なのかはあまり明確ではなく、5 層モデルを担当するタスクがしばしば混乱する可能性があります。以下は、ネットワーク通信の 5 層モデルです。
正直なところ、5 層モデルの具体的な内容は依然として非常に複雑ですが、今日の記事では、コンピューターが別のコンピューターを見つけて、ネットワークの 5 層モデルを介してデータを転送する方法を最も簡潔なモデルを使用して説明します。通信. 別のコンピュータに送信すると、コンピュータ ネットワークを勉強したことがなくても理解できます。
1.物理層
コンピュータが別のコンピュータと通信するために最初に行う必要があることは何ですか? もちろん、このコンピューターを他のコンピューターに接続して、そこでデータを転送できるようにする必要があります。例えば、光ファイバー、ケーブル、ツイストペアなどのメディアで接続し、通信することができます。
つまり、物理層は 2 台のコンピューターを接続し、高低の電気周波数を介してコンピューター間で 0,1 などの電気信号を送信する役割を果たします。
2. データリンク層
前述のように、物理層は単にコンピュータを接続し、コンピュータ間で 0 と 1 などの電気信号を送信する役割を担っています。これらの 0、1 の組み合わせの送信が不規則であると、コンピューターはそれを解釈できなくなります。一体何を知っている 0、1 の多く。
したがって、0、1 の送信に関する一連のルールを定式化する必要があります。たとえば、グループを形成する電気信号の数、コンピューターが理解できるように信号の各グループをどのようにマークする必要があるかなどです。
したがって、イーサネットプロトコルがあります。
1.イーサネットプロトコル
イーサネット プロトコルは、電気信号のグループがデータ パケットを構成することを規定しており、このデータ パケットをフレーム と呼びます。各フレームは、ヘッダー (Head) とデータ (Data) の 2 つの部分で構成されます。
フレーム サイズは通常 64 ~ 1518 バイトです。送信するデータが大きい場合は、複数のフレームに分割して送信します。
ヘッダーとデータの 2 つの部分には、どのようなデータが格納されますか? 少なくとも、このフレームの送信者、送信者、その他の情報を知る必要があることは間違いありませんよね? したがって、ヘッダー部分は主に、送信者、受信者、その他の情報などの説明的なデータです。データ部分は、受信側に送信されるデータ パケットの特定の内容です。
フレームの長さは 64 ~ 1518 バイト、つまりフレームの長さは固定ではありませんが、ヘッダー部分のバイト長は固定だと思いますか? もちろん固定されています.固定されておらず、各フレームが個別に送信される場合、コンピューターはヘッダーが何バイトで、データが何バイトであるかをどのように知ることができますか. そのため、ヘッダー セクションのバイトは固定され、18 バイトで固定されます。
あるコンピュータのデータを別のコンピュータに物理層とリンク層を介して送信するには、誰が誰に送信したか、どのようにコンピュータを区別するかを識別するために、一意の識別子を付ける必要がありますよね?
したがって、MACアドレスが表示されました。
2.MACアドレス
ネットワークに接続されているすべてのコンピューターにはネットワーク カード インターフェースがあり、各ネットワーク カードには MAC アドレスと呼ばれる一意のアドレスがあります。コンピュータ間のデータ伝送は一意に検索され、MAC アドレスを介して伝送されます。
MAC アドレスは 48 バイトで構成され、ネットワーク カードの製造時に一意に識別されます。
3. ブロードキャストと ARP プロトコル
(1).放送
図に示すように、コンピュータ A がコンピュータ B の MAC アドレスを知っていて、コンピュータ A がコンピュータ B にデータを送信したい場合、コンピュータ A はコンピュータ B の MAC アドレスを知っていますが、どのようにデータを送信しますか? コンピュータ A はコンピュータ B に接続されているだけでなく、コンピュータ A は他のコンピュータにも接続されています。コンピュータAはコンピュータBのMACアドレスを知っているが、コンピュータAはコンピュータBがどの経路で配信されているかを知らない. この問題を解決するためにブロードキャストが登場する.
同じサブネット内で、コンピュータ A がコンピュータ B にデータ パケットを送信しようとしており、このデータ パケットには受信者の MAC アドレスが含まれています。送信時、コンピュータAはブロードキャストで送信します.このとき、同じサブネット内のコンピュータCとDもこのデータパケットを受信し、このデータパケットを受信したコンピュータがデータパケットのMACアドレスを送信します.自身の MAC アドレスと比較し、一致する場合はデータ パケットを受け入れ、一致しない場合はデータ パケットを破棄します。この送信方法を放送と呼びます。通常、広場で放送の形で誰かを呼ぶのと同じように、名前があなたの場合は無視し、あなたでない場合は聞こえないかのように扱います。
(2). ARP プロトコル。
ここで質問ですが、コンピューター A はどのようにしてコンピューター B の MAC アドレスを知るのでしょうか? 現時点では、ARP プロトコルの担当者が解決する必要がありますが、ARP プロトコルには IP アドレスが含まれます。IP アドレスについては、以下で説明します。そのため、サブネット内の他のコンピューターの MAC アドレスを知ることができる ARP プロトコルがあるかのように、ここでは脇に置きましょう。
3. ネットワーク層
上記でサブネットというキーワードを取り上げましたが、実際、私たちがいるネットワークは無数のサブネットで構成されています。ブロードキャストの場合、同じサブネット内のコンピュータのみが受信できます。
そのようなサブネットの分割がない場合、コンピュータ A はコンピュータ B にデータ パケットをブロードキャストで送信し、他のすべてのコンピュータもこのデータ パケットを受信し、比較して破棄することができます。世界中には非常に多くのコンピュータがあり、すべてのコンピュータが他のすべてのコンピュータからパケットを受信できます。これは恐ろしいことです。それはクラッシュしてはいけません。したがって、サブネットのようなものが生まれました。
問題は、同じサブネットに属する MAC アドレスをどのように区別するかということです。同じサブネットであればブロードキャストで相手にデータを送信し、同じサブネットでなければゲートウェイにデータを送信してゲートウェイに転送させます。
この問題を解決するためにIPプロトコルがあります。
1.IPプロトコル
IP プロトコル、それが定義するアドレス、私たちはそれを IP アドレスと呼びます。IP プロトコルには 2 つのバージョンがあり、1 つは IPv4 で、もう 1 つは IPv6 です。ただし、私たちのほとんどは現在 IPv4 を使用しており、このバージョンの IPv4 のプロトコルについてのみ説明します。
この IP アドレスは 32 ビットの 2 進数で構成され、通常は 4 セグメントの 10 進数表現に分割され、アドレス範囲は 0.0.0.0 ~ 255.255.255.255 です。
インターネットに接続したいすべてのコンピュータには、IP アドレスがあります。この IP アドレスは 2 つの部分に分けられ、前者はネットワーク部分を表し、後者はホスト部分を表します。また、ネットワーク部分とホスト部分が占める2進数は固定ではありません。
2 台のコンピューターのネットワーク部分がまったく同じである場合、2 台のコンピューターは同じサブネット上にあると言います。たとえば、192.168.43.1 と 192.168.43.2 の場合、これら 2 つの IP アドレスのネットワーク部分が 24 ビットで、ホスト部分が 8 ビットであると仮定します。どちらのネットワーク部分も 192.168.43 であるため、同じサブネット上にあります。
しかし、ここで問題が発生します。ネットワーク部分が何桁を占め、ホスト部分が何桁を占めているかをどうやって知るのでしょうか? つまり、2 台のコンピューターの IP アドレスだけでは、それらが同じサブネットにあるかどうかを判断することはできません。
これは、別のキーワード --- サブネット マスクにつながります。サブネットマスクもIPアドレスと同じ32ビットの2進数ですが、ネットワーク部分はすべて1、ホスト部分はすべて0です。つまり、上記2つのIPアドレスのネットワーク部分が24ビットだと、ホスト部分が 8 ビットの場合、サブネット マスクは 11111111.11111111.11111111.00000000、つまり 255.255.255.0 です。
サブネットマスクで、IPアドレスが同じサブネットにあるかどうかを判断する方法。明らかに、サブネット マスクを知ることは、ネットワーク部分のビット数とホスト部分のビット数を知ることと同じです。IP アドレスとそのサブネット マスクの AND 演算を実行し、それぞれの結果を比較するだけでよく、比較結果が同じ場合は同じサブネットを意味し、そうでない場合は同じサブネットではありません。
たとえば、192.168.43.1 と 192.168.43.2 のサブコード マスクはどちらも 255.255.255.0 です。IP とサブコード マスクの AND をとることで、両方とも 192.168.43.0 であり、同じサブネットにあることがわかります。
2.ARP プロトコル
上記の IP プロトコルの知識を持って、ARP プロトコルについて話しましょう。
2 台のコンピューターの IP アドレスとサブネット マスクを使用して、それらが同じサブネット内にあるかどうかを判断できます。
それらが同じサブネットにある場合、コンピューター A がコンピューター B にデータを送信したい場合。ARP プロトコルを介してコンピューター B の MAC アドレスを取得できます。
また、ARP プロトコルは、データ パケットを同じサブネット内の各コンピュータにブロードキャスト形式で送信します (もちろん、このデータ パケットには受信者の IP アドレスが含まれます)。データパケットを受信した相手は、自分とIPアドレスを比較し、同じであれば自分のMACアドレスを相手に返信し、そうでなければデータパケットを破棄します。このようにして、コンピュータ A はコンピュータ B の MAC アドレスを知ることができます。
MACアドレスを知った上で、送信データをブロードキャストで送信し、相手のMACアドレスもブロードキャストで送信するので、他のコンピュータはどうやって自分がデータを送信したいのか、送信したいのかを知ることができるのか、と質問する人もいるかもしれません。 MACアドレスを尋ねますか?実際、MAC アドレスを要求するデータ パケットには、相手の MAC アドレスの欄に特別な MAC アドレスが入力されており、他のコンピュータはこの特別な MAC アドレスを見て、ブロードキャストが何をしたいのかを知ることができます。
2 台のコンピューターの IP が同じサブネットにない場合、この時点で、データ パケットをゲートウェイに送信し、ゲートウェイに転送させて送信させます。
3.DNS サーバー
ここでもう 1 つ質問があります。相手のコンピュータの IP アドレスを知るにはどうすればよいでしょうか。Web サイトにアクセスする場合は、IP を入力してアクセスできますが、ほとんどの人は URL ドメイン名を入力します。たとえば、Baidu にアクセスするには、ドメイン名 www.baidu.com を入力します。実際、このドメイン名を入力すると、DNS サーバーと呼ばれる担当者がこのドメイン名の解決を支援し、このドメイン名に対応する IP を返します。
したがって、ネットワーク層の機能は、別のコンピューターがどこにあるか、同じサブネットに属しているかどうかなどを、膨大な群衆の中で見つけられるようにすることです。
4.トランスポート層
物理層、データリンク層、ネットワーク層の相互の助けにより、コンピュータ A からコンピュータ B にデータを送信することに成功しました。しかし、コンピュータ B にはさまざまなアプリケーション プログラムがあります。用ですか?
このとき、**Port (Port)** という人物が登場します。つまり、コンピューター A から計算テーブル B にデータを転送するときに、特定のアプリケーションが処理を受け入れるためのポートを指定する必要があります。
つまり、トランスポート層の機能は、ポート間通信を確立することです。ネットワーク層の機能は、ホスト間通信を確立することです。
つまり、IPとポートがなければ正確に通信できません。このとき、IP アドレスを入力したときにポートを指定しなかったと言う人がいるかもしれません。実際、一部のトランスポート プロトコルでは、一部のデフォルト ポートがすでに設定されています。たとえば、http 送信のデフォルト ポートは 80 で、これらのポート情報もデータ パケットに含まれます。
トランスポート層で最も一般的な 2 つのプロトコルは、TCP プロトコルと UDP プロトコルです.TCP プロトコルと UDP の最大の違いは、TCP は信頼性の高い伝送を提供するのに対し、UDP は信頼性の低い伝送を提供することです.
5. アプリケーション層
最後に、アプリケーション層に関して言えば、アプリケーション層はユーザーに最も近いものです。
トランスポート層からデータを受け取りましたが、そのデータはhtml形式やmp4形式など様々です。あなたは理解できると確信していますか?
したがって、これらのデータを受け取った後に解釈してレンダリングできるように、これらのデータのフォーマット規則を指定する必要があります。たとえば、最も一般的な Http データ パケットでは、データ パケットのファイル形式が指定されます。
要約する
ここまでは、5 層モデルについて説明してきました。一部のレイヤーについては、比較的簡潔なので、ざっくりと概要を説明しました。詳細に話すと非常に長くなることは間違いないので、できるだけ簡潔に話すように最善を尽くしました。さらに詳しく知りたい場合は、コンピュータ ネットワークに関する関連情報を購入できますが、「コンピュータ ネットワーク: トップダウン」という本を強くお勧めします。私の説明で、コンピュータ間のデータ転送に関する一般的な理解が得られることを願っています。