ネットワーク (2) IP Address
インターネットの通信は、HTTP です。ただ、実際には HTTP 以外の通信プロトコルも使って通信をしています。その全体像を見ていきましょう。
今回は特によく使う IP Address を取り扱います。
OSI 参照モデル
OSI は Open System Interconnection の略です。コンピューター同士が通信するための標準規約ですね。
OSI 参照モデルは、それらを整理したものと言っていいですね。
今回は主に HTTP での通信を扱いますが。HTTPは、OSI 参照モデルでいうと、5階層目の セッション層から上で使われるプロトコルです。
この図をみると 「L7スイッチ」という言葉を思い出しませんか? L2やL3もありますよね。L とは Layer から来ているわけですよね。L7スイッチって、HTTPのルーティングなどの処理をしてくれることが多いですね。TCPではない、という事ですね。
それぞれに主な機器もあります。
皆さんがよく耳にするであろうルーターは主にL3であるネットワーク層に位置付けられます。そしてよく取り扱うプロトコルは IP なんですよね、主に。
そして、Ethernet (イーサーネット) もよく耳にすると思います。これは、IPの更に下に位置していますよね。
カプセル化
この階層がきれいに機能するのは、カプセル化によります。
どう動くかといえば。
まずアプリケーションが「データ」を送りたいとしますね。そのデータには手を付けずに、通信をする際に 各層でヘッダーを追加します。そのヘッダーには、その層同士でやり取りするためのメタデータが入っています。
以下は、IP。つまり L3 のヘッダーの例です。
IPからみると。L4ヘッダーから先が全て Data なんです。触らない。
よく見ると、IPヘッダーには:
Source IP Address: 送信元
Destination IP Address: 届けたい先
が主であることがわかりますね! それ以外は、補助的なデータと言ってもいいですね。通信ですからね。何を、どこから (Source) 、どこへおくって (Destination)、どこに (Source) 戻してもらいたい、という事が大事という事です。
IP Address
IP Address を知ることは、ほぼ必須なので、ここで触れましょう。
自分のコンピューターの IP Address の情報は Windows の場合は ipconfig というコマンドで確認できます。Mac や Linux は ifconfig ですね。
IP Address は、数字で自分のコンピューターの識別子を表します。数字を . (ドット)で区切って表現されています。
私のPCの IPv4 アドレスは 192 . 168 . 3 . 12 ですね。この 192 . 168 . xxx . xxx はよく見ますよね? なぜかといえばですが。これ、実は自由に使っていいと予約されている IP Address のうちの一つだからなんです。
この図の Reserved IP Ranges の中の 192 . 168 / 16 の一つです。
この文字列の説明が必要ですよね。「/16」って何? という事なんですが。
IP Address には Class といってNetwork 内で扱えるデバイスの数に応じて分仕分けが出来るようになっています。
IP Address v4ですね。これは、よく見ていただくと 0 . 0 . 0 . 0 - 255 . 255 . 255 . 255 の範囲でAddress指定をしています。0 - 255は、8bit で表現できますよね? つまり、IP v4 とは、8bit x 4 = 32bit での表現なんです。
CPUでも扱いましたが、ここでも 32bit が出てきましたね。
/16とは、この右側、下16bit は Host ID として、コンピューター固有の識別子として使うよ。それ以外の上位 16 bitは Network ID としてネットワーク自身の識別子として使うよ。という意味になります。
という事は、192 . 168 / 16 とは、192 . 168 という Network ID を持つ、という事ですね。上記でいうと Class B に該当します。
その識別をしているのが /16 です。これは Subnet ID と言います。マスキングといって、1のbitが立っているところを隠して処理するんですよね。それで Subnet Mask と呼ばれます。
先ほどの、私の PC の ipconfig の結果を再掲しますね。
IP Address はいいですが。まず見たいのは サブネットマスク。これ /24 ですね。255 . 255 . 255 . 0 なので。ということは。
Network ID = 192 . 168 . 3
Host ID = 192 . 168 . 3 . 12
という事がわかります。
このネットワーク 192 . 168 . 3 では
192 . 168 . 3 . 0
から
192 . 168 . 3 . 255
までの 256台 のデバイスの接続が出来る事がわかりますね。厳密には数個少ない数までなんですが。
Subnet Mask の設定によって、Network の Class とともに、接続できるデバイスの数も決まります。
こちらに示しますね。
同じネットワークの中であれば、直接通信が出来ます。つまり、256台 のデバイスが直接通信できるんです。私の自宅のネットワークの構成なんで、有り余っています😊
直接通信ができますから、ping でその通信の状態を確認できます。
ここでは、デフォルトゲートウェイ のデバイスに対して実行してみました。
デフォルト ゲートウェイ について少し触れます。
これは自分のネットワークに通信相手がいなかった際に、このデバイスを通じて、外のネットワークと通信を依頼します。つまり、このデフォルトゲートウェイのデバイスは、NICは2つ以上あります。よくルーターと言われているデバイスが、ゲートウェイとしてネットワークに構成されるんです。
つまり、私の環境の場合は 192 . 168 . 3 . 1 というコンピューターが実は WiFi ルーターなんです。実際には、Eathernet の物理ケーブルも接続されていて。それが自宅のインターネットのケーブルに物理的につながっています。
つまり、PCもスマホもテレビもプリンターも。全てこの WiFiルーターに接続しています。
お?という事は、このWiFiルーター。他の役割も持っていそうですねぇ😎
別の回で触れます。
Windows の場合は、ネットワークの設定で行うんですよね。
こちらでも 自分の IP Address が見えます。サブネットマスクが表示されていませんから、 ipconfig コマンドの方がいいですねー
物理アドレス (MAC) が確認できます。
お気づきかもしれませんが、これが L2の物理層。Ethernet のアドレスなんです。
MAC アドレスは、Network Interface Controller (NIC - ニック) を発売しているメーカーが、全世界で重複しないようにデバイスに埋め込んでいます。
コントロールパネルからは、従来画面での設定も確認できます。
こちらの画面からの方が、より細かく設定が出来ます。
慣れてきたら、コントロールパネルをすぐに使えるようにした方がいいですよー😊
NIC の設定も変えられますからね!
試行錯誤するの大事です。もとに戻せるように、従来の設定は保存しながら試してみてください。
まとめ
OSI 参照モデルによって、自身の上位層や階層と疎結合でデータのやり取りができます。そして、このカプセル化の方法は、実は暗号化でも活躍します。
中でもよく使う IP Address について見てきました。自分の家の中のLANで、どのような設定にすればいいのかが、見えてきたんじゃないですかねー😎
IP Address は現在 v4 と v6 があります。実は v4だと IP Address が枯渇するくらい、インターネットに接続するデバイスが増えると言われ、もっと多くのデバイスを接続できるように IP v6 が出てきたんですが。
未だに、IP v4 だけで通信できていますよね。
次回はルーティングを扱います。IP のパケットがどうやって、他のネットワークに届いているのか? これを司っているのが、ルーティングです。