IPアドレスはMACアドレスにどのようにマッピングされますか?


14

MACアドレスとIPアドレスの違いと、両方が必要な理由について読んでいます。

要約すると、MACアドレスは、IPアドレスが割り当てられ、変更可能で、仮想である間、すべての単一デバイスの物理的に変更できない一意のIDです。類推すると、MACアドレスは恒久的な名前を持つ人々のようなものであり、IPアドレスは現在住んでいる場所です。

現実の世界では、電話帳を使用して住所と名前をリンクします。IPアドレスをMACアドレスにリンクするメカニズムと、このメカニズムはネットワーク内のどこにありますか?


5
あなたの質問を検討した後、私はあなたが良い本から利益を得ると思います。線に沿って何か勉強を検討しTCP / IPイラスト集を。1:スティーブンスのプロトコル(FYI、1993年版は一般的に2011年の再リリースよりも優れていると考えられていますが、1993年版はIPv4の詳細のみを扱っています)。
マイクペニントン14年

「図解されたネットワーク:現代のネットワークにおけるTCP / IPの仕組み」および/または「TCP / IPガイド:包括的な図解されたインターネットプロトコルリファレンス」も一見の価値があります。
イェンスリンク14年

4
@MikePenningtonありがとう、それは「RTFM」や-1とは対照的に、それを表現する良い方法です。私は今それをオンラインで読んでいます :)
CodyBugstein 14年


1
MACアドレスは、実際には物理的でも、変更不可能でも、一意でもありません。再起動するたびにMACをランダム化するデバイスを見てきました。ほぼすべてのインターフェイスのMACを一時的または永続的に変更するためのほぼすべてのプラットフォーム用のユーティリティが確かにあります。iOS 8は、ネットワークをスキャンするためにwifi MACをランダム化します。
MacLemon 14年

回答:


19

このメカニズムは、アドレス解決プロトコル(ARP)と呼ばれます。すべてのイーサネットIPv4デバイスは、ターゲットIPのイーサネットMACアドレスを解決するためにARPをARPします。IPからMACへのマッピングは、各デバイスのARPテーブル(類推すると電話帳)に保存されます。

簡単にするために:ほとんどの場合、IPアドレスに関連付けられたMACアドレスを解決するには、ブロードキャストARPパケットを(ネットワーク内のすべてのデバイスに)送信して、そのIPアドレスを持っている人を尋ねます。そのIPアドレスを持つデバイスは、ARP(MACアドレス)に応答します。


ほとんどの場合、ローカルarpテーブルから検索するだけです。放送をする必要があるのは初めて
ランチャー14年

^もちろん、デバイスMACを検出した後、しばらく(数分)ARPテーブルに保存するため、パケットごとにARPクエリプロセスを繰り返す必要はありません。
mulaz 14年

ああ、私はそれが数分後にテーブルを落としたことに気づかなかった。私はそれがしばらく続いたと思った。それはARPポイズンを意味するのですか、ARP応答を準頻繁に送信する必要がありますか?
ランチャー

はい、そして「本物の」ホストは、汚染されたマシンにパケットを送信してはなりません。さもないと、マシンは「本物の」MACを保存します。
mulaz 14年

1
あなたが達成しようとしているものに応じて。
mulaz

13

質問にはIPv6のタグが付けられていたので、IPv6はIPv4とは大きく異なるため、その質問にお答えします。

そもそも、ARPv6のようなものはありません。レイヤー2アドレスとIPv6アドレス間のマッピングは、ICMPv6を介して送信される近隣探索プロトコル(NDP)によって行われます。したがって、レガシーIPのカスタムのように、ICMPv6を無視してフィルタリングしてはなりません。NDPは、ここで重要な2つのメッセージタイプ、Neighbor SolicitationとNeighbor Advertisementを提供します。特定のIPアドレスのリンク層アドレスを学習したいノードは、近隣の要請ノードのマルチキャストアドレスに近隣要請を送信します-IPv6のブロードキャストはもうありません。

たとえば、問題のアドレスがの場合、対応する2001:db8::0011:2233:4455:6677要請ノードマルチキャストアドレスはff02::1:ff55:6677であり、対応するイーサネットマルチキャストアドレスは33:33:ff:55:66:77です。アドレスが末尾にあるすべてのノードは、*55:6677そのマルチキャストグループに属し、それをリッスンします。これは、ほとんどの場合、ターゲットシステム自体のみです。近隣要請には、ユニキャストIPv6アドレスと要請システムのMACアドレスも含まれます。

受信時に、ターゲットノードはネイバーアドバタイズメントで応答します。ネイバーアドバタイズメントは、要請ノードのユニキャストアドレス(リンク層とIPv6)に送信されます。したがって、要請ノードはターゲットノードのMACアドレスを学習します。

そして、はい、NDPスプーフィングはARPスプーフィングと同じように機能します。いいえ、IPsecは答えではありません。


ARP自体は使用できません。4バイトのネットワーク層アドレス(つまりIPv4)用に作成されたためです。」これは事実ではありません。ARPは、アドレス長フィールドを使用して、レイヤー2アドレスとレイヤー3アドレスの両方のアドレス長(最大255オクテット)を指定します(RFC 826を参照)。ARPをIPv6で使用できない理由は、IPv6にブロードキャストがないためです。
ロンモーピン

