2012-05-08 18 views
3

TCPは、転送中に損失などが発生するために必要なことを行うことによって、ストリーム上でストリームがそのまま送信されるようにする責任を負いませんか?TCP上のチェックサム

適切な仕事をしていませんか?

上位アプリケーション層プロトコルとそのア​​プリケーションがチェックサムを実行するのはなぜですか?

+0

@cnicutarこの瞬間に私を非常に強く噛んでいるのは、FreeBSD上でモバイルインターネット接続を介して60 MBのファイルをダウンロードすることです(wgetのようなツール)。 –

+1

私に電話をかけてはいませんが、チェックサムを実行するアプリケーション層プロトコルは認識していません。具体的には、あなたが考えているアプリケーション層プロトコルについて言及できますか? –

+0

@Robᵩそうです。おそらく私の処方は明らかではなかったでしょう。チェックサムは、http、ftpなどのプロトコルを使用して大容量のファイルをダウンロードするアプリケーションや、オペレーティングシステムのパッケージマネージャーによって実行されます。したがって、そのようなプロトコルの不可欠な部分ではなく、そのように起こります。ビットトレントや同様のピアツーピアのデータ転送プロトコルについても安全に言えるかどうかはわかりませんが、不確かさが私のあいまいな処方につながった。 –

答えて

4

TCPには独自のチェックサムが含まれていますが、それは16ビットのチェックサムであり、マルチビット送信エラーがTCPチェックサムメカニズムによってスリップする可能性は確かです。これは非常にまれですが、まだ可能です(実際には数十年に一度か二度)。

強力なプロトコルは、送信データの整合性を保証するために、より高いレベルのハッシュ関数を使用することを望みます。だが、少量のデータを送信する多くのアプリケーションがこの問題に陥るわけではない。一括転送アプリケーション(パッケージマネージャや自動更新メカニズムなど)では、通常、暗号のハッシュ関数を使用してデータの整合性を保証します。

+0

私はこの瞬間に私に起こっている:)私はあきらめて、午後まで私のプライマリインターネット接続が生きる前に生きる前に待っています。 –

+3

同じ問題が何度も繰り返されている場合は、TCP送信エラーになることはまずありません。これらの種類のマルチビット伝送エラーは再現性がありません。 –

+0

'FreeBSD'(' VirtualBox 'でも)で 'fetch'するのは同じ意見ではありません(私の場合も希望です)。たぶんそれは私が '' fetch'を正しく動作させるのに十分知識がなく、チェックサムエラーでダウンロードを再開するからです。 –

1

TCPは、TCPパケットが確実に配信され、送信中に導入されたエラーをトラップするためのチェックサムを使用し、必要に応じて紛失したパケットや破損したパケットを再送信します。パケットが送信されると、ピアホストが受信確認を確認するまで再送信キューに保持されます。一定のタイムアウト期間内に確認応答が受信されない場合、パケットは再送される。しかし、ホストはパケットを永遠に再送し続けません。パケットが繰り返し失敗すると、TCPは結局接続を断念して接続を閉じます。

上位レベルのプロトコルでは、TCPが確実に動作し(公平な前提)、独自のチェックサムなどを使用して、上位レベルのデータストリームが安全に到着したことを確認します。私は自分のより高いレベルのバッファを壊し、アプリケーションデータストリームを混乱させたたくさんのバギーソケットアプリケーションを書いてきました!

堅牢なアプリケーションを使用しているプロダクショングレードのTCP/IPスタックでは、接続が切断されるという問題があると確信できると思います。または、バグのあるアプリケーションがあるかもしれませんが、フェッチ/ウィジェットがバグだとは思わないでしょう。

関連する問題