
ネットワーク上でホストするサービスごとに、ホスト/コンピューティング マシンに複数のポートが存在することはわかっています。
しかし、これらのポートが内部的に何であるかを理解したいのですが?
以下は、ネットワーク ポートに関する私の理解です。間違っていたら訂正してください。より明確にするために詳細を追加してください。
これらはソフトウェア構造で、主に OS のネットワーク コンポーネント内のキュー/バッファであり、ネットワーク サービス (Web サービス、ファイル転送サービスなど) がマシン上でホストされるたびに動的に作成されます。また、各ネットワーク サービスはそれぞれのポートをリッスンし (データを受信するため)、そのポートに書き込む (データを送信するため) アクセス権も持っています。[境界バッファの問題と同様]
データを送信する必要があるとき-
ネットワーク サービス (アプリケーション) は、OS にシステム コール (send() など) を発行して、データをバッファーに書き込み、トランスポート プロトコルに通知します。これにより、TCP/UDP プロトコルはバッファーからデータを取得してセグメント化し、ネットワーク スタックに渡します。
データを受信する必要がある場合-
データが NIC 経由でホストに到着すると、OS 内の低レベルのネットワーク コンポーネントからデータが読み取られ、ネットワーク スタックに渡されます。OS のトランスポート層コンポーネントがデータを読み取ると、そのポート番号に関連付けられたキューにデータが配置され、そのポートをリッスンしているアプリケーション (ネットワーク サービス) がデータを読み取ることができるようになります。
答え1
ほぼ正しいですが、完全に正しいわけではありません。
ソケットバッファを備えたソフトウェア構造です (各ソケットには個別の送信キューと受信キューがあります)。TCP の場合、各接続は個別のソケットを使用します。
ポートは、多重化解除に使用される数値ラベルにすぎません。ポートは、OS が着信パケットを受信するソケット (または受信バッファー) を選択するのに役立ちます。
各ソケットは、プロトコル、ローカルおよびリモート アドレス、ローカルおよびリモート ポートなど、複数のパラメータに関連付けられており、受信したパケットを検索するときにそれらすべてが使用されます。(アドレスが同一の場合、少なくとも 1 つのポートが異なっている必要があります。ただし、アドレスが異なる場合は、複数のソケットで同一のポートを使用できます。)