ARP(IP→MAC)を基本情報「H28春期午後問4」から学ぶ
私は4月に応用情報技術者試験を受験予定で、午後はネットワークを選びたいのですが、基本情報(去年10月)の午後ではネットワークを選択しませんでした。
それもあって、応用情報のネットワークの午後問題は難しすぎて手も足も出ません(泣)
なので、選択肢があり文章もちょっと短い、基本情報の午後のネットワーク問題を解いて勉強しています!
それで、今日解いた基本情報の平成28年春期午後の問4のARPの説明が勉強になったので、その問題で学んだことをまとめます。
問題の本文
印刷するなら
IPA 独立行政法人 情報処理推進機構:問題冊子・配点割合・解答例・採点講評(2016、平成28年) にあるPDF https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2016h28_1/2016h28h_fe_pm_qs.pdf p.17~19がネットワークの問題です。スマホからサクッと見るなら
基本情報技術者過去問題 平成28年春期 午後問4|基本情報技術者試験.com からすぐ問題を見ることができます。解説もついてます!
勉強になった① ARPって本当に使われてたんだ!
まず、問題が始まってすぐの部分です。
IPネットワークにおいて,あるホストが別のホストと通信する場合,通信相手のホストのIPアドレスを指定して通信する。
下位層にイーサネットを用いるときには,通信相手のホストのMACアドレス,又は通信相手のホストに到達可能なルータのMACアドレスが必要になる。
しかし,IPネットワークで通信を行うアプリケーションでは,通信相手のIPアドレスやホスト名を明示的に指定することはあっても,MACアドレスを明示的に指定することはない。
したがって,IPアドレスを手掛かりとして必要なMACアドレスを得るために,IPネットワークではARP(アドレス解決プロトコル)というプロトコルが用いられる。
基本情報技術者試験 平成28年春期 午後 問4より(読みやすくするために改行してます)
当たり前じゃん、って思う方はちゃんと理解されてる方ですね(笑)
私が今まで勉強してきたことと合わせてまとめると、
- なにかデータを送るときは、住所としてIPアドレスを指定する。
- 同じネットワーク内はMACアドレスを使ってデータを送る。この時にARPを使ってIPアドレスからMACアドレスを調べる。
- ちがうネットワークに送るときも、ルーティングテーブルからルータ①(今いるネットワーク)→ルータ②(次に送る先のネットワーク)の経路を決定した後、そのルータ②のMACアドレスをARPで調べる。
- つまりホスト→ルータ、ルータ→ルータ、ルータ→ホストのいずれにしろARPでMACアドレスを調べなければいけない
私は、IPアドレスのことも、MACアドレスのことも、ARPのことも知識としては知っていたのですが、それらが結びついていませんでした。
ARPって参考書だと数行の説明で終わっちゃうので、そんなに使われてない技術なのかな?って思っちゃってたんですよね…
こうやってARP(IP→MAC)の重要さを知ってると、ARPとRARPってどっちがどっちだっけ?て思わずにすみますね!
(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要求をたくさん送ってたら大変そうですよね。