プロトコルとパケット

どんなケーブルを使って、どんな形式でデータを送るかそれをお互い共有することによって情報を送ることができる。
# プロトコルとOSI基本参照モデル
このようにコンピュータ同士がやりとりするための約束事を```プロトコル```と言う。
どのようなプロトコルがあるかというと
* どんなケーブルを使うか？
* どんなデータ形式で送るか？

## プロトコルは７つに分かれている。
７つのプロトコルに分かれているのを```OSI基本参照モデル```と言う。
OSI基本参照モデルのおかげでコンピュータ同士がコミュニケーションが成立する。
現在は、インターネット世界で標準とされていることから、「TCP/IP」と言うプロトコルが広く利用されている。
OSI基本参照モデルは機能ごとに一階層から七階層まである。

数字が上になるほど上位層になっていく。
|  階層 |  層の名前  | プロトコルの内容 |
| ---- | ---- | ---- |
|第７層|アプリケーション層 | 具体的にどんなサービスを提供するか？
|第６層|プレゼンテーション層|データはどんな形状にするか？
|第５層|セッション層 | 通信の開始から終了までどう管理するか？
|第４層| トランスポート層| 通信の信頼性はどう確保するか？
|第３層| ネットワーク層| ネットワークとネットワークをどう中継するか？
|第２層| データリンク層| 同一ネットワーク内で同通信するか？
|第１層| 物理層| 物理的にどうつなぐか？

## どうして階層ごとに分かれているか？
```階層ごとにプロトコルを変更するため。```
例えば　Aのケーブルにすると通信が速くなるならBからAに取り替えて約束事にしようみたいな。

### 気づき
階層で分けることによって
少しずつ改良されているのか。
また部分的に変更することによってコンピュータの通信ができなくなるようなことが発生させないためでもあるのかな。

# なんで「パケット」に分けるのか？
TCP/IPのプロトコルにおいて通信データはパケットに分割して通信路へ流す。
### パケットとは？

https://qiita.com/masatom86650860/items/2021870c33a8f28d1475#%E3%83%91%E3%82%B1%E3%83%83%E3%83%88%E3%81%A8%E3%81%AF:~:text=%E3%81%9D%E3%81%86%E3%81%A0%E3%81%8B%E3%82%89%E3%82%84%E3%82%81%E3%82%8B%E3%80%82-,%E3%83%91%E3%82%B1%E3%83%83%E3%83%88,-%E3%81%A8%E3%81%AF%EF%BC%9F

通信路上に流せるデータ量は有限だ。一気に流してしまうと他のデータが流せなくなる。
そのため少しずつ分ける必要がある。これがパケット。

# ネットワークの伝送速度
みはじ（みたいなもの）で求めることができる。
それが
```伝送時間= データ量　/ 回線速度```
しかしこれは理論値であり、実際の時間とは誤差が出てくる。
実際の速度を```実行速度```と言う。
理論値に対して実際の速度の割合を```伝送効率```と言う。
これら実行速度、伝送効率を使って実際の値を算出する。

パケットも制御情報が付加されてサイズが膨らむ。
制御情報とは```IPの宛先情報```、```TCPの宛先情報```、```イーサネットのアドレス情報```が付加されて。
### パケットとは？

https://qiita.com/masatom86650860/items/2021870c33a8f28d1475#%E3%83%91%E3%82%B1%E3%83%83%E3%83%88%E3%81%A8%E3%81%AF:~:text=%E3%81%9D%E3%81%86%E3%81%A0%E3%81%8B%E3%82%89%E3%82%84%E3%82%81%E3%82%8B%E3%80%82-,%E3%83%91%E3%82%B1%E3%83%83%E3%83%88,-%E3%81%A8%E3%81%AF%EF%BC%9F

## 気づき
### イーサネットのアドレス情報とは?
イーサネットとは有線の規格のことじゃないのかな？
調べてみよう。

#### MACアドレスとは？
MACアドレスは```「ネットワーク機器に割り当てられる住所」```です。
通信において、```データの受け渡し先を特定```する際に使われます。
以上を踏まえて、```MACアドレスの別の呼び名が「イーサネットアドレス」```です。

#### IPアドレスとMACアドレスの違い。
* イーサネットアドレスは```「次に渡す先」を特定```する際に使うのに対し、IPアドレスは```「最終的なお届け先」```を特定する際に使う
* イーサネットアドレスは機器にPPP固定で割り当てられている```のに対し、IPアドレスは```変更できる```。

出典 https://wa3.i-3-i.info/word15143.html

##### 気づき
どこを経由するか？、どの角を曲がるかを指しているのがイーサネットアドレス（MACアドレス)
最終目的地を指すのがIPアドレス
どこを経由して、そこの角を曲がってその家へみたいなことかな。

コンピュータから剥がすことができないアドレスがイーサネットアドレス
コンピュータからいつでも変更できるのがIPアドレス

イメージ的には逆なんだけどな。

# 問題を解いた時の気づき
* OSI基本参照モデルを具体的にイメージできるようにしたい。
## 誤り制御とは?
誤り制御とは、コンピュータ間通信の途中で```失われた情報や壊れた情報を検知し、適切な状態に修正```することを指します。```コンピュータ間通信では必ずエラーが発生するため、誤り制御が必須```となります。

コンピュータ間通信において誤りが発生する理由はいくつかあります。まずは、主に```物理的な回線での雑音などの混入が発生する```ケースです。ケーブルや無線での通信においてデータは0または1の形で転送されています。この0と1は、ケーブルを通る電圧の違いにより表現されますが、この```電圧が雑音により乱れてしまい、0であった情報が1として判断されたり、その反対が起きたりする```のです。

また、```通信の断絶などを理由としてデータの抜けが発生するケース```もあります。特に回線やネットワーク機器が混雑しているケースなどでは、```ネットワーク通信中にパケットロス```することがあります。

これらのような誤りを制御し、正しいデータとするためにコンピュータ間通信においては誤り制御が必要となるのです。

誤り制御を行うタイミング
誤り制御は、OSI基本参照モデルの階層構造のうち、主に```データリンク層```と```トランスポート層```で実施されます。以下ではそれぞれの階層での誤り制御の内容について解説します。

データリンク層
データリンク層では、```コンピュータ間で通信されるフレームの誤り検知```を行います。データリンク層で検知されるのは、主に通信で発生した物理的な誤りが対象です。上述の通り、```ケーブルや無線通信においては必ず誤りが発生```するため、```誤りを検知した場合は相手の端末に再送要求```を行い、正しいデータとなるように修正します。

トランスポート層
トランスポート層では、主にTCPなどのプロトコルにおいてコンピュータ間通信の誤り検知を行います。上述の通り、```パケットロスなどを原因として、転送するデータの一部が欠損```することがあります。```ファイルデータなどで欠損が生じると、正しいファイルとして利用できません```ので、必ず修正が必要になります。TCPプロトコルにおいては、```誤りを検知した場合はパケットの再送要求```を行い、転送されるデータを完全なものとします。

出典 https://www.foresight.jp/fe/column/error-control/

### 気づき
第２層のデータリンク層、第４層のトランスポート層で誤り制御が行われるのか。
時間がないのでここまで。

## 網とは？
網とは
「ネットワーク」のこと。
用語の中身としては
コンピュータとかがいっぱいつながっていて、あれやこれやとやり取りできる状態のこと

出典 https://wa3.i-3-i.info/word12149.html