HTTP, FTP, SMTP などアプリケーション間の通信手順が決められています。いくつかの例をあげます。
クライアントはブラウザ、サーバーはウェブサーバーです。URLを使ってページを要求するとデータに対する情報からなるヘッダとページデータを返します。ページデータに画像など別ファイルになっているものがあれば、クライアントは改めて要求をだします。
クライアント側 | サーバー側 | |
---|---|---|
ページの要求 | ⇨ | |
⇦ | 応答ヘッダ/ページデータ | |
付加ファイルの要求 | ⇨ | |
⇦ | 応答ヘッダ/付加ファイルデータ |
ここのヘッダはHTTPのバージョン、データが正常に渡せるかどうかの状態、日付、サーバーの情報、これから送信するデータのタイプ(テキスト、画像、動画などの区別)などです。クライアントはこれを受け取って続くデータの処理方法を判断します。
クライアントはメールソフト、サーバーはメールサーバーです。
クライアント側 | サーバー側 | |
---|---|---|
開始の合図 | ⇨ | |
⇦ | 受付応答 | |
送信者アドレス | ⇨ | |
⇦ | 受付応答 | |
受信者アドレス | ⇨ | |
⇦ | 受付応答 | |
DATA | ⇨ | |
⇦ | 受付応答(終わったら.だけの行ね) | |
メールのデータ | ⇨ | |
. | ⇨ | |
⇦ | 受付応答 | |
終了の合図 | ⇨ | |
⇦ | 切断応答 |
これより下の層では、それぞれのデータにその層のプロトコルに必要なヘッダが追加される。これは処理方法が書いてある封筒のようなもので、送信時には下の層へいくたびにより大きな封筒に入れられる。
受信されると相手の同じ層がデータを処理するために使ったあと取り去られて上位の層にデータが渡される。
TCP, UDP などがあります。ここから下がTCP/IPで決められているプロトコルです。
通信先のサーバーで複数のサーバーソフトウェアが動いている場合にどのサーバーソフトウェアと通信するかを指定する必要があります。またクライアントコンピュータでも複数のアプリケーションが動いていますから、どのアプリケーションからの通信かを特定しておく必要があります。この区別のためにポート番号を使います。
TCPは、通信中にエラーが起こればデータの再送してもらうという管理方法を規定しています。これは双方のトランスポート層同士で処理します。UDPはそれを省きますがその分送信は速くなります。
送信するデータが大きい場合、いくつかの部分に分けて何番目なのかというデータを付加します。受信側のトランスポート層ではこれを元にデータを復元します。
トランスポート層ではこれらの情報をアプリケーション層から送られたデータの最初の部分に付加します。これをヘッダといいます。トランスポート層はヘッダの内容だけを見て処理を行い、ポート番号で識別されるアプリケーションにデータを渡します。その内容は関知しません。
通信するためには、どのコンピュータと通信するかを指定する必要がありますし、返答を受け取るコンピュータを相手に知らせなければなりません。この区別のためにIPアドレスを使います。
データの送り手と受け手のホストの、それぞれのIPアドレス
インターネット層ではこれらの情報をトランスポート層から送られたデータの最初の部分に付加します。これもヘッダといいます。インターネット層はトランスポート層が付加したヘッダはデータとして扱います。インターネット層はインターネット層のヘッダの内容だけを見て処理を行い、トランスポート層のデータは読みません。
インターネット層ではIPアドレスで通信相手を指定します。しかし、ネットワークインターフェース層ではIPアドレスの他にMACアドレス(ハードウェアアドレス)というものを使って通信をしています。
MACアドレスは6バイト(48ビット)で、インターフェース(コンピュータではない)の製造時に付けられる固有番号で原理的に同一の番号がないはずのものです。
次のように16進数を:(コロン)で区切ります。
00:24:8c:63:24:f6