通信機器の持つべき機能は複雑なので階層に分けて考えます。これはハードウェアやソフトウェアの開発を楽にする為です。たとえば光信号や、電気信号に変換する部分を分けておけば、電気信号が光に代わったり、電波になったりといった技術の変化があった場合にはそこだけを入れ替えることができます。
階層に分けるには、いくつかの分け方があります。
国際標準化機構(ISO)のOSIモデル(Open System Interconnect Reference Model:オープンシステム相互参照モデル)です。
それぞれの役割を学ぶときに使われますが、これにぴったり準拠したシステムはありません。
階層 |
---|
アプリケーション層 |
プレゼンテーション層 |
セッション層 |
トランスポート層 |
ネットワーク層 |
データリンク層 |
物理層 |
一般に下記のように4層に分けられています。(最下層をさらに2つに分ける場合もあり、2つの層にまたがる規約もあり、厳密に守られているわけではありません)
階層ごとにいろいろなプロトコルが定められています。
これらのプロトコルを総称して、TCP/IPと呼びます。TCP(トランスミッション コントロール プロトコル)と、IP(インターネット プロトコル)がインターネットの仕組みの特徴をよく表しているからでしょう。
階層 | プロトコル | 機能 |
---|---|---|
アプリケーション層 | HTTP, FTP, SMTP | アプリケーション間の通信手順 |
トランスポート層 | TCP, UDP | アプリケーション間通信を保証。エラー回復や再送 |
インターネット層 | IP, ICMP | アプリケーションが動いている端末同士の通信のプロトコル |
ネットワークインターフェース層 | Ethernet, ARP | 隣合う端末同士の通信のプロトコル |
インターネット層の「インターネット」は世界をつなぐ(the)インターネットのことではなく、ネットワークの「間」という意味ですが、その層のIPは、送信元アドレス・宛先アドレスを指定して、宛先に達するまでの最適なルートを導き出す役割なので、(the)インターネットのキモの部分と言えます。
これより下の層では、それぞれのデータにその層のプロトコルに必要なヘッダが追加される。ヘッダは郵便封筒に書かれる宛先のようなもので、封筒内のデータの処理方法が書いてある。送信時には下の層へいくたびにより大きな封筒に入れられる。
受信されると相手の同じ層がデータを処理するために使ったあと取り去られて上位の層にデータが渡される。
以下はトランスポート層がTCPの場合の例である。
階層 | プロトコル | ヘッダの内容(主なもの) |
---|---|---|
アプリケーション層 | アプリケーションが決めるヘッダはあるが、階層のためのヘッダではない | |
トランスポート層 | TCP | 送信元ポート番号、宛先ポート番号、シーケンス番号、チェックサム、ack |
インターネット層 | IP | 送信元アドレス、宛先アドレス、プロトコル番号、ID、オフセット |
ネットワークインターフェース層 | Ethernet | 送信元MACアドレス、宛先MACアドレス |
PC(192.0.2.111)から SV(203.0.113.1)へ、ウェブページのデータをもらう時の通信を見てみる
アプリケーションがサーバーに送るリクエストを作る。これがサーバーに送るデータ。
データ |
---|
GET /index.html http/1.0 |
トランスポート層でTCPヘッダが付けられる
TCPヘッダ | データ |
---|---|
宛先ポート80 送信元ポート50000 |
GET /index.html http/1.0 |
ウェブサーバーが通信相手なのでポートは80にする
リクエストを出したブラウザはポート50000で待っていることにする。
インターネット層でIPヘッダが付けられる
IPヘッダ | インターネット層が扱うデータ | |
---|---|---|
宛先アドレス 203.0.113.1 送信元アドレス 192.0.2.111 |
宛先ポート 80 送信元ポート 50000 |
GET /index.html http/1.0 |
通信したいウェブサーバーのIPアドレスをURLから調べて 203.0.113.1 とする。
リクエストを出したブラウザのコンピュータは 192.0.2.111 なのでここに返信してもらうように知らせる。
ネットワークインターフェース層ではさらにMACアドレスをヘッダにつけて送信する。
Ethernetヘッダ | ネットワークインターフェース層が扱うデータ | ||
---|---|---|---|
中継先MACアドレス 00:04:23:cb:1d:de 送信元MACアドレス ac:22:0b:26:cc:44 |
宛先アドレス 203.0.113.1 送信元アドレス 192.0.2.111 |
宛先ポート 80 送信元ポート 50000 |
GET /index.html http/1.0 |
MACアドレスは通信を中継する機器を通過するたびに書き換えられてリレーされます。
Ethernetヘッダ | ネットワークインターフェース層が扱うデータ | ||
---|---|---|---|
中継先MACアドレス 00:24:8c:63:24:f6 送信元MACアドレス 00:04:23:cb:1d:de |
宛先アドレス 203.0.113.1 送信元アドレス 192.0.2.111 |
宛先ポート 80 送信元ポート 50000 |
GET /index.html http/1.0 |
最終目的地の 203.0.113.1 に届く。
Ethernetヘッダ | ネットワークインターフェース層が扱うデータ | ||
---|---|---|---|
中継先MACアドレス 00:16:17:4B:20:0A 送信元MACアドレス 00:24:8c:63:24:f6 |
宛先アドレス 203.0.113.1 送信元アドレス 192.0.2.111 |
宛先ポート 80 送信元ポート 50000 |
GET /index.html http/1.0 |
ネットワークインターフェース層では Ethernetヘッダをとる。
IPヘッダ | インターネット層が扱うデータ | |
---|---|---|
宛先アドレス 203.0.113.1 送信元アドレス 192.0.2.111 |
宛先ポート 80 送信元ポート 50000 |
GET /index.html http/1.0 |
インターネット層ではIPヘッダをとり、IPヘッダに書かれているプロトコル番号に従ってTCPを扱うソフトウェアに渡す。
TCPヘッダ | データ |
---|---|
宛先ポート 80 送信元ポート 50000 |
GET /index.html http/1.0 |
トランスポート層では宛先ポート番号に割り当てられたソフトウェアに渡す。80番はウェブサーバーです。もし、25ならメールサーバー、53ならDNSサーバーなどと決まっています。
データ |
---|
GET /index.html http/1.0 |