■TCP(Transmission Control Protocol)
TCP/IPプロトコルにおけるトランスポート層に相当するプロトコル。全二重で信頼性があり、フロー制御のあるセッション指向(ストリーム型)の通信を行うために利用される。ネットワークアプリケーションではTCPの機能を使うことにより、ネットワークの物理的な構成やその特性などに左右されることなく、常に確実な通信を行えることが保証される。telnetやftp、httpなど、非常に多くのアプリケーションでTCPが使われている。
TCPで提供される「信頼性のある通信」とは、通信路の一方から送ったバイトデータ列が、相手側へ正しく元の順番通りに届けられ、途中でデータの順番が入れ替わったり、データの欠落や改変(誤り)が起こったりしない、ということを意味している。TCPの下位層であるIP層では、2つのノード間でのパケット送信機能は提供されているが、そのデータが常に相手に正しく届くという保証はない。ネットワークが混雑していれば途中でデータが消失したり、遅延によってデータの順番が入れ替わったりすることがある。このようなIPプロトコルの特性を考慮しつつ、信頼性のある通信機能を提供するのがTCPの役割である。
TCPでは、データが相手に確実に届くことを保証するために、データを受け取った側では、必ず受信確認(アクノレッジ)を返すことになっている。送信するデータには、あらかじめシーケンス番号という連続する番号が付けられ、受信確認としてこのシーケンス番号を返す。これにより送信側では、返ってきたシーケンス番号を確認することで、データがどこまで正しく相手に届いたかを認識できる。もし受信確認が返ってこなければ、正しく相手に届かなかったことを意味するため、再度データを送信する。何回か繰り返しても受信確認が返ってこなければ、相手がダウンしているか、通信路が切断されたものとして、アプリケーションにはエラーを返すことになる。このような方法により、TCPでは信頼性を確保している。
|