ネットワークプロトコル基本知識

# ネットワークプロトコルと管理構成

## 1. ネットワークの基礎

### 1.1 ネットワークの概念
コンピュータネットワークは、有形のケーブルや無線などの媒体を通じて、複数のコンピュータやネットワーク機器が接続され、一定のルールに従って通信を行うシステムです。

#### よく使われるネットワーク機能
- データやアプリケーション
- リソース
- ネットワークストレージ
- バックアップデバイス

#### ネットワークの範囲による分類

| 名前            | 略称  | 説明                       |
|-----------------|-------|----------------------------|
| 広域ネットワーク | WAN   | 広範囲をカバーするネットワーク |
| 都市ネットワーク | MAN   | 都市規模で利用されるネットワーク |
| 局所ネットワーク | LAN   | 限られた範囲で使われるネットワーク |


### 1.2 一般的なネットワーク物理コンポーネント

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/a79efbf8-4121-e488-5fdd-69bfcd4e16e4.png) 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/ab61843d-45c2-a37d-8369-68a7cd78bf14.png)



### 1.3 ネットワークアプリケーション

#### 1.3.1 さまざまなネットワークアプリケーション

| アプリケーションタイプ | 代表的なソフトウェア                         |
|------------------------|--------------------------------------------|
| Webブラウザ            | Chrome、IE、Firefoxなど                     |
| インスタントメッセージ  | LINE                                       |
| 短編動画               | 抖音（Douyin）、YouTubeなど                 |
| 電子メール             | Outlook、Foxmailなど                        |
| 協作                   | ビデオ会議、VNC、Netmeeting、WebExなど      |
| Webネットワークサービス | Apache、Nginx、IIS                          |
| ファイルネットワークサービス | FTP、NFS、Samba                        |
| データベースサービス    | MySQL、MariaDB、MongoDB                    |
| ミドルウェアサービス     | Tomcat、JBoss                              |
| セキュリティサービス     | Netfilter                                  |


#### 1.3.2 アプリケーションがネットワークに求める要件
アプリケーションの種類によってネットワークの要件は異なります。

| プログラムタイプ       | シナリオの特徴                                      | ネットワークの要件                              |
|-----------------------|-------------------------------------------------|-----------------------------------------------|
| バッチプログラム        | Thunderダウンロード - 直接の人手介入が不要          | 帯域幅が重要だが、決定的な要因ではない          |
| インタラクティブプログラム | ECサイト - 人とシステムのインタラクション           | 応答時間がユーザー体験に影響する                |
| リアルタイムプログラム   | ビデオチャット、ライブ配信 - 人と人のインタラクション | エンドツーエンドの遅延が極めて重要               |


### 1.4 ネットワークの特徴
速度、コスト、安全性、信頼性、可用性、スケーラビリティ、トポロジー

#### 1.4.1 速度（帯域幅）
- コンピュータネットワークやインターネットサービスプロバイダでは、一般的に速度の単位としてbps（bits per second、ビット毎秒）が使われます
- bpsは、1秒あたりに転送されるビット数を表します

#### 1.4.2 ネットワークトポロジー
- トポロジー構造とは、点と線が並んで形成された幾何学的な形状のことを指します
- コンピュータネットワークのトポロジーは、ネットワーク内の通信リンクとコンピュータノードがどのように接続されているかを示す幾何学的な形状です

#### 1.4.2.1 トポロジーの分類
物理トポロジー - 物理トポロジーは物理デバイスの配線方法を示します
- ネットワークの物理トポロジーは、デバイスとケーブルの物理的な配置を指します。適切な物理トポロジーは、インストールされるケーブルタイプに応じて選択される必要があります

論理トポロジー - 論理トポロジーは、ネットワーク内の情報の流れ方を示します。
- ネットワークの論理トポロジーは、信号がネットワーク内のある地点から別の地点にどのように移動するかの論理的な経路を示します。つまり、データがネットワークメディアを通じて、どのようにしてデータパケットが伝送されるかを表します

#### 1.4.2.2 トポロジーの種類
- バストポロジー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/d634794d-cdd7-b97d-fc12-fab55433c4ce.png)


バストポロジー、または線形バスとも呼ばれ、すべてのデバイスが1本のケーブルで接続される構造です。バストポロジーでは、メインケーブルの末端に終端装置（ターミネータ）を設置する必要があります。

- リングトポロジー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/715d20a2-cda8-3045-035b-9437f11ad3fc.png) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/84043c61-f865-3029-ae26-2ab97250419d.png)


リングトポロジーでは、すべてのデバイスがリング状に接続されます。リング内を「トークン」が巡回し、デバイスがデータを送信したい場合は、トークンにデータを追加して送信します。

| トポロジータイプ | 説明                                                                                   |
|-------------------|---------------------------------------------------------------------------------------|
| 単一リングトポロジー | 単一のケーブルを共有し、データは一方向に送信されます。各デバイスは順番が来たときにデータを送信しますが、単一障害点が存在する可能性があり、1つの故障でネットワーク全体が停止する可能性があります。 |
| 二重リングトポロジー | 2つのリングを使用し、データは両方向に送信できます。冗長性があり、1つのリングが故障してももう1つのリングを通じてデータが送信されます。 |

- スタートポロジーと拡張スタートポロジー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/31650f8e-637e-8203-68b9-809220dbd1ff.png) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/257c4e12-ee6c-d4dd-e41a-ebeca90beb4c.png)


スタートポロジーは、すべてのデバイスが中央の接続点（ハブやスイッチ）に接続される構造です。

- メッシュトポロジー
メッシュトポロジーでは、すべてのデバイスが相互に接続されており、冗長性が高いがコストがかかります。

-- 完全メッシュトポロジー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/a5a5e3ed-d978-7af6-d299-83c0c5d6e6e0.png)

すべてのデバイスが相互に接続されるため、非常に高い信頼性と冗長性がありますが、コストが高く実装が難しいです。

-- 部分メッシュトポロジー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/08553642-dd4a-0c17-4df1-21f8cb96fc5e.png)

重要なノードだけが直接接続されるトポロジーで、コストを抑えつつ冗長性も確保できます。

## ネットワークプロトコルと管理設定

### 1.5 ネットワーク標準

#### 1.5.1 ネットワーク標準とレイヤー化
**旧モデル**：専用製品で、1つのメーカーがアプリケーションと組み込みソフトウェアを制御します。

**標準ベースのモデル**：複数ベンダーのソフトウェアを使用し、レイヤー化されたアプローチを採用します。

##### レイヤー化の必要性
コンピュータネットワークは、多くのハードウェア、ソフトウェア、プロトコルが複雑に絡み合ったシステムです。ネットワークを設計・組織・実現するためには、科学的かつ効果的な方法が必要です。

##### レイヤー化の方法
- ネットワークの各層は、それぞれが相対的に独立した機能を持つべきです。
- 各機能間の関係を整理し、ある機能が他の機能を実現するための必要なサービスを提供するようにします。
- システム効率を高めるために、同じまたは類似の機能は1つの層でのみ実現し、可能な限り上位層で実現します。

##### レイヤー化の利点
- 各層が独立しており、複雑さが低減されます。
- 柔軟性が高く、各層の操作が他の層に影響を与えません。
- 各層が最適な技術を採用できるように構造的に分割可能です。
- 各層が独立しているため、実装とメンテナンスが容易です。
- 各層の機能と提供するサービスが明確に定義されているため、標準化が促進されます。

#### 1.5.2 オープンシステムインターコネクション (OSI)
OSI 七層の記憶法: All People Seem To Need Data Processing


