私は社内のTCPサーバーとTCPクライアントで作業しています。パケット損失が0%になると、サーバーとクライアントは正常に動作します。しかし、私は20%以上のパケットロスがあると、重複したTCPメッセージが表示されています。私は Python TCP Duplicate Message
Client <-- MessageA -- Server
Client -- MessageB --> Server
Client <-- MessageCMessageA -- Server
がMessageAが完全にクライアントにそれを作っていないこと、それは可能です....このような何かを受け付けており、その回アウト、そして、TCPは、それを再送信した後、元のメッセージが受信されることになりますクライアントによって後で?
私の質問は、TCPがそれに似ているかどうか、また20%のパケット損失以上のネットワークを持つシナリオが考えられる場合です。
クライアントとサーバがデータを受信/送信しているかのベアボーン...
socket.recv(1024)
socket.send(1024)
組み込みのTCP/IPライブラリを使用しており、接続がタイムアウトする前にすべてのピースが到着したと仮定すると、TCPは重複や再送信を心配する必要がないという保証を提供します。これは、UDP over TCPを選択する主な理由の1つです。データが適切に注文されていることとそれが保証されています。 –
よろしくお願いいたします。私はバグを探し始める前に確かめたいと思っていました。 – Taztingo
おそらく、あなたの 'recv'呼び出しは常に正確に1,024バイトを返すと仮定しましたか?バッファサイズは、実際の数ではなく、受信される最大バイト数です。メッセージを受け取るための完全なコードを表示してください。 –