パッと見てわかるようになりたいです。
何よりルータのプログラムを作る(読む)には、ルータの仕組みが分かっていないと難しいです。
「クラウド時代のネットワーク技術 OpenFlow実践入門」にも簡単に仕組みが書いてありました。
今回はsimple-routerから離れて、IPアドレスのプレフィックスについて調べてみました。
こんな事はWebに詳しく書いてあるじゃんって思うかもしれませんが、自分の理解のためにまとめてみます。
ご存じのとおり、IPアドレスは32bitで表します(IPv4)。
プレフィックスとは、IPアドレスをネットワーク部分とホスト部分に分けたうちのネットワーク部分の長さを表すものです。
よく「192.168.1.0/24」という書き方を見ると思いますが、この「/24」の部分をプレフィックス(プレフィックス長)と言います。
「/24」の24はビット数の事で、IPアドレスの先頭から何ビットまでがネットワーク部分かを表します。
そのプレフィックスからどうやってネットワーク部分を表すかというと、以下のようになります。
1.IPアドレスを2進数で表現すると32桁の0か1の並びになります
(例)192.168.1.10の場合は以下のようになります。
※見やすいように8けたで区切っています
2.IPアドレス32桁のうち、プレフィックスの数だけ先頭から1を並べ残りは0にします
この値をサブネットマスクといいます。
(例)192.168.1.10/24の場合は以下のようになります。
この2つのIPアドレスを縦にAND演算するとネットワーク部分のIPアドレスが取り出せます。
※AND演算は0 AND 0 = 0、1 AND 0 = 0、1 AND 1 = 1 になります。
この値を10進数表示にすると、192.168.1.0になります
(例)192.168.1.10の場合は以下のようになります。
※見やすいように8けたで区切っています
11000000.10101000.00000001.00001010 ・・・①
2.IPアドレス32桁のうち、プレフィックスの数だけ先頭から1を並べ残りは0にします
この値をサブネットマスクといいます。
(例)192.168.1.10/24の場合は以下のようになります。
11111111.11111111.11111111.00000000 ・・・②
この2つのIPアドレスを縦にAND演算するとネットワーク部分のIPアドレスが取り出せます。
※AND演算は0 AND 0 = 0、1 AND 0 = 0、1 AND 1 = 1 になります。
①11000000.10101000.00000001.00001010 ②11111111.11111111.11111111.00000000 ----------------------- 11000000.10101000.00000001.00000000
この値を10進数表示にすると、192.168.1.0になります
以上です
0 件のコメント:
コメントを投稿