読者です 読者をやめる 読者になる 読者になる

「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)


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

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

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

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

前にも勉強したことがありますが忘れました。

だからまた勉強します。
blogs.yahoo.co.jp

基本編

論理和は「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

暗号方式の種類

世の中には悪意を持って悪いことをする悪い人がいます。
そんな悪い人から情報を守るために暗号化は大切です。
そして何より情報技術者試験が近いです。

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

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

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

共通鍵暗号方式

送信側で暗号化する鍵、
受信側で復号化する鍵
同じ鍵を使います。

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

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

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

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

共通鍵暗号方式を採用した暗号方式です。
鍵長は 128 と 192 と 256ビットの3種類あります。
無線LANにおいて暗号化する際の規格(決まり事)である「WPA2」に採用されています。
e-words.jp

公開鍵暗号方式

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

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

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

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

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

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

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

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

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

送信側 : 平文を暗号化した共通鍵暗号方式の共通鍵公開鍵暗号方式公開鍵で暗号化します。
受信側 : 公開暗号方式の秘密鍵で復号化して取得した共通鍵暗号方式の共通鍵で平文を復号化します。
インターネットで広く使われている通信方式(プロトコル)である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アドレスとサブネットマスク

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

サブネットマスクとは

IPアドレスは、「ネットワーク部」と「ホスト部」からできています。
ponsuke-tarou.hatenablog.com

その「ネットワーク部」がどこからどこまでかを定義する32ビットの数値です。

そもそもサブネットというのは

大きなネットワークを複数の小さなネットワークに分割して管理する際の管理単位となる小さなネットワーク。

例えば、「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」が連続している範囲が、「ホスト部」です。

先程の「例えば」で考えます。

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

「Bクラスを小さなネットワークに分割」して
11111111 11111111 11111100 00000000
となるサブネットマスクを使うネットワークに繋がるIPアドレス「255.255.255.1」のホストがあるとします。
ピンクの部分がBクラスより小さくネットワークを分割しています。
※. このサブネットにすると1024個のホストを繋げられます。大きい会社だと1つの部署の社員分ぐらいありますね。
この「ネットワーク部」を見てみます。

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

11111111 11111111 11111111 00000001

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

11111111 11111111 11111111 00000001
11111111 11111111 11111100 00000000

③ 2つをAND演算(論理積)します。

結果は、11111111 11111111 11111100 00000000 です。
「ネットワーク部」は、11111111 11111111 11111100 00000000 です。

④ 2つをOR演算(論理和)します。

結果は、00000000 00000000 00000011 00000001 です。
ホスト部」は、00000000 00000000 00000011 00000001 です。

⑤ 10進数に戻します。

結果は、255.255.252.0
「ネットワーク部」は、255.255.252.0です。
ホスト部」は、0.0.3.128です。

というかんじでサブネットマスクを使います。

サブネットマスクの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進数を記載します。