web-dev-qa-db-ja.com

IPを使用せずにイーサネットネットワークを作成できますか

ISO-OSIモデルからわかるように、MACアドレスはIPアドレスとは異なるレイヤーで動作します。これは私には明らかです。

イーサネット(LAN)は通信にIPアドレスを使用せず、MACアドレスを使用することを受け入れます。これらのMACアドレスは階層的に定義されていないため、LAN外へのルーティングには使用できないことを理解しています。また、IPは大規模なインターネット上でルーティングを行うための最良の方法であることも理解しています。私が完全には確信していないのは、MACアドレスがLANで通信するための最良の方法であることです。


私の質問は次のとおりです。

  1. イーサネットはIPアドレスを使用してメッセージを送信できませんでしたか?私はそうするべきだと言っているのではなく、そうすることを選択できたかどうか尋ねているだけです。
  2. イーサネットはMACアドレスを通信に使用するので、デバイスにIPアドレスがなく、MACアドレスしかないイーサネットネットワークを作成できますか?
14
Michael

イーサネットは、それ自体のデータリンク層アドレスの代わりにIPアドレスを使用できましたか?確かにそうではありません。もしそれがどのレイヤ3プロトコルを使用しているかにとらわれたくないのなら。

レイヤーでネットワークプロトコルを設計して、レイヤーを組み合わせて使用​​できるようにします。

イーサネットはもともと、ボブ・メトカーフらによってXerox PARCでネットワーク層にとらわれないように開発されました。その目的は、TCP/IPアクセスだけでなく、Xerox独自のXNSネットワークプロトコルスタック/スイートのためでもあったためです。

DEC(Digital Equipment Corporation)は、別のアーリーアダプターになり、主にDECnetプロトコルスタック/スイートに使用しました。

80年代後半と90年代前半には、企業のイーサネットLAN上で多数の競合するLANプロトコルスイート(すべてTCP/IPから完全に独立)が実行されていました。 XNSとDECnetのほかに、AppleのAppleTalk(EtherTalk)、NovellのIPX、Banyan VINES、NetBEUI、DLC/LLC、IBM SNA、OSI/ISOなど、私が忘れていたものがあります。

したがって、はい、IPなしでイーサネットを使用できます。多くの企業ネットワークが80年代と90年代にそれを行いました。

イーサネットは、どのレイヤー3(ネットワークレイヤー)プロトコルが実行されているかを気にしないように設計されているため、企業LANがさまざまなベンダーの機器の組み合わせをサポートするのは比較的簡単で、IPv4を追加するのも比較的簡単でした。 90年代半ばから後半にかけてインターネットが普及したときのサポートで、IPv6サポートを追加するのは比較的簡単です。

5
Spiff

イーサネットは通信にMACアドレスを使用するため、デバイスにIPアドレスがなく、MACアドレスしかないイーサネットネットワークを作成できますか?

独自のソフトウェアをすべて最初から作成している場合は、これを確実に実行できます。ソフトウェアに、そのプログラムの通常の対応先がIPアドレスを受け入れていた場所ならどこでもMACアドレスを受け入れさせるだけです。すべてのシステムコールを使用して、IPアドレスではなく生のイーサネットパケットを送信します。これは機能しますが、非常に面倒です。

一般に、ネットワーク上のMACアドレスはどのパターンにも従いません。それらは製造元によってハードウェアに焼き付けられます。彼らは長くてかさばります。私の現在のところはC8-60-00-CA-4B-9Aです。私の隣のコンピューターは00-40-F4-48-1B-88です。

マシンが互いに対話できるようにするには、ネットワーク上の他のすべてのマシンのすべてのMACアドレスのハードコーディングされたリストを各マシンに与えて、パケットの送信先がわかるようにします。これは多くのエラーが発生しやすいタイプ入力であり、ネットワークハードウェアを変更した場合は常に、新しいMACアドレスを反映するためにすべてのリストを変更する必要があります。

これは非常に面倒なので、おそらく、ネットワーク上のマシンがブロードキャストパケットを使用して互いのMACアドレスを自動的に検出する方法を考え出すことになります。次に、意味のあるアドレスで自分自身を識別する方法を彼らに与えるので、「telnet C8-60-00-CA-4B-9A」のようなコマンドを入力する必要があります。

これはまさにIPが行うことであることがわかります。これは、MACアドレスをハードコーディングするのではなく、ネットワーク上のホストをアドレス指定するために意味のある番号を使用する方法です。 IPの上にDNSを追加すると、「telnet webserver」のようなコマンドを入力できます。

イーサネットはメッセージを送信するためにIPアドレスを使用できませんでしたか?私はそれをする必要があるとは言っていません。そうすることを選択できたかどうか尋ねているだけです。

