ネットワークの基礎知識まとめ（備忘録）

会社の推薦図書でネットワークに関する本を読んだので学んだことをまとめていきたいと思います。

大事だと思ったことを備忘録として残しておきたいと思います。

## 1 基礎編
- 通信プロトコル
    - コンピュータ同士の通信において、相互のコンピュータが従うべきルールのこと。
    - プロトコルは標準化という行程を経て、世界共通の規格として公表される
        - インターネット通信で使用されるプロトコルはの多くはIETFが標準化しRFCと呼ばれる英語文書として公開される
    - 一つのプロトコルで通信のすべてを行うのではなく、いくつかのプロトコルを組み合わせて全体の手順が決定される
    - 組み合わせて使用する一連のプロトコルをまとめてプロトコルスイートともういう。
- OSI参照モデル
    - コンピュータネットワークに求められる機能を７つの階層を用いて整理したもの。（ネットワークアーキテクチャ）
    - 自層で通信処理で実現した機能を上位層に提供する。下位層の機能を使い、自層で何らかの処理を実現する。
        - １　物理層
            - コネクタの形状などの物理的な接続を定める
        - ２　データリンク層
            - 直接接続された機器同士の通信を実現する
        - ３　ネットワーク層
            - 中継などにより任意の機器同士の通信を実現する
        - ４　トランスポート層
            - 信頼性の向上など用途に応じた特性を実現する
        - ５　セッション層
            - 通信の開始から終了までの手順を実現する
        - ６　プレゼンテーション層
            - データの表現形式を相互変換する
        - ７　アプリケーション層
            - 具体的な通信サービスを実現する
- 交換方式
    - 回線交換
        - 通信回線そのものをつなぎ替える方式
        - 相手との回線を専有することができる代わりに使用していないときは回線に無駄が生じている
        - 最近はあまり使用されていない
    - パケット交換
        - データを一定のサイズに小分けし、その前に宛先などの情報を含んだヘッダを付与して送信する
        - 回線を共用で使用することができるので利用効率を高められる
        - １つのパイプを共用するため、空いている時は通信が早いが、混んでいる時は多少時間がかかる
            
## 2 TCP/IPについて
 TCP/IPはネットワークで広く使われる通信プロトコルのことで、TCPと呼ばれるプロトコルとIPと呼ばれるプロトコルのセットのこと。

- TCP/IPのレイヤー構成
    - ネットワークインターフェイス層
        - 直接接続された機器同士の通信を実現する
        - イーサネット、ARPなど
    - インターネット層
        - 中継などにより、任意の機器同士の通信を実現する
        - IP、ICMPなど
    - トランスポート層
        - 高信頼性など目的に応じた通信品質を実現する
        - TCP、UDPなど
    - アプリケーション層
        - 具体的な通信サービスを実現する（メール、Webブラウザ閲覧など）
        - HTTP、SMTP，POP3など
- TCPの通信手順
    - スライディングウィンドウ
        - 相手の応答がある、ないに関わらず、一定範囲まではデータを送る仕組み。
    - ３ウェイハンドシェイク
        - 接続したい相手にSYNパケットを送る
        - 　受信した相手はSTN＋ACKを１にしたTCPパケットを送信
        - 　TCPパケットを受信後ACKパケットを送信し通信が確立したことを確認する
- 　ポート番号
    - 　TCP及びUDPが提供する機能のことで、相手がどの機能と接続するかを指定するために使用される
    - 　IPアドレスとポート番号を使用することでどのコンピュータのどの機能を使用するかを識別することができる。
    - 　ポート番号は０〜６５５３５まであり、０〜１０２３まではウェルノウンポートと呼ばれ、主要なアプリーケーションのプロトコルに対応してる
        - 　以下代表的なウェルノウンポート
        - 　８０　HTTP　Webサイトへのアクセス
        - 　４４３　HTTPS　暗号化されたWebサイトへのアクセス
        - 　１１０　POP３　メールボックスの読み出し
        - 　１４３　IMAP4　メールボックスへのアクセス
        - 　２５　SMTP　サーバー間のメール転送
        - 　２０　FTP　ファイル転送（データ転送）
 
