繁茂するラベンダーの使い道

入浴剤

用意するもの

  • 台所の流しで使うゴミネット
  • 繁茂するラベンダー

やること

  1. ラベンダーをゴミネットに入る大きさにちぎる
  2. ゴミネットに入れる
  3. 浴槽に投げ込む
  4. お風呂を入れる

f:id:ponsuke_tarou:20170425210031j:plain

下駄箱の消臭剤

用意するもの

  • 台所の流しで使うゴミネット
  • 繁茂するラベンダー

やること

  1. ラベンダーをゴミネットに入る大きさにちぎる
  2. ゴミネットに入れる
  3. 下駄箱に投げ込む

f:id:ponsuke_tarou:20170425210319j:plain

ドライフラワー

用意するもの

  • キッチンペーパー
  • お菓子とかいただき物についているリボンかゴム
  • 繁茂するラベンダー

やること

  1. ラベンダーを手頃な長さで収穫する
  2. 下葉を取る
  3. からげる
  4. キッチンペーパーで邪魔にならないぐらいの太さに巻く
  5. リボンかゴムでしばる
  6. どっかに吊り下げて放置する
  7. 思い出したらリボンかゴムを締める

「Log4J」と「SLF4J」ってなんだ?ログの出力先探索記

ことのきっかけ

お仕事でコンソールにバーって出てるけどログファイルはどこにあるんだろうと探していた時のことでした。
こんなのを見た、「Logger」だからログはいてくれるのでしょう。

import org.slf4j.Logger;


ログは見るけど出力とかよくわからない・・・いつもはBossや先輩に設定場所と内容の指示をもらってやっているだけ・・・ソフトウェアデザインの2017-03月号でも特集していた「ログ」・・・自分関わっているのだけでも知らなきゃ!となったのがきっかけでした。
「slf4j Logger」でググってみました。「SLF4J」は他のものと一緒に使われるようで、よく目にしたのが・・・

① 「Log4J

Log4JJakarta プロジェクトで開発が進められている Java プログラム用のログ API です。Log4J を利用することで、様々なロギングが可能になります。
1. Log4J の基本 | TECHSCORE(テックスコア)

Log4J はロギングのためのクラス・ライブラリである。開発元は言わずと知れた Apache のサブプロジェクトの一つである。
www.nurs.or.jp

log4jjavaで最もポピュラーなロギングフレームワークだと思います。
log4jだけでも良いのですが、SLF4Jを使うことでprintfライクな文法でログを出力できるところが気に入り利用することにしました。
yokuno.hatenablog.com

② 「Logback

Log4j の開発者が作った別のロギングライブラリ。

歴史的な背景とか、 SLF4J との関係については、 Javaのログ出力: 道具と考え方 というスライドがとても参考になります。
qiita.com

いろいろ読んでみてを理解しはじめました。

www.slideshare.net
www.bunkei-programmer.net

Log4J」「Logback」は実装的なログ出力ライブラリ。

「SLF4J」はインターフェース的なログファサードライブラリ。

Facadeパターンは、既存のクラスを複数組み合わせて使う手順を、「窓口」となるクラスを作ってシンプルに利用できるようにするパターンです。
15.Facadeパターン | TECHSCORE(テックスコア)

kiririmode.hatenablog.jp

「SLF4J(Simple Logging Facade For Java)」はいろんなログ出力ライブラリを切り替えて使うためのインターフェース的なもの。
だから実装的なライブラリと一緒に使うということになるのですね。


で、結局出力するログの出力先はどこなんでしょう?

① ログ出力ライブラリを調べる

ライブラリなのでまずはMavenさんのpom.xmlをみてみました。

f:id:ponsuke_tarou:20170423192410p:plain
2. Maven 入門 (2) | TECHSCORE(テックスコア)

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.x.x</version>
    </dependency>

ぐぐったら実装的なログ出力ライブラリは「Log4j」のようでした。

f:id:ponsuke_tarou:20170423193159j:plain
SLF4J - Javaロギング実装・ライブラリの柔軟な切り替え・効率化を実現するロギング Facade

② 設定ファイルを探す

Log4j」の代表的な設定ファイル名は「log4j.properties」「log4j.xml」で、
このファイルがなかったらソースから追えば設定ファイルが見つかるようです。