MACアドレスは6バイトの情報で、IPアドレスは4バイトのみであるため、1対1のマッピングを行うことはできません。 IPアドレス(ネットワーク上の別のホストと通信するソフトウェアによって提供される)からMACアドレス(パケットに入れる)を見つける何らかの方法が必要です。

これを行う1つの(ハードコア)方法は、ネットワーク上のすべてのマシンにアクセスし、ハードウェアMACアドレスを変更して、先頭の2バイトをゼロ(または同じである他の固定数)にすることでIPアドレスのように見せることですネットワーク上のすべてのマシンに対して)、下の4バイトを、ネットワーク上で必要な「IPアドレス」に設定します。 (ほとんどのネットワークカードでは、ベンダーが割り当てたMACアドレスにアクセスして変更できます)

これを実際に機能させるには、次に、このシステムを実際に使用するために、ネットワークスタックのコードをハックアップする必要もあります。基本的に、ARP(IPがIPアドレスをMACアドレスに変換するために使用する方法)に関係するすべてのものを取り除きます。 IPヘッダーを構築/読み取る部分を削除します。代わりに、アドレスw.x.y.zのホストに送信されるIPパケットが与えられ、DESTアドレスが00-00-w-x-y-zに設定されたイーサネットフレームを構築するという非常に単純なコードにすべて置き換えます。

また、どのプロトコル(UDP、TCP)を対象とするかをパケットの受信者に示す方法も必要です。おそらく、既存のフィールドを上書きすることで、これをイーサネットヘッダーのどこかに貼り付けることができます。送信元アドレスの上位2バイトの1つを使用しているのでしょうか?これは宛先マシンの受信能力には影響しませんが、いくつかのスイッチを台無しにする可能性があります。イーサネットフレームの最初または最後にプロトコルを追加して、ペイロードサイズを1つ増やすこともできますが、これはIPヘッダーのような匂いがし始めています。

それで、このすべての仕事であなたは何を買うでしょうか?

まず、すべての発信パケットのARPテーブルでのルックアップのオーバーヘッドを節約します。これはおそらくマイクロ秒程度です。

IPヘッダーチェックサムの計算作業と、それらを保持するために必要なメモリを節約できます。これはおそらく、最新のハードウェアでは重要ではありません。

IPヘッダーがないため、ネットワーク上のすべてのパケットで16バイトを節約できます。これは、アプリケーションによっては加算されます。

最大の利点は、ARP要求を実行する必要がないことです。標準のIPパケットを新しいホストに送信すると、ARP交換がトリガーされ、ミリ秒かかる可能性があり、予測できません。これは、レイテンシとジッターに非常に敏感な一部のアプリケーションにとって大きな利益になる場合があります。

一部の非常に特殊なアプリケーションでは、これは実際に行うのが理にかなっています。私はかつて、ARPシーケンスが作動して予期せず遅延とジッターを追加するのを回避するという唯一の理由で、すべてのホスト間通信にブロードキャストUDPパケットのみを使用するリアルタイムシステムを使用していました。また、ARPとネットマスク、および追加のチェックサムなどのすべてを実装するために必要な複雑さとメモリをすべて節約したため、IPパケット内に直接IPパケット内にUDPペイロードを送信することで機能するリソース限定の組み込みシステムにも取り組みました。

4
bigjosh

イーサネットはIPアドレスを使用してメッセージを送信できませんでしたか?私はそうすべきだと言っているのではなく、そうすることを選択できたかどうか尋ねているだけです。

イーサネットでは、IPv4などの4バイトのアドレスを6バイトのアドレスの代わりに使用できたと思います。彼らが今までに数字を使い果たしたので、彼らがやらなかったのはおそらく良いことでしょう。

イーサネットはMACアドレスを通信に使用するので、デバイスにIPアドレスがなく、MACアドレスしかないイーサネットネットワークを作成できますか?

IPアドレスの代わりにMACアドレスを使用するプログラムがある場合は、これを行うことができます。もちろん、あなたはそのネットワークに行き詰まり、ハッカーがいなければ他の人に到達することはできません。

ルーティングを計画している場合、特に別のネットワークがトークンリングなどのイーサネットとは異なるレイヤー2テクノロジーを使用している可能性がある場合は、IPレイヤーが本当に必要です。別のレイヤー2テクノロジーが将来ユビキタスになるかどうかは誰が知っているでしょう。もしそうであれば、IPはそれから独立しています。

1
LawrenceC
> Couldn't Ethernet make use of IP addresses to send messages? I'm not
> saying it should, I'm just asking if it could have chosen to do so.

