IPアドレスのクラスに関する記述が理解できない

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
松任谷さん  
(No.1)
クラスAについて参考書では、「ネットワーク部の先頭ビットは「0」から始まります。10進数だと「1~127」で始まるIPアドレスです」とあります。2の7乗=128なのに、なぜ127通りしかないのですか?
2024.09.16 19:39
y4 kさん 
FE ブロンズマイスター
(No.2)
IPv4の場合、32ビットの2進数となります。
その際、8ビットずつ4つに区切って10進数で表現しています。

>クラスAについて参考書では、「ネットワーク部の先頭ビットは「0」から始まります。
上記に照らすと第一オクテットは00000001 ~ 01111111 と表現されます。
これらを10進数で表現するので1~127になります。
2024.09.16 20:18
松任谷さん  
(No.3)
回答ありがとうございます。つまり、00000000がないということでしょうか?
2024.09.16 20:33
jjon-comさん 
FE ゴールドマイスター
(No.4)
IPアドレスの番号割り当てを規定した1981年の文書 RFC 790 にはこう書いてあります。
The first type, or class a, of address has a 7-bit network number
and a 24-bit local address.  This allows 128 class a networks.


 1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|   NETWORK   |                Local Address                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Class A Address
ですから,クラスAのアドレス範囲は 0.0.0.0~127.255.255.255 ,
先頭1バイトに着目するならその範囲は 0~127 の128通りです。

同文書は,1981年当時の具体的な割り当て値についても規定しており,
0.rrr.rrr.rrr と 127.rrr.rrr.rrr を予約済(Reserved)としています。
また RFC 790 では 10.rrr.rrr.rrr は ARPANET への割り当てになっていますが,
現在ではこれは Private IP address の割り当て範囲として知られています。

クラスAの先頭1バイトとして 0 を除くのなら 127 も除いた方がよいのでは?
と私は思っています。
2024.09.17 00:58
まーぼさん 
FE シルバーマイスター
(No.5)
RFC790を和訳すると以下のような記述がありしました。

>1番目は、アドレスのaをタイプするか、または分類します。7ビットのネットワーク・ナンバーと24ビットのローカルアドレスを持っています。 これは128のクラスにネットワークを許容します。

ですので、主さんの
>2の7乗=128なのに、なぜ127通り

という疑問は至極真っ当だと思います。

また、RFC791には

>ネットワークフィールドの値が0の場合、自分のネットワークを意味する。これは特定のICMPメッセージでのみ使用される。拡張アドレッシングモードは未定義である。これら両者の機能は、将来使用するために予約されている。ネットワークアドレス用に割り当てられた実際の値は『Assigned Numbers』 [9]で与えられている。

とあります。ここからネットワーク部のビットがすべて0の場合は除かれるということだと思います。また上記の、『Assigned Numbers』とはRFC790のことで、No.4のjjon-comさんのコメントの通り、具体的な割り当て値が記載されており、ネットワーク部がすべて0のものはReservedで、すべて1の場合もReservedとされています。すべて0の場合は、具体的な使用用途が公式の文書に記述が見つけられたのですが、すべて1の場合は、私が探した限りでは予約済みということしか分かりませんでした。

長くなりましたが、ネットワーク部がすべて0や1の場合の扱いをどうするかは基本情報のレベルではないと思うので特に気にしなくて良いと思います。「先頭1ビットが0だったらクラスA」ぐらいの認識でいいのではないでしょうか。
2024.09.17 08:39
まーぼさん 
FE シルバーマイスター
(No.6)
失礼しました。127.0.0.0〜127.255.255.255はループバックとして使用されていますね。

ですので、私もjjon-comさんと同意見で、0を除くなら、127も除くべきだとおもいます。
2024.09.17 08:50
soto0896さん 
(No.7)
凄い
サラッと答えてしまう
これが本質を知っていると云う事なのか・・・
2024.09.18 12:59
松任谷さん  
(No.8)
回答ありがとうございます。こういう文書があるの知らなかったので興味深いです。初心者でして「同文書は〜」以降よく分からなかったので色々調べました。
やはりクラスAの先頭バイトの範囲は0~127であり、そのうち0,127は特別な意味を持つので、参考書では0が除かれた(そのセオリーで行くと127も除いたほうがいいのでは)。という認識でよろしいでしょうか?

それでも「1~127」と表記するということは、これが一般的な認識なのでしょうか・・・いずれにせよスッキリしました。ありがとうございました。
2024.09.18 20:18
松任谷さん  
(No.9)
>まーぼさん
画面をリフレッシュしておらず見落としており、今拝見しました。
0の用途について、知ることができ嬉しいです!
疑問も肯定してくださりありがとうございます。
2024.09.18 20:29

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop