問題タブ [data-link-layer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
270 参照

networking - ネットワーク層 LAN ネットワーク

ネットワーク層であるルーターから別のルーターにパケットを送信し、パケット サイズがルーターの MTU (最大転送可能単位) より大きい場合、パケットをフラグメント化する必要があります。私の質問は次のとおりです。最後のフラグメントにパディング ビットを追加する必要があるとします。次に、パディング ビットをどこ (LSB または MSB) に追加し、宛先ルーターはパケット ビットまたはパディング ビットをどのように区別しますか?

0 投票する
1 に答える
99 参照

network-protocols - ビット スタッフィング カスタム フレーム タグ

私はビットスタッフィングに関して少し混乱しています。

フレームタグがシーケンスに表示されない場合の手順は理解できますが、フレームタグがフレーム内に発生するとどうなりますか?

例えば:

フレーム タグが100001あり、ビット スタッフィングのルールが 4 つのゼロごとに 1 である場合、シーケンスの結果は0110100001100?

0 投票する
1 に答える
1041 参照

networking - ビットスタッフィングヘルプ。GATE-CS セット 3 2014

ビット スタッフィング ベースのフレーミング プロトコルでは、8 ビットの区切り文字パターン01111110. スタッフィング後の出力ビット文字列が01111100101の場合、入力ビット文字列は

与えられた正解はBです。

私の質問は1、区切り文字に 6 つの連続した 1 がある場合でも、左から 5 つの 1 の後に追加される理由です。

10 を避けるために、1 が 6 つ連続した場合にのみ加算すると思います。

私が間違っている場合は修正してください。

0 投票する
2 に答える
1053 参照

c - リンク層マルチキャストについて

私はネットワークプログラミング、特にL2にかなり慣れていません。

C で LLDP(Link Layer Discovery Protocol) の実装に取り​​組んでいます。リンク層を介したマルチキャストが、直接接続された LAN デバイスで機能することを理解しています。私の目的は、VLAN 間で動作させることです (例: 10.1.1.0 プールのデバイスは、192.168.1.0 のデバイスから送信された L2 マルチキャスト パケットを受信できる必要があります)。これを達成する方法はありますか..またはここで重要なものが欠けていますか?

LLDP の Wireshark wiki は次のように述べています。

LLDP データ ユニット (LLDPDU) は、宛先 MAC アドレス01:80:c2:00:00:0eに送信されます。このアドレスは、「LLDP_Multicast」アドレスとして定義されます。このアドレスは、個々の LAN に制限されるプロトコル用に IEEE によって予約されたアドレスの範囲内で定義されます。AN LLDPDU は、IEEE Std 802.1D-2004 に準拠する MAC ブリッジ (スイッチなど) によって転送されません。

  1. つまり、スイッチまたはルーターは、別のサブネット内の別のデバイスからのリンク層マルチキャスト パケットを単に無視するということですか? リンク層を介したマルチキャストは、直接接続されたデバイスでのみ機能しますか?

  2. データリンク層マルチキャストアドレスの範囲は?

0 投票する
0 に答える
435 参照

serial-port - CRC での HDLC フラグの回避

シリアル ポート (rs232) を使用して 2 つのボード間で通信しようとしています。要件の 1 つは、どのタスクがデータを送受信しているかを区別できるようにすることです。そのため、タスクを識別するためのヘッダー フィールドが必要です。

制御フィールドをあまり気にせずに、非同期 HDLC フレームを使用する予定です。このように見えます

フラグ | EOF(1ビット)/シーケンス番号(7ビット) | タスク | 長さ | 情報 (長さバイト) | CRC(16ビット) | 国旗

フラグ値は 0x7E です。

シーケンス番号とタスクと長さの値を 0x7E 未満に制限できます。そのため、情報と CRC のみが 0x7E 値を持つ可能性があり、これをバイト スタッフィングに置き換えます。

ほとんどどこでも、人々は情報フィールドのバイトスタッフィングについてのみ話していると読んでいます。CRC で 0x7E を取得することはできませんか。どうすればそれを処理できますか。最終的に 0x7E になった場合は、CRC のバイト スタッフィングも行う必要があります。

0 投票する
1 に答える
1136 参照

android - ARP によるネットワーク検出

質問するのが適切なコミュニティかどうかはわかりません (ちなみに、私はそう思います)。周囲にいくつのデバイスがあるかを知ることを含むアンドロイドのプロジェクトについて考えていました。それを「発見」する方法はありますか?私の考えは次のようなものです:

  1. 私のデバイスは、ARP (または何らかのデータ リンク プロトコル) を介してある種のブロードキャスト ping を送信します。
  2. すべてのデバイスがその ping に応答します
  3. 私のデバイスは応答 ping の数を数えており、これが周囲のデバイスの数です。

「ネットワークに接続されているデバイスの数」ではなく、「周囲のデバイスの数」を知っているため、「wifi接続を超えて」いる必要があるため、ARPまたは一部のデータリンクプロトコルと言っています

前もって感謝します!

0 投票する
2 に答える
212 参照

networking - 特定のサブネットのスイッチのテーブルを初期化するメカニズムは何ですか?

どのノードにもARP キャッシュがなく、スイッチ テーブルが空で、ソースと宛先の IP アドレスが (DNS を使用して) わかっていると仮定します。また、すべてのノードは同じサブネットにあると見なされます。n1 が n2 などの特定のノードにパケットを送信する場合、n2 の MAC アドレスが必要です。
この場合、対応するMACアドレスを取得するためにARPリクエストが送信されると思います。しかし、私の友人は、n1がメインフレームをブロードキャストし、すべてのノードがネットワーク層までフレームを抽出して、パケットが自分のためのものかどうかを知ると言いました。
最初の方法が 2 番目の方法で実装されるかどうかによって、switch のテーブルが更新される方法が変わります。それで、誰かが私の混乱を明確にすることができますか?

0 投票する
2 に答える
1425 参照

vhdl - 並列 Crc-32 計算 イーサネット 10GE MAC

VHDL でイーサネット 10GE MAC デザインを生成しました。現在、CRCを実装しようとしています。VHDL で 64 ビットの並列 CRC-32 ジェネレーターを使用しています。

仕様:
- データ バスは 64 ビット
- 制御バスは 8 ビット (データ バイトを検証)

問題:
たとえば、着信パケットの長さが 14 バイトであるとします (パディングがない場合)。

CRC は 1 クロック サイクルで最初の 8 バイトに対して計算されますが、残りの 6 バイトに対して CRC を計算しようとすると、ゼロが付加されているために結果が正しくありません。

64 ビットの並列 CRC ジェネレーターを使用して、任意の長さのバイト パケット長の CRC を生成する方法はありますか?

試したこと:
さまざまな並列 CRC ジェネレーター (8 ビット並列 CRC、16 ビット並列 CRC ジェネレーターなど) を使用しました。しかし、それは多くの FPGA リソースを消費します。64 ビットの並列 CRC ジェネレーターのみを使用してリソースを節約したいと考えています。