設定ファイルを使用するには、org.apache.log4j.PropertyConfigurator クラスを使用します。クラスメソッドconfigure( ) メソッドで設定ファイルを読み込みます。
2. 設定ファイルの利用 | TECHSCORE(テックスコア)

③ 設定方法を知る

大きな構成は3つで「Loggerさん」「Appenderさん」「Layoutさん」

Logger は Log4J パッケージの中心クラスで、ロギングを行う部分をグループ化し、必要なグループのログだけを出力したり、カテゴリーに優先順位をつけることにより様々な出力方法を指定することができます。

Appender はログの出力先を指定するものです。Appender で設定できる出力先は、冒頭でも述べたように、ファイル、OutputStream、Java.io.Writer、リモート Log4J サーバ、リモート Unix Syslog デーモン、Windows NT イベントログなどです。

Layout はその名の通り、ログの出力フォーマットを指定するものです。単純なテキスト出力、ユーザが指定したレイアウト、HTML のテーブルレイアウトなどを指定することができます。
1. Log4J の基本 | TECHSCORE(テックスコア)

Logger
ここに「Loggerさんの名前」「ログレベル」「Appenderさんの名前」を設定します。

# RootLogger
log4j.rootLogger={ログレベル},{Appenderさんの名前}

# Logger
log4j.logger.{Loggerさんの名前}={ログ出力レベル|INHERITED},{Appenderさんの名前}

RootLoggerのログレベルを継承したいときは、「INHERITED」と書きます。

↓Loggerさん

This is the central class in the log4j package. Most logging operations, except configuration, are done through this class.
Logger (Apache Log4j 1.2.17 API)

Appender
カンマ区切りで複数指定できます。複数指定できるのでログを、コンソールとファイルに同時に出力することが可能です。
gungnir-odin.hatenablog.com


Appener
Appenderさんの「クラス」「オプション」「使うLayoutのクラス」の設定をします。

# 使用するAPPENDERの設定
log4j.appender.{Appenderさんの名前}={Appenderさんのクラス}
# オプションの設定
log4j.appender.{Appenderさんの名前}.{オプション}={オプションの設定値}
log4j.appender.{Appenderさんの名前}.layout={使うLayoutさんのクラス}

↓{Appenderさんのクラス}は「All Known Implementing Classes:」から選びます。

Interface Appender

All Known Implementing Classes:
AppenderSkeleton, AsyncAppender, ConsoleAppender, DailyRollingFileAppender, ExternallyRolledFileAppender, FileAppender, JDBCAppender, JMSAppender, LF5Appender, NTEventLogAppender, NullAppender, RewriteAppender, RollingFileAppender, SMTPAppender, SocketAppender, SocketHubAppender, SyslogAppender, TelnetAppender, WriterAppender

Implement this interface for your own strategies for outputting log statements.
Appender (Apache Log4j 1.2.17 API)

org.apache.log4j.net.SyslogAppender であることからも判るように、実際にはネットワーク系の Appender である。つまり、root でこれを使ったアプリを動かしても、ローカルマシンの syslog で取り扱って貰えるわけではない、ということを最初に言っておこう。
www.nurs.or.jp

log4j.category.com.fc2web.himtodo.test=DEBUG, TEST
log4j.appender.TEST=org.apache.log4j.DailyRollingFileAppender
log4j.appender.TEST.File=C:/logs/test.log
log4j.appender.TEST.DatePattern='.'yyyy-MM-dd
log4j.appender.TEST.layout=org.apache.log4j.PatternLayout
log4j.appender.TEST.layout.conversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS} [%p] - %m%n

↓{使うLayoutさんのクラス}は「Direct Known Subclasses:」から選ぶか実装します。

Class Layout
Direct Known Subclasses:
DateLayout, EnhancedPatternLayout, HTMLLayout, PatternLayout, SimpleLayout, XMLLayout

Extend this abstract class to create your own log layout format.
Layout (Apache Log4j 1.2.17 API)


他は見たら調べよう・・・覚えられないし・・・。

論理演算の応用系を勉強します。

前回の勉強内容

ponsuke-tarou.hatenablog.com

勉強のきっかけになった過去問

f:id:ponsuke_tarou:20170406103907p:plainと等価な集合はどれか。ここで,∪は和集合,∩は積集合,f:id:ponsuke_tarou:20170406103916p:plainはXの補集合を表す。

