TCPのタイムアウトとは?設定と調整方法も!(接続タイムアウト:再送タイムアウト:RTO:RTT:time-wait state:セッションタイムアウトなど)
ネットワーク通信において、TCP(Transmission Control Protocol)は信頼性の高いデータ転送を実現するための重要なプロトコルです。しかし、その信頼性を支える仕組みのひとつが「タイムアウト」であることは、意外と見落とされがちなポイントかもしれません。接続タイムアウト、再送タイムアウト、RTO(Retransmission Timeout)、RTT(Round Trip Time)、time-wait state、セッションタイムアウトなど、TCPには複数のタイムアウト関連の概念が存在します。
これらを正しく理解し、適切に設定・調整することで、システムのパフォーマンスや安定性は大きく向上するでしょう。本記事では、TCPタイムアウトの基本から設定・調整方法まで、わかりやすく丁寧に解説していきます。
TCPタイムアウトとは何か?その本質と役割
それではまず、TCPタイムアウトの基本的な概念と役割について解説していきます。
TCPタイムアウトとは、通信の相手から応答が返ってこない場合に「一定時間待ってから処理を中断・再試行する」仕組みのことです。TCPはコネクション型のプロトコルであり、データの送受信において確認応答(ACK)を用いて信頼性を担保しています。しかし、ネットワーク障害やサーバーの高負荷が発生した際、その応答が返ってこないことがあるでしょう。

そのような状況で無限に待ち続けることを防ぐために、タイムアウトの仕組みが設けられています。タイムアウトは単なる「待ち時間の上限」ではなく、システム全体の安定性とリソース管理において中心的な役割を果たす概念です。
TCPの基本的な通信の流れ
TCPは通信を開始する際に「3ウェイハンドシェイク」と呼ばれる手順を踏みます。クライアントがSYNパケットを送り、サーバーがSYN-ACKで応答し、クライアントが最後にACKを返すことで接続が確立されます。
この一連のやり取りの中で、各パケットに対する応答が返ってくるまでの待ち時間を管理するのがタイムアウトの役割です。応答がなければ再送を行い、それでも応答がなければ接続を断念するという流れになっています。
タイムアウトが重要な理由
タイムアウトが適切に設定されていないと、以下のような問題が発生するでしょう。
| 問題の種類 | タイムアウトが短すぎる場合 | タイムアウトが長すぎる場合 |
|---|---|---|
| パフォーマンス | 不必要な再接続が頻発する | 応答待ちでリソースを圧迫する |
| ユーザー体験 | エラーが多発して使いにくい | 画面が止まったように見える |
| サーバー負荷 | 再接続コストが増加する | ゾンビ接続が溜まりやすくなる |
| セキュリティ | 正常な通信が切断される | 攻撃者に悪用されるリスクが増す |
このように、タイムアウトの設定はシステム全体のバランスに直接影響します。適切な値を見極めることが、安定した通信インフラを構築するうえでの鍵となるでしょう。
TCPタイムアウトの種類一覧
TCPにはさまざまなタイムアウトが存在します。代表的なものを以下にまとめました。
| タイムアウトの種類 | 概要 |
|---|---|
| 接続タイムアウト | 接続確立までの待機時間の上限 |
| 再送タイムアウト(RTO) | ACKが返らない場合に再送するまでの時間 |
| セッションタイムアウト | セッションが維持される最大時間 |
| time-wait state | 接続終了後に待機する状態の継続時間 |
| キープアライブタイムアウト | アイドル状態の接続を維持する時間 |
接続タイムアウトとRTT(往復遅延時間)の仕組み
続いては、接続タイムアウトとRTT(Round Trip Time)の関係について確認していきます。
接続タイムアウトとは、TCP接続を確立しようとする際に、相手からの応答を待つ最大時間のことです。この時間を超えても接続が確立されなければ、エラーとして処理されます。Webアプリケーションやデータベース接続の場面でよく目にする設定項目のひとつでしょう。
RTT(Round Trip Time)とは
RTTとは、パケットを送信してから相手からの応答が返ってくるまでの時間を指します。いわゆる「往復遅延時間」であり、ネットワークの遅延を表す基本的な指標として広く使われています。
RTTはネットワーク環境によって大きく変動します。同一データセンター内では1ms未満 Sonnet 4.6