ネットワークの基礎知識

最初、書籍の内容を箇条書きで要約してたんですが、文章にまとめた方が自分の理解にも繋がる気がするので、文章でまとめていこうかと思います。

ネットワークと言っても、正確にはコンピュータネットワークをこの記事では対象とします。書籍を読んでいたり、実際のネットワーク関連のトラブルを経験したときに感じたのですが、コンピュータネットワークを具体的に頭の中で想像できることが大事です！コンピュータネットワークはコンピュータやスマートフォン、ルーターやハブ、有線や無線などから構成されています。グラフ理論的な用語を使用すると、コンピュータやスマートフォン、ルーターやハブといった機器がノードで、有線や無線がエッジです。

次にルーターの内側と外側を意識することが大事です！ひとつのルータに接続されている機器からひとつのネットワークが構成されますが、ルーターには内部向けの穴と外部向けの穴があります。自宅のルーターを実際に観察してみたら、内部向けの穴の側にはLANと書かれていて、外部向けの穴の側にはWANと書かれていました。つまり、ルーターはLANというネットワークとWANというネットワークをつなぐ役割を果たしていることがわかります。

次にネットワークに接続する機器にはIPアドレスが割り当てられているという認識が重要です！機器はコンピュータはもちろんルーターにも割り当てられています！このIPアドレスは何のために使われるのでしょうか？IPアドレスは機器を識別するために使われます。住所で言えば、建物。つまり、どのIPアドレスかというのは現実世界においてどの建物なのかを識別するということです。先ほど、機器を識別すると言いましたが、正確にはそれにはMACアドレスという機器に固有なものも存在します。
では、なんで機器を識別するのにIPアドレスとMACアドレスがあるんだ？となりますが、それを理解するにはISO参照モデル、TCP/IPを理解する必要があります。MACアドレスはISO参照モデルのデータリンク層で使われ、IPアドレスはネットワーク層で使われます。

ここまでのMACアドレスやIPアドレスでどの建物かはわかりましたが、どの部屋かまでワカラナイと困りますよね。部屋番号に当たるのがポート番号です。ポート番号というのはアプリケーションに対応して存在しています。

つまりコンピュータネットワークにおける通信というのは送信元IPアドレス:ポート番号と送信先IPアドレス:ポート番号がわかればできるということです！

では、コンピュータとコンピュータの通信におけるその過程はどうなっているのでしょう？


# LAN

* ネットワークを構成する要素
    * デバイス(コンピュータやスマートフォンなど)
    * ネットワーク機器(ルータやスイッチなど)
    * 伝送媒体(ケーブルや無線電波など)
* 通信サービス
    * ADSL
    * FTTH
    * CATV
* LAN
    * イーサネット(主流)
    * トークンリング
    * FDDI
* OSI参照モデル
    * L1: 物理層
    * L2: データリンク層
    * L3: ネットワーク層
    * L4: トランスポート層
    * L5: セッション層
    * L6: プレゼンテーション層
    * L7: アプリケーション層
* TCP/IP
    * L1: ネットワークインタフェース層
    * L2: インターネット層
    * L3: トランスポート層
    * L4: アプリケーション層

# IP

* IPアドレス = ネットワークアドレス + ホストアドレス
* クラスフルアドレス
    * クラスA
        * ネットワークアドレスは0XXXXXXX(8bit)で第1オクテットは1~126
        * ネットワークアドレスの数は126(=2^7-2)個
        * ホストアドレスの数は16,777,214(=2^24-2)個
    * クラスB
        * ネットワークアドレスは10XXXXXXXXXXXXXX(16bit)で第1オクテットは128~191
        * ネットワークアドレスの数は16,382(=2^14-2)個
        * ホストアドレスの数は65534(=2^16-2)個
    * クラスC
        * ネットワークアドレスは110XXXXXXXXXXXXXXXXXXXXX(24bit)で第1オクテットは192~223
        * ネットワークアドレスの数は2,097,150(=2^21-2)個
        * ホストアドレスの数は254(=2^8-2)個
