いつか、技術ブログを

新人SE(OJT中)が技術ブログを書きたがっているブログです

ARP(IP→MAC)を基本情報「H28春期午後問4」から学ぶ

私は4月に応用情報技術者試験を受験予定で、午後はネットワークを選びたいのですが、基本情報(去年10月)の午後ではネットワークを選択しませんでした
それもあって、応用情報のネットワークの午後問題は難しすぎて手も足も出ません(泣)
なので、選択肢があり文章もちょっと短い、基本情報の午後のネットワーク問題を解いて勉強しています!
それで、今日解いた基本情報の平成28年春期午後の問4ARPの説明が勉強になったので、その問題で学んだことをまとめます。

問題の本文

勉強になった① ARPって本当に使われてたんだ!

まず、問題が始まってすぐの部分です。

IPネットワークにおいて,あるホストが別のホストと通信する場合,通信相手のホストのIPアドレスを指定して通信する。
下位層にイーサネットを用いるときには,通信相手のホストのMACアドレス,又は通信相手のホストに到達可能なルータのMACアドレスが必要になる。
しかし,IPネットワークで通信を行うアプリケーションでは,通信相手のIPアドレスやホスト名を明示的に指定することはあっても,MACアドレスを明示的に指定することはない
したがって,IPアドレスを手掛かりとして必要なMACアドレスを得るために,IPネットワークではARP(アドレス解決プロトコル)というプロトコルが用いられる。
基本情報技術者試験 平成28年春期 午後 問4より(読みやすくするために改行してます)

当たり前じゃん、って思う方はちゃんと理解されてる方ですね(笑)
私が今まで勉強してきたことと合わせてまとめると、

  • なにかデータを送るときは、住所としてIPアドレスを指定する。
  • 同じネットワーク内はMACアドレスを使ってデータを送る。この時にARPを使ってIPアドレスからMACアドレスを調べる。
  • ちがうネットワークに送るときも、ルーティングテーブルからルータ①(今いるネットワーク)→ルータ②(次に送る先のネットワーク)の経路を決定した後、そのルータ②のMACアドレスARPで調べる。
  • つまりホスト→ルータ、ルータ→ルータ、ルータ→ホストのいずれにしろARPMACアドレスを調べなければいけない

私は、IPアドレスのことも、MACアドレスのことも、ARPのことも知識としては知っていたのですが、それらが結びついていませんでした。
ARPって参考書だと数行の説明で終わっちゃうので、そんなに使われてない技術なのかな?って思っちゃってたんですよね…
こうやってARP(IP→MAC)の重要さを知ってると、ARPRARPってどっちがどっちだっけ?て思わずにすみますね! (TCP/IP - ARPとは、RARPとは によると、RARPは現在ほぼ使われていないそうです。)

勉強になった② MACアドレスをホスト(サーバ)が教えてくれるんだ!

ARPの機能の説明〕
 IPアドレスを基にMACアドレスを得るARPの機能は,問合せとして"ARP要求"を送信し,それに対する回答として"ARP応答"を受け取ることで実現される。
 例えば,セグメント 10.1.1.0/24 において,ホストA(IPアドレス 10.1.1.10,MACアドレス 00:53:00:DA:C7:OB)がホストB(IPアドレス 10.1.1.20,MACアドレス 00:53:00:EC:17:27)宛てにIPデータグラムを送信しようとしたとき,ホストBのMACアドレスARPによって,次のようにして得られる。
(1):ホストAは,IPアドレス 10.1.1.20 に対するARP要求を送信する。このとき,ARP要求はブロードキャストされる。
(2)ARP要求を受け取ったホストBは,そのARP要求が自分のIPアドレスに対する 問合せであることを確認すると,自分のIPアドレス 10.1.1.20 とMACアドレス 00:53:00:EC:17:27 を格納したARP応答を送信する。同じARP要求を受け取ったその他のホストは,それが自分のIPアドレスに対する問合せではないので,無視する。
(3):ホストAは,ホストBが送信したARP応答を受け取ることによって,IPアドレス 10.1.1.20 に対応するMACアドレスが 00:53:00:EC:17:27 であることが分かる。
ホストAは,ホストBのIPアドレスと得られたMACアドレスの対応付けをキャッシュする。キャッシュが破棄されるまで 10.1.1.20 宛てのIPデータグラムを送る際,イーサネットフレームの宛先MACアドレスとして 00:53:00:EC:17:27 を使用する。
基本情報技術者試験 平成28年春期 午後 問4より(下線を引いた"ブロードキャスト"はもともと空欄で選択問題になっています)

ちょっと読むの大変ですが、こういうことだろうな?と思ってまとめました(画像の①〜④と問題文中の(1)〜(3)は対応してません)↓

参考サイト

第11回 MACアドレスを解決するARPプロトコル:基礎から学ぶWindowsネットワーク - @IT
ARP要求について、わかりやすく説明されてました。

このARPの要求とそれに対する応答は、TCP/IPをサポートしているシステムは必ず実装している。そのため、この方法ですべてのコンピュータが通信相手のMACアドレスを取得することができる。

と書いてあったので、本当に当たり前に使われている技術なんだな、と思いました。
単純な仕組みなので、参考書ではさらっと触れて終わっちゃってるんでしょうね…

感想

基本情報&応用情報の午後問題って、前提知識の説明から入ってくれる上に、知識がどういう使われ方をしてるかも分かるので、解いてる途中に「そういうことだったんだ!」って勉強になることがよくあります!
参考書だとARP(当たり前に使われてる技術)とRARP(ほぼ使われていない技術)が並列で書いてあるので、「すごく使われてるよ」「全然使われてないよ」と全ての技術について書いてある参考書が欲しいです。たまになら書いてあるんですけどね。

情報処理技術者試験のファン(笑)になってきたので、応用情報に受かったらデータベーススペシャリストとかも受けたいなーと思ってます!
とりあえず応用情報に合格できるよう頑張ります!!

追記(3/20)

3 Minutes Networking No.26 によると、各PCがARPテーブルという「IPアドレスMACアドレスの対応表」を持っていて、そこにIPアドレスがなかった場合のみARP要求を行うらしいです。確かにブロードキャストでARP要求をたくさん送ってたら大変そうですよね。