イーサネットをネットワーク層として参照している場合は、できません。ネットワーク層には、ネットワークデバイスの物理アドレスが必要です。 IPアドレスは、わかりやすくするためにMACアドレスに割り当てられる任意の番号です。 IPアドレスはソフトウェアソリューションであり、ネットワークカードの一部ではなく、ハードウェアソリューションです。そのため、IPアドレスは簡単に変更できますが、MACアドレスはカードにハードコードされており、変更できません(MACアドレススプーフィングソフトウェアであるにもかかわらず、アドレスが何であるかについては、アドレスをそれほど変更しません。 )

> As Ethernet uses MAC addresses for communication, could I create an
> Ethernet network where devices would not have an IP address, just a
> MAC address?

はい、できますが、機能が非常に制限されており、ユーザーフレンドリーではないため、それを楽しむことはできません。トランスポート層が実装されたのには理由があります。

WikiPedia から、トランスポート層は、フロー制御、セグメンテーション/デセグメンテーション、およびエラー制御を通じて、特定のリンクの信頼性を制御します。一部のプロトコルは、状態指向および接続指向です。これは、トランスポート層がセグメントを追跡し、失敗したセグメントを再送信できることを意味します。トランスポート層は、正常なデータ送信の確認応答も提供し、エラーが発生しなかった場合は次のデータを送信します。

したがって、現在はTCP/IPプロトコルを意味するトランスポート層を使用しないと、データが宛先に到達したことを確認したり、欠落している部分を自動的にリセットしたりすることができません。

IPネットワークは抽象化であり、間接的なレイヤーです。つまり、仮想ネットワークであり、特定の物理的な通信方法に永続的にバインドされているわけではありません。端末。

イーサネットホストには、それをグローバルに一意に識別する(NICごとに)1つのMACアドレスがあります。ただし、このホストは、常に1つのMACアドレスを使用しながら、同時にそれぞれに異なるIPアドレスを持つ多くのIPネットワークに属することができます。

この物理的および論理的アドレッシングの分離、またはアドレッシングの仮想化により、別のMACアドレスを使用して、ある物理マシンから別の物理マシンにIPホスト(例:サーバー)を移動するなど、特定の柔軟性が可能になりますが、他のホストの再構成は不要です。 (例:クライアントソフトウェア)。

IP、またはインターネットプロトコル、およびイーサネットは、さまざまな問題を解決します。イーサネットはLANレベルでの通信を提供し、単一のLANでのみ通信します。LANがルーターを介して接続されている他のネットワークは関係ありません。一方、IPはinternetworkingに関係しているため、LANに依存しません。では、イーサネットでMACアドレスの代わりにIPアドレスを使用できたのでしょうか。もちろん、これらのメッセージはまだLANに制限されているため、実際には何も得られません。

2番目の質問への回答として、このような状況は、IPアドレスの割り当てに 動的ホスト構成プロトコル(DHCP) を使用しているイーサネットLANでさまざまなタイミングで発生します。新しいホストがLANに接続するとき、IPアドレスを取得していないため、ブロードキャストされたイーサネットフレームをすべてのデバイスに送信し、DHCPサーバーからの応答を待ちます。この時点では、クライアントはDHCPサーバーのMACアドレスもIPアドレスも知らないため、ブロードキャストを認識しません。要求を受信すると、サーバーはクライアントのMACアドレスを認識し、応答に正しく対処できるようになります。

0
chritohnide

ローカルネットワーク上のマシンがルーティング層なしで通信することは確かに可能です。イーサネットフレームにメッセージを埋め込むだけで、最高の状態を望みます。これは、はがきにメモを書いて、郵便局がその仕事をすることを望んでいるようなものです。

受信者がリッスンしていることを期待する必要があります注意深く応答メッセージを(おそらく他のノードからの他のメッセージのlotの間で)リスニングします。これらすべてのメッセージを自分で整理する必要があります。

1:1メッセージングなどが必要な場合は、イーサネットフレームの上に別のプロトコルを追加して、このすべてのリスニングを処理する必要があります。これにはポイントツーポイントプロトコル(PPP)がよく使用されます。イーサネット経由では、PPPoEと呼ばれます。 PPPoEは、認証と暗号化を提供します。どちらもブロードキャストネットワークでは非常に優れたアイデアです。

ただし、何らかのルーティング情報がないと、ローカルネットワーク上のノードとしか通信できません。ルーティング情報を使用してメッセージをリレーする(インターネットなど)とすぐに、IPやIPXなどの何らかの形式のルーティングプロトコルが必要になります。そしておそらくあなたは同様に伝送制御(TCP)も必要とするでしょう...

0
david25272