web-dev-qa-db-ja.com

https接続の確立にストレートhttp接続よりも時間がかかるのはなぜですか?

セキュアHTTP接続(https)が通常のHTTP(http)よりも遅いのはなぜですか?

ただ知ることに興味があります。

ありがとう。

3

TCP/IP接続を開くには、クライアントとサーバー間で3つのパケットを交換する必要があります。その後、接続が確立されたと見なされ、クライアントは要求を送信できます。

TCP/IP接続の上にSSLが追加されると、接続が確立されたと見なされる前に発生しなければならないいくつかの追加の相互作用があります。

クライアントとサーバー(同じネットワークを読み取る)の間の遅延が無視できる場合を除いて、SSLハンドシェイクデータを交換するための追加のラウンドトリップによるこの追加の遅延は、主要なマテリアルを計算するためのCPUオーバーヘッドではなく、 SSL接続の確立が遅れる主な要因です。

TCP/IP接続の確立に関する詳細情報

SSL/TLSハンドシェイクの詳細

20
Dave Cheney

簡単に言うと、トラフィックを暗号化および復号化するため、これには両側(サーバーとクライアント)での処理が必要です。

8
pauska

他の人が述べたように、すべての転送には暗号化と復号化の手順があります。ただし、他に2つの問題があります。

  • サーバーと最初に対話するときのネゴシエーションフェーズ。サーバーとブラウザーが暗号化プロセスのキーをネゴシエートし、ブラウザーがサーバー証明書に対していくつかのチェックを実行します(クライアント証明書を使用しているかどうかをチェックします)。
  • HTTPS接続で伝送されるコンテンツ(メインページのソース、スクリプト、画像、スタイルシートを含む)はブラウザによってキャッシュされるべきではないため、必要になるたびにキャッシュから取得するオブジェクトを再要求する必要があります。
7
David Spillett

ジェフ・モーザーは、これについて、インとアウト、ハンドシェイクなどを説明する良い記事を投稿しました。

http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html

3
Rob Bell

Pauskaの答えに追加するには:

ほとんどのWebサーバープラットフォームは、サーバー上のSSLのパフォーマンスを向上させるためにハードウェア/ソフトウェアを追加できます。 This 製品はこれを行います。

1
Jim Blizard

コンテンツの暗号化には少し時間がかかり、暗号化すると一般にコンテンツのサイズが大きくなるためです。

0
Jack B Nimble