[クラウド時代のネットワーク入門] 個人的重要な部分の抜粋

# インターネットとは
拠点と拠点を結ぶネットワークのこと。
拠点とは、家の中のLANであったり、会社のLANだったり、学校のLANのことを指します。
それら拠点のネットワークを相互に繋いで通信が出来るようにしたのがインターネットです。

# LANとWAN
- LAN
    - ローカル上のネットワーク
    - 機器さえあれば自分で構築することが出来る
    - WANに繋げばインターネットに接続出来る
- WAN
    - 拠点と拠点のネットワーク
    - KDDIやNTTといった通信事業者が提供する、拠点と拠点を結ぶ巨大なLAN

# TCP/IPとUDP
通信プロトコルの一種。異なる回線同士でも、このプロトコルに則って開発をすれば、このプロトコルを実装している機器であればどれでも通信が出来る決めごと。

https://www.itmanage.co.jp/column/tcp-ip-protocol/

通信プロトコルはTCPとUDPの二種類が存在します。

- TCP
  - 高い信頼性の高い通信をするための機能が実装されている
- UDP
  - 信頼性の高い通信はできないが、TCPと比べて速度が速い

# IPアドレス
IPアドレスとは、ネットワーク上の番地を指します。ネットワークで通信する際に必ず必要となります。
IPアドレスには2つのアドレスが存在します。

- プライベートIPアドレス
    - LAN内で使われている外部に公開していないローカルのIPアドレス
    - ローカル内で重複しなければ自由に決められる
- グローバルIPアドレス
    - WANで使われる外部に公開されているインターネット上のIPアドレス
    - 通常はプロバイダーからIPが振り分けられ自由に決めることが出来ない
    - ユニーク(重複が無い)な値になる

## IPアドレスを読み解く
もともと、IPアドレスはインターネットに接続出来る機器にしか割り振られていません(ルーター等)
自宅のPCなども買ったばかりの状態ではMACアドレスしか持っておらず、ルーターに接続した時にルーターからIPアドレスを受け取ります。
ルーターからIPアドレスを自動的に受け取る仕組みをDHCPといいます。
DHCPは4つの通信を行い、ネットワークの設定を取得します。

#### DHCPディスカバー 
DHCPクライアントがDHCPサーバーをを探すための通信
#### DHCPオファー
DHCPサーバーがDHCPクライアントに対して設定を提案する通信

#### DHCPリクエスト
DHCPクライアントがDHCPサーバーの設定の提案に対して詳細を要求する通信

#### DHCPアック
DHCPサーバーがDHCPクライアントに対して設定の詳細を指定する通信

## サブネットマスク
IPv4はネットワーク部とホスト部で構成されています。3桁の数字を4つ組み合わされた形で表現されます。
3桁の数字の４つのうち、先の３つがネットワーク部、残り一つがホスト部になります。
十進数　192.168.1.1
二進数　11000000 10101000 00000001 00000001

このネットワーク部とホスト部を識別するために使用するのがネットマスクです。
十進数　192.168.1.1
二進数　11000000 10101000 00000001 00000001
ネットマスク 11111111 11111111 11111111 00000000

サブネットとは、ネットマスクと同等に語られることがありますが厳密には違うものです。
IPアドレスにはグローバルIPとローカルIPがありますが、ローカルIPがいくつ分割されているかを伝えるのがサブネットになります。
十進数　192.168.1.1
サブネット 192.168.1.0/4

# MACアドレス
通信に使うハードウェアに振られている固有の番号です。通信をする際に、送信元のMACアドレスと送信先のMACアドレスが必要になる。
MACアドレスはグローバルIPアドレスと同じく、提供される業者がユニークな値を設定されている。
相手のMACアドレスを知るのにはARPが使われている
ネットワーク全体に対して、IPアドレスを元にARPリクエストを投げ、IPアドレスが一致したらARPリプライを返します。これによって送信先のMACアドレスを知ることが出来ます。