f:id:ponsuke_tarou:20170406104008p:plain
分野別過去問題テクノロジ系 離散数学 No.14

応用編

否定論理和論理和否定して「NOR」です。

http://1.bp.blogspot.com/-Xo860eSgo0w/TsOGx1IJxQI/AAAAAAAAAQA/X5PZJSOczf0/s1600/nor.png

論理和否定して「NOR」。
A B OR NOR
1 1 1 0
1 0 1 0
0 1 1 0
0 0 0 1

f:id:ponsuke_tarou:20170406101202p:plain f:id:ponsuke_tarou:20170405225101p:plain

否定否定論理積で「NOR」。
A B AのNOT BのNOT NOR
1 1 0 0 0
1 0 0 1 0
0 1 1 0 0
0 0 1 1 1

f:id:ponsuke_tarou:20170406105623p:plainf:id:ponsuke_tarou:20170406105635p:plain = f:id:ponsuke_tarou:20170406101202p:plain
f:id:ponsuke_tarou:20170405235600p:plainf:id:ponsuke_tarou:20170406095437p:plain = f:id:ponsuke_tarou:20170406100834p:plain

否定論理積論理積否定して「NOR」です。

http://4.bp.blogspot.com/-XUfxpXzXkkc/TsC50mRNeDI/AAAAAAAAAOg/39nHLG0EXCY/s320/nand.png

論理積否定して「NAND」。
A B AND NAND
1 1 1 0
1 0 0 1
0 1 0 1
0 0 0 1 

f:id:ponsuke_tarou:20170406094158p:plain f:id:ponsuke_tarou:20170405230130p:plain

否定否定論理和で「NAND」。
A B AのNOT BのNOT NAND
1 1 0 0 0
1 0 0 1 1
0 1 1 0 1
0 0 1 1 1

f:id:ponsuke_tarou:20170406105623p:plainf:id:ponsuke_tarou:20170406105635p:plain = f:id:ponsuke_tarou:20170406094158p:plain
f:id:ponsuke_tarou:20170405235600p:plainf:id:ponsuke_tarou:20170406095437p:plain = f:id:ponsuke_tarou:20170406095611p:plain

排他的論理和論理和否定論理積論理積で「XOR」です。

https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/XOR_ANSI.svg/100px-XOR_ANSI.svg.png

A B OR NAND XOR
1 1 1 0 0
1 0 1 1 1
0 1 1 1 1
0 0 0 1 0

f:id:ponsuke_tarou:20170406101555p:plainf:id:ponsuke_tarou:20170406094158p:plain = f:id:ponsuke_tarou:20170406101825p:plain
f:id:ponsuke_tarou:20170406102436p:plainf:id:ponsuke_tarou:20170405230130p:plain

否定論理積否定否定論理和です。

f:id:ponsuke_tarou:20170406101825p:plain = f:id:ponsuke_tarou:20170406101555p:plain ・ (f:id:ponsuke_tarou:20170406105623p:plainf:id:ponsuke_tarou:20170406105635p:plain)
f:id:ponsuke_tarou:20170406102436p:plainf:id:ponsuke_tarou:20170405230130p:plain = f:id:ponsuke_tarou:20170406102436p:plain ∩ (f:id:ponsuke_tarou:20170405235600p:plainf:id:ponsuke_tarou:20170406095437p:plain)

論理演算の基本系を勉強します。

勉強のきっかけになった過去問

論理式P,Qがいずれも真であるとき,論理式Rの真偽にかかわらず真になる式はどれか。ここで," ̄"は否定,"∨"は論理和,"∧"は論理積,"→"は含意("真→偽"となるときに限り偽となる演算)を表す。

f:id:ponsuke_tarou:20170405221436p:plain
分野別過去問題テクノロジ系 離散数学 No.39

基本編

論理和は「OR」です。

論理和どちらかが「1」なら「1」になります。
A B OR
1 1 1
1 0 1
0 1 1
0 0 0

論理積は「AND」です。

論理積どちらも「1」なら「1」になります。
A B AND
1 1 1
1 0 0
0 1 0
0 0 0

否定は「NOT」です。

