現在のインターネットでデファクトスタンダード(事実上の標準)なのは、TCP/IPというネットワークアーキテクチャ(通信システムの機能を体系化したもの)である。
TCP/IPでは次の4階層から構成される。
前回のIPアドレスに関するプロトコルは、上図のインターネット層(ネットワーク層ともいう)のプロトコルである。
今回は、その一段階上のトランスポート層のプロトコルについて観てみよう。
ポート番号
トランスポート層のプロトコルは、ネットワーク層が実現するエンドノード間の伝送路上で、データの順序制御や伝送誤りの訂正、再送の要求といった一定の品質を保つ制御を行う。
ネットワークには複数のホストが接続され、各ホスト内では複数の通信アプリケーションが存在する。
IPアドレスはホストは識別できても、アプリケーションまでは識別できない。
そこでTCP/IPでは、アプリケーションを識別する16ビット(0~65,535)のポート番号を用いる。
ポート番号は、トランスポート層のヘッダ内(TCPヘッダやUDPヘッダ 後述)で指定され、受信ホストはポート番号に基づいて、どのアプリケーションで処理するかを決定する。
・ウェルノウンポート番号
TelnetやFTP、HTTP等の一般的なアプリケーションは、あらかじめ標準的なポート番号が設定されている。
これをウェルノウンポート番号という。
代表的な番号は以下のとおり。
ポート番号 | 内容 | 役割 |
20,21 | FTP | ファイルの転送20 制御21 |
23 | Telnet | 遠隔操作 |
25 | SMTP | 電子メールの送信 |
53 | DNS | ドメイン名とIPアドレスの変換 |
80 | HTTP | ホームページデータの転送 |
110 | POP3 | 電子メールの受信 |
123 | NTP | タイムサーバの時刻をもとに時刻を同期させる |
443 | HTTPS | ホームページの転送(セキュリティ対応) |
通常、各サーバがウェルノウンポート番号を利用するので、クライアント側でポート番号を意識する必要はない。
仮にサーバが利用するポート番号を変更すると、ポート番号を知らないクライアントはアクセスできなくなる。
また、クライアントのポート番号は、ホスト内で矛盾が生じないよう、コネクション(通信の単位)ごとに動的に割り当てられる。
・通信の識別
TCP/IPでは、
(送信元IPアドレス、宛先IPアドレス、送信元ポート番号、宛先ポート番号)
の組み合せにより、各通信(どのホスト間とどのアプリケーション間の通信か)を識別できる。
要求パケットに対する応答パケットは、IPアドレス、ポート番号ともに送信元と宛先が入れ替わる。
よって、サーバからの応答パケットは、送信元ポート番号がウェルノウンポート番号になることが多い。
TCP(Transmission Control Protocol)
TCPは、コネクション型(通信の単位)のトランスポート層のプロトコルである。
コネクションを確立して確認応答やフロー制御、順序(シーケンス)制御などの機能を提供する。
このため信頼性が要求される通信に多く用いられる。
TCPにおけるデータの伝送単位はセグメントという。
TCPでは、TCPヘッダに含まれる各フィールドの値を用いて、信頼性を確保するのに必要な制御を実現する。
TCPでは、通信に先立ってTCPコネクションとよばれる論理的な通信路を確立し、通信終了時にそれを開放する。
このコネクションを確立するためには、TCPヘッダ中のSYNフラグとACKフラグが用いられ、コネクションを開放するのにFINフラグとACKフラグが用いられる。
コネクション確立から切断までの流れは次のとおりである。
① SYN(確立要求)
② ACK+SYN(①への応答+確立要求)
③ ACK(②への応答)
この3つのセグメントのやり取りで行われることから、スリーウェイハンドシェイクという。
ここで、SYNはSYNchronous(同期 シンクロ)を、ACKはACKnowledge(肯定応答)を表す。
UDP(User Datagram Protocol)
UDPはエンドシステム(ネットワーク上の末端に位置してるシステムまたはコンピュータ)のアプリケーション間でコネクションレス型の通信サービスを提供するデータ転送プロトコルである。
UDPは通信に先立ってコネクションを確立しないため、信頼性を確保する機能を持たず、データグラム(パケット)の欠落などが生じてもそれを回復しない。
その代わり、プロトコルによるオーバヘッド(ある処理を行うのに付随してくる余分な処理)が軽減され、TCPと比べて高速な通信を実現できる。
UDPは、ストリーミング(ネット上のメディアをすぐ再生する技術)やマルチメディア(複数の種類、映像や音楽などの情報をひとまとめにする)といった高速性を重視する通信、ブロードキャストやマルチキャストといった複数のホストに対してデータを送りたい場合などに利用される。
UDPは、コネクションを確立せず、信頼性を確保するための制御を行わないため、TCPのように多くのフィールドを必要としない。
UDPヘッダは、送信元ポート番号、宛先ポート番号、パケット長、チェックサムで構成されており、TCPと比較して単純な構成となっている。
UDPは、信頼性は劣るがオーバヘッドが小さい分高速で、高速性を重視するアプリケーションや同報通信で利用される特色がある。
TCP/IPにおけるアドレス
TCP/IPにおいてアドレスは三つ登場する。
①ポート番号
トランスポート層においてアプリケーションの識別をする。
②IPアドレス
ネットワーク層においてホストの識別をする。
③MACアドレス
データリンク層において隣接機器を識別する。
トランスポート層の役割
トランスポート層における代表的なプロトコルはTCPとUDPである。
これらの役割は、信頼性の確保やスループット(単位時間当たりの処理能力)の維持である。
また上位層であるアプリケーション層の各種アプリケーションの特定を行う。
後記
このへんまでくるとネットワークの全貌がおぼろげながら把握できそうである。
TCP/IPの上位層からデータが下位層に引き渡され、そらが相手側の下位層から上位層へと渡り、互いのアプリケーションで「会話」が成立するわけだ。
今日は王子神社に初詣に行きます。