本記事ではIPアドレスについて解説します。
IPアドレス(Internet Protocol Address)とは、IP(通信をする際の約束事)に利用される通信の相手先を識別するための番号のことを指します。現在、IPにはIPv4とIPv6が存在します。「v」はバージョンの略称です。つまり、IPv4は第4世代、IPv6が第6世代という意味です。IPv4とIPv6の比較を、以下の表にまとめました。
IPv4 | IPv6 | |
---|---|---|
アドレスの範囲 | 32bit | 128bit |
アドレスの最大個数 | 約43億個(2の32乗個) | 約340澗個(2の128乗個) |
アドレスの表記方法 | 10進数 | 16進数 |
本記事では、IPv4で使用されるIPアドレスの解説をします。以後、「IPアドレス」と記述されていた場合、「IPv4のIPアドレス」のことを指します。
IPアドレスの枯渇問題
IPv4は通信手段として確立はしていますが、IPv4のIPアドレスは約43億個のIPアドレスしか用意できないという問題が存在します。(2015年頃にはIPv4のIPアドレスは全世界で枯渇してしまいました。)
IPv4の後継であるIPv6は約340澗個(事実上の無限大)のIPアドレスを用意することができ、この問題を根本から解決することが出来ます。しかし、IPv4のインターネットとは全く異なる仕様のため、IPv6への移行が進んでいないのが現状です。そのため、現在主流で利用されているのはIPv4であり、IPv4のIPアドレスの枯渇問題に対して対策を講じる必要があります。
この問題への対策と、対策のキーワードを以下の表にまとめました。
IPアドレス枯渇問題の対策 | 対策のキーワード |
---|---|
IPアドレスを用途によって使い分ける | グローバルIPアドレス・プライベートIPアドレス |
IPアドレスをユーザの規模によって分類する | クラス |
IPアドレスを用途によって使い分ける
従来は1個/約43億個のIPアドレスを個々に割り当てていましたが、IPアドレスの枯渇問題が生じたため、プライベートIPアドレスが導入されました。プライベートIPアドレスが誕生した背景を、プライベートIPアドレスの導入に関する文書である「RFC 1597」から一部抜粋します。
プライベートIPアドレスを導入した動機
- グローバルIPアドレスを企業内の通信のみに使用する企業が増えている。
- この企業は他の企業やインターネットそのものに直接接続しようとはしていない。
- 現在では全てのホストにグローバルに一意のアドレスを割り当てているが、IPアドレスが枯渇してしまうという懸念がある
上記の背景が存在し、同LAN内であればルータ等を介さず直接通信を行うことができるプライベートIPアドレスが導入されました。プライベートIPアドレス導入後、従来の1個/約43億個のIPアドレスはグローバルIPアドレスと呼ばれるようになりました。
グローバルIPアドレスとプライベートIPアドレスの比較を、以下の表にまとめました。
IPアドレスの種類 | 通信場所 | 通信機器 | ネットワーク |
---|---|---|---|
グローバルIPアドレス | 外部(インターネット)との通信 | サーバとルータの相互通信 | WAN |
プライベートIPアドレス | 内部(家庭内・会社内)の通信 | ルータとPC・スマホの相互通信 | LAN |
グローバルIPアドレス
グローバルIPアドレスとは、インターネットに接続できるIPアドレスのことで、世界に一つだけの値(1個/約43億個)です。IPアドレスの枯渇問題から分かるように、希少なIPアドレスです。そのため、誰でも自由に設定できるというわけではありません。
グローバルIPアドレスはICANN(The Internet Corporation for Assigned Names and Numbers)という特定の国や地域に属さない組織によって世界的に管理されています。ICANNから日本の管理組織であるJPNIC(Japan Network Information Center)に振り分けられ、そこからISP(Internet Service Provider)を経由して各ユーザ(企業含む)へと割り振られます。
プライベートIPアドレス
プライベートIPアドレスでインターネットを利用できる仕組みと、プライベートIPアドレスの重複について説明します。
-
プライベートIPアドレスでインターネットを利用できる仕組み
ISPから割り当てられるグローバルIPアドレスは、基本的に1契約につき1個のグローバルIPアドレスです。しかし、LAN内(家庭内など)で2つ以上のPCやスマホなどの通信機器を利用していることが多いと思います。つまり、家庭内で使用している通信機器のほとんどにはプライベートIPアドレスが割り当てられているということです。
しかし、プライベートIPアドレスはルータ等を介さないとインターネットには接続できません。では、どのようにしてプライベートIPアドレスを利用しながらインターネットを利用できるのか、を説明します。
家庭内でルータを使用した例を、以下の図にまとめました。
光回線を契約した場合、グローバルIPアドレスは回線開通作業が終了次第、ONU(光回線の終端装置)に1つだけ割り振られます。
そして、このONUにルータを接続します。ルータには、グローバルIPアドレスとプライベートIPの変換を行うNAPT変換の機能が備わっています。
ルータは、端末Aや端末Bがインターネットから通信を受信する際はグローバルIPアドレスをプライベートIPアドレスに変換し、それぞれの端末へと通信を届けます。また、それぞれの端末がインターネットへ通信を送信する際はプライベートIPをグローバルIPアドレスに変換し、ONUへと通信を届けます。
この仕組みによって、プライベートIPアドレスでインターネットを利用することが実現しています。
-
プライベートIPアドレスの重複
プライベートIPアドレスは、同LAN内の場合はグローバルIPアドレスと同様に重複してはいけません。しかし、以下の図のように異なるLANであればプライベートIPアドレスが被っても問題なく通信ができます。
IPアドレスをユーザの規模によって分類する
ICANNは、IPアドレスの枯渇問題へのさらなる対策としてクラスフルアドレッシングを導入しました。クラスフルアドレッシングとは、IPアドレス空間全体をアドレスクラスに分類し、利用するユーザの規模の大きさに応じてIPアドレスを割り当てる仕組みです。
アドレスクラスに関して、以下の表にまとめました。
IPアドレス帯 | 割り当て | 先頭bitの値 | 用途など |
---|---|---|---|
1.0.0.0~126.255.255.255 | クラスA | 0~ | ・一般的なユニキャスト通信・大規模ネットワーク用(最大約1600万台) |
128.0.0.0~191.254.255.255 | クラスB | 10~ | ・一般的なユニキャスト通信・中規模ネットワーク用(最大65,534台) |
192.0.0.0~223.255.254.255 | クラスC | 110~ | ・一般的なユニキャスト通信・小規模ネットワーク用(最大254台) |
224.0.0.0~239.255.255.255 | クラスD | 1110~ | IPマルチキャスト専用 |
240.0.0.0~255.255.255.255 | クラスE | 1111~ | 将来の使用のために予約されている |
ユーザに割り当てられるのはクラスA、クラスB、クラスCのどれかです。この3種類のクラスに焦点を当てて説明します。
クラスへの割り当ては、例えば家庭内のLANであればクラスCで十分なのでクラスCへ、企業規模のLANであればクラスBもしくはクラスAに割り当てる、といった方法で行います。割り当てられるそれぞれのクラスのIPアドレス帯を理解するために、IPアドレスが持つ情報から説明します。
IPアドレスブロックが持つ情報
IPアドレスは192.168.134.51
のような数字の羅列で、4つの数字と3つの.
(ピリオド)で1つのブロックです。このIPアドレスブロックが持つ情報を、以下の図にまとめました。
IPアドレスは本来、図の①ように32bitの固定長で2進数で表現されます。2進数表記は目で見て理解しづらいので、図の②のように8bitごとにピリオドで区切ります。そして、図の③のように人間の目で見て分かりやすいように10進数とピリオドで表記します。
また、IPアドレスブロックはネットワーク部とホスト部に分かれており、どこで区切るかによってクラス分けを行います。
ネットワーク部とホスト部
クラスA、クラスB、クラスCに該当するIPアドレスを例に挙げて、ネットワーク部とホスト部を説明します。以下の図をご覧ください。
上記の図から分かるように、クラスフルアドレッシングによるアドレスクラスはネットワーク部とホスト部の範囲があらかじめ決まっているのが特徴です。
ネットワーク部は、どのネットワークに所属しているかを示しています。①、②、③それぞれのネットワーク部の101
、128.121
、192.168.134
は、どのネットワークに所属しているかを示す「ネットワークアドレス」です。
ホスト部は、所属するネットワークアドレスが収納できるホストの最大数を示しています。①、②、③それぞれのホスト部の170.168.64
、100.32
、3は、どのホストかを示す「ホストアドレス」です。
ネットワークアドレスとホストアドレスを以下の図にまとめました。
クラスフルアドレッシングではIPアドレスの枯渇問題は解決しなかった
クラスフルアドレッシングにはユーザに割り当てられるアドレスクラスが3種類しかなく、いずれのアドレスクラスもユーザにとって丁度良いアドレスクラスが存在しませんでした。そのため、「3種類の中では」大きすぎず、小さすぎないクラスBにユーザからのIPアドレスの割り当て要求が集中しました。
クラスBの割り当てを受けたからといって、クラスBの接続可能最大数のホストが同時に接続することが稀なネットワークも存在し、IPアドレスが無駄に消費される結果となりました。そのため、現在のIPアドレスの割り当てでは、クラスフルアドレッシングは使用されていません。
CIDR(クラスレスアドレッシング)
現在主流で使用されているIPアドレスの割り当ては、 CIDR(クラスレスアドレッシング) と呼ばれる仕組みが使用されています。クラスフルアドレッシングはネットワーク部とホスト部を8bit単位で区切りますが、CIDRを使うと任意のbitでネットワーク部とホスト部の境界を決めることができます。
CIDRを用いる事でクラスアドレッシングで問題だった無駄なIPアドレスの消費を抑えられることができます。
CIDR周りの用語
CIDRを理解する上で重要な用語を以下の表にまとめました。
用語 | 用語の説明 | 補足説明 |
---|---|---|
サブネット | ネットワークをより小さく分割したネットワークのこと | サブネットを構築することをサブネット化と呼ぶ |
サブネットマスク | IPアドレスと組み合わせてサブネット化を行う | ネットワーク上の特定のIPアドレスが、どのサブネットに所属しているのかを示すための数値 |
CIDR(サイダー) | クラスレスアドレッシングの別名 | CIDRとは、クラスレスを実現するための仕組み |
CIDR表記 | IPアドレス/サブネットマスクの表記を簡略化したもの | サブネットマスク255.255.255.0を/24と表記する |
「サブネット・サブネットマスク」に関しては、以下の記事をご覧ください。
https://envader.plus/article/53
「CIDR・CIDR表記」に関しては、以下の記事をご覧ください。
https://envader.plus/article/52
IPアドレスを確認してみよう
IPアドレスの概要が掴めたところで、IPアドレスを確認する方法を説明します。グローバルIPアドレスとプライベートIPアドレスの調べ方を以下の表にまとめました。
-
Webサービスを利用する場合
Webサービス IPアドレスの種類 特徴・用途 toolbox.googleapps.com/apps/dig/) グローバルIPアドレス Web上で公開しているWebサイトなどのIPアドレスを調べられる www.ugtop.com/spill.shtml)(運営:ugtop) グローバルIPアドレス Web上で自身が利用しているIPアドレスを調べる www.wireshark.org/) プライベートIPアドレス WindowsOS/MacOSでIPアドレスを調べる場合に利用する apps.apple.com/jp/app/inet-network-scanner/id340793353 プライベートIPアドレス iOSでIPアドレスを調べる場合に利用する -
CLI(Command Line Interface)を用いて調べる場合
グローバルIPアドレス プライベートIPアドレス Windows nslookup FQDN* ipconfig Mac nslookup FQDN* ifconfig ※FQDN:Fully Quanlified Domain Name(完全修飾ドメイン名)
CLIを用いてIPアドレスを確認する
実際にWindowsとMacのCLIを用いてIPアドレスを確認します。グローバルIPアドレスの確認先(FQDN)にはGoogle.comを利用します。
-
Windows(コマンドプロンプト)
-
グローバルIPアドレス
WindowsでGoogle.comのグローバルIPアドレスを調べます。コマンドプロンプトで
nslookup google.com
と入力してください。出力結果の内、
142.250.199.110
がGoogle.comのグローバルIPアドレスです。 -
プライベートIPアドレス
Windowsで自身のプライベートIPアドレスを調べます。コマンドプロンプトで
ipconfig
と入力してください。通信環境がWi-Fiのため、「Wireless LAN adapter Wi-Fi」に表示された
172.16.9.71
がプライベートIPアドレスです。
-
-
Mac(ターミナル)
-
グローバルIPアドレス
MacでGoogle.comのグローバルIPアドレスを調べます。ターミナルで
nslookup google.com
と入力してください。出力結果のうち、
142.250.196.142
がGoogle.comのグローバルIPアドレスです。 -
プライベートIPアドレス
Macで自身のプライベートIPアドレスを調べます。ターミナルで
ifconfig
と入力してください。
IPアドレスをブラウザに入力してみる
上記のWindows環境で確認したGoogle.comのグローバルIPアドレスを実際に使用してみます。
-
GoogleのグローバルIPアドレス「
142.250.199.110
」をブラウザに入力し、エンターを押します。 -
以下のように、Google.comのWebページが表示されます。
このように、ブラウザに
Google.com
と入力した時と同じWebページが表示されました。こちらの仕組みを説明します。Googleの検索ページにアクセスしたい場合、通常であればブラウザでFQDN(
Google.com
)を入力し、送信します。送られたFQDNはDNSを介してIPアドレスに変換されます。そのIPアドレスをサーバが理解し、対応したWebページをレスポンスとして返却します。FQDNはコンピュータが理解できないので、一度IPアドレスに変換する必要があります。そのため、全てのFQDNはIPアドレスと紐付けられています。
しかし、ブラウザにIPアドレスを入力し、送信した場合、既にコンピュータが理解できる状態になっています。送信されたIPアドレスをサーバが理解し、対応したWebページをレスポンスとして返却します。
つまり、今回IPアドレスを入力して送った通信はDNSを介する必要がないというだけでFQDNを入力した時と同じ結果を得られた、ということです。しかし、DNSを介する必要がないということは、「IPアドレスの中にはFQDNに紐づかないものも存在する」ということには注意する必要があります。
まとめ
こちらの記事ではIPアドレスについて解説しました。IPアドレスに導入された様々な仕組みを理解するためには、仕組みが導入された背景を知るすることが重要です。
今後IPv6に完全に移行すればIPv4で用いられている様々な仕組みが必要なくなるかもしれません。しかし、まだその目処は立っておらずIPv4が主流で利用されているのが現状です。
自分が携わるサービスが多くのユーザに支障なく利用できるよう、IPアドレスの知識やIPアドレス周りの「サブネット・サブネットマスク」、「CIDR・CIDR表記」の知識も合わせて学習していくことをおすすめします。
-
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2023.10.25
Web3.0って結局なに? ブロックチェーンの違いは
この記事では、Web3.0とブロックチェーンについて解説しています。エンジニアを目指すにあたって知っておきたい、それぞれの特徴や「Web3.0とWeb2.0の比較」、「Web3.0の未来展望」も紹介します。
- ネットワーク
2023.02.18
【図解】MACアドレスの役割 MacOS, Windows11, iOSでの確認方法
今回はMACアドレスの役割や端末別の確認方法について初心者向けに分かりやすく解説を行います。
- ネットワーク
2024.08.27
【脱ネットワーク初心者】CIDRとCIDR表記
CIDR表記はIPアドレスにサブネットマスクの情報を簡略化して付随する表記方法です。
- ネットワーク