【超図解】ネットワーク層のプロトコルと役割をわかりやすく解説
はじめに
こんにちは!猿喰です。
この記事ではネットワークを理解していただくために、OSI参照モデルをレイヤーごとに詳しく説明しています。ターゲットとしてはITパスポート、基本情報技術者レベルの知識を身につけることとしています。
今回は第3層(レイヤ3)ネットワーク層の説明になります。
>>OSI参照モデルについて最初から見たい方は以下の記事から御覧ください
それでは参りましょう~。
ネットワーク層とは?
ネットワーク層の役割としては、異なるネットワーク同士を中継することを担ってます。
パケットにヘッダーを付与し、このヘッダーに送信先IPアドレスを設定します。
ネットワーク層はこの図を元に説明していきたいと思います。
赤い四角の長丸がLAN(ローカルエリアネットワーク)です。LANとは、狭い範囲にあるコンピューターで構成されたネットワークのことを言います。
例えが社内だったり家の中がそれにあたります。
この図では、2つのLANがあり、そのLANをL3スイッチという機器で接続している図です。
第3層、レイヤー3のネットワーク層で利用される機器なので、「レイヤー3スイッチ」略してL3スイッチといいます。
ルーターもこのネットワーク層で利用される機器ですが、両機器の違いは別の記事で詳しく説明します。
まずは両機器とも異なるネットワーク間を中継する通信機器のことと理解して頂ければと思います。
それでは、コンピュータが通信をする流れを見ていきましょう。
※通っていくルートがわかりやすいように緑色にしています。
ネットワーク層では、やり取りに指定する住所をIP アドレスと呼ばれる論理アドレスを利用します。
それでは、左のLANのパソコンIPXXX.から右のLANのパソコンIPXXXまでデータがどう流れるかを見ていきましょう。
最初にコンピュータは自身のPCに登録されている経路表ルーティングテーブルを確認します。
ネットワーク項目にはネットワークアドレスが記載されており、ネクストホップには、そこに送るための実際の送信先を表しています。
IPアドレスの見方は別の記事で説明しますので、ここではわかりやすいように、次のようにに変えさせていただきます。
ルーティングテーブルの、ネットワークの項目はシンプルにすると"自分のLANか"、"自分のLAN以外か"です。そうローランドさんの名言「俺か、俺以外か」です。
コンピュータはまず、データを送信する先のIPアドレスを見て、そのアドレスの属するネットワークが自分のLANにあるか、そうでないかを確認します。例えばここで自分のLANにいると判断したらネクストホップを確認して、直接接続されてることを知り、同じLAN内に第2層で学んだ方法でデータを送信します。
一方自分のLAN以外と判断した場合は、外のLANに飛ばすために、ネクストホップを確認して、送信先のIPアドレス(この図だと192.168.11.1)を確認します。このアドレスはL3スイッチのアドレスです。
次に送信するルート、つまり宛先のIPアドレスが決定したら、送信を開始したいところですが、
第2層のデータリンク層で説明したようにイーサーネットでは送信に宛先のMACアドレスが必要です。
そのため、IPアドレスに対応するMACアドレスを調べるためにARPというプロトコルを利用します。
ちなみにこのARPというプロトコルは、データリンク層と、ネットワーク層どっちのプロトコル説もありますが、Oracleのサイトでは「データリンク層とインターネット層の間に概念的に存在するものです」と記載されています。
今回は、ネットワーク層のものとして紹介します。
ARP要求はLAN内の全コンピュータ宛に送る仕組みである、ブロードキャストを利用します。
ブロードキャストを送ると、該当のIPアドレスのコンピュータのみMACアドレスを添えて返事する仕組みになっています。素敵ですね。
それではARPを送ってみましょう。
「192.168.11.1のIPアドレスを持つ端末だけ返事してください」とパソコンがARPを送ります。
該当のIPアドレスを持ってるコンピュータは自分のMACアドレスを伝えます。
ここではL3スイッチがMACアドレスの情報を戻します。
左上のパソコンはこれで送信先のMACアドレスがわかります。
このMACアドレスを使って送信しますが、送信するたびにARPを利用してMACアドレスを確認すると非効率です。
そこでコンピュータは、内部のARPテーブルに情報を保存します。
ARPテーブルとは、IPアドレスとMACアドレスを紐付けるテーブルです。
ここに登録されたアドレス、つまり一度確認した送信先のMACアドレスは今後確認する必要がなく、データを送信できるようになります。
それでは、L3スイッチ宛にデータを送信します。
このとき、データが持っている宛先の情報は、
IPアドレスは最終的に届けたい相手のアドレスが入っており、
MACアドレスは、次に届けたいアドレス、L3スイッチのアドレスが入っています。
これでL3スイッチにデータを届けることができました。
データがL3スイッチに到着しましたが、L3スイッチも実はこれまでの説明と全く同じ動作でデータを送信します。
自身のルーティングテーブルを見て経路を決定して、ARPテーブルをみて次の機器のMACアドレスを確認して送信します。
このように全てのノード、各機器は同じ動作をしてバケツリレーのようにデータを送っています。
ただし、L3スイッチの場合、少しだけ知っておいたほうがいい点があるため補足しておきます。
まずL3スイッチにはポートというケーブルをさす穴が複数あります。LANとLANを接続するためのHubなので存在しています。
この図ではポートをPとしています。紫色の四角で、P1とP2があります。
P1は左側のLANと接続されています。P2は右側のL3スイッチと接続しています。
当然ネットワーク構成によっては、ポート12等たくさんのLANと接続されているL3スイッチもありますが今回は2つのポートのみ利用している前提で話をすすめていきます。
先程、L3スイッチのIPアドレスを192.168.11.1としましたが、これは各インターフェース、つまり各LANと接続しているポートごとに割り振られており、ポート1に割り振られているアドレスなのです。
つまり本当はこんな感じです。
ネットワークごとにIPアドレスを色分けしています。
ポート2は別のネットワークと接続されているため、別のIPアドレスを持っています。
左のL3スイッチのP1は左下のLANと同じネットワークアドレスを持っており、
左のL3スイッチのP2は右のL3スイッチのP1と同じネットワークアドレスを持っており、
右のL3スイッチのP2は右下のLanと同じネットワークアドレスを持っています。
ここで抑えておいてほしいのは各ポートごとにそれぞれ別のネットワークに属するIPアドレスを持っているんだ、ということだけ覚えておいてもらえればと思います。
ネットワーク層の仕組みをまとめると以下になります。
- ネットワークは各機器がバケツリレーをしている
- ネットワーク通信では、各機器がバケツリレーを行い、目的地までたどり着いています。また、それぞれの機器が経路を決定するための方法は、基本的に同じです。
- 各機器は自身と接続されている機器までのルートしか知らない
- それぞれの機器は、自らと隣りあっているコンピュータの中から、送信先を選択しているだけであり、その先の経路については知る由もないんです。人間に例えると、荷物を宅配便で届けるとき、送り主は郵便局に預けた後、どのルートでたどり着くなんてことは知らないのと同じです。
- ルーティングテーブルで経路を確認する
- 通信にはARP/ARPテーブルからMACアドレスの取得が必要
これらを抑えておいてください
ネットワーク層の代表的なプロトコル
これまでの仕組みをおさえた上で、プロトコルを見るとイメージがつきやすいです。
ネットワーク層の代表的なプロトコルを簡単に紹介したいと思います。
IP(Internet Protocol):インターネットプロトコルというのは、これまで学んだ経路を判別するためのプロトコルです。つまりIPがネットワーク層の肝になります。
ICMP(インターネットコントロールメッセージプロトコル)というのは、普段非エンジニアの方は意識する必要がないプロトコルですが、業務で利用する人も多い、pingというコマンドはこのプロトコルになります。
※ぴんとこない方は無視して結構です
宛先のMACアドレスがわからない状態でもARP要求ができる理由
上記で説明してきたように、イーサネットでの通信は、必ずMACアドレスが必要です。
しかし、ARP要求はまだMACアドレスを知らない状態、むしろ知りたいから送るプロトコルなのにも関わらず送信できるのはなぜでしょうか?
それは、ブロードキャスト通信に関してはFF:FF:FF:FF:FF:FFというMACアドレス宛に送信するようになっており、このアドレス宛に送信するとLAN内が全て宛先になるという仕組みになっているため、通信が可能になっています。
それでは次回の第4層 トランスポート層の記事でお会いしましょう~
※前の記事から来てない方は、第1層物理層、第2層データリンク層から順番に見たほうが理解が深まりますのでぜひ!
おわりに
これらのIT知識をUdemyの動画でも説明してます。
動画のほうがいい方、最低限のIT知識をがっちり取得したい方は以下からどうぞ。
おかげさまで数万人に受講してもらってます。
ここまで見てくださった方向けに86%OFFクーポンリンクを貼っておきます~
Discussion