2017-09-21 7 views
1

私は現在アプリケーションでWebソケットを実装するオプションを検討しています。しかし、そうする前に、私はそれがどのように正しく動作するか、それが価値があるかどうかを正しく理解したいと思っています。ブラウザはWebSocketでDNSルックアップとTLSをどのように処理しますか?

私は基本的なことを理解しています:WebSockets経由でハンドシェイクがHTTP経由で1回だけ行われ、下位レベルのTCPレイヤーに切り替えるためにサーバーと話をします。その時点で、全二重チャネルサーバーとクライアント。現在

私は私のサーバーに対して行われたAJAXリクエスト(多くある)を測定しています、私は、この情報を持っている:

Ajax request time

「DNSルックアップ」、「初期接続」と " SSLの時間は私が取り除こうとしているものです(可能であれば)

これらの時間はハンドシェイクのプロセスの一部です。確信はないけど。

私の質問は正しいですか? WebSocketを実装することで、 "DNSルックアップ"と "初期接続"の手順がハンドシェイクでのみ行われるようになります。

ご協力いただきありがとうございます。申し訳ありませんが、私の理解が間違っている場合。

+1

WebSocketは永続的なTCP接続を使用するため、これらの操作は新しい接続の開始時にのみ実行されます。 –

答えて

2

私は基本を理解しています:WebSockets経由で、ハンドシェイクはHTTP経由で1回だけ行われ、サーバと話し合い、その時点で低レベルのTCP層に切り替わります。その時点で、全二重サーバーとクライアントの間のチャネル。

下位レベルのTCP層には切り替わりません。代わりに、プロトコルはプレーンなHTTP(リクエスト、レスポンス)からメッセージベースのプロトコルに切り替わります.HTTPはアプリケーション層のTCPの上にあり、低レベルではありません。これは、同じレベルの異なるプロトコルです。 HTTPの要求/応答方式に制限されることなく、いつでもメッセージを送受信できるという点で、TCPのように動作します。しかし、例えばTCPはデータストリームであり、WebSocketsはメッセージ指向のプロトコルを実装しています。

そして、DNSはWebSocketの外にあります。 DNSはIPアドレスをルックアップしてTCP接続を確立する必要があり、プロトコルがWebSocketsに切り替わる前に必要な最初のHTTPハンドシェイクに使用されます。

状況はTLSと似ています。 IPアドレスを取得するためのDNSルックアップの後にTCP接続が確立されると、TCP接続の上にあるTLSセッションが確立され、WebSocketへのスイッチに先行する最初のHTTPハンドシェイクが実行されます。つまり、TCPはTCP内のTLSトンネル接続 - 言い換えればHTTPS。 WebSocketプロトコルは、このTLSトンネル内でも話されます。これは、HTTPでの処理と同様です。

私の質問は正しいですか? WebSocketを実装することで、 "DNSルックアップ"と "初期接続"の手順がハンドシェイクでのみ行われるようになります。

正しい。 ws://接続の開始時に、名前のIPがまだキャッシュされていない場合、DNSルックアップがある可能性があります。 TCPハンドシェイクがあり、HTTPハンドシェイクがあり、それがプロトコル切り替えにつながります。これはすべてのws://接続に該当します。また、wss://の場合は、TCP接続が確立された後、HTTPハンドシェイクが開始される前にTLSトンネルが作成されます。

+0

詳細な説明をいただきありがとうございます –

関連する問題