web-dev-qa-db-ja.com

ローカルネットワークセグメント内で通信するためにIPアドレスが必要なのはなぜですか?

MACアドレスはローカルネットワークセグメント全体でのみ使用できるため、IPアドレスを使用してルーター経由で他のセグメントと通信します。一方、ローカルターゲットの場合、ARPはIPをMACアドレスに変換するために使用され、MACアドレスはその後の会話で使用されます。

これは、なぜローカルネットワークでIPアドレスを使用するのか疑問に思います。すべてのシステムが同じサブネット内にあるシナリオを考えると、システムは実際にはMACアドレスのみを使用して相互に通信をルーティングしているため、IPアドレスは不要であるように思われます。

コンピュータがローカルネットワークセグメントの外部と通信する必要がない場合、コンピュータは実際にIPアドレスなしで完全に実行できますか?なぜそうしないのですか?

6
Sufiyan Ghori

IPアドレスは、MACアドレスとは異なり、ハードウェアによってバインドされるように明示的に設計されていません。ほとんどの場合、MACアドレスは一時的に変更できますが、各デバイスには、グローバルに一意の工場割り当てMACアドレスが割り当てられているはずです。

さらに、MACはイーサネットに固有であり、現在は事実上のレイヤー2カプセル化方式ですが、常にそうであるとは限らず、将来、より良いものが来るかどうかはわかりません。

6
LawrenceC

非常に簡単に言えば、ネットワークセグメント内の人々に対して、ネットワークセグメント外と同じことを行う方がはるかに簡単で、オーバーヘッドはほとんどありません。

その他の考えられる理由

  • IPを使用して、何かが何であるかを覚えておくことができます(ルーターは.1のようなもので終わります)
  • 互いに通信しない1つのセグメントで2つのネットワークを実行したい場合があります(サブネットを介してIPで実行できます)。
  • MACアドレスを覚えるのは簡単ではありません。
5

要するに、いいえ...同じネットワーク内のマシンを接続するためにIPアドレスは必要ありません。このようなプロトコルには、IPXプロトコルやBanyanプロトコルなど、いくつかの例があります。

ハードウェアアドレスの使用に関する問題は、次のように最もよく説明されています。

コンピューターが部屋にいる人だと想像してみてください...(誰もが1つの場所にくっついていて、動き回ることができません)ボブがスージーと話したい場合...彼は「ヘイスージー」と叫びます...そしてスージー応答します...そして会話が続きます。いいですね?確かに...小規模ではこれは非常にうまく機能し、実際には2つ(またはいくつか)のデバイス間の一部のネットワークプロトコルで定期的に使用されています。 (多くの高I/Oプロトコルは、非IPプロトコルを使用します。これは、それらがはるかに「単純」であり、タスクに合わせて微調整されているためです。)インターネット(今日私たちが知っているように)は、2つだけではありません...または少数の人々が直接話しますお互い。インターネットは文字通り数十億台のデバイスです。それらがすべて同じ「部屋」(ネットワークセグメント)に配置された場合...ボブがスージーと話したいと思ったらどうなるか想像してみてください。ボブは「HeySuzy!」と叫ぶでしょう...そしてボブの声は群衆の中で失われるでしょう。 (何十億もの人々に合うように部屋を構築することも同様にばかげています。)

このため、ネットワークはsegmentedから「小さな部屋」になり、同じsegment(部屋)にいる人が互いに直接話すことができますが、部屋の外にいる人は、ある部屋からにメッセージを渡すために何らかのrouterが必要です。隣の部屋。ただし、部屋の数が膨大であることは、何らかのアドレス指定スキームが必要であることを意味するため、中央にあるさまざまなroutersは、BobからSuzyにメッセージを取得する方法を知っています。 IPプロトコルを使用して、各「部屋」にsubnetを割り当て、ルーターは1つの部屋から次の部屋にメッセージを渡す方法を指示されます。たとえば、ボブのアドレスが1.1.1.1、スージーのアドレスが2.2.2.2で、ボブのsubnetが1.1.1.0/24の場合(つまり、アドレスの最初の3バイトが自分の部屋にあるためには、一致する必要があります)。メッセージをrouterに渡して、スージーの「部屋*」に渡すことができるようにします。ボブは自分のrouterが1.1.1.2であることを知っているので、メッセージをrouterに渡し、ルーターはメッセージを途中で他のルーターに渡します。メッセージは2.2.2.1でSuzyのルーターに渡されます。ルーターはメッセージをSuzyに直接渡します...そしてSuzyは同じ方法でBobに返信を送り返すことができます。

同じsubnet内のコンピューターは、実際にはMACアドレスを使用して互いに直接通信します。実際には、ARPリクエスト(ARP =アドレス解決プロトコル)を送信することから始まります。つまり、「アドレスXXXXを持っているのは誰ですか?」と叫びます...そして、そのアドレスの返信を持っている人は誰でも、その時点から、それぞれと話し続けます。その他直接。

(あなたが本当に興味があるなら、私はこのアナロジーを続けて、インターネットがどのように機能するかについてより多くを説明することができます。)

3
TheCompWiz

理論的には、イーサネットMACアドレスを使用してLANセグメントで通信できない理由はありません。

実際、誰かがアップスレッドについて述べたように、それはそれが機能する方法とほぼ同じです。ラップトップは、「私は11:22:33:aa:bb:ccです。私のIPは10.10.10.20です-誰が10.10 .10.10?」、あなたのNASは「私はxxx10で、私のMACアドレスはaa:bb:cc:11:22:33!」と応答します。ラップトップとNASは、イーサネットフレームヘッダーに適切なMACアドレスを持ちます。

それで、なぜ私は「理論的に」と言うのですか?

実際、イーサネット標準は、デバイスがネットワークセグメント上で相互に配置できるメカニズムを提供します。これは、ネットワークカンバセーションに参加していないデバイスがそれをリッスンする必要がなく、スイッチが各デバイスが接続されている物理ポートを追跡できることを意味するため、便利です。セグメント上のネットワークチャタリングの量を減らし、ネットワークの全体的なスループットを向上させます。

残念ながら、TCP/IPスタックには、イーサネットにはない優れた機能がたくさんありますが、それには十分な理由があります。これらの不足している機能は、各ネットワークアプリケーションの開発者が実装する必要があります。これは、最新のすべてのオペレーティングシステムに少なくともTCP/IPv4スタックがあり、おそらくIPv6のもの。

また、単純なネットワークは単純ではないことが多いという事実もあります。遅かれ早かれ、LANをインターネットまたは別のLANに接続したいと思うでしょう。 IPはルーティング可能ですが、MACアドレスはルーティング可能ではありません。

1
Dermot Williams