一年ぐらい前に社内で発表した内容。これが思った以上に好評だったので、公開します。主にネットワークについて知識が全くない人に向けて作成した物です。
まず、第一回目はプロトコルの話。
プロトコルとは、ネットワーク上でやりとりするときに使用する共通ルール(ネットワークの仕様)の事を指します。
ただLANケーブルにデータを流すだけでは、それを受信側が理解できなければ通信ができません。
このプロトコルがある事によってOSやハードウェアに依存することなく通信を行うことができるのです。
プロトコルの例としては、
- イーサネット
- IP
- TCP
- UDP
- HTTP
- SMTP
- FTP
- POP3
などがあります。
では、これらをプロトコルを使用してどのような事をしているのか、「Webページにアクセスする」というのを例として説明します。
Webページにアクセスするためには、HTTPというプロトコルを使用します。
![](https://i0.wp.com/taki-lab.site/bocci/wp-content/uploads/2018/11/dbdb6e5069aeb8e72ac56bd45ea773d8.png?resize=474%2C275)
こんな感じでHTTPフレームを作成します。
ユーザーデータにはPOSTパラメータ、HTTPヘッダには主にURLなどのパラメータが入っています。
このデータを送信するためにTCPプロトコルを使用します。
![](https://i0.wp.com/taki-lab.site/bocci/wp-content/uploads/2018/11/c3060c7e9b52d362aadc1cae22ffefef.png?resize=474%2C416)
TCPというのはデータを確実に送信するために、データロスを検出して再送を行う仕組みが用意されています。
このTCPフレームを送信するためにIPというプロトコルを使用します。
![](https://i0.wp.com/taki-lab.site/bocci/wp-content/uploads/2018/11/017821920c293345d4765fbaf7028d0c.png?resize=474%2C374)
IPというのは、IPアドレスを使用してデータを送信する宛先を指定する事ができます。
このIPフレームを送信するためにイーサネットというプロトコルを使用します。
![](https://i0.wp.com/taki-lab.site/bocci/wp-content/uploads/2018/11/2d234c766c51b68d4b7ffca9b448060d.png?resize=474%2C348)
イーサネットというのは、MACアドレス(物理アドレスとも言う)を使用してデータを送信する宛先を指定することができます。このMACアドレスはネットワークデバイスそれぞれに割り振られている値です。
最終的に、このイーサネットフレームをLANケーブルに流します。
なので、最終的にLANケーブルに流れるデータはこんな感じになります。
![](https://i0.wp.com/taki-lab.site/bocci/wp-content/uploads/2018/11/1030f74aa41da2e30822d1e5ea09f57b.png?resize=474%2C98)
では、なぜこんなめんどくさいやり方をしているのでしょうか。
それを説明するにはOSI参照モデルというのを理解する必要があります。
![](https://i0.wp.com/taki-lab.site/bocci/wp-content/uploads/2018/11/3c2756e58865ba48b8dd5bfaa60f78ba.png?resize=474%2C270)
ネットワークを7階層に分け、ユーザーに近い方からネットワークの最小単位に向けて、アプリケーション層/プレゼンテーション層/セッション層/トランスポート層/ネットワーク層/データリンク層/物理層と分けられています。左側には上に出てきたプロトコルを各層に割り当てて見ました。綺麗に各層に分かれていると思います。
これのメリットは各プロトコルは、自分の上の層が何のプロトコルかのみを意識すれば良く、それ以外は意識しなくても良いと言うことです。
そのため、一部の層のプロトコルに変更が入った場合は、その層だけを取り替えれば良いと言うことが可能になります。
例えば、IPをIPv6に変更するとします。
![](https://i0.wp.com/taki-lab.site/bocci/wp-content/uploads/2018/11/361d0d995b0cfd289139df4aba757fa2.png?resize=474%2C270)
こんな感じで、ネットワーク層をIPv6に変えるだけで良く、他の層はそのまま使用できるのです。
新しい技術(プロトコル)が開発されたとしても簡単に適用できるのです。
![](https://i0.wp.com/taki-lab.site/bocci/wp-content/uploads/2018/11/695303067e214d90a209b069db21d7b7.png?resize=474%2C256)
ちなみに、3G回線はこんな感じになります。
この場合、データリンク層のATMを受信してIPフレームを取り出し、これをイーサネットに付け替えれば、既存のネットワークに流すことができます。
ケータイからWebにアクセスできるのもこの仕組みがあるためなのです。
IPアドレスの話をしようと思います。