IPアドレスを用いたL3での通信は、TCP/IPでの通信の根幹といってもいいくらい重要な技術です。
L3の技術はたくさんありますが、まずはその中でもスタティックルーティングを用いた基本的なルーティングを抑えておきましょう。
この記事はネットワーク基礎〜WEBページが表示されるまで〜の3章の解説となります。
IPアドレスとは?
IPアドレスにはIPv4とIPv6がありますが、ここではIPv4に関してのみ解説します。
IPアドレスとは32bitの整数値でできている、ネットワーク上の宛先を示す数値です。
アドレスという言葉からもわかるように、インターネット上の住所を示すものとなります。
32bitの表記で、例えば
11000000 10101000 00000010 00000001
のように表され、これは8桁ずつ10進数に戻すと
192.168.2.1
となります。
この8桁ずつの単位で左から第1オクテット、第2オクテット、第3オクテット、第4オクテットと呼びます。
ネットワークアドレスとサブネットマスク
IPアドレスは単なる32bitの整数値ですが、ネットワークアドレスとセットで扱われます。
ネットワークアドレスはIPアドレスが所属するネットワークを示すもので、これがL2で通信できる範囲そのものを表します。
ネットワークアドレスは32bitの整数値(通常10進数表記)で表すこともありますが、普通は、サブネットマスクを用いてIPアドレスから計算します。
例えばサブネットマスクは255.255.255.0のようなものを表し、これを2進数に直すと、
11111111 11111111 11111111 00000000
となります。
左から1を24個並べているので、 /24 とも表記されます。(プレフィックス表記)
192.168.2.1/24 というIPアドレスの場合は、サブネットマスクとIPアドレスの論理積(AND)をとったものがネットワークアドレスとなります。
つまり8桁.8桁.8桁.8桁の左から24桁がネットワーク部、つまりこの場合のネットワークアドレスは、192.168.2.0となります。
WindowsやMacOS、Linuxでも、クライアントのIPアドレスはIPアドレスとセットでネットワークマスクを設定します。
IPアドレスの数の計算方法
ネットワークアドレスは同じネットワークアドレスの範囲にあるIPアドレスを同一ネットワークとみなします。同一ネットワークとみなすということはL2で通信できるということです。
では/24のネットワークにはいくつのIPアドレスを割り当てることができるのでしょうか?
/24のネットワークはホスト部がちょうど第4オクテットのみです。
つまり8桁の2進数で表される総数 2^8=256(0〜255)の数字を使えます。
このうち、先頭の0はネットワークアドレス、末尾の255はブロードキャストアドレスとして使うというように決められていますので、全体から2を引いた254個(1〜254)のアドレスが使用可能ということになります。
ネットワークは8bitずつ区切らなくても良いということになっています。8bitずつのブロックのことをクラスと言いますが、逆にクラスを使わないということでCIDR(Classless Inter Domain Routing)といいます。
例えばCIDRで区切った/27のネットワークはいくつのIPアドレスが使用可能でしょうか?
ネットワーク部が左から27桁になりますので、ホスト部は32-27=5となります。
ホスト部としての範囲が2^5=32ですので、そこからネットワークアドレスとブロードキャストアドレスを引いた30個が使用可能IPアドレスとなります。
この計算は、CCNAなどのネットワーク系ベンダー資格や、ネットワークスペシャリストなどでも当然のように出題されますのですぐに計算できるようにしておきましょう。
余談ですが、ITの世界では2進数を基準に計算が行われますので、よく使う2のべき乗は10くらいまで暗記しておきましょう。
2^1 | 2 |
2^2 | 4 |
2^3 | 8 |
2^4 | 16 |
2^5 | 32 |
2^6 | 64 |
2^7 | 128 |
2^8 | 256 |
2^9 | 512 |
2^10 | 1024 |
L3での通信方式
IPアドレスの仕組みがわかったところで、実際にL3での通信がどのように行われているか見てみましょう。
同一ネットワークはL2での通信
以前こちらの記事でも解説しましたが、L2ではMACアドレスを使ってARPやRARPを使って通信を行います。
これは同一ネットワークでの通信ということになります。
L2SWはそのネットワークの所属するIPアドレスを持つ機器同士が通信する範囲ということです。
異なるネットワークの通信はL3SW(ルーター)を通して
では、異なるネットワークアドレスの機器はどのように通信するのでしょうか。
結論としては、L3SWを介して異なるネットワーク同士の通信を実現します。
L3SWは複数持っているNICに対して別々のネットワークアドレスのIPを持っています。
例えば上の図ではPC-Aが所属しているセグメントは192.168.1.0/24と読み取れますが、L3SW側に192.168.1.1を設定しておいて、PC-Aのゲートウェイアドレスとして192.168.1.1を指定します。
ゲートウェイアドレスとは、異なるネットワークに通信したいときに向かえばいい宛先のことです。
PC-Aは192.168.1.0/24のネットワークに所属しているので、同一ネットワークである例えば192.168.1.11などは、ARPを使って場所を知ることができます(もちろん存在すれば、ですが)
しかし192.168.2.10などは、ネットワークが異なるので、少なくともARPなどを使ってもMACアドレスはわからず、どこにパケットを送信すればよいかわかりません。
そういった場合に、PC-A側で、「192.168.2.0/24に行きたいときは192.168.1.1に行けば良い」と教えてやるとPC-Aは例えば192.168.2.10と通信するときは192.168.1.1にパケットを送信するようになります。
この情報のことをルーティングといい、ルーティングを集めたものをルーティングテーブルといいます。
ルーティングテーブルに無い宛先はどうするのかと言うと、PC-AのデフォルトゲートウェイにルーターのIPアドレスを指定すると、自分のルーティングテーブルにない宛先はすべてデフォルトゲートウェイに送信するようになります。
IPアドレスでの通信〜スタティックルーティング〜
基本的には上記のルーティングの仕組みを使ってIPアドレスでの通信が実現されています。
L3SWが複数のネットワークに対するNICを持っていて、各ネットワークへのルーティングテーブルを持っていれば、L3SWをたどることでいつかは目的のネットワークにたどり着けるというわけです。
例えば図中のL3SW-Bには5つのルーティングを教えてやれば良いことになります。
まず自分が所属している3つのネットワーク、192.168.11.0/24、192.168.2.0/24、192.168.10.0/24
それとL3SW-Cの先にあるネットワーク192.168.3.0/24とL3SW-Aの先にあるネットワーク192.168.1.0/24のルーティングです。
上の図のルーティングテーブルの赤文字のように、192.168.1.0/24に行きたければ192.168.10.2(L3SW-A)に行けば良い とL3SW-Bに教えてやると、PC-BはPC-Aにたどり着けるようになります。
このように、別のネットワークに行きたいときにまず最初にどこに向かえばいいかを一つ一つ教えることをスタティックルーティングといいます。
ここまでをまとめるとL3での通信フローは以下のようになります。
- Step 1PC-AがPC-B(192.168.2.10)にパケットを送信するためにルーティングテーブルを参照する
PC-Aは192.168.2.0に対するルーティングを持っているか、自分のルーティングテーブルを確認しますが、持っていないことがわかったので、デフォルトゲートウェイであるL3SW-Aにパケットを送信します。
- Step 2L3SW-Aはルーティングテーブルを見てパケットをL3SW-Bに転送する
L3SW-Aには予め192.168.2.0/24のNextHopは192.168.10.1だと教えておき、その情報を見て、L3SW-Bへパケットを転送します。
- Step 3L3SW-Bは192.168.2.0に所属しているので、そのままPC-Bへパケットを転送する
L3SW-Bは192.168.2.0/24のセグメントに所属しているので、L2での通信に切り替わり、ARPなどを用いてPC-Bへパケットを転送します。
DHCPとは?→IPアドレス自体を動的に設定
ここで少し余談ですが、DHCPについても解説します。
DHCPとはDynamic Host Configuration Protocolといって、動的に端末にIPアドレスやネットワークマスクなどの設置を行う機能の事です。
家庭では無線LANやルーターから有線で機器に接続すると、しばらく立つと勝手にインターネットにつながるようになると思います。
これは家庭用ルーターの中にDHCP機能が搭載されていて、ルーターに機器が接続され、その機器がDHCPでアドレスを取得する設定(デフォルトで大体の機器がdhcpで取得する設定)になっていると、勝手にIPアドレスを割り振ってくれます。
まとめ
L3での通信について解説しました。スタティックルーティングの仕組みを理解しておくと、IPアドレスでの通信の仕組みがかなり分かるようになると思います。
ルーターというと、物理的なNW機器を思い浮かべますが、LinuxやWindowsServerでもルーター機能をもたせることができますので、手を動かしてみたい方は仮想マシンをいくつか作って試してみると良いかもしれません。
またUnixベースのVyOSというOSはネットワーク機器をエミュレートしたようなOSで、実際のNW機器のように扱える上に仮想マシンへのインストールが可能なので、そちらもぜひ使ってみてください。AWSでもVyOSベースのAMIが用意されています。
WEBページが表示されるまでのネットワークの基礎知識についてはこちらの記事でまとめています。
コメント