log

日記です

なぜARPはブロードキャストするのか?

相手先のIPアドレスがわかるなら、そこだけにユニキャストで1対1で通信知ればいいじゃん!と思ってしまいます。L3視点でみると。しかしARPプロトコルではブロードキャストを利用します。
なんで?おかしくない?
まぁ、答えは、IPアドレスだけでは通信はできない、MACアドレスを知らないと通信ができないから。IPアドレスはあくまでも理論的なアドレス。物理アドレスであるMACアドレスを知らないと、通信は行えない。
と、まーた悩んじゃったので書き出しておいて、いつかまた悩んだときに読み返すために備忘録。思考の足跡にでもなれば。
でも文章にするのは難儀なので箇条書きでいこうw

ARPが必要な理由とか

  • 最終的に、MACアドレスを知らないと機器同士(カッコよく言うとノード間)の通信は行えない。
  • でも大体相手のIPアドレスしか知らないよねー
  • IPアドレスからMACアドレスを知る。それがARP
  • え?じゃあどうやってMACアドレスを相手に教えるの?
  • 教えたくても、通信ができないなら伝えられないよねー。紙で渡すの?
  • 互いのMACアドレスを知らないと、一対一の通信は行えない。
  • ブロードキャストフレームなら、一対多での通信が行える。
通信の手順(L2レベル)
  • ARPは、「このIP誰?いたらMACアドレス僕に教えてよ」って感じ。
  • 「あ、それオレだわ」って人は、送信元MACアドレスを見て、それに「あ、自分のMacアドレス送るっす〜」って送信者に教える。(多分。仕様見てない。もしかしたら送信者だけじゃなくて、ブロードキャストフレームで送り返すかも。でもたぶん違う。そんな無駄な、負荷のかかる仕様にはしないはずだ。)
  • 「了解、192.168.0.2はee:aa:bb:cc:aa:eeね。覚えましたー。次からそれで送るわーよろしくー」
ネットワークがつながる理由とか
  • IPアドレスがないと機器を探すの大変、それがIPアドレスがある理由
  • ブロードキャストフレームが、インターネット全体に飛んだら何億人の人のデータがオレのPCまで届いちゃう。そんな処理できない。
  • じゃあ、ブロードキャストフレームは一つのネットワーク(サブネット)単位でわけましょうよ。ブロードキャストをせき止める役割を果たすのがルータ。IP層。
  • L2スイッチングハブは「向こうポートにあいつはいる。それ以外のポートにはいないよ?だからオレは向こうのポートだけにパケットを流す(キリッ」そんな賢い奴。いちょ、たまに自分の情報が信じられなくなり、記憶した情報をクリアする。
  • せき止めたんだけど、向こう側に通信したい人いるんですよ…。はい、そこで登場ゲートウェイ。ルーティング〜。
  • バケツリレー、送信元IPは変わらない。送信元MACアドレスルーター。多分そんな感じでヘッダー書き換えるよルーターさんは。

レイヤーで用語が変わるんだよね・・・

取り扱っているデータの単位っていうの?呼び方が各レイヤーで変わる。各レイヤーでヘッダー情報とかでカプセリングされると名前が変わる。

  • L2ではフレーム
  • L3ではパケット
  • L4ではセグメント

過去の失敗

そういえば、172.17.*.*すべてにping飛ばしていたら、arpしまくりでネットワークにすごく負荷がかかったらしく、怒られたw おそらく、普段宛先が自分じゃないフレームはNICが破棄しているのに、ブロードキャストフレームが来たからしょーがねーなーみてやるか。ってみてやってたけど、それが膨大に来て疲れた。って感じ?L2スイッチの機能は作動せず、バカハブと一緒になってうわーやっべーみたいな?あ、もしかしてコリジョンも起きまくる?えーっと・・・結構大変なことをしていたんだおれは・・・ごめんなさい。