ひとことで言うと
TCPは、データが相手に届いたことを確認しながら通信する方式で、「確実に届ける」ことを最優先にした仕組みです。
送ったデータが途中で欠けたり順番が入れ替わったりしないよう、受け取り側から確認を受け取りながら通信を進めます。 WebページやメールのやりとりなどWeb通信の大部分はTCPで動いており、インターネットの基盤として広く使われています。
たとえ話でもう少し詳しく
TCPは、書留郵便のやりとりに近いです。
- 手紙を送ると、相手から「受け取りました」という返信が来る
- 返信が来なければ再送する
- 複数の手紙を送るときも、順番通り届くよう番号を振っておく
システムでも同じです。 TCPは通信相手と事前に「これから話しましょう」という接続確立(3ウェイハンドシェイク)を行い、その後データを送るたびに到着確認を受け取ります。 途中でパケットが失われた場合は自動的に再送し、受け取り側でバラバラになった順番を正しく並べ直します。
よく出る場面・使いどころ
- WebページやAPIの通信(HTTPはTCPの上で動く)
- メールの送受信
- ファイルのアップロード・ダウンロード
- データベースへの問い合わせ
似た言葉との違い
- UDP
- 到着確認をせず、速さを優先した通信方式
- TCPは確実性を重視し、UDPは速度を重視する
- パケット
- データを小さく分割した送受信の単位
- TCPではパケットが届かなかった場合、自動で再送する
- HTTP
- WebページやAPIのやりとりに使うプロトコル
- HTTPはTCPを使ってデータを確実に届ける仕組みの上に成り立っている
実務で気にするポイント
- 確認のやりとりが増えるぶん、UDPより遅延が生じやすい
- 接続の確立・切断に手順があるため、短い問い合わせが大量にあると負荷になりやすい
- TLS を組み合わせることで、通信の暗号化も行える
- 接続が増えすぎると、サーバーのリソースを消費する
注意: TCPの「確実性」は便利ですが、確認のやりとりぶんだけ時間がかかります。動画配信や音声通話のようにリアルタイム性が最優先の場合は、多少欠けても速いUDPが選ばれることがあります。