* ネットワークアドレス・・・ホストアドレスが全部0
* ブロードキャストアドレス・・・ホストアドレスが全部1
* ネットワークアドレスやホストアドレスの個数が2^ビット数から2引かれているのはネットワークアドレスとブロードキャストで使用されているため。
* クラスフルアドレスはネットワークアドレスが8bit,16bit,24bitといった形で固定なので、必要なホストアドレスの数に対して無駄なホストアドレスまで使用してしまうことが多い。
* クラスレスアドレス・・・サブネットマスクを利用することでネットワーク部とホスト部の区切りを柔軟に設定できる
* サブネットマスク・・・ビット「１」に対応している部分がネットワーク部、ビット「０」に対応している部分がホスト部を表す。ネットワーク部を表す「１」が連続し、その後ホスト部を表す「０」が連続するという決まりがある。よって、ビット「１」がいくつ連続しているかを示すプレフィックス表記がある。例えば、ビット「１」が24個連続しているサブネットマスクを「/24」と表記する。
* 同じルーターに接続しているPCでもサブネットマスクが異なると、別のネットワークにいるとして認識されてしまう。なので、同じネットワーク内のホストはサブネットマスクが同じである必要がある。
* 「ネットワークに接続する」とは「LANや無線電波で物理的に接続する」と「IPアドレスやサブネットマスクを設定する」の2つを意味する。
* グローバルアドレスの割り当て: ICANN->RIR->NIR->LIR->エンドユーザ
* プライベートアドレス
    * 10.0.0.0~10.255.255.255(10.0.0.0/8)　　　 
    * ↑ 第1オクテットが10
    * 172.16.0.0~172.31.255.255(172.16.0.0/12) 
    * ↑ 第1オクテットが172,第2オクテットが16~31
    * 192.168.0.0~192.168.255.255(192.168.0.0/16) 
    * ↑ 第1オクテットが192,第2オクテットが168
* NATはプライベートアドレスとグローバルアドレスを変換するためのNATテーブルを持つ。このNATテーブルはプライベート側からグローバル側へ通信したときに作成されるので、いきなりグローバル側からプライベート側へは通信できない。
* NAPTではIPアドレスだけでなくTCP/UDPポート番号も変換することで、1つのグローバルアドレスを複数のプライベートアドレスに対応付ける。
* IPアドレスを調べるコマンド ifconfig

# DNS

* DNS(Domain Name System)はホスト名とIPアドレスの対応付けを行うための仕組み
* 名前解決・・・ホスト名とIPアドレスの対応付け
* 電話帳に相当するのがDNSのゾーンファイル
* 電話番号の登録情報がゾーンファイルのリソースレコード
* DNSサーバーの設定が間違っていてもIPアドレスを直接指定すると通信できる
* コマンドnslookupでドメイン名からIPアドレス、またはIPアドレスからドメイン名がわかる。
* set type=MXと入力するとMXレコードの問い合わせができる
* MXレコードとはメールサーバの情報を登録しているもの
* set type=NSと入力するとNSレコードの問い合わせができる
* NSレコードとはドメイン名を管理するDNSサーバーを登録しているもの

# TCP・UDP

* ポート番号はnetstatで調査可能
* PCやサーバはIPアドレスで特定する
* アプリケーションはポート番号で特定する
* ポート番号は16bitの数値で0~65535
    * 0~1023 ウェルノウンポート
    * 1024~49151 登録済みポート
    * 49152~65535 ダイナミック/プライベートポート


参考文献
[おうちで学べるネットワークのきほん](http://www.amazon.co.jp/%E3%81%8A%E3%81%86%E3%81%A1%E3%81%A7%E5%AD%A6%E3%81%B9%E3%82%8B%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AE%E3%81%8D%E3%81%BB%E3%82%93-Gene/dp/4798125261/ref=sr_1_1?ie=UTF8&qid=1455627732&sr=8-1&keywords=%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AE%E3%81%8D%E3%81%BB%E3%82%93)