こんにちは、こじろうです。
別記事でインターネット上の情報のやり取りは7つのステップに分かれていて、そのうち上から4つ目”トランスポート”層と2つ目の”データリンク”層ではやり取りするデータが正確に送受信されたか、”誤りの制御”を実施していることを紹介しました。
この記事では、文系SEの方々やITビギナーの方々向けに、具体的にどのような流れでデータ伝送時に発生する誤りの制御がなされているか紹介していきたいと思います。
【この記事でわかること】
- 誤り制御とは何か?
- 具体的にはどんな仕組みなの?
- 誤り制御の知識ってどこで役立つの?
ネットショッピングや個人情報の登録で活用される。
「誤り制御」機能は、カード決済や個人情報の登録といった、ミスが許されない、もしくはミスしたらそれを検知して、ユーザにもう一度入力を促す必要がある場合に実施します。
※はぎこさん@イラストACからの提供
逆に、電話や動画といったデータの連携順序やスピードが重要なコミュニケーションではあまり重要視されません。なぜなら、これらのコミュニケーションやデータ連携では多少(電話であれば音声データ、動画であれば画像や音データ)がかけても、送信者が送った順番で各データが連消されないと、コミュニケーションが成り立たないためです。
別記事でインターネット上の情報のやり取りは7つのステップに分かれていて、4層目:トランスポート層(TCP/UDP)と2層目:データリンク層の紹介をしました。
この2つの領域の特徴として、連携するデータが、正確にやり取りされているかどうかチェックするする機能があります。
これはJPNIC(日本ネットワークインフォメーションセンター)の”UDP”の解説記事に詳細が記載されているので、是非こちらもご覧ください。
例えば、電車(地下鉄)に乗りながらスマホを使ってクレジットカード決済するときなどです。移動している途中に電波状況が悪くなって、決裁がエラーになることがありますね。お金に関わることや、個人情報のやり取りは誤った情報をやり取りする訳にはいきませんので、空港の出入国検査のごとく、順序を追った確実なチェックがなされるのです。
システムもミスをする。
一方で、「システムでやり取りしているのにそもそもミスなんて起きるのか?こんなの使われることないんじゃないのか?」
確かに、人の手を介さず、ミスなく高速に処理を実現するためにシステムは存在しているのに、そのシステムがミスをするとなると、高いお金を投じてシステムを導入する意味がありませんね。
しかし、残念ながらシステムでやり取りしているデータに齟齬や漏れ(伝送誤り)は発生する可能性があります。
伝送誤りの原因は、伝送波形の歪。
伝送誤りの原因は、伝送波形の歪です。伝送波形は、伝送の途中で歪みます。
歪みの原因は多種多様ですが、主に外来ノイズ、伝送路の周波数特性、反射などです。(ここまで来るとITではなく電気工学の分野になりますので、この記事・ブログでは割愛させてもらいます。)
伝送誤りは確率現象で、いつ・どういった状況で発生するか予測するのは困難であり、確率統計の立場から対応を検討する必要があります。
誤り制御の種類
主に4つ。間違いがあったら”間違ってるよー”って教えてあげるのが主流。
結局は0と1の電気信号が意図したとおりに伝わったかのチェックなのですが、①②は同じデータを複数回やり取りして正確さを担保する方法で、正直手間がかかりすぎるのであまり活用されません。
一方、④は誤りを見つけるだけでなく修正してしまう方法なのですが、これもまた時間がかかり過ぎてしまうため、Webアプリケーションやスマホと基地局とのやり取りでは、③の”データ連携の誤りが見つかったら、ユーザにお知らせしてもう一度入力してもらう”スタイルが主流となっています。
- 返送照合方式
- 情報尾連想方式
- 誤り検出再送要求方式(ARQ:Automatic Repeat reQuest)
- 誤り訂正方式
誤り検出の種類
パリティは奇数個の誤り発生、偶数個の誤り発生どちらかにしか対応できない
- 垂直パリティ方式
- 水平パリティ方式
- 群計数チェック方式
参考:パリティチェック
誤りが複数ビット連続して発生する可能性が高い場合は、CRC
- 群計数チェック方式
参考:データの送信について
訂正までやってしまいたかったら、ハミング符号
- ハミング符号
トラブルシューティングに役立つと思って勉強したけど…
正直、H/W(ハードウェア)寄りの話なので、この知識が現場の作業で役に立ったことはないです。
ただ、クライアントと設計の議論をする際の予備知識として持っておくと、箔がつくというか、相手を安心させる材料になると思います。
それでは、Chao◎
こじろう
※冒頭の写真はacworksさんによる写真ACからの写真でした。