基本的なTCP通信をいくつか行いましたが、いくつか質問があります。トランザクションフローが次のように記述されているTCPサーバーと通信しています。
送信者はSTX(ASCII 0x02)文字を送信してトランザクションを開始し、受信者がACK(ASCII 0x06)文字を送信して応答するのを待ちます。ACKが受信された後、送信者は、メッセージペイロードのサイズを表す4バイトの符号なしビッグエンディアン整数、ペイロード、最後にペイロードの16バイトのMD5メッセージダイジェストを送信します。受信者がメッセージに満足すると、ACK文字を送信します。
<STX> = ASCII 0x02
<ACK> = ASCII 0x06
Sender: <STX> <0x00><0x00><0x00><0x05><'H'><'E'><'L'><'L'><'O'><0xEB><0x61>...
Recipient: <ACK> <ACK>
.Netソケット(System.Net.Sockets.Socket)を使用して、STX / ACK転送制御を管理する適切な方法は何ですか?ソケットはこれを自動的に処理しますか(つまり、単にsocket.Send(byteData)を呼び出しますか)、またはSTXを明示的に送信したり、ACKを待機したりする必要がありますか?
受信についても同じことが言えます。単に着信データを受信するのでしょうか、それともSTX文字をリッスンし、ACKを送信し、ペイロードの準備をする必要があるのでしょうか。
転送制御が自動的に処理される場合、設定する必要のある特定のソケットフラグはありますか?
参考:メッセージフレーミングに役立つことが証明されているリンク(次のような)がいくつか見つかりましたが、STX/ACK転送制御については説明していません。