TCP接続と制限
CISリソースにアクセスする場合、クライアントとサーバーの間にTCP(Transmission Control Protocol)コネクションが確立される。 ユーザーがCISてウェブサイトをリクエストすると、そのリクエストはCISのインフラを通過するため、DDoS対策とセキュリティ強化が可能になる。
CISがユーザーをオリジン・サーバーに接続する方法
CISは、ユーザーリクエストをCISを通してアプリケーションのオリジンサーバーにルーティングすることで、ユーザーとオリジンの仲介役を果たします。 ユーザーのトラフィックは、最も近いPoPPoint of Presence)にルーティングされ、そこでリクエストが処理される。 リクエストがCloudflareのデータセンターの1つから提供されない場合、リクエストを転送するためにオリジンサーバーへの接続が開かれます。
接続制限
HTTP / HTTPS トラフィックが CIS を介してプロキシされるとき、多くの場合、確立された TCPコネクションが2つある。1つ目はリクエストクライアントと CIS の間、2つ目は CIS とオリジンサーバーの間である。 各接続にはそれぞれTCPと HTTP の制限がある。
要求クライアントとCIS間の接続制限
表1に、リクエスト・クライアントとCIS間の接続制限を示す。
タイプ | リミット(秒) | HTTP 制限時のステータスコード | 構成可能 |
---|---|---|---|
接続キープアライブHTTP/1.1 | 400 | TCPコネクションのクローズ | いいえ |
接続アイドルHTTP/2 | 400 | TCPコネクションのクローズ | いいえ |
CISとオリジン・サーバー間の接続制限
表2にCISとオリジンサーバー間の接続制限を示す。
タイプ | リミット(秒) | HTTP 制限時のステータスコード | 構成可能 |
---|---|---|---|
完全なTCP接続 '[1] | 15 | 522 | いいえ |
TCP ACKタイムアウト '[2] | 90 | 522 | いいえ |
TCPキープアライブ間隔「[3] | 30 | 520 | いいえ |
プロキシ・アイドル・タイムアウト '[4] | 900 | 520 | いいえ |
プロキシー読み取りタイムアウト [5] | 100 | 524 | はい |
プロキシ書き込みタイムアウト '[6] | 30 | 524 | いいえ |
オリジンへのHTTP/2Ping | Off | 該当なし | ある |
HTTP/2接続アイドル「[7] | 900 | いいえ | いいえ |
TCPコネクションとキープアライブ
CISは、顧客のトラフィックをオリジン・サーバーにプロキシングする際に、TCPコネクションを繰り返す必要性を最小限に抑えることで、パフォーマンスを向上させ、コストを削減するためにキープアライブ・コネクションを使用している。 このプロセスを最適化するには、オリジンサーバーで HTTP keep-aliveが有効になっていることを確認し、最後のリクエストの後、Proxy Idle Timeoutまで開いているTCPコネクションの再利用を許可する。 これにより、接続のリセットを防ぎ、効率を高めることができる。
通常、 HTTP、リクエスト・レスポンス・サイクルごとに新しいTCPコネクションを開くため、オーバーヘッドが増える可能性がある。 キープアライブにより、1つのTCPコネクションが複数のリクエストに対してオープンな状態を維持できるため、待ち時間とネットワーク・トラフィックが削減され、最終的にユーザー・エクスペリエンスが向上します。
TCPコネクションはアクティブな状態を保つことができるが、アイドル状態のコネクションは通常、一定時間が経過すると切断される。 CISのユーザー接続のアイドルタイムアウトはデフォルトで400秒で、75秒ごとにキープアライブプローブを送信する。 9回連続してプローブに応答しなかった場合、CISはTCPリセット(RST)パケットで接続を終了する。
キープアライブは、キャパシティ・バランシングやメンテナンスなどの要因による接続の安定性を保証するものではないことに注意することが重要である。 企業のお客様は、ユーザーとCIS間、およびCISとオリジンサーバー間のTCP接続設定をカスタマイズすることができます。
-
TCPは、IPベースのコネクション上で信頼性のあるコネクション(SYN、SYN-ACK、ACK)を確立するために3ウェイハンドシェイクを使用します。 SYNはsynchronizeの略で、ACKはacknowledgementの略である。 ↩︎
-
TCP 3ウェイ・ハンドシェイクの最後のステップで、コネクションの確立を確認する。 ↩︎
-
TCPキープアライブは、2つのエンドポイント間のコネクションを維持するために使用され、コネクションがまだアクティブかどうかをチェックするためにパケットを送信する。 これは、アイドリングストップ接続の早期閉鎖を防ぐのに役立つ。 定義された時間が経過しても応答がない場合、接続は終了する。 ↩︎
-
TCPコネクションがアイドル状態にある場合、コネクションは確立されているが、どちらのエンドポイントもデータを送信していないことを意味する。 HTTP の文脈では、アイドル接続とは、クライアントとサーバーの間に確立された接続が、現在 HTTP リクエストもレスポンスも送信していない状態を指す。 ↩︎
-
プロキシ読み出しタイムアウトとは、プロキシサーバーが接続を終了する前に、オリジンサーバーからの応答を待つ最大時間のことである。 ↩︎
-
プロキシ書き込みタイムアウトとは、プロキシサーバーがコネクションを終了する前 に、クライアントにデータを送るために許容する最大時間のことである。 ↩︎
-
TCPコネクションがアイドル状態にある場合、コネクションは確立されているが、どちらのエンドポイントもデータを送信していないことを意味する。 HTTP の文脈では、アイドル接続とは、クライアントとサーバーの間に確立された接続が、現在 HTTP リクエストもレスポンスも送信していない状態を指す。 ↩︎