IPアドレス・ネットマスクの変換・チェック・統合・除外、国判定を簡単に。

こんな機能欲しいけど、自分で作るの面倒くさい!みたいな思いつきを
是非Twitterで意見投げてみてください。
時間は掛かるかもしれませんがコツコツ頑張るかも!?
Twitterリンクは下部)

IPアドレスから地理的位置情報(GeoIPLocation)の検索機能を公開しました。

Google or AdMax Promotion (ipvtop)

0~255数値をIPアドレスから見た特殊性

IPアドレスと言うとよく目にする「192.168.1.1」など、
呪文のような数字の羅列を思い浮かべるでしょう。
しかしその192.168などの数字は適当なわけでもなく、
IPアドレスならではの理由があってそうした数字になっています。
そうしたバイナリ表現独自の数字の特殊性についてご紹介します。

1~255までの数値別の一覧は別の投稿でご紹介しています。

一覧のみが必要な場合には以下をご参照下さい。

 

IPアドレスのフォーマット

プロモーション

Google or AdMax Promotion (ipvpos)

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などの端末で指定していることがほとんどです。

端末ごとでユーザー自身が設定を変更できる以上、
こうしたサブネットマスクによるネットワーク分割は、
あくまでも便宜上の分割として考えたほうがいいでしょう。

ASCII.jp:「サブネットマスクが正しくないと通信できない」は本当か? (2/2)|ネットワークの禁忌に触れる

 

このようにしてIPアドレスでよく見かける数字には、
こうしたビットパターンを利用した分類や分割などをしやすくするために、
利用されているということがわかります。

 

「192.168」てなに?

ちなみに「168って何?」という部分が残ってしまっています。

168(10101000)は特にビットパターンとして特別な感じもありません。

これは・・・RFCで決まっているとしか言いようがない感じです。

IPv4|Wiki

予約アドレス一覧 (抜粋)

アドレス 種別 規約
192.168.0.0/16 プライベートアドレス RFC 1918

 

 

規約で決まったルールという事では、
これと言って深い意味はなかったのかもしれないですね。

 

数値をIPアドレスから見た特殊性の一覧

以下では、1~255までの各ビットパターンと、
それぞれがサブネットマスクやネットワークIPとなり得る数値かを、
計算した結果をご紹介します。

 

 

さいごに

なんとなく呪文のように覚えていたIPアドレスの数字。

ビットパターンで見てみると、
1の連続や0の連続などが上手く利用されて、
論理積というビット演算で効率的に答えを求めやすくしていることがわかります。

 


AdMax Promotion

公開日:
最終更新日:2019/06/20

シェア頂けると新機能開発の励みになります!!

最後までお読みいただきありがとうございました。
便利!と思って頂けたらシェアを是非お願いします。
ご意見・ご批判でも感じた事を気にせずご指摘ください。

アカウント新規作成の為、是非フォローもお願いします。(無言OK)

※このページでこんな情報も一緒に見れたら便利!などの
アイディア・ご意見もお聞かせください。

また弊サイトはすべて広告費と個人の自腹にて運営・開発を行っています。
皆様、お仕事中でお忙しいことと存じますが、
ご興味がおありの広告が目に留まりましたら
広告主様のサイトもご覧いただけますと励みになります。

QRコードからもこのURLを開けます。
リンク先URL: https://ipvx.info/ipv4/ip_spec_num/


AdMax Promotion

サイト内コンテンツ
すべて展開 | すべて省略

Google or AdMax Promotion (ipvlink)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください