検索
ホームページウェブフロントエンドjsチュートリアルインターネットはどのように機能するのでしょうか?パート 2

このレッスン/投稿では、ネットワークについて話します。

ビット、信号、パケットの概要

世界中の通信ネットワークを介して情報を配信および交換できる機能は、人々の働き方、遊び方、生活の仕方に革命をもたらしました。今世紀の変わり目に、米国国立工学アカデミーは、20 世紀で最も社会に大きな影響を与えた 20 のテクノロジーをリストしました。このリストには、電化、自動車、飛行機など、生活を変えるイノベーションが含まれていました。また、ラジオ、テレビ、電話、インターネット、コンピューターという 4 つの通信技術も含まれており、その技術的基盤が本書の焦点です。

驚くべきことに、インターネットは今世紀後半に開発され、その最も重大な影響は 21 世紀に起こると委員会が信じていたため、順位は 13 位に過ぎませんでした。この予測は正確であるようです。ワイヤレス ネットワークとモバイル デバイスの普及、ソーシャル ネットワークの台頭、いつでもどこでも通信できるようになったことで、商業や社会的つながりが変化し、さらには社会的および政治的変化さえも引き起こされました。

コミュニケーションは現代生活の基本です。インターネット、そのアプリケーション、またはネットワーク接続されたモバイル デバイスのない生活を想像するのは困難です。 2011 年初頭までに、世界中で 50 億台を超える携帯電話が使用され、そのうち 10 億台以上が「ブロードバンド」接続に対応しており、これは 2011 年の電気、靴、歯ブラシ、トイレを備えた人口を超えています。

How does the Internet Work? Part 2

目的

この投稿/レッスン (どのように呼んでも構いません) は、通信ネットワークがどのように機能するかを説明することを目的としています。これは 2 つの理由から研究する価値があります:

  • これらのシステムで使用される設計原則と分析手法を理解する。
  • 技術的なアイデアは、コンピューター サイエンス (CS) や電気工学 (EE) の他の分野に関連しているためです。このため、通信システムの学習は、広く適用可能な概念を学ぶのに最適な方法となります。

MIT (マサチューセッツ工科大学) では、2 年生が確率とフーリエ級数に触れるこのようなコースを受講します。

伝統的に、「低レベル通信」(単一リンク上で情報がどのように移動するか) は EE のトピックとみなされ、「ネットワーキング」(複数のリンクのネットワークの構築) は CS のトピックとされてきました。従来のデジタル コミュニケーション コースではネットワーク構築についてはほとんど取り上げられず、コンピュータ ネットワーク コースでは物理リンクを介した通信がブラック ボックスとして扱われます。本書は、このギャップを埋めることを目的としており、両方の側面の包括的な理解を提供します。

How does the Internet Work? Part 2

通信システムをエンドツーエンドで取り上げます: 送信する情報を含むソースから、パケット (送信用に分解されたメッセージ)、ビット (「0」または「1」)、信号 (アナログ波形)ワイヤー、ファイバー、無線、音波などのリンクを介して送信されます)。シンプルなポイントツーポイント リンク、複数のノードによる共有メディア、さらに大規模なネットワークを形成するために接続された大規模なマルチホップ ネットワークなど、多様なネットワークを調べます。

テーマ

デジタル コミュニケーションの中心となるのは、信頼性、共有、拡張性という 3 つの課題です。この導入セクションでは、最初の 2 つに焦点を当てます。

How does the Internet Work? Part 2

信頼性

コミュニケーションの信頼性を低下させる要因は数多くあります。私たちは、信頼性を向上させるための技術を研究します。その技術はすべて、独立したコンポーネントの障害に依存して、信頼性の低いコンポーネントで信頼性を実現する冗長性を採用しています。

主な課題は、通信品質を低下させるノイズ、干渉、ビット エラー、パケット損失 (修正不可能なエラー、キューのオーバーフロー、リンク/ソフトウェア障害による) を克服することです。

信頼性に加えて、スピードも重要です。信頼性技術では冗長性が使用されることが多く、速度が低下します。多くの通信システムは信頼性と速度のバランスを保っています。

通信速度は、1980 年代初頭のキロビット/秒から、無線では毎秒 100 メガビット、今日では有線リンクでは毎秒 1 ~ 10 ギガビットまで劇的に増加しました。

通信の信頼性が低い理由と、エラー訂正コードの使用、シンボル間干渉の処理、再送信プロトコル、およびフォールトトレラントなルーティングを使用して、その問題に対処する方法を探ります。

効率的な共有

すべてのノードペアの専用リンクは法外に高価です。共有は不可欠です。ポイントツーポイント リンク、共有メディア、マルチホップ ネットワークの共有について研究します。

メディアの共有 (イーサネット、WiFi、セルラー ネットワーク、衛星ネットワークに関連)、変調/復調 (異なる周波数での送信)、およびメディア アクセス制御 (MAC) プロトコル (ネットワーク ノードの動作を管理するルール) について説明します。 。時間共有 (各ノードが専用の時間送信) と周波数共有 (帯域幅の分割) について説明します。次に、スイッチによって調整され、多くの通信がリンクを共有するマルチホップ ネットワークに移ります。

主な質問には、複数の通信がネットワークをどのように共有するか、メッセージがネットワークをどのように通過するか、マルチホップ ネットワーク全体で信頼性の高い通信を確保する方法が含まれます。

共有技術と信頼性メカニズムがネットワークの効率を決定します。効率とは、特定の要件に対するコストを最小化すること、または特定のネットワークの「有用な作業」(総スループット、スループット変動、平均遅延/レイテンシ)を最大化することとして組み立てることができます。この投稿では、スループットとレイテンシに焦点を当てます。

スケーラビリティ

スケーラビリティ (大規模なサイズを処理できるネットワークの設計) が重要です。この投稿ではこれについて簡単に触れ、詳細な説明は後のレッスンに残しておきます。

概要と計画

レッスンは 4 つの部分に分かれています。ソース、ビット、信号、パケットの抽象化をこの順序で学習します。

  1. ソース: 情報、エントロピー、ソース コーディング (データ圧縮)、ハフマン コード、および Lempel-Ziv-Welch アルゴリズムの基本から始めます。
  2. ビット: 誤り訂正符号 (線形ブロック符号と畳み込み符号) を使用してビット エラーの克服に取り組みます。
  3. 信号: 変調/復調、線形時不変 (LTI) チャネルによる信号歪みのモデリング、時間/周波数領域表現、チャネル/フィルターの周波数応答について説明します。
  4. パケット: MAC プロトコルとのメディア共有、マルチホップ ネットワークでのルーティング、信頼性の高いデータ トランスポート プロトコルを研究します。

情報、エントロピー、ソースコードの動機

クロード シャノンの情報理論 (1940 年代後半に開発) は、多くの技術分野、特に通信システムやネットワークに変革をもたらした画期的なアイデアです。この章では、情報の背後にある直感を紹介し、それを数学的に定義し、それをデータ ソースの特性であるエントロピーに関連付けます。

これらの概念により、通信または保存前の効率的なデータ圧縮が可能になり、歪みのない元のデータの復元が可能になります。 中心となるアイデアは ソース コーディング です。これは、データ ソースの各シンボルを、望ましいプロパティを持つ コードワード にマッピングします。メッセージは一連のシンボルです。私たちはロスレス ソース コーディングに焦点を当てており、破損していない送信から元のメッセージを完全に復元できます。

情報とエントロピー

シャノンは、ハートリーの研究を基にして、アプリケーションやメッセージのセマンティクスとは無関係に、情報を一般的に定義できることに気づきました。通信には、送信者 (S) がいくつかのメッセージの中から 1 つを選択して受信者 (R) に送信することが含まれます。たとえば、S は英国の到着ルートを示すことができます:

  • 陸路の場合は「1」
  • 海沿いなら「2」

各選択肢の可能性が等しい場合 (事前知識なし)、伝達される情報は 1 ビットです。このビットは選択をエンコードできます。 1000 個のこのような独立したイベントを 1000 ビットでエンコードできます。

事前知識が 1 つの選択肢 (嵐による陸地など) の可能性が高いことを示唆している場合、可能性が低いメッセージ (海) がより多くの情報を伝えます。 同様に、1 月のボストンの気温 75°F は、32°F よりも有益です。

イベントに関する情報は、その確率 (p) によって決まります。確率が低い (可能性が低いイベント) ということは、情報が高いことを意味します。

情報の定義

Hartley は情報 (I) を次のように定義しました:

I = log(1/p) = -log(p) (2.1)

底 2 の対数が使用され、情報の単位はビットです。 対数関数は 加法性 を保証します: 2 つの独立したイベント A と B (確率 pA と pB) からの情報は合計されます:

IA IB = log(1/pA) log(1/pB) = log(1/(pA*pB)) = log(1/P(A および B))

How does the Internet Work? Part 2

エントロピ

エントロピー (H) は、相互に排他的な一連のイベントから期待される情報を定量化します。イベント i が確率 pi を持つ場合:

H(p1, p2, ... pN) = Σ pi * log(1/pi) (2.2)

How does the Internet Work? Part 2

エントロピーはビット単位で測定され、平均の不確実性を表します。確率 p および 1-p の 2 つの相互に排他的なイベントの場合:

H(p, 1-p) = -p*log(p) - (1-p)*log(1-p) (2.3)

H(p) は p = 1/2 の周りで対称で、p = 1/2 で最大 1 ビットになります。 H(0) = H(1) = 0。エントロピーは常に負ではなく、H(p1, p2, ... pN) ≤ log N.

ソースコード

ソースコーディング はメッセージを効率的にエンコードします。 多くのメッセージには標準エンコーディング (ASCII、画像ピクセル、音声サンプル) が含まれています。これらは固定長エンコーディングであり、簡単に操作できます。

ただし、これらのエンコードは非効率になる可能性があります。 英語のテキストでは、「e」は「x」よりも頻繁に出現します。 「e」をより少ないビットでエンコードし、「x」をより多くのビットでエンコードすると、平均メッセージ長を短縮できます。 これは、情報の概念と一致しています。つまり、頻繁に使用されるシンボル (パイが大きい) は、伝達する情報が少なくなり、必要なビット数も少なくなります。

コードは、情報をビット シーケンスにマッピングします。 コードワード は、コード内のビット シーケンスです。 ソース コード は、エンコードされたメッセージの長さを情報内容 (エントロピー) に一致させることでデータを圧縮することを目的としています。

例: 1000 のグレード (A、B、C、D) を確率でエンコードします:

固定長エンコーディング: 2 ビット/グレード (合計 2000 ビット)。 デコードは簡単ですが、非効率的です。

可変長符号化(例): A=10、B=0、C=110、D=111。 長さはメッセージによって異なります。 デコードには逐次処理が必要です。 このコード例は最適ではありません。

どの程度の圧縮が可能ですか?

理想的には、圧縮では情報を表現するために必要なビットのみが使用されます。エントロピー (式 2.2) は、曖昧さを避けるために必要な平均ビット数の下限を示します。送信するビット数を少なくすると、受信側で選択が未解決になる可能性があります。

学年の例では、学年ごとに期待される情報は 1.626 ビットです。 1000 グレードのエンコードには平均 1626 ビットが必要です。サンプルの可変長コードは 1667 ビットを使用しているため、最適ではありません。 グレードのシーケンスをエンコードすると、圧縮を向上させることができます。

良いコードを見つけるのは難しいです。場合によっては、コンテキスト固有のコードが非常に効率的になることがあります (例: 送信者と受信者の両方がすべてのソネットを知っている場合、わずか 8 ビットを使用してシェイクスピアのソネットをエンコードする)。

なぜ圧縮なのか?

圧縮にはいくつかの利点があります:

  • 高速送信: メッセージが短いと、送信時間が短縮され、ネットワーク容量が解放されます。
  • リソースの効率的な使用: メッセージが小さいほどネットワーク リソース (帯域幅、バッファ) が節約され、より多くの通信に対応できます。
  • エラーが発生しやすいリンクのスループットの向上: エラー訂正コーディング前の圧縮により、エラー回復力を高めるために最適化された冗長性が可能になります。

圧縮は通常、エンドツーエンドの機能 (アプリケーション層) ですが、データが圧縮可能で冗長性が含まれている場合は、リンク層で適用することもできます。 次の章では、ハフマン コードと Lempel-Ziv-Welch (LZW) 圧縮について説明します。

圧縮アルゴリズム: Huffman および Lempel-Ziv-Welch (LZW)

この章では、メッセージ圧縮 (メッセージはシンボルのシーケンス) のための 2 つのソース コーディング アルゴリズム、ハフマン コーディングと Lempel-Ziv-Welch (LZW) について説明します。ハフマン符号化は、シンボル確率が既知で独立している場合に効率的です。 LZW は適応型であり、確率に関する事前の知識は必要ありません。 どちらも広く使用されています (GIF、JPEG、MPEG、MP3 など)。

優れたソースコードの特性

コードは、アルファベットのシンボル (テキスト、ピクセル強度、または抽象シンボル) を コードワード にマップします。 バイナリ コードワードは、多くの通信チャネルに便利です。

例: 6.02 でのエンコーディング グレード: A=1、B=01、C=000、D=001。一連の成績は 0010001110100001 として送信され、「DCAAABCB」としてデコードされます。

瞬間コード: シンボルは、そのコードワードが受信されるとすぐにデコードされます。 上記のグレードのエンコードは瞬時に行われます。非瞬間的なコードは、先を読むか、最後からデコードする必要があるため、デコードが難しくなります。

コード ツリーとプレフィックス フリー コード: コード ツリー はコードを視覚化します。 バイナリ コード ツリーでは、エッジに 0 または 1 のラベルが付けられます。ルートからシンボルまでのパスによって、そのエンコーディングが決まります。 プレフィックスフリー コード はリーフ ノードにのみシンボルを持ち、どのコードワードも別のプレフィックスにならないようにします。プレフィックスのないコードは瞬時に生成されます。

予想されるコード長 (L): 確率 pi とコードワード長 li を持つ N 個のシンボルの場合: L = Σ pi *リー。 圧縮するには、L が小さいコードが望ましいです。 最適なコードは最小の L を持ちます。シャノンは L ≥ H (エントロピー) を示し、エントロピーを達成するコードが漸近的に存在することを示しました。

ハフマンコード

ハフマン コードは、シンボル確率が与えられた場合に効率的なエンコードを提供します。 シンボルがより短いコードになる可能性が高くなります。

ハフマンのアルゴリズムは、最も可能性の低いシンボルから始めて、コード ツリーをボトムアップで構築します。

  1. 入力: (確率、シンボル) タプルの S を設定します。
  2. 2 つの最も確率の低いシンボルを新しいタプルに結合します (結合されたシンボル、確率の合計)。新しいタプルを S に追加します。
  3. S にタプル (ルート) が 1 つだけになるまでステップ 2 を繰り返します。

結果のコード ツリーは可変長コードを定義します。

ハフマン符号の性質

  • 非一意性: ツリー構築中の任意のタイブレークにより、複数の最適なコード (およびツリー) が存在する可能性があります。
  • 最適性: ハフマン コードは、固定された既知の確率分布から抽出された独立シンボルの瞬間コードの中で、期待される最小の長さを持ちます。

LZW: 適応型可変長ソースコード

文字確率に基づく単純なハフマンコーディングには限界があります。 メッセージの内容に合わせて調整するアダプティブ エンコーディングは、パフォーマンスを向上させることができます。 LZW は人気のある適応アルゴリズムです。

LZW は、シンボル シーケンスを N ビットのインデックスにマッピングする文字列テーブルを構築します。テーブル (2^N エントリ) はシングルバイト シーケンス (0 ~ 255) で初期化されます。 エンコーディング:

  1. シーケンス (S) がテーブル内にある間にバイトを蓄積します。
  2. S の次のバイト (b) がテーブルにない場合:
    • S のコードを送信します。
    • S b をテーブルに追加します。
    • S を b にリセットします。
  3. すべてのバイトが処理されるまで繰り返します。その後、最後の S のコードを送信します。

デコーダはコードを受信するとテーブルを再構築し、元のメッセージを復元できるようにします。

LZW 観測:

  • Greedy: 最長一致を検索します。
  • 適応: テーブルのエントリは実際のメッセージ シーケンスを反映します。
  • 次善: 未使用のエントリが含まれる可能性があります。
  • 可変圧縮: テーブルがいっぱいになるにつれて圧縮は増加します。
  • テーブルの再初期化: テーブルはいっぱいになるとリセットされ、変化する確率に適応します。 一部の亜種は、明示的なリセットに CLEAR コードを使用します。

なぜデジタルなのか?通信の抽象化とデジタル シグナリング

この章では、アナログの問題点とデジタルの理論的根拠に焦点を当てて、アナログとデジタルのコミュニケーションについて説明します。これは、アナログ通信リンクを介してデジタル データを送受信する方法を示します (物理リンクは基本的に最下位レベルでアナログであるため必要です)。また、階層化された通信モデル (メッセージ → パケット → ビット → 信号) も紹介されており、これが本書の残りの部分の基礎となります。

