TCP

TCPは、データが正しく・順番通りに届いたことを確認しながら通信する、信頼性を重視した通信方式です。

TCP のアイキャッチ図解
まずは、こう考えるとつかみやすいです。

TCPは、書留郵便のようなものです。相手に届いたか確認しながら送るので確実ですが、確認のぶんだけ時間がかかります。

ひとことで言うと

TCPは、データが相手に届いたことを確認しながら通信する方式で、「確実に届ける」ことを最優先にした仕組みです。

送ったデータが途中で欠けたり順番が入れ替わったりしないよう、受け取り側から確認を受け取りながら通信を進めます。 WebページやメールのやりとりなどWeb通信の大部分はTCPで動いており、インターネットの基盤として広く使われています。

たとえ話でもう少し詳しく

TCPは、書留郵便のやりとりに近いです。

  • 手紙を送ると、相手から「受け取りました」という返信が来る
  • 返信が来なければ再送する
  • 複数の手紙を送るときも、順番通り届くよう番号を振っておく

システムでも同じです。 TCPは通信相手と事前に「これから話しましょう」という接続確立(3ウェイハンドシェイク)を行い、その後データを送るたびに到着確認を受け取ります。 途中でパケットが失われた場合は自動的に再送し、受け取り側でバラバラになった順番を正しく並べ直します。

よく出る場面・使いどころ

  • WebページやAPIの通信(HTTPはTCPの上で動く)
  • メールの送受信
  • ファイルのアップロード・ダウンロード
  • データベースへの問い合わせ

似た言葉との違い

  • UDP
    • 到着確認をせず、速さを優先した通信方式
    • TCPは確実性を重視し、UDPは速度を重視する
  • パケット
    • データを小さく分割した送受信の単位
    • TCPではパケットが届かなかった場合、自動で再送する
  • HTTP
    • WebページやAPIのやりとりに使うプロトコル
    • HTTPはTCPを使ってデータを確実に届ける仕組みの上に成り立っている

実務で気にするポイント

  • 確認のやりとりが増えるぶん、UDPより遅延が生じやすい
  • 接続の確立・切断に手順があるため、短い問い合わせが大量にあると負荷になりやすい
  • TLS を組み合わせることで、通信の暗号化も行える
  • 接続が増えすぎると、サーバーのリソースを消費する

注意: TCPの「確実性」は便利ですが、確認のやりとりぶんだけ時間がかかります。動画配信や音声通話のようにリアルタイム性が最優先の場合は、多少欠けても速いUDPが選ばれることがあります。