Wiresharkしてて見かけた 20.192.0.0/10 はマイクロソフトMicrosoftのものっぽいというメモと、IPアドレスと2進と10進と

:::note warn
ここではすべてIPv4を前提にしてます。
:::
　

・パケットアナライザの初学として、Wiresharkを自PC（Windows）にインストールしパケットキャプチャして結果を眺めてみた。

・その中で、 ````20.198.118.190````との通信が散見された。


・調べてみたら、「````20.192.0.0/10````はMicrosoft Corporationの持つ～ （中略） ～したがって````20.198.118.190````もその一つ」とあった。つまり、上記IPアドレスは、マイクロソフトMicrosoftが持ってるグローバルIPアドレスの一つのようだ。
　
・なるほど、マイクロソフトがらみの何らかの通信なのだなあ。得体の知れない相手との通信というわけではないので、ひとまず安心してよさそうだ。

おしまい。
*** 
#### --- 以下、自分のネットワークおさらいメモ ---
##### この　````20.192.0.0/10 と その範囲内にある 20.198.118.190```` という情報が示すところを確認する。ネットワークの初級レベルの勉強でやったことを思い出してみる。
　

　0） このような、````20.192.0.0/10````などのIPアドレス表記法を、CIDR表記やプレフィクス表記などと言う。

　1） スラッシュ（/）より前の部分の、ピリオド（.）で区切られた4つのかたまりのことを、左から第一オクテット、第二オクテット、第三オクテット、第四オクテット、と呼ぶ。
　　CIDR表記では、各オクテットの数字は10進数表現になっている。前述 0）で挙げた例を2進で表現すると、
　　　````00010100.11000000.00000000.00000000````
　　になる。````20.192.0.0````とは表現が違うだけで、同じ意味。
　

　2） 次に、後ろにある````/10````について。これも10進数の数字で、「 1） のうち先頭（左）から何ビットまでがネットワーク部であるか」を表す。これをサブネットマスク（ネットマスク、マスク長、マスク、などとも？）という。サブネットマスクは、文脈により省略されることもままある。

　　前述の例だと、先頭から10個のビットがネットワーク部を表す、ということになるので、2進で考えて、
　　　````00010100.11000000.00000000.00000000````
　　の先頭の10ビット分、つまり、
　　　````00010100.11````
　　ここまでがネットワーク部を表していると分かる。

　　（なおこの先頭10ビット分というサブネットマスクを2進で表記すると、
　　　```` 11111111.11000000.00000000.00000000 ````
　　　10進だと、````255.192.0.0````
　　　これらはすべて、````/10```` と同義となる。）
　

　3） さて、IPアドレスは、ネットワーク部とホスト部から構成される。ネットワークアドレスの求め方は、「IPアドレスのうち、ネットワーク部を定めたら、残るホスト部のビットをすべて0にする」であった。したがって、これを 2） に当てはめて考えると、
　　　````00010100.11````
　　という先頭から10ビットの部分を用いてネットワーク部が定まっているので、残るホスト部の22ビットを全部0にすれば、ネットワークアドレスが定まることになる。すると、
　　　````00010100.11000000.00000000.00000000````
　　10進だと、
　　　````20.192.0.0````　（よりちゃんと書くなら、````20.192.0.0/10````）
　　となり、これがネットワークアドレスになる。

　　つまり、当初の情報 ````20.192.0.0/10```` なるグルーバルIPアドレスとは、（どうやらマイクロソフトMicrosoftが所有する）ネットワークアドレスなのだと分かった。
　

　4） ホスト部についても考えてみる。IPアドレスの構成要素のうち、ネットワーク部が定まったら、残るホスト部のビットはすべて、そのネットワーク用にやりくりできる。したがって、このネットワークが使用可能なIPアドレスの範囲は、

　　　````00010100.11000000.00000000.00000000````
　　　　（10進だと ````20.192.0.0```` ）

　　　から、
　　　````00010100.11111111.11111111.11111111````
　　　　（10進だと ````20.255.255.255```` ）

　　　までの範囲、ということになる。
　　　2）でちょろっと触れたように、文脈から明らかと考え ````/10```` というサフィックスは省略してみた。
　

　5） ただし、
　　　　・ホスト部のビットがすべて0のアドレスはネットワークアドレスとして用いられる。
　　　というルールのほかに、もう一つ、
　　　　・ホスト部が全て1のアドレスはブロードキャストアドレスとして用いられる。
　　　というルールがあり、正常な通信のためには、この2つの先約済みのアドレスを他の用途に使ってはいけないのだった。
　　　したがって、実際にこのネットワーク内のホストに割り当てられるアドレスの範囲は、2つを除いた、

　　　````00010100.11000000.00000000.00000001````
　　　　（10進だと ````20.192.0.1```` ）

　　　から

　　　````00010100.11111111.11111111.11111110````
　　　　（10進だと ````20.255.255.254```` ）

　　　ということになる。
　

　6） そしてそのネットワークの範囲内に、 ````20.198.118.190```` もある、ということだった。念のため確認してみる。

　　2進でも10進でもいいけど、ここでは2進で考えることにしよう。
　　　````20.198.118.190````
　　を 2進にすると、
　　　````00010100.11000110.01110110.10111110````
　　になる。

　　これが、下記アドレスの範囲、
　　　````00010100.11000000.00000000.00000001````
　　　　（10進だと ````20.192.0.1```` ）
　　　から
　　　````00010100.11111111.11111111.11111110````
　　　　（10進だと ````20.255.255.254```` ）
　　に含まれているかを知りたい。

　　サブネットマスクが/10だったので、先頭の10ビットに注目すると、
　　　````00010100.11````
　　と同じネットワークアドレスで、残るホスト部のアドレスを見ると、確かに範囲内にあると分かる。
　　
　　したがって、20.198.118.190 なるIPアドレスは、どうやらマイクロソフトMicrosoftが所有するグローバルIPのアドレスブロック（ネットワークアドレス） 20.192.0.0/10 の一つだ、と言える。


補足1）
1オクテット＝8ビット、と覚えてよさそう。似たものとして、1バイト ＝ 8ビット、があり、これも概ね通じる概念だが厳密には不正確で、1バイトが7ビットとかを示すケースもある（おそらく昔にそうだったことがあり今も現存しているのだろう自分は見たこと無いが）。そういった文脈や経緯を重んじる場合に、8ビットをひとまとめに扱う精緻な表現として、オクテットが用いられるようだ。
　
補足2）
（なんか思いついたら書く）