# パケット
パケットとは通信の際に使用される、データを小分けにしたものです。
TCP/IPではそのままの形でデータを送ることが出来ません。パケットとして細かく分け、相手に送ります。
パケット一つ一つに札のようなもの(TCPヘッダーやIPヘッダー)が付いており、パケットが届かない(パケットロス)やデータ破損などをした場合は送り元に破損又はロスしたパケットをもらうことで少ないデータ量で修正が出来ます。
1パケット = 128byte
パケットに単位を分けることでさまざまな利点があります。

- どこかの通信が遮断されても迂回して送り先に届けることが出来る
- 通信路を専有することがない
- パケットロスやデータ破損などに強い

# スタティックルーティングとダイナミックルーティング
ルーターはどこに通信すればいいかを判断するため、ルーティングテーブルというものを持っています。このルーティングテーブルを管理する方法は二つです

### スタティックルーティング
ルーティングテーブルを手動で管理する方法。ネットワークの構築方法が変更され、ルーティングテーブルが変更になった際も手動で更新する必要があります。

### ダイナミックルーティング
ルーターどうしが定期的に通信し、ネットワークの接続ルートの情報交換を行い、ルーティングテーブルを自動的に設定、更新する方法。
全てが自動的に設定されるわけではなく、ルーターがダイナミックルーティングをするための通信プロトコルをルーティングプロトコルと呼ぶのですが、このプロトコルはいくつか種類があるため、適切な設定をする必要があります。

# ドメイン
ドメインとはインターネット上の住所のようなものです。グローバルIPアドレスと紐づけることで「google.com」や「yahoo.co.jp」で該当のWebサイトに接続できるのは、グローバルIPアドレスとドメイン名が結びついているからです。
ドメインは個人で勝手につけることはできず、ドメインを管理しているデータベースに登録されている必要があります。

## ドメインの種類
ドメインにはccTLDとgTLDの二種類があります。

### gTLD
分野別トップレベルドメインです。誰でも自由に使えるドメインと制限付きのドメイン、一定の基準を満たした企業が制定できるドメインと、多彩なものがあります。

https://www.nic.ad.jp/ja/dom/types.html

### ccTLD
国や地域に割り当てられたドメインです。「.jp」や「.uk」などがあります。
これを使えるのは原則としてその国や地域に住んでいる人となりますが、これは原則であるため、その国以外の人にも開放されているドメインもあります

# DNS
DNSとはIPアドレスを人間が覚えやすい名前に置き換えるための仕組みです。
DNSを構築しているものはDNSコンテンツサーバーとキャッシュDNSサーバーの二つからなります。
コンテンツDNSサーバーはコンテンツの元となる情報を持っています。
キャッシュDNSサーバーは、クライアントの要求に合わせて、求められているコンテンツはどこのコンテンツDNSサーバーにあるかを探し当て、情報を元にコンテンツを組み立て、キャッシュDNSサーバーからコンテンツをクライアントに返します。

# Webの信頼性を高める技術
インターネットで飛び交うデータの信頼性を高めるためには様々な暗号方式が使用されています。
データの暗号化には次の利点があります。

- 盗聴されない
- 偽造データかどうか判断が出来る
- 送りたい人にしか見られない

## 共通鍵暗号方式
共通の暗号解読の鍵を使用することです。
安全にデータを渡したい相手に暗号解読の鍵を渡します。この鍵は渡す人全てが共通の鍵となっています。
送る人は、この共通鍵を使用して暗号化を行い、受け取る人は共通鍵を使用して復号化します。
鍵が一個で良いというメリットがありますが、デメリットも存在します

- メリット
    - 鍵が一個でいい
    - もし鍵を無くしてしまっても共通の鍵なので補填が効く
- デメリット
    - 鍵自体を安全に運ぶ方法が限られている
    - 鍵が流出した場合、その鍵は使えなくなる
        - 共通鍵なので流出すると持っている人全て再発行してもらわなければならない

## 公開鍵暗号方式
秘密鍵と公開鍵の2つを使用して行う暗号方式です。
秘密鍵は暗号を解読する鍵に、公開鍵は暗号化する時に使う鍵になります。
やりとりする相手に自分の公開鍵を渡し、相手には自分が渡した公開鍵で暗号化してもらいます。
送られてきた暗号化されたデータは、自分の秘密鍵で解読します。
この方法では、共通鍵と比べて大きなメリットがあります。

- メリット
    - 公開鍵とあるように、公開鍵は悪意がある第三者に渡っても問題がない
    - 秘密鍵が流出しない限り信頼性が担保される
- デメリット
    - 暗号解読に時間がかかる


# SSL/TLS
インターネット上の情報を暗号化して通信する技術。
SSL = TLSです。
> そんなSSLですが、最初は「SSL 1.0」という形で開発され、さらに改良後「SSL 2.0」として登場しました。
その後、重大な脆弱性が見つかり、バージョンアップされていき現在に至ります。
このバージョンアップの過程の中で、SSLは根本から設計を見直す必要がありました。
そして現在、通称としてSSLと呼ばれているものは、SSLに変わる新しい仕組みの『TLS（Transport Layer Security）』というものになっています。

https://www.idcf.jp/rentalserver/aossl/basic/ssl-tls/#link02

SSL/TLSはhttpをセキュアにするために使われています(俗に言うhttps)
実装するには、サーバー証明書が必要になります。このサーバー証明書を公開鍵暗号方式に使うことでクライアントとサーバー間の通信を暗号化することが出来ます。

https://datatracker.ietf.org/doc/html/rfc2818


# VPN
バーチャルプライベートネットワークの略。
インターネットで情報を送る時には盗聴の危険性があります。なので、通信内容を暗号化し専用の通信網を作成し、セキュアに通信するための技術がVPNです。
VPNに必要な要素は3つが必要になります。

1. トンネルの作成
1. 暗号化
1. 認証機能

VPNは主に2つの構築方法があります

### IPsec-VPN
Internet Protocol Securityの略です。
ネットワーク層でVPNを構築する方法です。
ネットワーク層で実装されており、IPパケット自体を暗号化し、通信が出来ます。
IPsecのみでVPNに必要な要素を全て満たせ、拠点間のLAN同士を接続するのに最もセキュリティ性の高い接続方式です。
専用のクライアントが必要になるため、それに対応した機器が必要になるので、決められた拠点間の通信のに適しています。

https://it-trend.jp/vpn/article/48-0063

### SSL-VPN
暗号化にSSLを使用したVPNです。
クライアントがWebブラウザのみで完結することができ、拠点にも特に専用の機器などを使用しないため、IPsec-VPNに比べて比較的簡単に使い始めることができます。
ただし、セッション層で構築をすること、ブラウザを使用するという点で、相対的にみるとIPsec-VPNに比べてセキュリティは一歩落ちます。

# セキュリティ対策の基礎知識
システムやネットワークのセキュリティには三要素あります。

- 完全性
    - 情報の改ざん、改ざんされた際の通知機能
    - 許可を持たないユーザーやクライアントがアクセス出来ないこと
- 機密性
    - 許可したユーザーやクライアントにしか情報を渡さないなど
- 可用性
    - いつでも利用出来るようにすること
    - 電源の二重化、バックアップなど

## 代表的な攻撃
システムは時に攻撃をされることがあります。攻撃方法はさまざまですが、代表的なものを記述します。

- ランサムウェア
    - いわゆるトロイの木馬。
    - メールやファイルの中に紛れ込ませてPCの中に入り、パスワードを書き換えたり、データを暗号化させたりする
- DoS/DDoS攻撃
    - サーバーに大量のデータを送りつけてネットワークの帯域を使い潰し、サーバーをパンクさせる
    - コンピューターが1台の攻撃がDoS攻撃
    - コンピューターが複数のものがDDoS攻撃
- F5アタック
    - ブラウザのリロードを高速に何度も叩き、リクエストを大量に発生させ、サーバーをパンクさせる
- ブルートフォース攻撃
    - IDとパスワードでログインするシステムを狙った攻撃方法
    - 辞書攻撃とも呼ばれ、可能な組み合わせを持つ文字列を高速に何度も入力する。
    - サーバーのパンク、不正なログインなどが引き起こされる