質問: TCP/IPでは転送されたデータの信頼性を保つためにchecksumを持っていますが、この値が「偶然」一致してしまいデータが欠損してしまう確率はどの程度でしょうか? 取引先のネットワークエンジニアから「7年前に勤めていたIDCでアメリカとTCP通信していたときにファイルが壊れたという事件があった。アメリカとの通信は回線の品質が悪い場合があるので信頼性がない(接続がなかなか終わらない等ではなく「送られてきたファイルが壊れていた」とのこと)」という話を聞き、それまでTCPプロトコルを信頼しきっていたので、疑問に思い調べています。
回答: 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の間の確率でエラーが起きる(と予想できる)ので アプリケーションレベルでもチェックサムを持つべきだと論じています。 あまり読み慣れた分野ではないので読み誤っている可能性もありますので 詳細は原文を参照して下さい。