データのソース

通信テクノロジーにより、ユーザー (人間またはアプリケーション) はメッセージを交換できます。 データ ソースは本質的にデジタル (コンピューター生成データなど) またはアナログ (ビデオ、オーディオ、センサー データなど) の場合があります。 最新のシステムでは、ソースに関係なく、すべてのデータがデジタル化されることがよくあります。

なぜデジタルなのか?

デジタル コミュニケーションが優れている理由は 2 つあります:

  1. モジュール性: デジタル抽象化により、モジュールを構成することで大規模なシステムを構築できます。
  2. 高度な処理: アルゴリズムを使用してデータ品質とシステム パフォーマンスを向上させることができます。

ただし、物理リンクはアナログであるため、デジタルからアナログへの変換、およびアナログからデジタルへの変換が必要です。

多くのアプリケーションでアナログが自然な理由

アナログ表現は物理リンクのプロパティに適切にマッピングされます。例:

  • 白黒テレビ: 画像の輝度 (グレーの階調) は電圧レベル (0V = 黒、1V = 白) で表されます。

  • アナログ電話: 音波は電気信号に変換されます。

アナログ信号はさまざまな電圧/強度/波長レベルで送信でき、受信機で簡単に測定できます。

では、なぜアナログではないのでしょうか?

エラーのない通信リンクはありません。ノイズと歪みにより信号が乱され、これらのエラーは複数の送信ステージにわたって蓄積されます (カスケード効果)。このため、アナログ システム、特に複雑なシステムを確実に構築することが困難になります。デジタル信号はこの問題に対処します。

デジタル信号方式: ビットを信号にマッピング

デジタル信号はビットを表すために離散値を使用し、ノイズとの確実な区別を可能にします。 バイナリ信号では、「0」の場合は V0、「1」の場合は V1 という 2 つの電圧が使用されます。 ノイズを処理するには、V0 と V1 を十分に分離する必要があります。