否定は「1」なら「0」になります。
A NOT
1 0
0 1
  • 否定論理回路はこれです。
    • https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/NOT_ANSI_Labelled.svg/120px-NOT_ANSI_Labelled.svg.png
  • ベン図はこうなります。
    • https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcRofK8PymTDh-UPnDoiUYA0ZpxF3zQxQzpP-WKRMV2w1GEZmBZV
  • 否定f:id:ponsuke_tarou:20170405235600p:plainで表されます。
    • キーボードで何を打てば出るかわかりませんでした。「¬」も否定の記号です。「ひてい」とうって変換したら出ました。

含意は「AならばB」ということらしいです。

「ふくい」ではなく「がんい」とよみます。
kotobank.jp
言葉遊びのようで日本語が弱いためよくわかりません。
含意の命題「ならば」をあらわす論理記号 A⇒B [数学についてのwebノート]
他の方法で考えます。

英語でわかるわけがありません。

connotation、entailment、implication、implicature、intent、connote、imply、imply、stand for、signify、intend、meanなどなど

記号はわかりません。

「A→B」「A⇒B」「A⊃B」
※. 正しくは「A→B」と「A⇒B」は異なるらしいけれどそんなレベルにはいません。
論理包含 - Wikipedia

真理値表はよくわかりません。
A B 含意
1 1 1
1 0 0
0 1 1
0 0 1
  • 10進数にしても全くわかりません。
    • A = 12 = 1100
    • B = 5 = 0101
    • A ⊃ B = 1011 = 11
ベン図は不思議に感じます。

http://softwaredevelop.web.fc2.com/img/1/gani.png
解りにくければ、A≦B と覚えればOK!
softwaredevelop.web.fc2.com

NASって何?SANって何?

勉強のきっかけになった過去問

NAS(Network Attached Storage)の特徴と,特徴を生かした適用業務について述べたものはどれか。

  1. 各種OSからファイルを共有することができるので,データを交換する業務に適している。
  2. データの読み書きを高速に行うことができるようになるので,負荷が高い業務に適している。
  3. データベースのデータを扱うことが容易なので,簡易言語で情報検索を行う業務に適している。
  4. ファイルの改ざんを監視することが容易なので,個人情報を管理する業務に適している。

分野別過去問題テクノロジ系 システムの構成 No.28

NASはファイルサーバです。

簡易なコンピュータ本体にハードディスクやSSDなどの記憶装置と、ネットワークインターフェース、OS、管理用ソフトウェアなどを内蔵したファイルサーバ専用機で、記憶装置をネットワークに直に接続したように扱うことができる
e-words.jp

http://image.itmedia.co.jp/pcuser/articles/1402/13/tm_1402_nas1_01.jpg

NASが繋がるネットワークはTCP/IPネットワークです。

ネットワークに繋ぐのでみんなで使えます。

NASはパソコンに1対1で繋ぐのではありません。
ネットワークに対して繋ぐので、そのネットワークにつながっているパソコンで使えます。
アクセス権限を設定して決まった人々だけで使うことだってできます。

個別にファイル管理するよりもNASのほうが記憶領域の有効活用できます。

個々のパソコンに付いているハードディスクの空きスペースは、それぞれの人がどんな使い方をしているかによってまちまちです。

大量のデータを保存している人のハードディスクスペースが足りなくなる一方で、あまりデータを保存していない人のハードディスクスペースが余るというのは効率が良くありませんが、NAS であればそれぞれの人が必要に応じてスペースを利用できるので有効活用ができます。
navi.dropbox.jp

ネットワークに接続された各種OSでのデータ共有ができます。

SANはネットワークです。

複数のコンピュータとストレージ(外部記憶装置)の間を結ぶ高速なネットワーク。
e-words.jp

SANは2種類あります。

FC-SANはファイバチャネルを使用したネットワークです。

接続にFibre Channel(ファイバーチャネル)を使います。
ファイバーチャネルっていうのは・・・

コンピュータ本体と外部記憶装置を接続するのに利用されているデータ転送方式
e-words.jp

通信プロトコルは、FCP(Fibre Channel Protocol:ファイバーチャネルプロトコル)です。

IP-SANはIPを使用したネットワークです。

接続にEthernet(イーサネット)やTCP/IPネットワークなどの汎用的なネットワーク技術を使います。
イーサネットっていうのは・・・

有線のLAN (Local Area Network) で最も使用されている技術規格
イーサネット - Wikipedia

通信プロトコルは、iSCSIやiFCP・FCIP(Fibre Channel over IP)です。
LANなど汎用のコンピュータネットワークとは切り離されて使われます。
なので、LAN側の機器や回線に負荷をかけずに大規模なストレージを構築することができます。

