ITキャリア 用語比較

TCPコネクションとHTTPコネクション、タイムアウトのしくみを超シンプルに理解する

インターネットでウェブページを見るとき、見えないところでいくつもの「通信の仕組み」が動いている。
特に重要なのが「TCPコネクション」と「HTTPコネクション」、それに関係する「タイムアウト」だ。

タイムアウトには種類があり、場所によって役割がちがう。
この記事では、それらをいちどに整理して説明する。

TCPコネクションとは

TCP(Transmission Control Protocol)は、データをきちんと順番に確実に届けるためのしくみ

たとえば、あなたがあるウェブサイトにアクセスするとき:

  • サーバーと「つながっていいですか?」とあいさつする(SYN)
  • サーバーが「いいよ!」と返す(SYN-ACK)
  • 「じゃあ始めよう!」と返す(ACK)

この3ステップでTCPコネクションが確立される
これを「ハンドシェイク」と呼ぶ。

TCPコネクションタイムアウトとは?

TCPコネクションタイムアウトは、このハンドシェイクが完了するまでの時間制限のこと。

もしサーバーが応答しなかったり、途中で止まっていたら、「もうつながらない」と判断して通信をあきらめる
それがTCPレベルのタイムアウト。

HTTPコネクションとは

TCPコネクションの上に乗るのがHTTP(Hypertext Transfer Protocol)コネクション

これは実際の「データのやりとり」をするためのしくみ。
TCPが電話回線なら、HTTPはその上で話している会話。

たとえば:

  • 「このページください」(HTTPリクエスト)
  • 「はい、どうぞ」(HTTPレスポンス)

このやりとりが「HTTPコネクション」。
ブラウザやAPI通信で毎日使われている。

HTTPにおける2つのタイムアウト

コネクションタイムアウト(HTTPレベル)

HTTPでいうコネクションタイムアウトとは、TCP接続にかかる時間をアプリケーション側がどう待つかの設定

つまり、「HTTPリクエストを出す前に、TCPがちゃんとつながるかどうか」を何秒待つかを決めている。
中身はTCPコネクションタイムアウトとほぼ同じ。

リードタイムアウト

HTTPにおけるリードタイムアウトは、リクエストは送れたが、レスポンスが返ってこないときの待機時間

「ページください」と言ったけど、サーバーがなかなか返してくれないとき、「もうムリ」と切る

これはアプリケーションレイヤーの問題で、APIやWebサーバー、クライアントがそれぞれ設定する。

まとめるとこうなる

レイヤータイムアウトの種類内容主な設定場所
TCPTCPコネクションタイムアウトTCP接続(3wayハンドシェイク)が完了しないOS, ミドルウェア
HTTPコネクションタイムアウト(アプリ視点)TCPがつながるまで待つ時間Webクライアント、HTTPライブラリ
HTTPリードタイムアウトリクエスト後にレスポンスを待つ時間アプリケーション, Webサーバー

なぜこれを知るべきか

タイムアウトは、ユーザー体験やシステム安定性を大きく左右する

GoogleのSRE(Site Reliability Engineering)チームのガイドラインでは、タイムアウトの設計を次のように述べている:

“Timeouts are the foundation of resilient systems.”
「タイムアウトは、壊れにくいシステムの土台である」

適切に設定しないと:

  • ネットが遅く感じる
  • ユーザーが離脱する
  • サーバーの負荷が下がらない

まとめ

  • TCPコネクションタイムアウトは実在する。TCPのつながりに時間制限がある。
  • HTTPのコネクションタイムアウトは、TCPのタイムアウトとほぼ同じ意味
  • リードタイムアウトは、HTTPリクエスト後にレスポンスを待つ時間
  • すべてのタイムアウトは、「どこであきらめるか」を決める設計ポイント。
  • これらの理解は、ネットワークトラブルの原因特定にも使える。

通信がスムーズに見える裏側には、こうした“見えない時間制限”がきちんと設計されている
しくみを知っておくことは、より良いITスキルの土台になる。