「#プロトコル」タグアーカイブ

【ネットワークの基本】【第1回】プロトコルの話

一年ぐらい前に社内で発表した内容。これが思った以上に好評だったので、公開します。主にネットワークについて知識が全くない人に向けて作成した物です。

まず、第一回目はプロトコルの話。

プロトコルとは、ネットワーク上でやりとりするときに使用する共通ルール(ネットワークの仕様)の事を指します。

ただ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アドレスの話をしようと思います。