【Linuxネットワーク】TCP UDPソケット HTTP WebSocketの違い

目次

1. OSI および TCP/IP モデル

2. 複数の関係

3.HTTP

4.ソケット

5.Webソケット

5.1. WebSocket の利点


1. OSI および TCP/IP モデル

まず、OSI 7 層モデルと、それに対応する TCP/IP 4 層モデルを理解する必要があります。

    以下の図から分かるように、TCP UDPはトランスポート層で動作し、HTTP WebSocketはアプリケーション層で動作しますが、ソケットは7層モデルのどの層にも属さず、暗黙的に動作していることがわかります。トランスポート層とアプリケーション層の間の層を含む。

  ソケット自体はプロトコルではありませんが、トランスポート層で TCP/UDP プロトコルをカプセル化し、内部 TCP/UDP がユーザーからどのように送信されるかを隠し、プログラマが呼び出すためのインターフェイス (API) のセット (ソケット ワード) のみを提供します。ソケットのプログラミングを完了します。ソケット インターフェイスを通じて、TCP/UDP プロトコルを使用できます。

2. 複数の関係

  HTTP WebSocket などのアプリケーション層プロトコルは、ソケット インターフェイスを介して TCP/UDP などのトランスポート層プロトコルを呼び出し、ネットワーク通信を実現します

  TCP/UDP => ソケット => HTTP WebSocket

  要約すると、私たちのプログラミングは TCP/UDP を直接呼び出すのではなく、カプセル化されたインターフェイス Socket を通じて通信します。現在、ネットワーク上のほとんどの通信は最下層のSocketを介して完結しており、すべてがSocketであると言えます。

3.HTTP

  HTTP は、 TCP プロトコル アプリケーションに基づくハイパーテキスト転送プロトコルであり、アプリケーション層プロトコルに属します要求時に TCP 接続を確立する必要があり、要求が完了して要求/応答操作が完了すると接続が切断されます。

  HTTP プロトコルでは、クライアントが常にリクエストを開始し、サーバーがレスポンスを送り返します。これにより、HTTP プロトコルの使用が制限され、クライアントがリクエストを開始しない場合、サーバーはクライアントにメッセージをプッシュできなくなります。

  HTTP プロトコルはステートレスプロトコルであり、このリクエストと同じクライアントからの前のリクエストの間には対応関係がありません。

4.ソケット

  ソケットは TCP/IP プロトコルをカプセル化したもので、ソケット自体はプロトコルではなく呼び出しインターフェイス (API) です。

  ソケット接続には、1 組のソケットが必要です。1 つはクライアントで実行され、もう 1 つはサーバーで実行されます。それらの間の接続は、サーバー監視クライアント要求接続確認の3 つのステップに分かれています。

(1) サーバ監視:サーバソケットは特定のクライアントソケットを特定するのではなく、接続待ちの状態となり、ネットワークの状態をリアルタイムに監視します。

(2) クライアントリクエスト:クライアントのソケットから接続要求を行い、接続先はサーバのソケットとなります。したがって、クライアントのソケットは、まず接続したいサーバーのソケットを記述し、サーバー側のソケットのアドレスとポート番号を指定して、サーバー側のソケットに対して接続要求を行う必要があります。

(3) 接続確認: サーバー側ソケットがクライアント ソケットからの接続要求をリッスンまたは受信すると、クライアント ソケットの要求に応答し、新しいスレッドを確立し、サーバー側ソケットに接続します。クライアントがこの記述を確認すると、接続が確立されます。サーバー側ソケットは引き続き待機状態にあり、他のクライアント ソケットからの接続要求を受信し続けます。

5.Webソケット

  WebSocket もプロトコルであり、TCP プロトコルに基づいています。WebSocket は HTTP を最適化したものであることがわかりますが、WebSocket は Web アプリケーションだけでサポートされているわけではありません。WebSocket は Html5 の製品ですが、ブラウザ アプリケーションに限定されるものではなく、C、C++、Python など多くの言語が WebSocket をサポートしています。   

  WebSocket 接続を確立するには、クライアント ブラウザは最初にサーバーへの HTTP リクエストを開始する必要があります。このリクエストは通常​​の HTTP リクエストとは異なり、追加のヘッダ情報が含まれています。この追加のヘッダ情報は、ハンドシェイク プロセスとアップグレードを完了するために使用されます。プロトコル、プロセス。以下に示すように:

5.1. WebSocket の利点

  1. 帯域幅を節約します。httpプロトコルを使用したサーバーデータを継続的にポーリングする方式であり、ヘッダ情報が非常に多く有効なデータの割合が少ないのに対し、WebSocket方式ではヘッダ情報が非常に少なく、有効なデータの割合が高くなります。
  2. 無駄はありません。ポーリング方法では、サーバー データが更新されるまでに 10 回ポーリングが行われる可能性があるため、変更されたデータが取得されないため、最初の 9 回のポーリングは無駄になります。WebSocket はサーバーによってアクティブに返送され、受信するデータはすべて新しいものです。
  3. リアルタイムのパフォーマンスでは、サーバーの負荷を考慮して、短い時間間隔でポーリング方法を使用することは不可能です。そうしないと、サーバーの負荷が高くなりすぎるため、ポーリング時間間隔は比較的長く、数秒、10 秒以上に設定されます。 。WebSocket はサーバーによってアクティブにプッシュされ、そのリアルタイム パフォーマンスは最高です。
     

この記事に不足がある場合は、以下にコメントしてください。できるだけ早く修正します。

おすすめ

転載: blog.csdn.net/m0_63198468/article/details/132459471