1.5. TCP(Transmission Control Protocol)
TCPはトランスポート層のプロトコルです。TCPは下位層として必ずIPを利用します。
TCPの重要な役割の一つは通信の信頼性確保です。IPは基本的に「信頼性の無い」プロトコルです。IPでは、送信したパケットが相手に届いたことを確認する手段はありません。そこで、TCPでは相手から受信確認応答を送ってもらうことにより、送信したパケットが相手に届いたかどうか確認します。
もしもある時間が経過しても受信確認応答が送られてこなければ、送信側はパケットが届かなかったと判断し、再度パケットを送ります。このとき実際に送信パケットが届いていたかどうかに関わらずパケットは再送されます。送信パケットが届かなかったのか、それとも送信パケットは届いたが受信確認パケットが届かなかったのかを送信ホストは区別することができません。
TCPは「コネクション型」通信に分類されます。コネクション型通信は、電話にたとえることができます。電話で通話するためには、まず通話を始めたい側がダイヤルして相手と接続します。いったん接続されれば、確保された通信路を利用してお互いに通信することができます。通信を終了するにはどちらかが電話を切ります。TCPでも同じように、事前のコネクションの確立や事後のコネクションの解放を行います。電話番号のかわりにIPアドレスとポート番号で接続先を指定します。
ポート番号は、上位のアプリケーションプロトコルを識別するため、また一台のホストで同時に複数の通信を行うために用意されています。ポート番号は16ビットの長さを持っており、0〜65535までの番号を利用できます。このうち0〜1023は特定のアプリケーションプロトコルにのために予約されており、一般のユーザが勝手に利用するべきものではありません。1〜1023のポート番号のうち、すでに特定のアプリケーションに割り当てられているものをWell-knownポート番号といいます。Well-knownポート番号の代表的なものには次のようなものがあります。
ポート番号
|
説明 |
21
|
FTP(ファイル転送) |
25
|
SMTP(電子メール送信) |
80
|
HTTP(ウェブページ転送) |
110
|
POP(電子メール受信) |
1.6. UDP(User Datagram Protocol)
UDPはTCPと同じくIPを下位層として用いるトランスポート層のプロトコルですが、TCPのような信頼性は確保されていません。またTCPのように、通信のために事前にコネクションを設定する必要がありません。TCPが「コネクション型」通信と呼ばれるのに対して、UDPは「コネクションレス型」通信と呼ばれます。
UDPはIPパケットにポート番号だけが付加されたものだと考えてください。ポート番号はTCPと同じく16ビットであり、0〜1023は特定用途に予約されています。UDPではチェックサムによりエラーの検出はされますが、エラーであると判断されたとしても、データは廃棄されるだけで再送を要求したりはしません。
UDPはTCPのような信頼性確保の仕組みが用意されていないかわりに、TCPより高速にデータが送信できます。複数のホストに同時にデータを送信したい場合にも用いることができます。