デジタル技術まとめ

# 通信

|名称|説明|
|---|---|
|HTTP||
|HTTPS||

# TCP/IP
## IPアドレス
ネットワーク上の機器を識別するための番号。IPv4では32ビットで表され、人間が読みやすくするように８ビットずつに分けて4つのフィールドで表す記法が一般的。ネットワーク部（どのネットワークに属しているか）とホスト部（どのコンピュータ端末か）に分かれており、先頭のパターンをみると、どこまでがネットワーク部か分かるようになっている。

### クラスフルアドレス

|名称|アドレス範囲|説明|
|---|---|---|
|クラスA|0.0.0.0〜127.255.255.255|ネットワーク部が先頭8ビットのみ。後ろ2４ビットを用いてホストを表現できる。|
|クラスB|128.0.0.0.～191.255.255.255|ネットワーク部が先頭16ビット。|
|クラスC|192.0.0.0.～223.255.255.255|ネットワーク部が先頭24ビット。|
|クラスD|224.0.0.0〜239.255.255.255|ネットワーク部が先頭24ビット。|

### クラスレスアドレス
従来のクラスフルアドレスでは、IPアドレスの内何ビットか（クラスCに至っては24ビットも）をネットワーク部分として提供する必要があった。ネットワークの深化が進むに連れて、IPアドレスが枯渇することが分かったので、サブネットマスクと呼ばれる数字を用いた手法が取られるようになった。サブネットマスクとは、ネットワーク部とホスト部を区別するための数値。

- サブネットマスクの1の部分
    - IPアドレスのネットワーク部
- サブネットマスクの0の部分
    - IPアドレスのホスト部

## 実際の運用
IPアドレスはグローバル、ローカルの二種類存在する。wwwに接続される装置（例えばルーター）は、世界中のどこからデータを送受信するかわからないので、世界で唯一のIPアドレスを持っておく必要がある。こうすることでwwwの中から決め打ちで通信できる。しかし、ルータ以下にぶら下がっているPCは、ローカルなネットワーク内のみで識別できるための番号を持っていれば充分であり、それがプライベートアドレスである。

### グローバルアドレス
さらに二種類のIPアドレスに分けれる

- 動的IPアドレス
    - ISPによって、自動的にグローバルアドレスが割り振られる。接続毎、時間制限毎に異なるIPアドレスに変わっていく。
- 静的IPアドレス
    - 固定されるIPアドレス。ホームページの公開サーバー、メールサーバなどに使用される。

### プライベートアドレス
家庭内ではDHCPサーバーによって、プライベートアドレスが自動的に割り振られている。ブロードバンドルーターなどに内蔵されているので、特段ユーザーが用意しなくても良い。
     
## ポート番号
受信側はポートを開けて待つ。こうすることで送信先が、IPアドレスを頼りにサーバー（or個人PC）までパケットを届けた時に、どのアプリケーションに渡せばいいかを明示する。ポート番号は大別して３つに分けれられ、ウェルノウンポート、レジスタードポート、ダイナミックポートがある。ソケット通信の際にも、ポート番号何番を開けて待機しているかを明示していく必要がある。

## 構成要素

|名称|説明|
|---|---|
|ネットワークスイッチ||
|ハブ||
|ルーター||

## マルチキャスト
一つの送信元から、複数の宛先へ同じデータを送る通信。クラスDの宛先IPアドレスが使用される。リアルタイム映像配信、PCへのOSイメージ配信などに使用される。100の送り先に１００パケット送信するのではなく、マルチキャストパケット1個を送信することで効率化を図る。

# サーバー
## 種類

|種類|正式名称|日本名|説明|
|---|---|---|---|
|DNS|Domain Name System|ドメインネームシステム|Webサイト名をIPアドレスに、またはその逆に変換する|
|DHCP|Dynamic Host Configuration Protocol|動的ホスト構成プロトコル|IPアドレスおよび関連するIP情報をネットワーク内のコンピューターに割り当てるのに役立つプロトコル|
|プロキシサーバー|中継サーバー|

## プロキシサーバー
内部ネットワークとインターネットの境界で動作し、アクセスを補助するサーバー。個人PCを直接インターネットに接続せず、プロキシサーバーを介してネットワークに接続することで、不正アクセス・侵入行為を防ぎ、セキュリティを向上させることができる。またプロキシサーバーにはキャッシュ機能があるため、Webの閲覧履歴を一時的に保存することができる。

## 負荷分散

### ロードバランサー(load + balancer)
サーバーにかかる負荷を、平等に振り分けるための装置。アクセスの多いWebサイトの運営のためには、負荷を分散させるためにも必要な装置。

###　DNSラウンドロビン
ロードバランシング（負荷分散）の一つで、ロードバランサーを使用しない方法。DNSサーバーの設定ファイルに予め設定情報を書き込むことで構成できる。DSNではドメイン名（Webページの名前）とサーバーに割り振られているIPアドレスを結びつける機能があり、利用者がどのサーバーを使用しているかを記録することができる。これを利用して、利用者を割り振っていく。しかし、デメリットもあり、柔軟性が低い。

## システム構成

|名称|説明|
|---|---|
|水平機能分散|ネットワーク上の全てのPCが対等に接続されている|
|垂直機能分散|ネットワーク上のPCに主従関係がある|


