トップ > 用語解説 > ネットワーク関係 > プロトコル > TCP(Transmission Control Protocol)
TCP(Transmission Control Protocol)は、インターネットで利用される通信プロトコルの一つで、RFC 793で定義されています。 相手との接続(コネクション)を事前に確立し、通信相手ごとに通信の状態を管理する「コネクション型」と呼ばれる方式を採用しており、 到達確認や再送処理も行います。 そのため、通信の信頼性が高くなりますが、通信コスト(負荷)も高くなるという特徴があります。
UDPは、通信を始める際の事前処理や通信中の状態確認を行わないため、通信コストが低く、 遅延が少ないという特徴を持ちます。 このような特徴から、TCPはWebサイトの閲覧やメールの送受信で、 UDPは音声や動画のストリーミングなどで使用されます。 DNSでは、TCPとUDP双方の通信プロトコルを使用します。
TCPはアプリケーション間に仮想的な回線(コネクション)を確立し、データを正しく送受信できたかを確認しながら通信します。 パケットの損失(パケットロス)が発生すると送信側は対応するデータを作り直し、同じデータを再び送信する。こうした処理を再送処理と呼びます。 TCPによる通信は3段階に分けられます。まずコネクションを確立し、次にコネクションを通じてデータをやりとりします。 その際にデータを正しい順番に並べ替えるための番号を付与します。エラーがあればデータを再送し、最後にコネクションを終了させます。
TCPではTCPヘッダーに様々な制御情報を付与します。TCPではヘッダーとデータ本体を合わせてTCPセグメントと呼びます。 TCPで通信を開始する際は、受信側の機器とパケットを3回やりとりしてコネクションを確立します。 この手順を3スリーウエイハンドシェークと呼びます。 最初に送るセグメントはコネクションの確立を要求するSYNセグメントです。 TCPヘッダーのコントロールビットの1つであるSYNを「1」にしたセグメントです。 SYNセグメントを受け取った受信側は、正しく受け取ったことを伝えるACKというビットを「1」にし、さらにSYNを「1」にしたセグメントを返します。 セグメントを受け取った送信側は、受信側に受け取ったことを通知するためにACKを「1」にしたセグメントを送ります。 こうしてコネクションを確立します。コネクション確立後、データのやりとりに移ります。 通信を終了する際も送信側と受信側で同様のやりとりが必要です。そのためデータを1個送るだけでも最低9回のやりとりが発生します。