TCPとは
TCP(Transmission Control Protocol)とは、インターネット通信において、データを「確実かつ正確に」相手に届けるための通信プロトコル(ルール)です。ネットワーク上では、データが途中で消えてしまったり、届く順番がバラバラになったりするトラブルが起こり得ます。TCPは、こうした問題をチェックし、自動でデータを正しく整える役割を担っています。
TCPの特徴は、通信を始める前に、送信元と受信元の間で「これからデータを送ります」「準備はできています」といった確認を交わすことです。この確認作業を「3ウェイハンドシェイク」と呼びます。また、届いたデータに抜け漏れがあれば再送を要求し、バラバラに届いたデータを元の順番に並び替えることで、データの信頼性を保証します。
具体例
ホームページの閲覧や、電子メールの送受信、ファイルのダウンロードなど、1文字のデータ欠けも許されない通信でTCPが活躍しています。
- メールを送信する際、TCPはメールの内容を細かく分割して送信します。
- もし、インターネットの混雑により、分割されたデータの一部が途中で消えてしまったとします。
- 受信側のコンピュータは「データが足りない」と判断し、送信側に対して「消えた部分をもう一度送って」と自動的に要求します。
- 最終的にすべての部品が綺麗に揃ってから、元の一通のメールとして表示されます。
もう少し詳しく
TCPは、OSI基本参照モデルの第4層(トランスポート層)に位置するコネクション型のプロトコルです。コネクション型とは、データ送信を行う前に、送信元と受信元の間で仮想的な通信路(コネクション)を確立し、互いの状態を確認しながら通信を行う方式です。このコネクションを確立する手順が「3ウェイハンドシェイク」です。送信側から接続要求「SYN(シン)」を送り、受信側が「SYN+ACK(アック:確認応答)」を返し、最後に送信側が「ACK」を送り返すという3ステップによって、安全に通信の準備を完了します。終了する際も、同様に「FIN」パケットなどを交わして確実に切断します。
TCPがデータの信頼性を担保する仕組みとして、送信するデータに「シーケンス番号(順番を表すシリアル番号)」と「確認応答番号(ACK番号:次に欲しいデータの番号)」を割り振ります。受信側は正しく受け取ったデータに対して確認応答を返し、もし送信側へ一定時間ACKが戻ってこない(タイムアウト)場合は、送信中にパケットが消失したとみなして「再送制御」を行います。
また、通信効率を最適化するための仕組みとして「スライディングウィンドウ方式」が採用されています。これは、受信側のデータ一時保存領域(バッファ)の空き容量である「ウィンドウサイズ」を送信側に通知し、送信側は確認応答を待つことなく、そのサイズ分までのデータを一気に連続して送信できる仕組みです。これにより、ネットワーク全体の通信効率(スループット)を向上させています。
試験でのポイント
ネットワーク分野の試験では、TCPが「コネクション型」のプロトコルであり、データの「信頼性」を最優先しているという基本特徴が前提知識となります。具体的な挙動として、3ウェイハンドシェイクにおけるパケット(SYNやACK)のやり取りの手順や順番、およびデータ受信バッファの空き容量を通知して送信量を調整する「スライディングウィンドウ方式」の仕組みが非常に出題されやすいです。
さらに、対をなす「UDP」との仕様の比較問題も必須の論点です。「信頼性を犠牲にしても速度を優先するUDP」と「速度よりも信頼性を優先するTCP」の、メリット・デメリットおよびそれぞれが利用される代表的なアプリケーション(TCPはHTTPやSMTP、UDPは動画ストリーミングやDNS)の仕分け問題で確実に正解できるように整理しておく必要があります。
関連する用語
TCPに関連する用語には、信頼性よりも速度を重視する「UDP」、接続を確立する手順「3ウェイハンドシェイク」、送信効率を高める「スライディングウィンドウ」、パケットの順序を管理する「シーケンス番号」、アプリケーションの窓口となる「ポート番号」などがあります。