## 稼働率
### 直接接続
サーバーAとサーバーBが、直列に接続されている場合。そもそも、まず２台のPC全てが稼働している必要があり、

```math
\epsilon_A \times \epsilon_B
```

という積の形で表される。

### 並列接続
サーバーAとサーバーBが、並列に接続されている場合。サーバーAが稼働しない確率は$1-\epsilon_A$、サーバーBが稼働しない確率は$1-\epsilon_B$。そのため、全体の確率からシステムが全く機能しない確率を引くと、システムの稼働率を表すので、並列の場合は

```math
1-(1-\epsilon_A) \times (1-\epsilon_B)
```
という形で表される。

## 信頼性の設計

|名称|説明|
|---|---|
|フェールソフト|性能や機能の処理能力を低下させ、運転を継続|
|フォールバック|障害発生箇所を切り離し、能力を低下させて運転|
|フェールセーフ|障害時に安全に動かす|
|フォールトトレラント|常にシステムの稼働を正常状態に維持する|
|フールプルーフ|入力ミスや誤操作対策をあらかじめ設計|

## ディスクの冗長構成
一般的に使用されるのは、RAID（Redundant Arrays of Inexpensive Disks）システム。複数のハードディスクを繋げ、冗長性をもたせ物理的な故障から大事なデータを保護するための技術。

|名称|説明|
|---|---|
|RAID0（ストライピング）|データを複数ディスクに分散して書き込む。RAID5のような冗長化は図られていない。|
|RAID1(ミラーリング)|1台のディスク制御装置に2台のディスクを接続し、一方のディスクに書き込まれたデータが他方のディスクに自動的に反映される。|
|RAID2〜４|RAID5の方式を一般的に使用するため、現実的なシステムでは使用されない。|
|RAID5|データ、パリティ情報を複数のディスクに分散して書き込む。1台のディスクが故障しても、残りのデータとパリティ情報から復元できる。|
|RAID10|RAID0とRAID1で構成したもの。さらなる冗長性が確保できるが、使用しなければならないHDDが増え、コストがかかる。|

### RAID0
一つのデータを分散して（例えば半分ずつ）、2枚（or複数）のHDDに書き込む。RAIDコントローラーが自動的にデータを分割して、それぞれのドライブに書き込んでいく。そのための書き込み処理速度の高速化が実現できるが、1枚のHDDに問題が発生した場合は全てのデータを読み出せなくなるので注意が必要。

### RAID1
全く同じデータを2枚（or複数）のHDDに書き込む。データ削除の場合には、2枚のHDDから削除されるため、バックアップは別に取っておく必要がある。しかし、通常の運用では、どちらか1枚のHDDが故障しても、他方から読み出せるので、そういった意味でのバックアップは取れていることになる。

### RAID5
RAID0の様にデータを分割しながら、データ復旧のための誤りを訂正する符号（パリティ）を生成しながら書き込みを行う。そのため1枚のHDDに障害が発生してもデータの読み出しを行うことができるが、2枚以上のHDDが破損するとデータが消えてしまう。そのため、1枚のHDDに障害が発生したタイミングで速やかに修理を行う必要がある。RAID6であれば2枚のHDDの問題発生まで耐えることができるが、その分使用できるディスクスペースは減る。

# ファイルシステム
## ジャーナリングファイルシステム
管理領域を変更する時に、ジャーナル（更新履歴）を残し管理領域の破損を防ぐ機能を持ったシステム。

# NAS
ネットワークに接続することのできるストレージ（Network attached strage）。クラウドサーバーのようなもので、家庭で使用する際にもファイルの共有や、外出先からファイルの参照も容易に行うことができる。

# Linux
## パーティション

|名称|説明|
|---|---|
|/||
|/bin||
|/etc||
|/home||
|/dev||
|/proc||
|/sbn||

## スワップ領域
メモリ使用量が物理メモリの実際の量を超えると、使われていないHDDの領域に一時的に書き出される。これをスワップといい、その領域をスワップ領域という。スワップが発生すると、HDDへの書き込みが増えることに繋がるため動作速度の低下が引き起こされる。`free`コマンドで表示することができる。

```shell
$ free
              total        used        free      shared  buff/cache   available
Mem:       29987936     7728424     8926592     1425036    13332920    20442572
Swap:      10485756     7895908     2589848
```
`mkswap`、`swapon`コマンドでスワップ領域の作成、有効化を行うことができる。

# セキュリティ
## Firewall
不正なアクセスを検知し、管理者へ通達するシステム。

- パケットフィルタリング
    - ヘッダを解析して、通過させるかどうか（通信するかどうか）を判断する
    - 強力で柔軟性が高いが、設定が難しくセキュリティホールが生まれる可能性が高い
- アプリケーションレベルゲートウェイ
    - プロキシサーバー経由で接続を行い、サービス毎に認証する
    - 設定が比較的簡単であるが、細かい制御ができない

## WAF（Web Application Firewall）

# Reference
- https://www.kagoya.jp/howto/network/ipaddress/
- https://www.pro.logitec.co.jp/houjin/usernavigation/hddssd/20190809/
- http://e-words.jp/w/%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%8A%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0.html