2021-07-03に更新

袖を濡らす

はじめに

古文って何かと情景や心情表現が綺麗だよね。マジで「袖を濡らす」っていう表現めっちゃしゅき。今まで聞いた中で一番エモい。って言う話。
婉曲表現一つ一つがホントに美しいので古典とかに嗜むのも全然悪くはないと思う。

でーばな

本題

流石にIT行く時に2進数/8進数/16進数知らん奴いないと思うので2/16進数の説明はちょこっとやって終わる。
10進数知らないって言われたらもう...お母さんにかずのえほん読み聞かせしてもらってね💛

という事なので進数変換が当たり前に出来ている前提でネットワークアドレス、ブロードキャストアドレスの求め方についてまとめる。

進数変換

2進数は基本1と0の世界でおk。片指だと32個数えられるよね(2×5-1)ってなるので、両手だと1オクテットは数えられるじゃん。
8進数は0~7の8個なので指3本で1セット。
16進数は0~Fの16個。0123456789ABCDEFだけ覚えれば16進数マスターだね。

10進→2進数は死んでも出来るけど、直接変換できるのは2進数なだけで、8進数とか16進数とかへの変換はくそだるい(1回2進数に直す為)から今のうちに進数変換は慣れておいてね。
基本情報受けるんだったらの問題1ページ目大体それだから初歩の初歩の初歩問題。

ちなみにどうでもいい話

Linuxのパーミッションの表現はは8進数って話。シンボリックとかそういうの除いて3桁×3の9桁で表現します。
image
一番左がパーミッションの情報。
r(読み)が4、w(書き)が2、x(実行)が1の3桁区切り。所有者、グループ、その他のパーミッションで別れてる。
なので、「chmod 777」ってコマンド打てば、全員が読み書き実行出来るという事になる。どうでもいい話。

ネットワークアドレスの求め方

何故ggらないのか。

多分これ社会人誰しもが思うはず。
突然上司から「丁度ネットワークアドレス欲しかったんだよね~!このアドレスのネットワークアドレス求めといて~...じゃ👋」ってなるんだよ。人生たまに理不尽なときもある。
そもそも、なぜggったら分かるようなことを覚えないといけないのかって言う問題なんだけど.......
特に構築する時なんか、クーラーもないようなビルの5階フロアのセキュリティガチガチの密室に箱詰めプレイされるっていう炎上案件が来るかもしれない。(そんなことは無いが。)
勿論スマホは情報漏洩対策でロッカーに入れるとか。箱詰めで頑張らないといけない(マシンはwindowsXP)
って言う場合、オフライン状況下でネットワークアドレスも求められなかったら設定も何もできないよねって。

まぁggってはいけない状況下もあるかもしれないんだよって以前に、NE屋さんで働くなら義務教育ってことなのかなって。

求め方

仮に「172.31.162.5/20」というネットワークのネットワークアドレスを求める場合。

2進数に直すと、

1 0 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1

になります。もーちょい分かりやすくすると、

1 0 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1

となってる。
サブネットマスクはプレフィックス長が/20なので「255.255.240.0」です。2進数に直すと

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0

となってる。
そもそもサブネットマスク自体どれがネットワーク枠でどれがホスト枠なんじゃって知りたい時に使うやつってのは百も承知、二百も合点だよな。
サブネットマスクの世界だと当然1はネットワーク、0はホスト枠に入るよね?て一目でわかっちゃう。

でーばな

サブネットマスクは先頭1が入ってるビット-1を割り振ることが出来るので注意。この場合は13桁目に1が立ってるので4096-1=4095でち。
0~4095の範囲は4096個あるので、割り当て数は4096です。
分からなかったらしらんぱーしといて。
(おわり)

話を戻して

IPとサブネットを用意することが出来た。ネットワークアドレスを求める場合、サブネットマスクのホス部(0)と同じ数だけIPアドレスの下位ビットを0にしていくだけ。

IP : 1 0 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1
SM : 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0


修正後
1 0 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
これを8桁...オクテット(8ビットずつ)ずつ分けると、「172. 31.160. 0」になります。

この研修いつも/24だからってのもあるんだけど、ガチでネットワークアドレスのが「x.x.x.0」のように最後0になるわけではないから勘違いしてる人絶対気を付けて。/32の場合後尾ビット1桁目にしか0にしないから。勘違いダメ。

ブロードキャストアドレスの求め方

ちなみにブロードキャストについてはこの記事のDHCPの悲痛な叫びってところを見て頂けたら分かると思うが、ネットワークの世界でのクソデカビッグボイスはブロードキャスト通信に当てはまります。

これは簡単でネットワークアドレスは0にしたのを逆に1にするだけです。
なので、172.31.162.5/20の場合、/20のホスト数のビットは12ビットあるので下位12ビットを1にするだけです。
大体サブネットマスク/プレフィックス長に比例して0か1にするだけなのでそれほど嫌悪感は出なくてもいいかと。

なので結果はこれ。
1 0 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1
になります。アドレスは172. 31.175.255です。

自分なりの覚え方

先ほどサブネットマスク/プレフィックス長に比例するといったが、どういう事かというと、2つみていきましょ。
プレフィックス長は8~32まであって、32から上に上がっていくうちに割り当てIPアドレスは2ⁿ-1ずつ増えていきます。 1,2,4,8,16...って

必ず2ⁿ-1だからね。2の累乗分ふえたら1番目は2になっちゃうから。

CIDR表記がある場合

CIDR表記は/24とか/20とかの表記です。サブネットマスク長ったらしいからこれで行こうって人間様は楽したがる。
/29の場合は32から数えて4番目、1,2,4,8の3番目なので下位4ビットをいじいじすることになります。
じゃあ/24は1,2,4,8,16,32,64,128の8桁目なので下位8ビットいじいじします。

CIDR表記がない場合

無い場合はサブネットマスクから見つけないといけないって事。
ちなみに/32と同じであるサブネットマスク255.255.255.255から引き算するだけ。

/24のサブネットマスクは255.255.255.0なので/32から/24の部分を引くと、下位ビットの0.0.0.255、下位255が残る。
255は8ビットいじいじしようねって感じ。
/20の場合は「15.255」残るので下位8桁+4桁で12桁いじいじしようね~って感じ。

おわりに

PCの返却が来てしまったのでもういかなきゃの時間。悲しいけどこれでしめます。自分のエビデンスなので後から自分がみてあ~と思えばそれでいい。他人に見せることは考えてない。

ツイッターでシェア
みんなに共有、忘れないようにメモ

.

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント