ネットワーク通信の仕組みを解説：OSI参照モデルと主要プロトコル

AWS-SAAの学習をしていてネットワークがどうしても頭に入ってこなかったのでアウトプットしてみました！

# ネットワーク全体のイメージ

![エンジニアになる前から 継続していること！.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671845/58305c89-a6ed-74fd-2e00-02df910e9bc5.png)


## 🌐 LAN

LAN（ローカルエリアネットワーク）は、家や学校、会社などの限られた範囲で使われるネットワークのことです。例えば、家の中でパソコンやスマホをWi-Fiでつなぐとき、それはLANを使っています。LANを使うと、同じ場所にある機器同士でデータをやり取りしたり、プリンターを共有したりできます。

## 🌍 WAN

WAN（ワイドエリアネットワーク）は、LAN同士をつなげて、もっと広い範囲でネットワークを作るものです。インターネットは、世界中のLANをつなげた巨大なWANの一例です。WANを使うと、遠く離れた場所にあるコンピュータ同士でデータをやり取りできます。

## 📡 ルーター

ルーターは、LANとWANをつなぐための機械です。家の中でインターネットを使うとき、ルーターがインターネットからのデータを受け取り、家の中のパソコンやスマホに届けてくれます。また、ルーターはどのデータをどこに送るかを決める役割も持っています。

### 🔥 ファイアウォール

ファイアウォールは、ネットワークの安全を守るための仕組みです。外からの不正なアクセスを防ぎ、どの通信を許可するかを決めます。これにより、ウイルスやハッカーからコンピュータを守ることができます。

### ⚖️ ロードバランサ

ロードバランサは、ネットワーク内でトラフィックを複数のサーバーに分散する装置です。これにより、負荷を均等にし、システムのパフォーマンスと信頼性を向上させます。通常、クライアントとサーバーの間に配置されます。

### 🔄 NAT

NAT（ネットワークアドレス変換）は、LAN内のIPアドレスをWANのIPアドレスに変換する技術です。これにより、家の中の複数の機器が一つのIPアドレスを使ってインターネットに接続できます。

# 🏷️ IPアドレスとは？

IPアドレスは、インターネット上でデバイスを識別するための「住所」のようなものです。これにより、データが正しい場所に届けられます。

### 2進数からの変換

- IPアドレスはもともと2進数で表現されます。例えば、IPv4アドレス「192.168.1.1」は、2進数では「11000000.10101000.00000001.00000001」となります。
- 各オクテット（8ビット）は、0から255の範囲の10進数に変換されて表示されます。

### 🔢 IPv4とIPv6

- **IPv4**: 4つの数字（オクテット）で構成され、各数字は0から255の範囲です。例: 192.168.1.1
- **IPv6**: 8つの16進数のブロックで構成され、より多くのアドレスを提供します。例: 2001:0db8:85a3:0000:0000:8a2e:0370:7334

### 具体例

- **IPv4の例**: 192.168.1.1
  - これは、家庭内ネットワークでよく使われるプライベートIPアドレスです。
- **IPv6の例**: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  - これは、より多くのデバイスがインターネットに接続できるようにするための次世代アドレスです。

# 🏗️ サブネットとCIDR表記

サブネットは、ネットワークを小さなグループに分ける方法です。CIDR（Classless Inter-Domain Routing）表記は、サブネットを表現するための方法です。


- **アドレスの範囲**: サブネットは、特定のネットワーク内で使用できるIPアドレスの範囲を定義します。
- **ネットワークの管理**: サブネットを使うことで、ネットワークを小さなグループに分け、管理しやすくします。これにより、トラフィックの効率化やセキュリティの向上が図れます。


### CIDR表記の理解

- 10.0.0.0/16のようなIPアドレスの表記をCIDR表記といいます。
    - 10.0.0.0	IPアドレス（ネットワークアドレス）
    - /16	先頭16ビットがネットワークという意味 

```md
IPアドレス部分

10.0.0.0 = 00001010.00000000.00000000.00000000
              ↑       ↑       ↑       ↑
            第1    第2    第3    第4オクテット

/16 の意味

[ ネットワーク部　　　|     ホスト部     ]
[ 00001010.00000000 | 00000000.00000000 ]
       ↑ 16ビット       ↑  残り16ビット

先頭から16ビットがネットワーク部
残りの 16ビットがホスト部（＝自由に使える範囲）

```

10.0.0.0/16 の範囲で使えるIPは…
10.0.0.0 ～ 10.0.255.255 の 合計 65,536個のIPアドレスとなります。



# 📜 DNS

DNS（ドメインネームシステム）は、インターネット上の住所録のようなものです。人が覚えやすい名前（例: `www.example.com`）をIPアドレスに変換して、正しい場所にデータを届ける手助けをします。


# 📡 プロトコル

プロトコルは、機器同士が通信するためのルールです。これにより、異なる機器でもデータを正しくやり取りできます。

## HTTP

HTTPは、ウェブページを表示するためのプロトコルです。ウェブブラウザとサーバーがデータをやり取りする際に使われます。

## HTTPS

HTTPSは、HTTPにセキュリティを加えたプロトコルです。データを暗号化して送ることで、盗聴や改ざんを防ぎます。

## TCP

TCP（Transmission Control Protocol）は、データを確実に届けるためのプロトコルです。特徴として、信頼性が高く、データの順序を保証します。ウェブページの閲覧やメールの送受信など、データの正確さが重要な通信に使われます。

### TCPとHTTP/HTTPSの関係

TCPは、HTTPやHTTPSなどのアプリケーション層のプロトコルが動作するための基盤となるトランスポート層のプロトコルです。HTTPとHTTPSは、ウェブブラウザとサーバー間でデータをやり取りするためにTCPを使用します。これにより、データの信頼性と順序が保証されます。

## UDP

UDP（User Datagram Protocol）は、TCPよりも速くデータを送るためのプロトコルです。特徴として、低遅延で、データの順序や信頼性を保証しません。オンラインゲームや動画ストリーミングなど、リアルタイム性が求められる通信に使われます。

### OSIモデルにおけるプロトコルの階層

OSI参照モデルでは、各層が特定の機能を提供し、上位層のプロトコルは下位層のプロトコルを利用して動作します。例えば、アプリケーション層のプロトコル（HTTP/HTTPS）は、トランスポート層のプロトコル（TCP）を利用し、さらにネットワーク層のプロトコル（IP）を通じてデータを送信します。各層が特定の役割を果たし、上位層のプロトコルが下位層のプロトコルを利用する形で通信が行われます。

# 🚢ポート番号

ポート番号は、コンピュータ内のどのアプリケーションがデータを受け取るかを決めるための番号です。郵便物の宛先に例えると、IPアドレスが住所で、ポート番号が部屋番号のようなものです。

## ウェルノウンポート

ウェルノウンポートは、一般的に使用されるプロトコルやサービスに予約されています。例えば、HTTPはポート80、HTTPSはポート443を使います。

### プロトコルとポート番号の対応表

| プロトコル | ポート番号 |
|------------|------------|
| HTTP       | 80         |
| HTTPS      | 443        |
| FTP        | 21         |
| SMTP       | 25         |
| DNS        | 53         |
| SSH        | 22         |
| Telnet     | 23         |
| POP3       | 110        |
| IMAP       | 143        |

# 🏳️‍🌈OSI参照モデル

OSI参照モデルは、ネットワーク通信を7つの層に分けて考えるモデルです。これにより、通信の仕組みを理解しやすくなります。

| 層番号 | 層名           | 説明                                                                 | プロトコル例                                                         |
|--------|----------------|----------------------------------------------------------------------|----------------------------------------------------------------------|
| 1      | 物理層         | 実際にデータを送るためのケーブルや電波などの物理的な部分を扱います。   | Ethernet, Wi-Fi                                                      |
| 2      | データリンク層 | 隣り合った機器同士でデータをやり取りするためのルールを決めます。       | PPP, Ethernet                                                        |
| 3      | ネットワーク層 | データを送信元から目的地まで届けるための経路を決定します。             | IP, ICMP                                                             |
| 4      | トランスポート層 | データの転送を管理し、エラーの検出と修正を行います。                   | TCP, UDP                                                             |
| 5      | セッション層   | 通信セッションの開始、管理、終了を行います。                           | NetBIOS, SAP                                                         |
| 6      | プレゼンテーション層 | データの形式を変換し、暗号化や圧縮を行います。                     | SSL/TLS, JPEG, MPEG                                                  |
| 7      | アプリケーション層 | ユーザーが直接利用するアプリケーションにネットワークサービスを提供します。 | HTTP, FTP, SMTP                                                     |