- IPアドレス
    - IPアドレスはインターネットに接続するコンピュータを識別するための働きあり、他とは重複しないようになっている
    - 世界で唯一となるIPアドレスはグローバルIIPアドレスと呼ばれる
    - プライベートIPアドレスは内部ネットワークで使用されるためのもので組織間でIPアドレスが重複しても問題ない。
    - グローバルIPアドレスとプライベートIPアドレスは使用する数値の範囲で区別される。
    - その中でもプライベートIPアドレスは組織のネットワーク規模に応じて以下のクラス分けがされている
        - クラスA　10.0.0.0　〜　10.255.255.255
        - クラスB　172.16.0.0 〜　172.31.255.255
        - クラスB　192.168.0.0　〜　192.168.255.255
    - IPアドレスはネットワーク部とホスト部で構成されており、それぞれのIPアドレスのクラスごとにネットワーク部の配分が定められて９おり、ネットワークの規模に応じて適切なネットワークのクラスを用いる
    - ネットワーク部にあたる位置のビットをすべて１にしたものとネットマスクと呼びIPアドレスとAND計算することによってネットワークを取り出すことができる
- ブロードキャスト通信
    - イーサネット似接続しているコンピュータ全てに対してデータを届ける通信
- マルチキャスト通信
    - 特定のコンピュータに対してのみデータを届ける通信（テレビ会議、音声配信）
- ARP（Address　Resolution　Protocol）
    - IPアドレスからMACアドレスを得るプロトコル
        - ARPリクエストを送る（ブロードキャスト）
        - リクエストに該当するコンピュータが自身のMACアドレス情報を含めたARPリクエストを返す

##3 ルーティング
- ルーターによるパケットの転送のことをルーティングという。
- ルーティングの手順
    - 宛先IPアドレスからサブネットマスクを使用してネットワークアドレスを取得する
    - 該当するネットワークに関するルールを探し、ルールがあればルール通り転送する。
    - ルールがなければ、デフォルトゲートウェイに転送する
- スタティックルーティング
    - ルーティングテーブルが常に固定され、ネットワークの変更があるたびに手動で変更する必要がある
-  ダイナミックルーティング
    -  ネットワークの接続ルートに関する情報をルーター同士が定期的に交換しあい、自動的にルーティングテーブルを更新する
-  DHCP（Dynamic　Host　Configuration　Protocol）
    -  ネットワークに接続したコンピュータに対して必要なネットワーク情報を自動的に配布するプロトコル
    -  DHCPの動作の流れ
        -  DCHCPディスカバーをブロードキャストし、割当を呼びかける
        -  DHCPオファーで設定情報の候補を返送する
        -  DHCPリクエストをブロードキャストし示された候補を使用することを伝える
        -  DHCPアックで設定情報の使用開始を承諾したことを伝える
-  NAT（Network　Address　Translation）
    -  プライベートIPアドレスをグローバルIPアドレスに付け替える
    -  コンピュータの台数はルーターが持つグローバルIPアドレスの数で制限される
-  NAPT（Network　Address　Port　Translation）
    -  プライベートIPアドレスをポート番号を利用して、複数のプライベートIPアドレスと１つのグローバルIPアドレスに対応つける
-  VPN
    -  既存のネットワークの中に仮想的なネットワークを作ること
    -  IPSec
        -  VPNのトンネル暗号化プロトコル（トンネルプロトコル）
            -  IKE
                -  暗号鍵を交換するプロトコル
            - ESP
                - データを暗号化してやり取りする仕組み
            - AH
                - 認証と改ざん検知を行う仕組み

## 4 Webの技術
- HTTP（Hyper　Text　Transfer Protocol）
    - Web情報をやり取りするためのプロトコル
    - １つのリクエストに対して１つのレスポンスを返す処理する
    - 行いたい処理をHTTPメソッドで指定する
    - 処理結果はステータスコードで示される
    - ポート番号は８０
