195

私はWebSocketsについて読んだことがありますが、ブラウザーが簡単な TCP 接続を単純に開いて、他のデスクトップ アプリケーションのようにサーバーと通信できないのはなぜだろうかと思います。そして、なぜこの通信が WebSocket を介して可能になるのでしょうか?

4

4 に答える 4

298

イントラネット境界内で作業している場合は、TCP ソケット経由で通信する方が簡単です。これは、そのネットワーク上のマシンを制御し、TCP 接続を行うのに適したポートを開くことができるためです。

インターネットを介して、相手側の誰かのサーバーと通信しています。接続用に古いソケットが開かれている可能性はほとんどありません。通常、HTTP 用のポート 80 や HTTPS 用の 443 など、いくつかの標準的なものしかありません。したがって、サーバーと通信するには、これらのポートのいずれかを使用して接続する必要があります。

これらは一般に HTTP を使用する Web サーバーの標準ポートであるため、HTTP プロトコルに準拠する必要があります。そうしないと、サーバーは通信しません。Web ソケットの目的は、HTTP 経由で接続を開始できるようにすることですが、その後で Web ソケット プロトコルを使用するようにネゴシエートし (サーバーがそれを実行できると仮定します)、より "TCP ソケット" に似た通信ストリームを許可します。

于 2010-04-21T09:58:56.717 に答える
42

Web ブラウザはアプリケーション層で動作しますが、TCP はトランスポート層で動作します。Web アプリケーションの開発者として、トランスポート層で raw バイトを送信する代わりに、アプリケーション層を介してネットワーク経由でメッセージを送信する方が簡単です。

基礎となる WebSocketsTCP であり、単純にするために抽象化されています。

于 2012-11-26T22:47:18.537 に答える
4

簡単にするために、websocket 通信は TCP ポート番号 80 (または TLS 暗号化接続の場合は 443) を介して行われます。これは、ファイアウォールを使用して非 web インターネット接続をブロックする環境に役立ちます。

既存の TCP ポートを使用しますか、それともファイアウォールによってブロックされている可能性がある新しい TCP ポートを開きますか?

于 2019-03-11T09:10:31.360 に答える