0~255数値をIPアドレスから見た特殊性
IPアドレスと言うとよく目にする「192.168.1.1」など、
呪文のような数字の羅列を思い浮かべるでしょう。
しかしその192.168などの数字は適当なわけでもなく、
IPアドレスならではの理由があってそうした数字になっています。
そうしたバイナリ表現独自の数字の特殊性についてご紹介します。
1~255までの数値別の一覧は別の投稿でご紹介しています。
一覧のみが必要な場合には以下をご参照下さい。
目次
IPアドレスのフォーマット
IPアドレス(IPv4)は基本として8bitが4つの構成として表現されています。
それが、192.168.1.1などの「.」の区切りです。
この場合「192」「168」「1」「1」それぞれを、
8bitで表現してつなげたものをIPアドレスの値になります。
その値を人間が覚えやすいように「.」で区切って、
10進数で表しているのが「192.168.1.1」としているのです。
この「192.168.1.1」を8bitで表現すると以下のようになります。
- 192: 11000000
- 168: 10101000
- 1: 00000001
- 1: 00000001
繋げて「11000000.10101000.00000001.00000001」となります。
ドットをなくして2進数のでは「11000000101010000000000100000001」となります。
8桁が4つで合計32桁になっています。
これを10進数で表現すると「3232235777」という数字で表すことができます。
※32bit符号有による算出では「-1062731519」となります。
IPアドレスのネットワーク部・ホスト部
こうしたIPアドレスの表現に加えてたまに目にすることもあると思いますが、
CIDRという表現があります。
IPアドレスの範囲を「192.168.1.0/24」などの、
「/」+「ネットマスク」を付加して表現したものです。
この「/24」という部分は、
先ほどの2進数表現を行ったビット値の頭(左)から24桁を、
ネットワーク部として取り扱うという意味になります。
その為「ネットマスク」と呼ばれます。
「192.168.1.0」であれば、
「10000001010100000000001(24桁)」+「00000000(8桁=32桁ー24桁)」
として、ネットワーク部と残りの部分8桁をホスト部として取り扱うということです。
このネットワークでは
ネットワークに参加する端末(PC、スマホ、家電など)は、
ネットワーク部はすべて同じでホスト部だけがそれぞれ違う、
IPアドレスが割り当てられます。
この場合、192.168.0.0はネットワークアドレス(ホスト部がすべて0)呼ばれ、
192.168.0.255はブロードキャストアドレス(ホスト部がすべて1)と呼ばれます。
この2つはIPアドレスとしてはネットワーク自身や全体を示す特別なIPアドレスです。
その為、この2つは端末に割り当てることはできません。
結果「192.168.0.1~192.168.0.254」の254個のIPアドレスを、
端末に割り当ててネットワークを構成して利用することができます。
サブネットマスク
サブネットマスクもIPアドレスと同じように、
「255.255.255.0」などのように呪文のように覚えているかもしれません。
この「255」は8bitの表現で「11111111」という8桁がすべて1を示しています。
「255.255.255.0」は2進数で「11111111111111111111111100000000」となります。
このサブネットマスクはあるネットワークを、
それぞれのネットワークに分割するという意味合いで利用されます。
コンピュータはこのサブネットマスク(ビットパターン)を利用すると、
自分のIPアドレスから先ほどの「192.168.0.0」というネットワークアドレスを、
簡単に計算して求めることができます。
その為、通信相手が同じネットワークに所属しているのかを判断を、
瞬時に行うためにこうしたサブネットマスクが利用されます。
ここで利用されるのが論理積です。
論理積(AND)は通常の掛け算同様に、
どちらかが0なら0、両方が1なら1というビット演算です。(掛け算)
上記の場合は以下のような計算になります。
計算概念 | 第1オクテット | 第2オクテット | 第3オクテット | 第4オクテット |
---|---|---|---|---|
IPアドレス | 192 | 168 | 0 | 1 |
サブネットマスク | 255 | 255 | 255 | 0 |
IPアドレスビット表記 | 11000000 | 10101000 | 00000000 | 00000001 |
サブネットマスクビット表記 | 11111111 | 11111111 | 11111111 | 00000000 |
論理積 | 11000000 | 10101000 | 00000000 | 00000000 |
ネットワークアドレス | 192 | 168 | 0 | 0 |
自分のIPアドレスとサブネットマスクを、
ビット演算の論理積を行うことで「192.168.0.0」という、
ネットワークアドレスを簡単に導き出すことができるわけです。
同じネットワークに存在している「192.168.0.254」 でも同じです。
計算概念 | 第1オクテット | 第2オクテット | 第3オクテット | 第4オクテット |
---|---|---|---|---|
IPアドレス | 192 | 168 | 0 | 254 |
サブネットマスク | 255 | 255 | 255 | 0 |
IPアドレスビット表記 | 11000000 | 10101000 | 00000000 | 11111110 |
サブネットマスクビット表記 | 11111111 | 11111111 | 11111111 | 00000000 |
論理積 | 11000000 | 10101000 | 00000000 | 00000000 |
ネットワークアドレス | 192 | 168 | 0 | 0 |
非常に簡単にIPアドレスのホスト部をすべて0にして、
ネットワークアドレスを求めることができます。
こうした論理演算を利用することで、
サブネットマスクを利用してネットワークアドレスの計算が行えます。
サブネットマスクになり得る数字
こうしたサブネットマスクでホスト部を示す「00000000」 の部分は、
連続した8桁の0だけでなく、以下のような部分的な0も利用できます。
この場合、0の部分だけがホスト部として指定できます。
ビット表記 | 値 |
---|---|
10000000 | 128 |
11000000 | 192 |
11100000 | 224 |
11110000 | 240 |
11111000 | 248 |
11111100 | 252 |
11111110 | 254 |
11111111 | 255 |
なんとなく見慣れた数字が並んでいませんか?
順に見ていくと、左から1が何桁連続しているかという違いになっています。
先ほどのサブネットマスクの論理積で、
何桁目までをネットワーク部に利用するかを、この桁数で指定するということです。
例えば、先ほどの「192.168.0.254」というIPアドレスを、
「255.255.255.248」というサブネットマスクでネットワークに参加させた場合は、
ネットワークアドレスが以下のように「192.168.0.248」なります。
計算概念 | 第1オクテット | 第2オクテット | 第3オクテット | 第4オクテット |
---|---|---|---|---|
IPアドレス | 192 | 168 | 0 | 254 |
サブネットマスク | 255 | 255 | 255 | 248 |
IPアドレスビット表記 | 11000000 | 10101000 | 00000000 | 11111110 |
サブネットマスクビット表記 | 11111111 | 11111111 | 11111111 | 11111000 |
論理積 | 11000000 | 10101000 | 00000000 | 11111000 |
ネットワークアドレス | 192 | 168 | 0 | 248 |
192.168.0.248~192.168.0.254までが、
このネットワークのIPアドレスの範囲になり、
192.168.0.249~192.168.0.254が端末に割り当て可能なホストアドレス範囲です。
また、このネットワークの範囲を先ほどのCIDRで表すと、
「192.168.0.248/29」と表現することができます。
※「11000000101010000000000011111」(29桁)+「000」(3桁)
ホスト部が3桁しかありませんから、
2の3乗=8-2(ネットワークとブロードキャスト分)で、
6台しか端末が割り当てできません。
このように、8桁のビットのうち、
「左から連続して1が立っている」ビットパターンが、
こうしたサブネットマスクとして現れてくる数字なのです。
IPアドレスのクラス
IPアドレスには最近はあまり耳にすることもありませんが、
クラスA、クラスB、クラスCという分類があります。
クラスはIPアドレスの最上位ビットの状態で分類されています。
最上位ビットが「0」の場合はクラスA
最上位ビットから2桁が「10」の場合はクラスB
最上位ビットから3桁が「110」の場合にはクラスC
と、されています。
クラス | 第1オクテット部 | ビット | 値 | |
---|---|---|---|---|
上位ビット | 残りビット | |||
クラスA | 0 | 0000000 | 00000000 | 0 |
クラスB | 10 | 000000 | 10000000 | 128 |
クラスC | 110 | 00000 | 11000000 | 192 |
ここでもビットの頭から1が立っている(または立っていない)という違いで、
IPアドレスの分類をおこなっています。
ここでも、よく見る128や192などが現れてきます。
「192.168.0.1」のような慣れたIPアドレスは、
クラスCに属していることも分かります。
ネットワークIPアドレスになりうる数字
これまでの中で出てきた「ネットワークIPアドレス」ですが、
このネットワークアドレスはサブネットマスクを利用して、
同一ネットワークであるかの判断に利用され、ネットワーク自体を表す数字です。
このネットワークアドレスとネットマスクで、
ネットワークの範囲を示すCIDR(192.168.0.0/24)表記に利用します。
この場合は、サブネットマスクとは異なっていて、
頭から連続する1が立っているのではなく、
後から連続する0のあるビットパターンをもつ数値が、
ネットワークアドレスになり得る数字です。
先ほどのサブネットマスクで例示した、
以下の数字(255を除く)もネットワークアドレスになり得る数値です。
128(10000000)
192(11000000)
224(11100000)
240(11110000)
248(11111000)
252(11111100)
254(11111110)
ただ、ネットワークアドレスになり得るという意味合いでは、
「192(11000000)」という値は、後から6桁の0があります。
このように1つのオクテット部分を、
ネットワーク部(2桁)とホスト部(6桁)として分割したような場合、
以下のようなパターンでネットワークアドレスが構成できます。
ネットワーク部 | ホスト部 | ビット列 | 値 |
---|---|---|---|
00 | 000000 | 00000000 | 0 |
01 | 000000 | 01000000 | 64 |
10 | 000000 | 10000000 | 128 |
11 | 000000 | 11000000 | 192 |
例えば、この1つのオクテットの部分を「192.168.0.0」の
第4オクテット目にネットワークに割り当ててみると、
- 192.168.0.0 (10000001.01010000.0000000.00000000)
- 192.168.0.64 (10000001.01010000.0000000.01000000)
- 192.168.0.128 (10000001.01010000.0000000.10000000)
- 192.168.0.192 (10000001.01010000.0000000.11000000)
といった4つのネットワークとして分割することができます。
共に、第4オクテットの頭2桁までがネットワーク部なので、
上記の赤の部分まで(26桁目)までネットワークアドレスです。
上記のネットワークはそれぞれ、以下のようにCIDR表記できます。
- 192.168.0.0/26
- 192.168.0.64/26
- 192.168.0.128/26
- 192.168.0.192/26
このように、ネットワークアドレスになり得る値は、
サブネットマスクとは異なって、多くの値がネットワークアドレスになり得ます。
よく目にするような値であったり、
あまり利用されることのないような分割位置で構成した場合の値など様々です。
CIDRによって「/25」や「/26」などを利用して、
どのようなサブネット構成が行えるのかは以下のツールで確認できます。
CIDR形式で入力すると自身のネットワークの他に構成可能な、
サブネットワークを求めて表示します。
尚「/8」「/16」「/24」はオクテット部分で分割しますので、
サブネットワークの構成はされません(結果は1つのネットワークになります)
補足ですが、上記のようにネットワークを構成し、
IPアドレスの範囲に意味合いを持たせたとした場合に、
26桁までがネットワークアドレスですので、
サブネットマスクを「255.255.255.192」とすることで、
それぞれのネットワークを分割してサブネットワークとすることができます。
ただ、DHCPなどを利用して自動割り当ての場合は異なりますが、
サブネットマスク自体はPCなどの端末で指定していることがほとんどです。
端末ごとでユーザー自身が設定を変更できる以上、
こうしたサブネットマスクによるネットワーク分割は、
あくまでも便宜上の分割として考えたほうがいいでしょう。
このようにしてIPアドレスでよく見かける数字には、
こうしたビットパターンを利用した分類や分割などをしやすくするために、
利用されているということがわかります。
「192.168」てなに?
ちなみに「168って何?」という部分が残ってしまっています。
168(10101000)は特にビットパターンとして特別な感じもありません。
これは・・・RFCで決まっているとしか言いようがない感じです。
予約アドレス一覧 (抜粋)
アドレス 種別 規約 192.168.0.0/16 プライベートアドレス RFC 1918
規約で決まったルールという事では、
これと言って深い意味はなかったのかもしれないですね。
数値をIPアドレスから見た特殊性の一覧
以下では、1~255までの各ビットパターンと、
それぞれがサブネットマスクやネットワークIPとなり得る数値かを、
計算した結果をご紹介します。
さいごに
なんとなく呪文のように覚えていたIPアドレスの数字。
ビットパターンで見てみると、
1の連続や0の連続などが上手く利用されて、
論理積というビット演算で効率的に答えを求めやすくしていることがわかります。
本サイトで公開しているツールについては、
十分にテストは行っておりますが個人で作成している為、
潜在的なバグがないとは言い切れません。
その為、ツールを用いた結果については十分検証の上ご利用ください。
当サイトおよび、管理人は如何なる損害もその責を負いません。
当サイト内のコンテンツおよび画像において、
出典・引用の外部著作権者の明記がないものは、
すべて管理人による著作物です。
当サイトでご紹介しておりますコンテンツの著作権の放棄は致しません。
サイト内コンテンツを引用される際にはご連絡は不要です。
ただし、出典元として当サイト(個別記事)へのリンクをお願いいたします。
申し訳ございませんが、無断転載、複製をお断りさせて頂いております。
コンテンツを有益であると感じていただけましたら非常に光栄です。
ありがとうございます。
公開日:
最終更新日:2019/06/20