見出し画像

[PHP]HTTP/1.1とKeepAliveについて

What`s  3way handshake


3ウェイハンドシェイク(3-way handshake)は、TCP(Transmission Control Protocol)プロトコルを使用して通信を確立するための手順です。TCPは、信頼性の高いデータ転送を提供するために使用されるプロトコルであり、3ウェイハンドシェイクはその通信の確立フェーズの一部です。

3ウェイハンドシェイクは以下の手順で行われます:

  1. クライアントがサーバーに接続要求を送信するためのSYNパケット(Synchronize)を送信します。このパケットにはランダムなシーケンス番号が含まれます。

  2. サーバーはクライアントからの接続要求を受け取り、SYNパケットに対する応答としてACKパケット(Acknowledgement)を送信します。ACKパケットには、クライアントから受け取ったシーケンス番号に1を加えた値が含まれます。また、サーバー自身もランダムなシーケンス番号を生成し、SYNパケットに含めて送信します。

  3. クライアントはサーバーからのACKパケットを受け取り、これに対して応答としてACKパケットを送信します。このACKパケットには、サーバーから受け取ったシーケンス番号に1を加えた値が含まれます。

これにより、クライアントとサーバーの間で信頼性のある双方向の通信チャネルが確立されます。クライアントとサーバーはお互いのシーケンス番号を認識し、データのセグメント化や再送制御などのTCPの機能を使用してデータを安全に転送することができます。

3ウェイハンドシェイクは通信の確立のための手順であり、通信の終了には4ウェイハンドシェイクが使用されます。

一方、このような操作(コネクションの確立)が多いとサーバーにとっては負荷がかかるため、使用されることとなったものが…

A.KeepAlive

KeepAlive(またはKeep-Alive)は、HTTPプロトコルにおける接続の持続性を指す用語です。

通常、ウェブブラウザとウェブサーバーの間のHTTP通信は、リクエストごとに新しい接続を確立して行われます。しかし、KeepAliveを有効にすると、同じクライアントとサーバーの間で複数のHTTPリクエスト/レスポンスを1つの接続で行うことができます。この接続は一定の期間(タイムアウト値)維持され、後続のリクエストに再利用されます。

KeepAliveを使用することにより、次のようなメリットがあります:

  1. リソースの効率的な利用:接続の確立や切断にかかるオーバーヘッドが削減されます。また、同じ接続を使って複数のリクエストを処理できるため、ネットワークトラフィックやサーバーリソースの利用を効率化することができます。

  2. レスポンスの高速化:接続の再確立や再認証の手間が省かれるため、ウェブページの読み込み速度が向上します。ウェブサーバーからのレスポンスがすぐに利用できるため、レイテンシが低下し、ユーザーエクスペリエンスが向上します。

KeepAliveはHTTP/1.1で標準的な機能となっており、多くのウェブサーバーやクライアントはデフォルトでKeepAliveを有効にしています。ただし、適切な設定やタイムアウト値の調整が重要です。過度なKeepAliveの設定や長いタイムアウト値は、リソース消費や接続の占有を引き起こす可能性があります。したがって、適切なバランスを見極める必要があります。

この記事が気に入ったらサポートをしてみませんか?