私はインターネットを検索しましたが、答えが得られませんでした
2 に答える
TCP「接続」は4タプルです。ローカルIP、ローカルポート、リモートIP、およびリモートポート。両端は、TCPスタック内でこの識別を維持し、意味を逆にします(ローカルとリモート)。
これらの4つの値の組み合わせは一意である必要があります。これは、同じサーバーに再接続するためにソケットを再利用するTCPクライアントを作成するときによくある問題を説明しています。
「閉じた」接続では、このIDは、TIME_WAIT状態で、しばらくの間、両端のテーブルに残ります。これは、物理層の接続が切断された場合でも接続の整合性を維持し、保留中のパケットが2番目の接続によって受信されないようにするTCPメカニズムの成果物です。TIME_WAITは最大4分続く場合があります。
クライアントがソケットのLocalPortを0(自動エフェメラルポート割り当ての要求)にリセットしない限り、TIME_WAITの期限が切れる前に再接続しようとすると、失敗する可能性があります。新しく作成されたソケットの場合、これは0であるため、プログラマーはConnectを呼び出す前にこの要件を見落とすことがよくあります。
LocalPortは、ソケットをリッスンするための問題だけではありません。
サーバーは localport でリッスンし、クライアントは localport からデータを送信します。クライアントのリモート ポートは、サーバーのローカル ポートと同じである必要があります。すなわち: サーバーはポート n (サーバーに相対的なローカル ポート) でリッスンします クライアントはポート n (クライアントに相対的なリモート ポート) でサーバーに接続します
あなたの質問に答えるために、違いは視点に基づいて名前にあります。