- ベストアンサー
MACアドレスって必要? パート2
turumaruさん、mi-siさん、apple-manさん、P2B-Bさん、o_tooruさん、みなさん前回の回答ありがとうございました。 MACアドレスの必要性十分理解しましたが、今一度アドバイスお願いします。 自分の中で以下の環境を想像しております。 自分のオフィスにLANを設置しており、今からGooのHPを見に行こうとしています。(アプリケーションレベルはおいといて、IPレベルまでで考えてます。) 1.自分のパソコンにはプライベートで192.168.0.10と割り当てられている。 2.自分のパソコンは宛先が自分のネットワーク内か外かをネットワークマスクによって判断する。 3.自分のパソコンは、設定されているデフォルトゲートウエイ192.168.0.1に接続しにいく (あれ?192.168.0.1っていってるけど、どうやって自分のパソコンはそのアドレスにつなぎにいくのでしょうか?) 4.それからそのルータが持っているグローバルIPをヘッダーに付加して他のルータに次々に渡されていって、 目的のGooのWWWサーバに到着する。 [疑問点]ルータにつぎつぎと中継されていく中で、それぞれのルータは送られてきたパケットのヘッダーに書かれている宛先アドレスが自分のネットワークのものかを確認して、違えば違うルータに転送していると思うのですが、そのとき、MACアドレスのチェックというかMACアドレスを扱っているのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
結論から言えば、MACアドレスは使われています。 最下層の部分では、ブロードバンドルータのMACアドレスとサーバ側のMACアドレスを参照してデータをやりとりしています。それらの経路情報は中継されるルータなどにスタックされています。(PPPoEやブロードバンドルータ接続の場合) PPPoAなどの場合は若干違って、MACアドレスは一度除去され、代わりにATMヘッダが付加されて送られます。プロバイダ側の受け側装置でATMヘッダが除去され、MACアドレスが改めて付加され、そこでデータのやりとりを行います。 仮に、[PC]-(LAN)-[ルータ]-(WAN)---[www.goo.ne.jp] とします。 1.PC~ルータまで PCには、192.168.0.10、ルータには192.168.0.1のIPアドレスが割り振られています。 PCは、データをアクセスする場合次のようなパケットを出します。 [イーサネットのヘッダ[IPなどのヘッダ[TCP/UDPなどのヘッダ[実際のデータ]]] イーサネットのヘッダの中には自分のPCのMACアドレスと相手側宛先が入っています(ブロードキャスト=すべてのPCに送信する場合と、特定のMACアドレスを指定している場合があります。) PCが192.168.0.1を探す場合とりあえず、イーサネットのヘッダレベルでは、ブロードキャストパケットを投げます。LANに流れているパケットはルーターやNICは常に監視しており、自分宛のパケットで有る場合拾い上げます。PCは、192.168.0.1のアドレスを探していますから、ルーターは自分がその機器であると言う返事を返します。そのときルーターはPCのMACアドレスとIP、接続ポート番号も内部に登録しておきます。 PCのネットワークカードは、ルータの物理的位置(MACアドレス)を知ることが出来たのでこの後はこの情報を利用してデータをやりとりします。 2.ルータから外部の接続 ルータは、届いたパケットを解析して、IPアドレスが内部向けのモノ(管轄内)か外部向けのモノ(管轄外)か判断します。(ネットマスク設定されている部分です。)内部向けのものであれば、そのまま折り返します。外部向けのモノであれば、WAN上にデータを流します。WAN向けのブロードバンドルータの場合、この時にパケットのヘッダの書き換えが行われます。 - 送信元のMACアドレスを、ルータのモノに、 - 送信元のIPアドレスは、グローバルIPに 書き換えます。(このIPの付け替え処理をNATと呼んでます。)通常のルータであればMACアドレスの書き換え(もしくは情報の保持・公開)だけを行います。 データは、モデムなどを通して、プロバイダ側のルータに届きます。ここで、外部宛にデータが流れます。(プロバイダ側のルータは高機能なモノで、そのサーバのIPにたどり着くためのデータ経路情報などを蓄積・設定することが出来ます。)プロバイダ側のルータが、外部の接続先の経路を設定してデータのやりとりを行います。
その他の回答 (3)
- tuyazakimati
- ベストアンサー率0% (0/1)
参考までに付け加えさせていただきます・・。素人ですみませんが。結局同じネットワーク内ならNICがMACアドレスを見てフレームを受け取るか受け取らないか決めてるわけです。そう決まってるんで必要ってな感じですよね。その時のフレームはまぁブロードキャストですよね。もしMACアドレスがなくてIPアドレスで自分宛じゃないか判断してると、判断するのにCPUを圧迫しちゃうんです。MACアドレスで判断するとNICが判断=ハードウェアで判断=CPUに負荷をかけないわけですね・・。
- o_tooru
- ベストアンサー率37% (915/2412)
こんばんわ、がんばっていらっしゃいますね。 さてご質問の件ですが、すでにご専門の方から詳細なお答えがついています。素人の私が口を挟む余地はありませんが。間違えをおそれつつ。 インターネットの基本は分散型です。MACアドレスもお互いに通信しあっている両者しか伝えあいません。つまり、お互いのMACアドレスを知っているのはルーター同士です。 ルーターは外部のネットワークからきた、パケットを解釈して、自分のネットワーク内にあるIPアドレスであれば、初めてIPアドレスとMACアドレスの参照表を引きます。そして、該当のPCにそのパケットを投げかけます。(内部のネットワークのMACアドレスとIPアドレスの参照表をルーターは一定期間保存しています) 言い換えますと、LANの内部ででは、MACアドレスで情報を交換しあっていると考えてもいいんです。ところが、ローカルのネットワークと、外部のネットワークをつなげるときに初めて、MACアドレスにIPアドレスをかぶせて、外部に送り出してあげる必要が発生するんです。 LANの内部にないIPアドレスはすべてデフォルトゲートウェイに聞きに行きます。そして、デフォルトゲートウェイであるルーターは、DNSとの組み合わせで、一番知っていそうなルーターに聞きに行きます。「誰か、www.yahoo.co.jpって知っている?」と。そこでDNSはwww.yahoo.co.jpからIPアドレスを引き出し、「***.***.***」ってアドレスだよ。と教え、ルータを通しての長い旅が始まります。
- honeorizon
- ベストアンサー率70% (197/279)
>違えば違うルータに転送していると思うのですが、そのと >き、MACアドレスのチェックというかMACアドレスを扱って >いるのでしょうか? データが流れる物理層の規格がMACアドレスを使う物(Ethernet とか)で有れば、当然MACアドレスを扱っています。 例えば、Ethernetであれば、ルータを通過した時点で、IPパ ケットのヘッダーに付いているMACアドレスは"ルーターの物 に変わります"。つまり、あなたのPCからGooのWebサイトにIP パケットを送った場合。ずーっと、あなたのNICのMACアドレス が付いているわけじゃなくて、ルータを通過するたびに、 ルータの通過したポートのMACアドレスに変わっているわけで す。 Goo迄の間のルータは、あなたのPCとデータをやりとりして いるのじゃなくて、ルータ同士でデータのやりとりをして いるんですから、あなたのPCのMACアドレスなど不要です。 必要なのは"実際に"データをやりとりしている機器のMAC アドレスなのですから。
お礼
honeorizonさん、mi-siさん、まず、レスポンスありがとうございます。パート2なんかつけて質問したにもかかわらず、ここまで緻密で魂のこもったレスポンスいただきまして、本当に感謝です。 じっくり、読み解いてみます。
補足
なるほど、「ルーターは、IPアドレスではなく、MACアドレスを見ることで、自分宛てのデータであることをきちんと確認することができる」んですね。 意外でした。ということは、ルータがもっているルーティングテーブルにはIPとMACアドレスが対応していた形で保存されているということなのでしょうか?