2017年3月26日日曜日

アドレスクラス

平成28年秋季 問33. アドレスクラス

問題文「IPアドレス208.77.188.166は、どのアドレスに該当するか。」

解答群
ア. グローバルアドレス
イ. プライベートアドレス
ウ. ブロードキャストアドレス
エ. マルチキャストアドレス

ざっくりとだが、ウ.エ.は特定のアドレスになるのではないか?ということで対象から外し、プライベートアドレスは先頭が10.xxxとか192.xxxとか特定のものになるはずだからという単純な理由で正解したが、細かく見ていきたいと思い調査範囲にした。

まず「応用情報処理技術者試験ドットコム」さんの解説を基に、クラスによってプライベートアドレスの先頭部分が決まっているという点について見ていきたい。

「プライベートアドレス」「クラス」という文字列で検索したトップに「@IT」さんのページ「プライベートIPアドレス」がヒットした。いつもお世話になっております(*´▽`*)

このサイトさんの抜粋によると、以下のようになっているらしい
クラスA: 10.0.0.0~10.255.255.255(10.0.0.0/8
クラスB: 172.16.0.0~172.31.255.255(172.16.0.0/12
クラスC: 192.168.0.0~192.168.255.255(192.168.0.0/16

つまり、上記のアドレスの範囲に当てはまればプライベートネットワークと言えるし、それ以外ならグローバルアドレスであると考えてよさそうである。

上の対応表の中で、赤字で記されている部分についてはサブネットマスクの記述方式で、よりわかりやすく書くと以下のようになる:
クラスA:255.0.0.0
クラスB:255.240.0.0
クラスC:255.255.0.0

これは初めてみると面食らう表現だと思う。実際俺も初めて見た時には意味がわからなかった。
簡単にまとめると、「2bit表記した時の上位?ビットまでがサブネットですよ」と書いているわけで、「サブネットマスク」「表記」でグーグル検索するとトップに表示される、やはり「@IT」さんの「IPアドレスとサブネットマスクをまとめて表記する」に詳しくまとめられている。

しかしここで余計な疑問が出てくる。クラスBでは255.240.0.0となっているはずなのに「172.16.0.0~172.31.255.255」と「16~32(便宜上)」に絞られているのは何故だろうか?

「240」をビット変換すると「11110000」で、「16」は「00010000」、「32」は「00100000」となる。

この部分で「172.16.xxx.xxx」を表現すると
10101100.00010000.xxxxxxxx.xxxxxxxx」で赤字で表現されている部分までが12桁(2進数)なので、それ以降はプライベートに割り振ってよい数字となる。

当然、第2オクテットが「32」になると桁が上がってしまい12桁までの固定が崩れてしまう「10101100.00100000.xxxxxxxx.xxxxxxxx」ので、桁が上がる寸前の「172.31.255.255」までが範囲になるというわけだ。

というか。。。途中で切るなっ( ゚Д゚)
で、なんで172であり、192であるのか?と思って調べてみたが、簡単には結論が出てこなかったため、それぞれをビット変換して並べてみた。

クラスA:00001010
クラスB:10101100
クラスC:11000000

想像に過ぎないが、人間の目で見てわかりやすいから・・・とかいう理由ではなかろうか。。。いや、あくまで想像に過ぎないのは過ぎないのだが・・・

次にブロードキャストアドレスとはなにか?だが、簡単にウィキペディアの参照だけにしたい。「ブロードキャストアドレス」を簡単にまとめると、サブネットマスク以外のビットを全て「1」にした状態「192.168.255.255(クラスCを例にして)」は「そのプライベートアドレスに接続されている全ての端末に対する発信としよう」と決めた(提唱した)人がいるからである。
詳細は上記サイトを見てもらいたいが、確かにそのような必要があった場合に便利だろうとは思う。なぜかは割愛させていただく。

次にマルチキャストアドレスだが、色々探したところ「ネットワークのおべんきょしませんか?」さんの「マルチキャストってなに?マルチキャストの場合」にすごくわかりやすく説明されている。

詳細は疲れてきたので上記サイトに内容を譲りたいが、簡単に言うとグループ化をすることで「特定の複数」の端末に対してデータを送信することができるようにするアドレスだということらしい。

ついでにこのサイトさんでは非常に有益な情報が得られる「IPアドレスには、クラスA~Eがあって、クラスA~Cは普通に使うユニキャスト用のIPアドレス、クラスDがマルチキャスト用、クラスEが実験目的で予約されています。(引用:同上)」とある。

ちなみにこのクラスDアドレス先頭部分は
クラスD:11100000
となっており、やはり先頭からの1のビットの数でクラスを決めている⇒わかりやすい というもののようだ。

上記サイトさんをざっくりと眺めてみたところによると、非常にネットワークのことに関してわかりやすく書いておいでなので、時間があれば見てみたいサイトではある(時間ができるかは別問題である)。

今日は疲れたので以上にしたい。

4 件のコメント:

  1. はじめまして、
    応用情報の勉強をしていて、この問題が、過去問道場の解答を見ても
    ピンと来ず、当記事にたどりつきました。

    「ざっくりとだが、ウ.エ.は特定のアドレスになるのではないか?ということで対象から外し、プライベートアドレスは先頭が10.xxxとか192.xxxとか特定のものになるはずだからという単純な理由で正解」
    と書いてありますが、このような考え方を身に着ければ、この手の問題を解けるのでしょうか?
    というのも、クラスごとに、用途とアドレスの範囲を覚えるとか、無理…と思ったからです::

    返信削除
  2. Barbie Girl さん 初めまして。コメントありがとうございます。
    私自身は応用情報の受験を現在保留にしているため、すっかり忘れておりましたが確かにいちいち全部覚えるのは大変ですよね。

    さて、ご質問ですが、覚えるのが厳しいのは確かにおっしゃる通りです。
    ですが、クラスAからCに関してはネットワーク関係の仕事をしていると何かで出てくるものかと思います。

    ざっくりと、10.xxx.xxx.xxxや172.xxx...、192.xxx... を見るとどのクラスで対象のネットワークが構成されているかを知っているかで例えばトラブルシューティングで原因追及が格段に早くなったりというのは私個人経験した内容です。

    (当時はクラスAを利用していた外資企業での対応で、問題のあったPC がクラスCのアドレスを持っていたことで全く違うネットワーク構成であることがすぐにわかったことがその後の対応を早めてくれたように記憶しています。)

    また、クラスD のマルチキャストアドレスに関してはリンクさせていただいているサイトさまによると「224.0.0.0~239.255.255.255」の間とされていて、厳密に言うとこの問題はこれを知らないと確証を以て回答するのが無理だとわかります。

    このような問題では、知っているか否か、知っていない場合「どこまで答えに近い推測ができるか」という能力を測っていると思われますので、私個人は手持ちの知識を総動員して解答できれば良しとしちゃいます。

    この問題で言えば、クラスAからCのざっくりとした範囲と、ブロードキャストアドレスが各クラスのサブネットマスク以降の全てのビットを1にしたものだと知っていれば4択を2択にまで絞り込めるため、「短時間で」そこまで選択肢を絞り込めるのであれば良しとしても良いのではないかと個人的に思います。

    でも、新型コロナの問題が落ち着いたら私も再受験を考えておりますので、その際は多分クラスD まで丸覚えすることになるかな?とも思います。

    残暑の激しい中、試験勉強大変だと思います。良い結果に恵まれることをお祈りしております。
    長文になってしまい、申し訳ございませんでした。

    返信削除
  3. ご丁寧に、回答いただき、ありがとうございます。

    私は金融系SIerに勤めていましたが、第一線を退いて5年近く経ちます。
    在職中は会社の言うことをスルーして取得していなかった応用情報ですが、諸事情で思うところがあり、今更ながら挑戦しようとしています。

    お恥ずかしながら、私はアプリ系の部門にいて、ネットワーク絡みのことは全部他部門の人やパートナーさんにお任せしていたことや、よくいる文系出身SEにありがちですが、知識不足であること、また、性別が女性であることで甘やかされ、技能が低いことは自覚しています。

    ただ、仰る通り、172.xxx...、192.xxx...という字面は、古い記憶を呼び起こすと、確かに既視感があります。

    理想としては丸覚えが良いことには変わりないが、知識でなんとかなるのであれば、それでも良いと理解しました。
    前述の通り、私は知識不足で、覚えなければいけないことが多すぎるため、丸覚えとしては優先順位を下げようと思いました。

    試験日は、今秋は間に合わないので、来春の受験を考えております。
    通りすがりで質問させていただいたにも関わらず、温かい言葉をいただき、感動しています。本当にありがとうございました…!

    返信削除
    返信
    1. ご返信ありがとうございます。
      開発系の仕事をされていたのであれば、午後の試験対策は楽になりそうですね。

      私はトラブルシューティング系の保守員をしていた関係上、どうしても浅く広い知識を必要としていたこともあり、そういう意味ではこの試験の内容は仕事と親和性が高いものだったと思います。

      逆に私は開発の仕事ではなかったため、エクセルマクロと呼ばれるVBA などで手元作業の簡略化などはしたことがあっても試験範囲のJava やC++ などの経験がなく、午前は毎回通過するんですが午後で落とされております。

      話しが逸れましたが、午前の問題は過去問題を3年分ぐらい通して見渡すと6割ぐらいは取れる内容だと考えています。
      仕事の幅はあれIT 系の仕事をされていたのであれば、常識だと思える出題も少なくないからです。
      あまり細かな内容に時間を取られるよりも、俯瞰的に見て総合的に6割取れるようにしていく方がある意味合理的かもしれないですね。

      長々とした長文にお付き合いいただきありがとうございます。
      それではまた何かご縁がありましたらその時はよろしくお願いいたします。

      削除