インフラエンジニアとして働いている人の奮闘記録を発信しています。ネットワークの勉強中。最後にTCP/IPをおさらいしようARPを説明する前にTCP/IPについて復習してみたい。Protocol)を合わせたものです。実際には信頼性のある通信を実現するTCPとインターネット通信で相手を特定するためのIPアドレスに基づいてパケットをあて先ネットワークに送るためのIPという風に個別で捉えることは少なく、一般的にTCP/IPといえばネットワークを支える重要な技術というニュアンスで使われることが多いです。中身を覗くとTCPとIPの他にUDPやICMP、FTP、HTTPなど色々ありますから、その点でもお分かりいただけるかと思います。TCP/IPを語る上で重要なモデルがあります。「OSI参照モデル」です。「OSI参照モデル」とは国際標準機構(ISO)によって定められた7層から構成されるモデルのことです。1~7層まであり、番号が大きくなるにつれてソフトウェア、アプリケーション的になります。逆に番号が小さくなるにつれて電気的なデータに近づいていきます。ソフトウェアがあつかう通信サービス層、ファイル、メールの転送などを提供。HTTPやFTP等の通信サービスなどが含まれる。コードなどの定義を管理する。通信プログラム間の通信の開始から終了までのセッションを管理する。エラー訂正、再送制御などTCPの機能などはここに位置する。ネットワーク上の通信経路の選択、つまり一般的なルーティングはこの層でおこなわれる、ルータなどはこの階層での仕事が主になる。接続されている通信機器間の信号のやりとり、受け渡しなど、一般的なスイッチングハブなどはこの層を扱うことが可能となっている。物理的な接続、電気的であったり、その形状など、基本的な通信機器の物理的なものを内包する。この7層はネットワークの世界では当たり前に覚えているものです。この範囲はcisco社が提供する資格CCNAの範囲にもなっているのでぜひとも覚えてください。「アプセトネデブ」となります。ちなみにこういう暗記物に関して自己流の覚え方がありますので紹介します。字面からみてそれぞれ雰囲気を感じ取ってみてください。アプセトネデブアプセトネデブアプセトネデブどうですか?何か感じ取れましたか?私は最後のデブが気になってしょうがないです。OSI参照モデルは階層が下がるごとに物理的になるのでした。すれば、最後のデブって強そうじゃないですか?(大変失礼ですがご了承ください・・・。)逆にアプセトはどうでしょう。字面が軽そうに私は感じます。身軽なアプリケーション寄りだ!と覚えられるわけです。余談ですが、DTEとDCEってありますよね。これも自己流の覚え方があります。字面から、私の感性だとDTEは堅そう、DCEは柔らかそうと感じます。DTEは堅そう・・・狭い範囲のクライアント側だDCEは柔らかそう・・・モヤモヤしたWAN側だと無理やりこじつけて覚えてます(笑)話を戻すと、このOSI参照モデルを元により実践向けのTCP/IPの考え方が出来上がったのです。カプセル化AさんからBさんへデータを送信するとき、送信側ではそのままデータを送っているのではなく、レイヤ7から順番に処理を行っています。その際、階層が下がるに伴いヘッダが付与されていきます。これをカプセル化といいます。最終的には各ヘッダを格納したデータは電気信号となって宛先に送られます。受信側は送信側の逆の手順でヘッダを外していきます。これを非カプセル化といいます。着目されがちなIPに加えて重要なARP前菜は終わりです。本題のARPに入りましょう。通信の世界では二つのアドレスが存在します。IPアドレスとMACアドレスです。これらを二つの世界に分けましょう。IPの世界:IPアドレスイーサネットの世界:MACアドレスさらにOSI参照モデルと照らし合わせればIPアドレス:L3MACアドレス:L2となります。ここで先ほどと同様にAさんからBさんへデータを送ってみます。何でもいいのですが、何らかのアプリケーションを使用して(L7)、AさんがBさんへデータを送るとまずIP(L3)が処理します。IPの役割は通信の経路を考えることで、どのアドレスに送ればよいかを調べてくれます。通信したい宛先のIPアドレスが決まればIPが動くので宛先IPアドレスは分かっています。ここで困ることがあります。カプセル化の話を思い出してみましょう。データを送信するとき、データはL7から順番にヘッダを格納しているのでした。ここまででL3までの処理は終わっています。次のL2ヘッダ、つまりBさんのMACアドレスを知るにはどうしたらよいでしょうか?ここで登場するのがARPというプロトコルなのです。ARPは宛先MACアドレスを調査してくれるものです。IPはARPに対して、x.x.x.xというアドレスの機器が持つMACアドレスを教えてくれ!と指示をします。ARPにはARPリクエストとARPリプライという2種類のパケットが存在し、これらのパケットを利用して宛先MACアドレス情報を取得します。x.x.x.xアドレスの情報を持ったARPリクエストをブロードキャストし、中身を探索しているIPアドレスが自分(x.x.x.x)と分かったら今度はMACアドレス情報を格納したARPリプライをユニキャストします。これでAさんはBさんのMACアドレスを知ることができるのです。その後は各ヘッダを格納したデータが電気信号となり、非カプセル化を通じてBさんにデータが送られるというわけです。実際にカプセル化する際はOSI参照モデル(7層)ではなくTCP/IP(4層)に基づいてカプセル化されます。OSI参照モデルは概念です。詳しくはリンク先を参照してください。3分間ネットワーキング:http://www5e.biglobe.ne.jp/aji/3min/37.html最後になぜARPを取り上げたかというと、ネットワークのスペシャリスト3名の方と対面できた機会がありまして、そこでARPについて質問されたことがきっかけです。「ARPって何に使うか教えて」そう聞かれた私は「ARPは相手のMACアドレスを知りたいときに使うプロトコルです」と答えました。そこで、具体的にどういう機会に使われるかと質問されて悩んでしまいました。自分なりの解答はこれです。「MACアドレスを知りたいわけなのでスイッチなどでMACアドレスフィルタを掛けるときに使用するのでしょうか。この回答が正答なのかわかりません(笑)ちなみに解答はこの記事に書いてある通りカプセル化を経たデータ通信に必要不可欠なものだと教えていただきました。私のネットワークの知識はCCNAレベルですが、ARPについて学んだにもかかわらず本質を理解できてなかったのだと痛感しました。確かに、言われてみればARPが重要なのも頷けます。ネットワークといえばIPでしょ!と考えていた私にとって一石を投じるやりとりでした。ネットワークの世界は面白いものです。なんでネットワークとは程遠い案件をやっているんだろう・・・(笑)実務経験がないのが悔しいです。2018.12.09エンジニアらしいことってなんだろう。エンジニアにも色んな種類がありますが共通点があります。コメントをキャンセルメールアドレスが公開されることはありません。コマンド集#3プロフィールネットワーク、サーバ周りの仕事をしている新人インフラエンジニアです。新人の目からみたエンジニアの世界を紹介したいと思います。WordPress.%d人のブロガーが「いいね」をつけました。