| 序号 | 名称           | 英語           | 説明                                                              |
|------|----------------|----------------|-------------------------------------------------------------------|
| 7    | アプリケーション層 | Application    | ユーザーが直接操作するアプリケーションソフトウェアが動作する層です。  |
| 6    | プレゼンテーション層 | Presentation   | データの形式や暗号化、圧縮を担当する層です。                        |
| 5    | セッション層     | Session        | 通信の開始、維持、終了を管理し、セッション間のデータ交換を担当します。|
| 4    | トランスポート層  | Transport      | データの信頼性と誤りの検出・訂正を行い、データの分割と再構成を担当します。 |
| 3    | ネットワーク層   | Network        | パケットのルーティングやIPアドレスの管理を行う層です。             |
| 2    | データリンク層   | Data Link      | 物理層でのデータ転送をサポートし、誤りの検出・訂正を行います。      |
| 1    | 物理層         | Physical       | 実際のハードウェア接続を担い、データが電気信号や光信号として送られる層です。|


コンピュータネットワーク標準を策定する上で、重要な役割を果たす2つの国際機関は、国際電気通信連合 (ITU) と国際標準化機構 (ISO) です。科学技術の進歩に伴い、通信と情報処理の境界が曖昧になっており、ITUとISOが共同で取り組む分野となっています。1984年にISOは、ネットワークインターコネクションの7層フレームワーク（OSIモデル）を定義した「OSI（Open System Interconnection）」標準を発表しました。この7層フレームワークは、物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、プレゼンテーション層、アプリケーション層で構成されます。

##### OSIモデルの七層構造
- **第7層 アプリケーション層**
  - アプリケーション層は、アプリケーションソフトウェアが操作するインターフェースを提供し、通信を設定します。例：HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQLなど。

- **第6層 プレゼンテーション層**
  - プレゼンテーション層は、データを受信者のシステムフォーマットに適合させ、送信に適した形式に変換します。

- **第5層 セッション層**
  - セッション層は、データ転送中に2台のコンピュータ間の通信接続を設定および維持します。

- **第4層 トランスポート層**
  - トランスポート層は、データにトランスポートヘッダ（TH）を追加し、データパケットを形成します。トランスポートヘッダには使用するプロトコルなどの情報が含まれます。例：TCP（Transmission Control Protocol）など。

- **第3層 ネットワーク層**
  - ネットワーク層は、データのルーティングと転送を決定し、ネットワークヘッダ（NH）を追加してパケットを形成します。例：IP（Internet Protocol）など。

- **第2層 データリンク層**
  - データリンク層は、物理層でのデータ転送をサポートし、エラーチェックと修正を行います。データフレームの送信時にデータリンクヘッダ（DLH）とフッタ（DLT）を追加します。例：イーサネット、Wi-Fi、GPRSなど。

- **第1層 物理層**
  - 物理層は、局所エリアネットワーク（LAN）上でデータフレームを送信します。通信機器とネットワークメディア間のインターフェースを管理します。例：ピン、電圧、ケーブル規格、ハブ、リピーター、ネットワークインターフェースカード（NIC）など。

#### 1.5.3 ネットワーク通信のプロセス

##### 1.5.3.1 データカプセル化とデカプセル化
ネットワーク通信におけるデータカプセル化とは、上位層から受け取ったデータにヘッダを追加し、下位層に渡すプロセスです。デカプセル化はその逆で、受信したデータからヘッダを取り除き、上位層にデータを渡すプロセスです。

##### 1.5.3.2 プロトコルデータユニット（PDU）
PDU（Protocol Data Unit）は、同一層間でやり取りされるデータの単位です。送信側と受信側でPDUの形式が異なる場合があります。

###### 送信側のPDU

| 層           | データ単位           |
|--------------|----------------------|
| アプリケーション層 | メッセージ（message） |
| プレゼンテーション層 | メッセージ（message） |
| セッション層    | メッセージ（message） |
| トランスポート層 | データセグメント（segment） |
| ネットワーク層   | パケット（packet）     |
| データリンク層   | フレーム（frame）      |
| 物理層        | ビット（bit）         |


###### 受信側のPDU

| 層           | データ単位           |
|--------------|----------------------|
| 物理層        | ビット（bit）         |
| データリンク層   | フレーム（frame）      |
| ネットワーク層   | パケット（packet）     |
| トランスポート層 | データセグメント（segment） |
| セッション層    | メッセージ（message） |
| プレゼンテーション層 | メッセージ（message） |
| アプリケーション層 | メッセージ