受信機は、しきい値電圧 (Vth = (V0 V1) / 2) を使用して、受信電圧をビットにマッピングします (電圧

このレッスンの信号

送信信号は一定時間保持された固定電圧の波形です。 連続信号は離散時間サンプルによって表されます。 サンプルレート (1 秒あたりのサンプル数) は、送信者と受信者によって合意されます。 サンプル間隔 はサンプル間の時間です。

クロック送信

送信者と受信者はクロックレートについて合意する必要があります。ビットはクロック遷移時に送信されます。 Samples_per_bit は、ビットあたりのサンプル数です。受信機は、受信したサンプルの遷移からクロック エッジを推測します。

課題:

  1. クロック同期: 送信側と受信側のクロックは異なる場合があります。 解決策: 検出された遷移に基づいて受信機でタイミングを適応させます。
  2. 頻繁な遷移の確保: クロックの回復に必要です。解決策: ラインコーディング (例: 8b/10b)。

クロックとデータのリカバリ

受信側のクロックは送信側のクロックよりわずかに速いか遅い場合があります。 受信機は、遷移に基づいてサンプリング インデックスを動的に調整します。

  • 現在ポイントと前のポイントの間の中間サンプルが現在のサンプルと同じの場合 (サンプリングが遅すぎる): インデックスをsamples_per_bit - 1 だけ増分します。
  • 途中のサンプルが 異なる (サンプリングが早すぎる) の場合:samples_per_bit 1 ずつ増分します。
  • トランジションがない場合:samples_per_bit ずつ増加します。

初期補正は、送信開始時に 0 と 1 を交互に繰り返すトレーニング シーケンスによって支援されます。

8b/10b によるラインコーディング

8b/10b は DC バランスと頻繁な遷移に対処します。 8 ビットのシンボルを 10 ビットの送信シンボルにマッピングし、次のことを保証します。

  • 0 または 1 の最大ラン数は 5 ビットです。
  • 任意のサンプルにおける 1 カウントと 0 カウントの最大差は 6 です。
  • 特別な 7 ビット シーケンスにより、パケット境界検出が可能になります。

エンコードプロセス:

  1. パケットデータはバイトに分割されます。
  2. 各バイトは 10 ビットのシンボルにマッピングされます。
  3. パケットは、トレーニング シーケンスと同期用の SYNC パターンでフレーム化されます。

コミュニケーションの抽象化

通信システムには、マッパー (ビットから信号)、デマッパー (信号からビット)、チャネル コーディング (誤り訂正)、チャネル デコーディングといったいくつかのモジュールが含まれます。メッセージはパケットに分割され、複数のリンクを介して送信されます。 3 つの主要な抽象化は、パケットビット、および シグナルです。 この本は、これらと通信ネットワーク内での相互作用に焦点を当てています。

エラー訂正コードを使用したビットエラーへの対処

この章では、通信チャネルや記憶媒体における避けられないビットエラーに対処するための冗長性の追加に焦点を当て、信頼性の高いデジタル通信のための技術について説明します。 中心となる概念はチャネルコーディングです。送信側でエンコードし、受信側でデコードしてエラーを修正したり、修正不可能なエラーを検出したりします。 この章では、エラー訂正 コード、特に線形ブロック コードと (後の) 畳み込みコードに焦点を当てます。

ビットエラーとBSC

バイナリ対称チャネル (BSC) モデルは、単一パラメータ ε (ビット反転確率) を使用してビット エラーを特徴付けます。送信されたビットは、他のビットとは独立して、確率 ε で反転します。 ε は経験的に推定できます。 サイズ S ビットのパケットのパケット エラー確率 (PER):

PER = 1 - (1 - ε)^S (5.1)

ε

実際のチャネルでは、バースト エラーが発生する可能性があります。この場合、エラーの確率は履歴に依存します (最近のビットにもエラーがあった場合はより高くなります)。

最も単純なコード: 繰り返し

繰り返しコードは、ビットbbnコピーとしてエンコードします。 コードレートは 1/n です。 最尤復号 では、受信したコードワードから最も可能性の高いメッセージを選択します。 BSC の場合、これは、受信したコードと共通するビットが最も多いコードワードを選択することを意味します。

繰り返しコードの復号エラー確率 (原文の式 5.3 を参照)。確率はコード レートとともに指数関数的に減少しますが、オーバーヘッドが高いため非効率です。

エンベディングとハミング距離

2 つの n ビット ワード間の

ハミング距離 (HD) は、異なるビット位置の数です。単一誤り訂正 (SEC) の場合、任意の 2 つの有効なコードワード間の HD は少なくとも 3 である必要があります。最小ハミング距離 D を持つコードは、D-1 エラーを検出し、フロア(D/2 -1) エラー。

線形ブロック符号とパリティ計算

線形ブロック コード (n, k) は、メッセージ ビットに対する線形関数 (加重和) を使用して、k ビットのメッセージを n ビットのコードワードにマッピングします。 代数ブロック コード は、ブロック内でそのような演算を実行します。 (n,k,d) コードは、最小ハミング距離「d」を持つブロック コードを示します。コードレート = k/n.

線形コード では、任意の 2 つのコードワードの合計もコードワードである必要があります。 すべてゼロのコードワードは、どの線形コードにも存在します。線形ブロック コードの最小ハミング距離は、ゼロ以外のコードワードの最小の重み (1 の数) に等しくなります。 バイナリ線形コードは、モジュロ 2 演算 (ガロア体 F2) を使用します。

方形パリティ SEC コード

パリティ は、ビットのモジュロ 2 の合計です。 偶数パリティ コード は、各メッセージにパリティ ビットを追加し、コードワードに偶数パリティを持たせます。これにより、単一エラー (HD=2) が検出されます。

方形パリティ コード は、k ビットを r x c 配列に配置し、行パリティと列パリティを追加します。コードワード: メッセージ行パリティ列パリティ。長さ: n = rc r c。このコードは SEC コード (HD=3) です。 デコードには、行と列のパリティをチェックし、両方のパリティがエラーを示している場合は対応するビットを修正することが含まれます。

SEC コードにはパリティ ビットが何ビット必要ですか?

あらゆる線形コードは、体系的コード (メッセージ ビットの後にパリティ ビットが続く) に変換できます。 SEC の場合、パリティの組み合わせの数 (2^(n-k)) は、修正可能な状況の数 (n 1) 以上でなければなりません:

n 1 ≤ 2^(n-k) (5.6)

パリティ ビット数は、メッセージ ビットに応じて少なくとも対数的に増加します。

ハミングコード

ハミング コード は、対数パリティ ビット増加を伴う効率的な SEC コードです。 各パリティ ビットは複数のデータ ビットを保護し、単一のエラーは固有のパリティ エラーの組み合わせを生成します。

シンドローム ビット (Ei) は、受信側でパリティをチェックすることによって計算されます。シンドローム ビットの組み合わせは、エラーのあるビット (存在する場合) を示します。

ハミングコードの構築にはロジックはありますか?

ハミングコードの構築:

  1. 2 の累乗であるインデックス (1、2、4、8、...) にパリティ ビットを割り当てます。
  2. 残りのインデックスにデータ ビットを割り当てます。
  3. データ ビット di は、index(pj) がindex(di) に寄与する場合に限り、pj のパリティ計算に含まれます。 >) バイナリ表現 (ビット単位の AND は非ゼロ)。

