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