人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

TCP/IPでは転送されたデータの信頼性を保つためにchecksumを持っていますが、この値が「偶然」一致してしまいデータが欠損してしまう確率はどの程度でしょうか?

取引先のネットワークエンジニアから「7年前に勤めていたIDCでアメリカとTCP通信していたときにファイルが壊れたという事件があった。アメリカとの通信は回線の品質が悪い場合があるので信頼性がない(接続がなかなか終わらない等ではなく「送られてきたファイルが壊れていた」とのこと)」という話を聞き、それまでTCPプロトコルを信頼しきっていたので、疑問に思い調べています。

●質問者: webrecdotjp
●カテゴリ:コンピュータ インターネット
✍キーワード:iDC TCP TCP/IP アメリカ エンジニア
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● TRTr
●30ポイント

http://portal.acm.org/citation.cfm?id=347561&dl=GUIDE&coll=GUIDE...

のabstructより


CRCは1/1100〜1/32,000程度でチェックサムに失敗し、

その場合1/40億の確率でCRCで捕まえられないエラーが発生することになるが、

実ケースではそれよりも遥かに多い1/400程度の確率でCRCのエラーが発生しているため

CRCで捕まらないエラーはもっと多いだろう、ということのようです。


その大部分はlink-levelではじかれるだろうけれども

大体1600万分の1〜100億分の1の間の確率でエラーが起きる(と予想できる)ので

アプリケーションレベルでもチェックサムを持つべきだと論じています。


あまり読み慣れた分野ではないので読み誤っている可能性もありますので

詳細は原文を参照して下さい。

◎質問者からの返答

回答ありがとうございます。参考になります。


2 ● rafile
●40ポイント ベストアンサー

etherフレームについているCRCは32bitで、ここのチェックをすり抜ける確率はエラーが起こったetherパケットに対して40億分の1。

これをすり抜けるときにはデータは広範囲に変わっているはずなので、TCPのチェックサムの16bitsより十分長いデータが変わるとすると、チェックサムが偶然合う確率は単純に6万分の1。

したがって、etherパケットのエラー数に対して、250兆分の1程度じゃないでしょうか。

ですので、現在のインターネット通信で壊れる確率は相当低いと思います。そもそものエラー自体も少ないでしょうし。

パケットがEtherじゃない経路をとおる場合には、TCPそのものの信頼性はかなり低くなり、2bitエラーが起こっただけでchecksumはすり抜けられます。

こうしてみると、TCPの信頼性は、パケット落ちやパケットの入れ替えが起こったときにリカバリするだけで、基本的なビット誤りに対する信頼性は、物理層にたよってるんじゃないかと思いますですよ。

物理層:エラーがあった場合にパケットを落とす

IP層:なにもしない

TCP層:パケットが落ちたときにがんばる。

◎質問者からの返答

回答ありがとうございます。

etherとTCPのエラーチェックを合わせて250兆分の1なんですね。

TCPだけだと信頼性はかなり低いですね。

大変勉強になりました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