2 進数として扱われるシンドローム ビット ((7,4) の例では E3E2E1) は、修正するビットのインデックスを与えます。

注: これは Web 開発に必要な単なる情報です。 Sysops の場合、ネットワークとその基礎は 2 学期制のコースです。

以上がインターネットはどのように機能するのでしょうか?パート 2の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptの文字列文字を交換しますJavaScriptの文字列文字を交換しますMar 11, 2025 am 12:07 AM

JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

独自のAjax Webアプリケーションを構築します独自のAjax Webアプリケーションを構築しますMar 09, 2025 am 12:11 AM

それで、あなたはここで、Ajaxと呼ばれるこのことについてすべてを学ぶ準備ができています。しかし、それは正確には何ですか? Ajaxという用語は、動的でインタラクティブなWebコンテンツを作成するために使用されるテクノロジーのゆるいグループ化を指します。 Ajaxという用語は、もともとJesse Jによって造られました

独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか?独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか?Mar 18, 2025 pm 03:12 PM

記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか?ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか?Mar 18, 2025 pm 03:14 PM

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか?ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか?Mar 18, 2025 pm 03:16 PM

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

jQueryマトリックス効果jQueryマトリックス効果Mar 10, 2025 am 12:52 AM

マトリックスの映画効果をあなたのページにもたらしましょう!これは、有名な映画「The Matrix」に基づいたクールなJQueryプラグインです。プラグインは、映画の古典的な緑色のキャラクター効果をシミュレートし、画像を選択するだけで、プラグインはそれを数値文字で満たされたマトリックススタイルの画像に変換します。来て、それを試してみてください、それはとても面白いです! それがどのように機能するか プラグインは画像をキャンバスにロードし、ピクセルと色の値を読み取ります。 data = ctx.getimagedata(x、y、settings.greasize、settings.greasize).data プラグインは、写真の長方形の領域を巧みに読み取り、jQueryを使用して各領域の平均色を計算します。次に、使用します

シンプルなjQueryスライダーを構築する方法シンプルなjQueryスライダーを構築する方法Mar 11, 2025 am 12:19 AM

この記事では、jQueryライブラリを使用してシンプルな画像カルーセルを作成するように導きます。 jQuery上に構築されたBXSLiderライブラリを使用し、カルーセルをセットアップするために多くの構成オプションを提供します。 今日、絵のカルーセルはウェブサイトで必須の機能になっています - 1つの写真は千の言葉よりも優れています! 画像カルーセルを使用することを決定した後、次の質問はそれを作成する方法です。まず、高品質の高解像度の写真を収集する必要があります。 次に、HTMLとJavaScriptコードを使用して画像カルーセルを作成する必要があります。ウェブ上には、さまざまな方法でカルーセルを作成するのに役立つ多くのライブラリがあります。オープンソースBXSLiderライブラリを使用します。 BXSLiderライブラリはレスポンシブデザインをサポートしているため、このライブラリで構築されたカルーセルは任意のものに適合させることができます

Angularを使用してCSVファイルをアップロードおよびダウンロードする方法Angularを使用してCSVファイルをアップロードおよびダウンロードする方法Mar 10, 2025 am 01:01 AM

データセットは、APIモデルとさまざまなビジネスプロセスの構築に非常に不可欠です。これが、CSVのインポートとエクスポートが頻繁に必要な機能である理由です。このチュートリアルでは、Angular内でCSVファイルをダウンロードおよびインポートする方法を学びます

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。