TCP がインオーダー データ転送を実装していることは知っていますが、実際に A から B に到着したデータが A から送信された実際のデータであることを検証しますか? もしそうなら、それはどのように正確に起こりますか?
user975343
質問する
61 次
2 に答える
1
A から B に到着したデータが A から送信された実際のデータであることを実際に検証しますか?
率直に言って、いいえ。セッション中に送信者が送信したのと同じバイト数を受信者が取得することを確認しようとします (ack および syn 番号を使用)。また、すべてのセグメントに正しいチェックサムがあることを確認しますが、これはあまり保証されていないと思います。ホストに障害のあるメモリがある場合は、1 つのバイト ストリームを送信し、数バッファ後に別のバイト ストリーム (ビット フラッピングによる) を使用してチェックサムを計算している可能性があります。チェックサムは正しくなりますが、送受信されるメッセージは異なります。信頼性が必要な場合は、アプリケーションレベルのメッセージの独自のチェックサム/ハッシュ/署名を常に実装してください。
シングル ビット エラーのコストを説明する関連資料: http://status.aws.amazon.com/s3-20080720.html。
于 2013-06-30T10:28:08.417 に答える
0
RFC 793からのこの抜粋があなたの質問に答えていると思います。
The TCP must recover from data that is damaged, lost, duplicated, or delivered out of order by the internet communication system. This is achieved by assigning a sequence number to each octet transmitted, and requiring a positive acknowledgment (ACK) from the receiving TCP. If the ACK is not received within a timeout interval, the data is retransmitted. At the receiver, the sequence numbers are used to correctly order segments that may be received out of order and to eliminate duplicates. Damage is handled by adding a checksum to each segment transmitted, checking it at the receiver, and discarding damaged segments.
于 2013-06-12T19:26:04.070 に答える