1
v6にはブロードキャストがないためではなく、セキュリティ上の理由でv6でARPがNDPに置き換えられました(そして、すべての優れたv6隣接プロトコルと同様に、重要な機能クリープが発生しました)。ARPはL2ブロードキャストのみを使用し、 v6アドレス。
ニックバスティン

2
そもそもセキュリティ上の理由でARPが置き換えられたかどうかはわかりません。私の知る限り、すべての制御プロトコルをICMPv6でカバーしたいという要望がありました。副作用として、はい、IPsecでICMPv6を保護できます。ただし、IPsecではキー交換が必要で、IKEはUDPで実行されます。これにはIPアドレスが必要です。NDPの1つのタスクはIPアドレスをネゴシエートすることであり、手動キー交換はスケーリングしないため、NDP + IPsec =セキュアNDPの考え方はこの方法では機能しません。SeNDのような代替品はまだリリースされていません(そして、おそらく決してリリースされません)。結局、私はNDPがARPを上回るセキュリティ上の利点を見ることはありません。
カウンター

4

トップの答えは良いです。助けになる場合は、ここで電話帳の類推について説明します。括弧内の実際のネットワーク用語。

彼らの名前(IPアドレス)に基づいて、彼らはあなたの近所(ブロードキャストドメイン)に住んでいることがわかります。まず、電話帳(ARPキャッシュ)を見て、アドレス(MACアドレス)が既にわかっているかどうかを確認します。電話帳にない場合は、外に出て叫び(ブロードキャスト)、「スティーブはどこに住んでいるの?」と大声でみんなが聞くことができます(ARP要求)。スティーブが実際にそこに住んでいて、目が覚めていると仮定すると、彼は叫ぶのではなく、あなただけに「ここに私の住所があります」と答えます(ARPの返信)。将来の参照(ARPキャッシング)のために電話帳に書き留めます。


承知しました。それは私にとって楽しい運動でした。ブロードキャスト/ユニキャストのような実際のものは、アナロジー(叫び/話/メール?)に完全には対応していません。
ジャックトース

編集者:MACの場合、後の例でアドレスを使用しました。
ジャックトース

2
  1. MACアドレスは変更できます。Linuxでは、ほとんどのWindowsでipまたはifconfigを使用して、ネットワークインターフェイスのドライバー設定を確認します。

  2. 何も変換しません。MACアドレスはOSIモデルのレイヤー2、IPはレイヤー3にあります。IPv4の場合、ARPを使用して、特定のIP(レイヤー3)アドレスに属するMAC(レイヤー2)アドレスを見つけます。IPv6の場合、ICMPv6(近隣探索)が使用されます。


申し訳ありませんが、「変換」ではなく「翻訳」と言うべきでした
CodyBugstein 14年

0

アドレス解決プロトコル(ARP)

IPアドレス---> ARP ---> MACアドレス

MACアドレス---> RARP ---> IPアドレス

IPアドレス=論理アドレス[32ビット]

MACアドレス=物理アドレス[48ビット]

ネットワーク層(IP)----> ARP --->データリンク層(MAC)

送信元/宛先ホストを識別するには、ネットワーク層でIPアドレスが必要です。

MACアドレスは、ソース/宛先ホストを識別するためにデータリンクレイヤーで必要です。


あなたはRARPについて間違っています(多くの人がこの間違った考えを持っています)。これは、他のホストのIPアドレスではなく、ホストが自身のIPアドレスを決定するために使用していたものです。使用されなくなりました。
ロンモーピン

0

ネットワークスタックはまずルーティングテーブルで宛先IPを検索し、これから2つのことを決定します。

  1. パケットが送信されるインターフェイス。
  2. ネクストホップのIPアドレスは何ですか。ルーティングテーブルにネクストホップが指定されていない場合、宛先のIPがネクストホップとして使用されます。

ネクストホップIPアドレスは純粋にローカルな概念であり、有線で送信されるパケットの一部になることはありません。

パケットがマルチポイントリンク層(イーサネットなど)で送信される場合、OSはそのarp(ipv4)または近隣探索(ipv6)テーブルで次のホップを検索します。失効していないエントリが見つかった場合、必要なMACアドレスがあり、パケットを送信できます。

使用可能なエントリがない場合は、そのネクストホップ宛てのパケットを保留にし、MACアドレスを見つけるための要求を送信します。ここでのメカニズムは、v4とv6で少し異なります。

v4では、arp要求が送信されます。これは通常ブロードキャストですが、場合によっては、ホストに古いエントリがある場合、最初にユニキャスト要求を試行し、失敗した場合にのみブロードキャストにフォールバックすることがあります。通常、応答はユニキャストです。

v6では、neigbour要請要求は、ネクストホップアドレスから生成されたマルチキャストアドレスに送信されます。ターゲットはユニキャストネイバーアドバタイズメントで応答します。ホストは、近隣広告を「全ノードマルチキャスト」(別名、効果的にブロードキャスト)グループに送信して、ピアの近隣探索キャッシュのエントリを更新することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.