- HTTPS(Hyper Text Transfer Protocol Secre)
    - HTTP通信を安全に行うための仕組み
    - ポート番号は443
    - SSL/TLSという暗号化プロトコルを使用して実現する
        - 暗号化
        - 改ざん検知
        - 認証
- SMTP(Simple Mail Transfer Protocol)
    - 電子メールの配送に使用されるプロトコル
    - ポート番号は２５
    - 近年では迷惑メール防止で導入されたOP25Bによってネットワーク外にある２５ポートに接続することは禁止された
    - SMTP-AUTH（メール送信時にIDとPWを求める）が設定された５８７番のサブミッションポートを使用することによって迷惑メールが減った
- SSH（Secure Shell）
    - サーバー等に対してCUIで操作するためのプロトコル
    - ポート番号は２２
    - 公開鍵暗号方式で認証行う
    - 公開鍵認証の手順
        - ログイン対象に公開鍵を渡しておく
        - 公開鍵はペアとなる秘密鍵でしか復号できない
        - ログインの際には秘密鍵を持っていることと秘密鍵のパスフレーズを知っている必要がある
- DNS（Domain Net System）
    - IPアドレスとドメイン名（www.abc.jpなど）の相互変換を行うプロトコル(名前解決という)
    - ポート番号は53
    - 名前解決の仕組み
        - プログラムが名前解決を要求したらキャッシュサーバーに対して名前解決のためのリクエストが送られる
        - キャッシュサーバーはコンテンツサーバーに対して逐次リクエストが送られ、レスポンスが返ってくる
        - 問い合わせの段階で得られた情報はキャッシュサーバーに保存され、迅速に名前解決をすることができる
- HTTPプロキシ
    - クライアント側とサーバー側の間に入って通信の中継を行う
    - HTTPプロキシの主な機能
        - コンテンツのキャッシュ
        - ウイルス検出や不正侵入防止
        - 有害サイトへのアクセス遮断
- REST　API（REpresentational State Transfer Application Program Interface）
    - HTTPを使用してネットワーク経由で機能を呼び出しXML形式やJSON形式で結果を返す仕組みのこと(SNSのログイン情報など)
- 文字コード
    - コンピュータが扱うことのできる数値と人間が解釈できる文字を対応づけたもの（ASCIIコードと呼ばれる）
    - WebではUTF-8がよく使用される

## 5 セキュリティ
- 共通鍵暗号方式
    - データの暗号化と復号に同じ暗号鍵を使用する暗号方式（脆弱性がある）
- 公開鍵暗号方式
    - 公開鍵とペアとなる秘密鍵を使用して行う暗号方式
    - データを送信する際は送信先の公開鍵で暗号をかける
    - 受信者は自身の秘密鍵で復号することができる
    - 公開鍵は送信する際にデジタル署名（改ざん防止措置）を施した電子証明書を付与して送信する
- DMZ（DeMilitarized Zone 日本語で非武装地帯）
    - Webサーバや公開サーバを配置する場所
    - 一定の保護のもとインターネットからのアクセスを受付る
    - DBサーバなど重要な情報が入っているサーバへのアクセスはファイアウォールでフィルタリングをかけておく
- IDSとIPS
    - ファイアウォールでは防げない異常な通信を検知、防御する
    - ファイアウォールではIPアドレスやポート番号でフィルタリングをかけるためアプリーケーション層での通信の関与はしていない
    - IDS、IPSはアプリーケーション層の通信状況も含めて検査する
    - 通常とは異なる状況を察知する検知方法とシグネチャ（既知のアンチパターン）による検知方法がある


以上でまとめは終わります。
一回本を読んだあと、まとめながら読み返していたので読了まで時間がかかってしまいましたがネットワークの基礎知識について理解を深めることができたので良かったと思います。

ちなみに以下の本を読みました

https://www.amazon.co.jp/gp/product/B01DBQQ832/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=jun69916230-22&creative=1211&linkCode=as2&creativeASIN=B01DBQQ832&linkId=37207964f42d060a59bda1aa8d301f53

※アマゾンアフィリエイトリンクになっています