ホームページ  >  記事  >  ソケット通信とtcp通信の違いは何ですか?

ソケット通信とtcp通信の違いは何ですか?

藏色散人
藏色散人オリジナル
2022-01-24 14:51:1138437ブラウズ

ソケット通信と tcp 通信の違い: 1. tcp プロトコルはトランスポート層プロトコルに属しますが、ソケットはアプリケーション層とトランスポート層の間の抽象化層です; 2. 3 ウェイ ハンドシェイクはTCP 接続を確立するために必要な; 3. ソケット接続は長時間の接続を維持できる; 4. TCP サーバーと 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通信の違いは何ですか?

図に示すように:

クライアントは、サーバーとの 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 つの波

クライアントは受信します。サービス クライアントの応答信号 ACK M 1 の後、クライアントは次のことを認識します。 サーバーは、私のクライアントがもうあなたのサーバーにデータ パケットを送信しないことを知っているので、あなたは私の監視をやめてもよいでしょう。

ただし、現時点ではクライアントからサーバーへの一方向のフローのみが停止しており、その逆方向のフローは次のとおりです。

サーバーからクライアントへのデータ送信は、サーバーが FIN N 波信号をクライアントに送信し、クライアントが ACK N 1 信号でサーバーに応答するまでは、通常どおり続行します。そのとき初めて、サーバーは次のことを認識します。クライアントは、サーバーが今後データ パケットを送信しないことを認識します。あなたのクライアントです。私への治療をやめても構いません。監視されています。

この時点で、クライアントからサーバーへの一方向フローとサーバーからクライアントへの一方向フローが停止し、接続を閉じることができます。

2: ソケット

2 つのプロセスが通信する必要がある場合、最も基本的な前提はプロセスを一意に識別できることであることはわかっています。ローカル プロセス通信では、 PID はプロセスを一意に識別するために使用できますが、PID はローカルでのみ一意です。ネットワーク内の 2 つのプロセス間で PID の競合が発生する可能性が高くなります。現時点では、別の方法を見つける必要があります。IP アドレスはわかっています。 IP 層のプロトコルとポート番号はホストを一意に識別でき、TCP 層のプロトコルとポート番号はホスト上のプロセスを一意に識別できるため、IP アドレス + プロトコル + ポート番号を使用してネットワーク上のプロセスを一意に識別できます。


ネットワーク上のプロセスを一意に識別できるようになると、ソケットを使用して通信できるようになります。ソケットとは何ですか?

私たちは、ソケットをソケットとして翻訳することがよくあります。ソケットは、アプリケーション層とトランスポート層の間の抽象化層です。TCP/IP 層の複雑な操作を、アプリケーション層用のいくつかの単純なインターフェイスに抽象化します。実装されたネットワーク内で通信するためのプロセス。

ソケット通信とtcp通信の違いは何ですか? 図 5: ソケット通信システム モジュールの概略図

TCP サーバーと TCP クライアントの間でソケット通信を使用するプロセスは次のとおりです。

写真からわかるように、ソケット接続は長時間の接続を維持できます。
ソケット通信とtcp通信の違いは何ですか?
図 6: 基本的なソケット クライアント/サーバー通信プロセスの概略図

ソケット接続は、クライアントまたはサーバーによってアクティブに閉じることができることに注意してください。

関連知識の詳細については、FAQ 列をご覧ください。

以上がソケット通信とtcp通信の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。