web-dev-qa-db-ja.com

WebSocketと純粋なTCPの基本的な違いは何ですか?

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

150
xap4o

イントラネット境界内で作業している場合は、そのネットワーク上のマシンを制御できる可能性が高いため、TCPソケットを介して通信する方が簡単で、TCP接続。

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

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

238
Ash

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

基礎となるWebSockets is TCPは、単純化のために抽象化されています。

26
wulfgarpro

Websocketはアプリケーション層プロトコルであり、TCPはトランスポート層プロトコルです。トランスポート層では、通常TCPおよびUDPプロトコル。アプリケーション層からのメッセージはトランスポート層を通過して他のマシンに送信されるため、websocketとtcpは相互に関係があり、比較できません。

2
Minh Trần

簡単にするために、WebSocket通信はTCPポート番号80(TLS暗号化接続の場合は443)で行われます。これは、Web以外のインターネットをブロックする環境にとって有益です。 ファイアウォールを使用した接続。

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

2
Gearon