「TCP」とは
TCP(Transmission Control Protocol)は、ネットワーク上でデータをできるだけ確実に相手へ届けるためのプロトコルです。
プロトコルとは、コンピュータ同士が通信するときの「決まりごと」のことです。
インターネットで使われているプロトコルの詰め合わせをTCP/IPといいます。
TCP/IPの通信では、役割ごとに4つの階層に分けて考えます。
アプリケーション層:Webやメールなど、それぞれのサービスで使う通信を決める層
トランスポート層:データをどのように相手へ受け渡すかを決める層
インターネット層:データをどのコンピュータまで届けるかを決める層
ネットワークインターフェース層:実際のネットワークを使ってデータを送受信する層
TCPは、このうちトランスポート層で使われるプロトコルです。
TCPは何をしているのか
インターネットでは、送ったデータ(パケット)が必ずそのまま相手に届くとは限りません。途中でデータの一部が失われたり、送った順番とは違う順番で届いたりすることがあります。
TCPは、そのような場合に備えて、次のような処理を行います。
このような仕組みによって、TCPは信頼性の高い通信を実現しています。
HTTP・TCP・IPの役割の違い
Webページを見るときには、HTTP、TCP、IPなど複数のプロトコルが協力して通信を行います。
HTTPは、アプリケーション層のプロトコルです。WebブラウザとWebサーバの間で、どのように要求や応答をやり取りするかを決めます。例えば、ブラウザが「このWebページを送ってください」と要求し、Webサーバがページのデータを返す、といったやり取りに使われます。
IPは、インターネット層のプロトコルです。宛先のIPアドレスをもとにして、複数のネットワークを越えてパケットを目的のコンピュータまで届ける役割を持っています。
大まかには、
HTTP → TCP → IP
という関係で通信していると考えることができます。
それぞれの役割を簡単にまとめると、
HTTP:「どのような内容をやり取りするか」
TCP:「データを正しい順序で確実に受け渡す」
IP:「どの宛先へデータを届けるか」
という違いがあります。
TCPとUDPの違い
TCPと同じトランスポート層には、UDP(User Datagram Protocol)というプロトコルもあります。
TCPは、データが届いたかを確認したり、届かなかったデータを再送したりします。一方、UDPは、このような処理を基本的には行いません。
TCPは、データをできるだけ正確に届けたい通信に向いています。一方、音声や動画のリアルタイム配信などでは、少しデータが欠けることよりも、通信が遅れることのほうが困る場合があります。そのような通信では、正確性は劣るけれどスピードの速いUDPが使われることがあります。
TCPは「届いたことを確認し、届かなければ再送し、順序も整えるプロトコル」です。
そして、HTTPはWebのやり取り、IPは宛先まで届ける役割だと区別すると、TCP/IPの階層の違いも理解しやすくなります。