ソケット通信と tcp 通信の違い: 1. tcp プロトコルはトランスポート層プロトコルに属しますが、ソケットはアプリケーション層とトランスポート層の間の抽象化層です; 2. 3 ウェイ ハンドシェイクはTCP 接続を確立するために必要な; 3. ソケット接続は長時間の接続を維持できる; 4. TCP サーバーと TCP クライアントはソケット通信を使用します。
#この記事の動作環境: Windows 10 システム、Dell G3 コンピューター。
ソケット通信と tcp 通信の違いは何ですか?
#tcp とソケットの違い
# 1: tcp プロトコル
tcp プロトコルはトランスポート層プロトコルに属します (UDP もトランスポート層プロトコルに属しますが、UDP プロトコルはステートレスです)。 TCP 接続の確立には 3 回のハンドシェイクが必要で、TCP 接続の切断には 4 回のハンドシェイクが必要です。携帯電話の最下位層には TCP/IP プロトコルが実装されているため、携帯電話端末から無線ネットワークを介してサーバーと TCP 接続を確立することでネットワーク機能を利用できます。 TCP プロトコルは上位層ネットワークへのインターフェイスを提供できるため、上位層ネットワーク データの送信は「区別されていない」ネットワーク上で確立されます。 tcp は接続を確立するために 3 回のハンドシェイクを必要とします:図 1: Tcp 接続の 3 ウェイ ハンドシェイクの図
図に示すように: クライアントは、サーバーとの TCP 接続を確立するために、まず syn J 信号をサーバーに送信する必要があります。この信号を受信した後、サーバーは ACK J 1 信号と追加の syn K 信号でクライアントに応答します。 ACK J 1 を受信します シグナルを受信すると、サーバーがシグナルを受信できることがわかり、クライアントは、サーバーが私が送信したデータを受信できないことを心配することなく、サーバーに安全にデータを送信できます。 クライアントは、サーバーから送信された SYN K 信号を受信した後、サーバーに ACK K 1 信号を返す必要があります。こうすることで、サーバーは、サーバーが送信したこの信号をいつ受信したかを知ることができます。この信号をクライアントに送信すると、クライアントはそれを受信できるため、クライアントが送信したデータを受信できないことを心配することなく、サーバーは安全にデータをクライアントに送信できます。 実際、上記の説明からわかります: 接続の確立は、TCP 接続の切断と同じように 4 つのステップで実行できます。サーバーの応答信号 ACK とクライアントの応答信号を組み合わせるだけです。信号 SYNC の 2 つのステップが 1 つのステップで完了します。 TCP 接続が閉じられるときは 4 つの波が必要です: 図 2: TCP 接続が切断されるときの 4 つの波
2: ソケット
2 つのプロセスが通信する必要がある場合、最も基本的な前提はプロセスを一意に識別できることであることはわかっています。ローカル プロセス通信では、 PID はプロセスを一意に識別するために使用できますが、PID はローカルでのみ一意です。ネットワーク内の 2 つのプロセス間で PID の競合が発生する可能性が高くなります。現時点では、別の方法を見つける必要があります。IP アドレスはわかっています。 IP 層のプロトコルとポート番号はホストを一意に識別でき、TCP 層のプロトコルとポート番号はホスト上のプロセスを一意に識別できるため、IP アドレス + プロトコル + ポート番号を使用してネットワーク上のプロセスを一意に識別できます。 図 5: ソケット通信システム モジュールの概略図
写真からわかるように、ソケット接続は長時間の接続を維持できます。
図 6: 基本的なソケット クライアント/サーバー通信プロセスの概略図
ソケット接続は、クライアントまたはサーバーによってアクティブに閉じることができることに注意してください。
関連知識の詳細については、FAQ 列をご覧ください。
以上がソケット通信とtcp通信の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。