おまけ

NAS電池は電力貯蔵システムです。

多分、ファイルサーバのNASとは関係ないと思います。

負極(マイナス極)にナトリウム(Na)、正極(プラス極)に硫黄(S)、両電極を隔てる電解質ファインセラミックスを用いて、硫黄とナトリウムイオンの化学反応で充放電を繰り返す蓄電池(二次電池)です。
www.ngk.co.jp

暗号方式の種類

前回の勉強内容

ponsuke-tarou.hatenablog.com

勉強のきっかけになった過去問

暗号方式のうち,共通鍵暗号方式はどれか。

ア. AES    イ. ElGamal暗号    ウ. RSA    エ. 楕円曲線暗号
平成28年春期問37 共通鍵暗号方式はどれか|応用情報技術者試験.com

共通鍵暗号方式では、「送信側で暗号化する鍵」と「受信側で復号化する鍵」は同じ鍵を使います。

メリット : 公開鍵暗号方式にくらべて処理が高速である
デメリット : 複数人と通信する場合は鍵の受け渡しが煩雑になってしまう
https://jp.globalsign.com/knowledge/pki_keycryptosystem.html

アメリカで標準規格として採用されていたDES

共通鍵暗号方式を採用した暗号方式です。
鍵長は56ビットです。
e-words.jp

アメリカで標準規格として採用されているAES

  • 正式名称 : Advanced(高度な) Encryption(暗号化) Standard(標準)

暗号化と復号化に同じ鍵を使用する共通鍵暗号方式を採用した暗号方式です。
鍵長は 128 と 192 と 256ビットの3種類あります。

無線LANでの暗号化「WPA2」に採用されています。

ponsuke-tarou.hatenablog.com

公開鍵暗号方式では、「送信側で暗号化する鍵」は公開鍵・「受信側で復号化する鍵」は秘密鍵異なる鍵を使います。

メリット : 複数人とやり取りする際に鍵の管理が容易である
デメリット : 処理速度は遅くなってしまう
https://jp.globalsign.com/knowledge/pki_keycryptosystem.html

離散対数問題の困難さを利用したElGamal暗号

公開鍵暗号方式を採用した暗号方式です。
公開鍵や暗号文から秘密鍵が割り出されることを防ぐため、逆算が困難な演算を用いて鍵を造ります。
e-words.jp

大きい数の素因数分解の困難さを利用したRAS

公開鍵暗号方式を採用した暗号方式です。
公開鍵で暗号化、秘密鍵で復号を行うだけでなく、秘密鍵で暗号化、公開鍵で復号できます。
オイラーの定理を使っているそうですが、難しくてよくわかりません。
mathtrain.jp

楕円曲線上の離散対数問題の困難さを利用した楕円曲線暗号

楕円曲線を利用した暗号方式の総称です。
公開鍵暗号方式を採用していることが多いそうです。
暗号通貨の「ビットコイン」で採用されました。

RSA暗号と比べて、短い鍵長で同レベルの安全性が実現できます。

公開鍵暗号方式は暗号化・復号に要する計算量が多いため、RSAの鍵長は処理負荷の面でネックとなっています。代わりに、鍵長が少なくて済む楕円曲線暗号の人気が高まってきています。
平成31年春期問39 楕円曲線暗号の特徴はどれか|基本情報技術者試験.com

公開鍵暗号方式でありTLSにも利用されています。

楕円曲線によって定義された有限可群上の離散対数問題を解く際の計算量の多さを安全性の根拠とし、同じ強度を想定した場合、RSAより鍵長を短くできる利点があります。
平成30年秋期問37 楕円曲線暗号に関する記述|応用情報技術者試験.com

公開鍵暗号方式に関する記述として,適切なものはどれか。

答. RSAや楕(だ)円曲線暗号などの暗号方式がある。
平成20年秋期問71 公開鍵暗号方式|応用情報技術者試験.com

共通鍵暗号方式と公開鍵暗号方式を組み合わせたハイブリッド暗号方式

送信側 : 平文を暗号化した共通鍵暗号方式の共通鍵公開鍵暗号方式公開鍵で暗号化します。
受信側 : 公開暗号方式の秘密鍵で復号化して取得した共通鍵暗号方式の共通鍵で平文を復号化します。
インターネットで広く使われている通信方式(プロトコル)であるSSL(Secure Sockets Layer)で採用されています。

