ネットワーク ライブラリでパケットを送信すると、送信したときと異なるデータが到着することがあります。TCP は正確な配信を保証するものだと思っていました。これは本当でしょうか。それとも、自分のライブラリ コードのパッケージ化と受信のプロセスに何か問題があるのでしょうか。
答え1
TCP は、個々のパケットのレベルでデータが正確に配信されることを保証しません。
代わりに、TCP は、すべてのパケットのヘッダーにシーケンス番号とチェックサムを含めることでデータの整合性を判断するフレームワークを提供します。受信者はこれをチェックする必要があります。また、パケットがまったく到着しなかったり、チェックサムが失敗した場合に、受信者が送信者にパケットの再送信を要求できるメカニズムも提供します。
答え2
チェックサムを一致させてください。一致しない場合は、データが送信されてから宛先に到達するまでの間に、何かまたは誰かによって変更されている可能性があります。MITM のようなもので、送信側と受信側のどちらでも起こり得ます。