各ソケットにはメッセージを送受信できる独自のバッファがありますか?

各ソケットにはメッセージを送受信できる独自のバッファがありますか?

広く使用されているCアプリケーションを開発しています。ソケット

私の疑いは:私が作成した各ソケットに別のソケットからメッセージを送受信できる独自のバッファがありますか?

つまり、メッセージ交換によってソケットが影響を受けますか?間違って

バグとは、メッセージを「意図された」受信者から別のソケットに明示的に送信するためにプログラムコードを書かずに(おそらくバグのある)1つのソケットに送信されたメッセージを別のソケットに「漏らす」ことができるということです。

答え1

私が作成する各ソケットには、他のソケットからメッセージを送受信できる独自のバッファがありますか?

はい。

それ以外の場合、ソケットAPIはデフォルトで使用できないため、提案する理由はこれです。

使用しているソケットの種類を指定していないので、明確にすると次のようになります。

  • 各TCP /ストリームソケットには独自の送受信バッファがあります。

    これらのバッファは、バックグラウンドでの再送信、承認管理、再アセンブリなどを処理するために必要です。

  • 各UDP /データグラムソケットには独自の受信バッファがありますが、必ずしも一意で持続的な送信バッファがあるわけではありません。

    永続転送バッファを必要とする再送ロジックはありません。

  • aは、socketpair2つのソケット間でバッファを共有できます(または各方向のバッファ)。

    比較のために、a pipe(ソケットとは異なり)は一方向であるため、通常、2つのファイル記述子間で共有されるバッファは1つだけです。

答え2

はい、TCPとUDPは多重化されたネットワーク用です。多くの仮想ネットワークを作成します。

IPはパケットのみを送信します。このマシンからそのマシンに移動するだけで何でもできます。チャンネルもなく、再送信もなく、配信しようとします。これがインターネットがどのように機能するかです。

TCPとUDPはここにチャンネル(ソケット)を追加します。 TCPは再送を追加します。間違っていますか?

  • データの破損を検出するには、チェックサムを使用する必要があります。チェックサムは十分に強力です(TCPには十分ではないかもしれませんが、ハードウェア層には良いチェックサムがあります)。
  • ソフトウェアはバグを作成し、間違ったチャンネル/ソケットで送受信できます。
  • ただし、他のプロセスがファイルハンドルを渡さない限り、プロセスで開かれていないソケットでは送受信できません。

関連情報