公開鍵暗号方式の「鍵の管理・配布が容易」という長所と,共通鍵暗号方式の「処理が高速」という長所の両方を生かすように,両方式を組み合わせたハイブリッド暗号方式が考えられました。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060620/241303/zu1.gif

itpro.nikkeibp.co.jp

クラスタリング方式によるシステムの構成

勉強のきっかけになった過去問

仮想サーバの冗長化設計における可用性評価に関する記述のうち,クラスタソフトウェアを用いた評価として,適切なものはどれか。

  1. OS,アプリケーション及びハードウェアの障害に対応し,障害時に障害が発生していないサーバに自動的に処理を引き継ぐので,切替え時間の短い安定した運用が求められる場合に有効である。
  2. 仮想サーバを停止させずに物理サーバ間で仮想サーバを移動することが可能となるので,メンテナンスなど業務移行の際も含めて業務の停止が全く許容できない場合に有効である。
  3. 物理サーバに備わっている機能を利用するので,ハードウェアの障害にだけ対応し,障害時に業務停止が許容される場合に有効である。
  4. 物理サーバのリソース(CPU,メモリなど)をブロック単位に物理的に分割し,あるブロックの障害が他のブロックに影響しないようにするので,障害時に業務の停止が許容できない場合に有効である。

分野別過去問題テクノロジ系 システムの構成 No.2

クラスタリング方式の概要

複数のサーバでサービスを稼働させます。利用者にはあたかも1つサーバを利用しているかのごとく。
この方式では更に2種類の方式があります。

アクティブ・スタンバイクラスタ

スポーツの大会で選手と補欠がいて、選手が怪我しても補欠がいるからなんとかなるイメージです。

稼働(アクティブ)しているサーバと停止(スタンバイ)しているサーバを使います。

停止しているサーバはサボっているのではなく稼働しているサーバを監視しています。
稼働しているサーバで故障などので停止したら、停止しているサーバが稼働してサービスを引継ぎます。

稼働するサーバを切り替えることをフェールオーバーといいます。

故障は直してまた使えるようにします。
使えるようになったらまた稼働して、稼働していたサーバがまた停止します。
これで、故障前の状態に戻ります。

停止したサーバがまた稼働して元の状態に戻ることをフェールバックといいます。

注意ポイント : サーバを切換える時に蓄積データを移行する方法が必要であること。

データを蓄積しているメールサーバやファイルサーバ、データベースサーバでこの方式を使う時は注意する必要があります。

負荷分散クラスタ

会社で1つの作業を複数人で作業して、1人だけ残業し内容にしたり誰かがインフルエンザで休んでも作業が止まらないようにするイメージです。

複数のサーバを一緒に稼働させて処理を分散させます。

ロードバランサなどで処理を振分けていきます。

問題が発生したサーバには処理を振分けないようにします。

停止したサーバに処理を振分けてもできないものはできません。
特定のサーバのスペックが残念な場合は、処理が滞らないようにそのサーバに振分ける処理を少なくしたりもします。

注意ポイント : データをサーバ間で共有する方法が必要であること。

使っているサーバみんなで違うデータを見ていたら悲しい状態になります。

注意ポイント : 処理を振り分ける装置にはサーバを監視する機能も必要であること。

どのサーバは問題なくて、どのサーバには問題が発生しているかを監視して振分けを決められないといけません。

クラスタリング方式は、停止時間を最小限にしたいサービスに向いています。

IPアドレスとサブネットマスク

前回の勉強内容

ponsuke-tarou.hatenablog.com

勉強のきっかけになった過去問

次のIPアドレスサブネットマスクをもつPCがある。このPCのネットワークアドレスとして,適切なものはどれか。

 IPアドレス: 10.170.70.19
 サブネットマスク:255.255.255.240

ア. 10.170.70.0  イ. 10.170.70.16  ウ. 10.170.70.31  エ. 10.170.70.255
平成31年春期問34 ネットワークアドレス|応用情報技術者試験.com

サブネットマスク(subnet mask)というものがあります

サブネットマスクとは、ネットワーク部がどこからどこまでかを定義する数値です。

IPアドレスは、「ネットワーク部」と「ホスト部」からできています。
その「ネットワーク部」がどこからどこまでかを定義する32ビットの数値です。

そもそもサブネットというのは、小さく分割したネットワークです。

大きなネットワークを複数の小さなネットワークに分割して管理する際の管理単位となる小さなネットワーク。
サブネットとは - IT用語辞典 e-Words

例えば、「Cクラスを使うにはホストが多すぎる」が「Bクラスを使うにはホストが少なすぎる」
こんな場合「Bクラスを小さなネットワークに分割」してその1つを使えばちょうどいい。
この小さなネットワークがサブネットです。

サブネットにするから「ネットワーク部」がクラスとは変わります。

上記の例で考えると「Bクラスを小さなネットワークに分割」したので「Bクラスのネットワーク部」とは違う「ネットワーク部」になります。
そうなると、どこからどこまでが「ネットワーク部」かわからなくなります。

そこで、

どこからどこまでが「ネットワーク部」かわかるようにするのにサブネットマスクがある

のです。

Aクラスのサブネットマスクは2進数で、
11111111 00000000 00000000 00000000

Bクラスのサブネットマスクは2進数で、
11111111 11111111 00000000 00000000

Cクラスのサブネットマスクは2進数で、
11111111 11111111 11111111 00000000

サブネットマスクの「ネットワーク部」には見方があります。

サブネットマスクを2進数でみると先頭から途中まで「1」が連続しています。

「1」が連続している範囲が、「ネットワーク部」です。
「0」が連続している範囲が、「ホスト部」です。

「勉強のきっかけになった過去問」で考えます。
サブネットマスクは、「255.255.255.240」です。
これを2進数にすると
11111111 11111111 11111111 11110000
です。
ピンクの部分がCクラスより小さくネットワークを分割しています。
そのネットワークに繋がるIPアドレス「10.170.70.19」のホストがあります。
この「ネットワーク部」を見てみます。

① ホストのIPアドレスを2進数にします。

00001010 10101010 01000110 00010011

サブネットマスクと見比べます。

00001010 10101010 01000110 00010011
11111111 11111111 11111111 11110000

③ 2つをAND演算(論理積)すると「ネットワーク部」になります。

結果は、00001010 10101010 01000110 00010000 です。
「ネットワーク部」は、00001010 10101010 01000110 00010000 です。

④ 2つをOR演算(論理和)すると「ホスト部」になります。

結果は、11111111 11111111 11111111 11110011 です。
ホスト部」は、11111111 11111111 11111111 11110011 です。

⑤ 10進数に戻します。

「ネットワーク部」は、10.170.70.16です。
ホスト部」は、255.255.255.243です。

という感じでサブネットマスクにおける「ネットワーク部」「ホスト部」を見分けます。

対象 10進数 2進数
サブネットマスク 255.255.255.240 11111111 11111111 11111111 11110000
IPアドレス 10.170.70.19 00001010 10101010 01000110 00010011
ネットワーク部(AND演算) 10.170.70.16 00001010 10101010 01000110 00010000
ホスト部(OR演算) 255.255.255.243 11111111 11111111 11111111 11110011

サブネットマスクの10進数表記

サブネットマスクは2種類の10進数表記があります。

CIDR表記

例えば、255.255.252.0/14

フォーマット:xxx.xxx.xxx.xxx/xx
「/」の前にある「xxx.xxx.xxx.xxx」にはサブネットマスクの10進数を記載します。
「/」の後ろにある「xx」にはネットワーク部のビット数を記載します。

IPアドレスサブネットマスクを併記する表記

例えば、255.255.255.1/255.255.252.0

フォーマット : xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx
「/」の前にある「xxx.xxx.xxx.xxx」にはホストに割当てられたIPアドレスの10進数を記載します。
「/」の後ろにある「xxx.xxx.xxx.xxx」にはサブネットマスクの10進数を記載します。

IPアドレスのクラス

IPアドレスにはクラスとういう分類方法があります。

IPアドレスは32bitの数値です。

例えば、localhostIPアドレス127.0.0.1」は
2進数にすると「01111111 00000000 00000000 00000001」の32bitです。

② 先頭のbitパターンでクラス分けします。

Aクラス : 先頭が「0」

0xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx というパターン。
なので
00000000 00000000 00000000 00000000 〜 01111111 11111111 11111111 11111111
だから「0.0.0.0 〜 127.255.255.255」が使えます。

Bクラス : 先頭が「10」

10xxxxxx xxxxxxxx xxxxxxxx xxxxxxxx というパターン。
なので
10000000 00000000 00000000 00000000 〜 10111111 11111111 11111111 11111111
だから「128.0.0.0 〜 191.255.255.255」が使えます。

Cクラス : 先頭が「110」

110xxxxx xxxxxxxx xxxxxxxx xxxxxxxx というパターン。
なので
11000000 00000000 00000000 00000000 〜 11011111 11111111 11111111 11111111
だから「192.0.0.0 〜 223.255.255.255」が使えます。

Dクラス : 先頭が「1110」

1110xxxx xxxxxxxx xxxxxxxx xxxxxxxx というパターン。
なので
11100000 00000000 00000000 00000000 〜 11101111 11111111 11111111 11111111
だから「224.0.0.0 〜 239.255.255.255」が使えます。

クラスDのIPアドレスは、特定のグループに所属する全てのホストに同時送信を行う「マルチキャスト」で使用されるアドレスです。
ビット列の割り振りは、32ビットのうち先頭4ビットがクラスDを表す「1110」で、アドレスの残りの28ビットが送信対象となるグループ番号を指定する部分として使われます。
https://www.sc-siken.com/kakomon/30_aki/img/19.gif

平成30年秋期問19 クラスDのIPアドレスに関する記述|情報処理安全確保支援士.com

Eクラス : 先頭が「1111」

1111xxxx xxxxxxxx xxxxxxxx xxxxxxxx というパターン。
なので
11110000 00000000 00000000 00000000 〜 11111111 11111111 11111111 11111111」
だから「240.0.0.0 〜 255.255.255.255」が使えます。

ただし、このクラスは「実験的」な目的のためにTCP/IPIPv4)の開発当初から予約されており、実際に使われることはない。
第8回 アドレス・クラスとさまざまなIPアドレス:基礎から学ぶWindowsネットワーク(1/3 ページ) - @IT

③ なんでクラス分けするのかです。

ネットワークを表す部分

ネットワーク内にあるホスト(パソコンとかサーバとか)を表す部分
に分けるから。
Aクラスを使えばたっくさんつながるホストを割当てられるし、
Eクラスを使えば少いホストしか割当てられない。
この
「ネットワークを表す部分」をネットワーク部
「ネットワーク内にあるホストを表す部分」をホスト部
といいます。

④ クラス内で予約済みのIPアドレスがあるのです。

予約済みのIPアドレスはホストに割り当ててはなりません。

ネットワークアドレス

ホスト部の2進数のビットが全て 0 になっているアドレスのことです。
ネットワーク自体を指すアドレスとして使われているから割当ててはならないのです。
Aクラス : 00000000 00000000 00000000 00000000 (0.0.0.0)
Bクラス : 10000000 00000000 00000000 00000000 (128.0.0.0)
Cクラス : 11000000 00000000 00000000 00000000 (192.0.0.0)
Dクラス : 11100000 00000000 00000000 00000000 (224.0.0.0)

ブロードキャストアドレス

ホスト部のビットが全て 1 になっているアドレスのことです。
セグメントに接続されている全てのホストにパケットを送信するためのアドレスとして使われているから割当ててはならないのです。
Aクラス : 01111111 11111111 11111111 11111111 (127.255.255.255)
Bクラス : 10111111 11111111 11111111 11111111 (191.255.255.255)
Cクラス : 11011111 11111111 11111111 11111111 (223.255.255.255)
Dクラス : 11101111 11111111 11111111 11111111 (239.255.255.255)

ループバックアドレス

先頭が「01111111」(127)である自分自身(localhost)を表すIPアドレスのことです。
自分自身用で自身で動作する別のソフトウェアからアクセスしたりネットワークを利用するソフトウェアのテストなどで使うので割当ててはならないのです。
IPv4ではいつも「127.0.0.1」になると思っていましたが、どうも間違っていたようです。

IPv6ではループバックアドレスは「::1」しか用いることができないと定義されているが、IPv4の「127.0.0.1」は慣習的に決められたもので、正式なものではない。このため、OSによってはこれ以外のIPアドレスループバックアドレスとして使用できる場合もある(が、通常は別のアドレスは使わない)。
ループバックアドレス(127.0.0.1)とは - IT用語辞典 e-Words