问题标签 [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 - 网络层局域网

当我们在网络层从一台路由器向另一台路由器发送数据包并且数据包大小大于路由器的 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即使分隔符有六个连续的 1,也会在左起五个 1 之后添加。

我认为我们1只会在获得六个连续的 1 时添加,以避免出现 0。

如果我错了,请纠正我。

0 投票
2 回答
1053 浏览

c - 了解链路层多播

我对网络编程非常陌生,尤其是 L2。

我正在用 C 语言实现 LLDP(链路层发现协议)。我知道链路层上的多播适用于直接连接的 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”地址。该地址是在 IEEE为限制在单个 LAN 中的协议保留的地址范围内定义的。符合 IEEE Std 802.1D-2004 的 MAC 网桥(例如交换机)不会转发 LLDPDU。

  1. 那么这是否意味着交换机或路由器只是忽略来自另一个子网中另一个设备的链路层多播数据包?链路层上的多播是否仅在直接连接的设备上起作用?

  2. 数据链路层多播地址的范围是什么?

0 投票
0 回答
435 浏览

serial-port - 避免 CRC 中的 HDLC 标志

我正在尝试使用串行端口(rs232)在两块板之间进行通信。要求之一是能够区分哪个任务正在发送/接收数据。所以需要一个标题字段来识别任务。

我计划使用异步HDLC帧而不关心控制字段。看起来像这样

旗帜 | EOF(1bit)/Seq Number(7bits) | 任务 | 长度 | 信息(长度字节)| CRC(16 位) | 旗帜

标志值为 0x7E。

我可以将序列号和任务和长度值限制在 0x7E 以下。所以只有信息和 CRC 可能有 0x7E 值,我将用字节填充代替。

几乎在我读到的所有地方,人们都只谈论信息领域的字节填充。在 CRC 中是否不可能得到 0x7E。我该如何处理。如果我最终得到 0x7E,我是否也会为 CRC 做​​字节填充

0 投票
1 回答
1136 浏览

android - 使用 ARP 发现网络

我不知道这是否是正确的社区要求(顺便说一句,我认为是这样)所以如果这是题外话,请提前原谅我。我正在考虑一个 android 项目,该项目涉及了解周围有多少设备。有没有办法“发现”它?我的想法是这样的:

  1. 我的设备通过 ARP(或某些数据链路协议)发送某种广播 ping
  2. 每个设备都响应该 ping
  3. 我的设备计算有多少响应 ping,这就是周围设备的数量。

我说的是 ARP 或某些数据链路协议,因为它应该“超出 wifi 连接”,不知道“有多少设备连接到我的网络”,而是“我周围有多少设备”

先感谢您!

0 投票
1 回答
167 浏览

networking - DLL 中的循环冗余校验

比特流 11100110 将使用 CRC 方法传输。生成多项式是 X4+ X3 + 1。

  1. 实际传输的比特是多少?
  2. 假设在传输过程中左起第三位被反转。如何检测错误。
  3. 发送方和接收方如何知道生成多项式,请说明这一点。

解决方案 :

这里,FCS 将是 0110,因为 n = 4。所以实际传输的位是 >> 11100110 0110

我对问题 2、3 感到困惑。请回答我的 2、3 问题。谢谢你!

0 投票
1 回答
51 浏览

network-programming - OSI模型前四层如何访问/读/写/编程/监听?

我想知道所有网络舞蹈组件是如何工作的:我如何编程/读/写/访问原始和解析的数据:

  1. 物理层(通过 NIC)?
  2. 数据链路层?(例如,以便制作我自己的切换操作系统)
  3. 网络层?(例如,以便制作我自己的路由操作系统)
  4. 传输层?
0 投票
2 回答
212 浏览

networking - 给定子网的交换机表的初始化机制是什么?

假设在任何节点中都没有 ARP 缓存,并且交换表是空的,并且源和目标的 IP 地址是已知的(使用 DNS)。此外,所有节点都被认为在同一个子网中。如果 n1 想向特定节点发送数据包,比如 n2,它需要 n2 的 MAC 地址。
我认为在这种情况下,将发送一个 ARP 请求以获取相应的 MAC 地址。但是我的朋友说n1会广播主帧,所有节点都会提取帧直到网络层才能知道数据包是否是给他们的。
无论是第一种方法还是第二种方法都会改变switch中表的更新方式。那么,有人可以澄清我的困惑吗?

0 投票
2 回答
1425 浏览

vhdl - 并行CRC-32计算以太网10GE MAC

我已经用 VHDL 生成了以太网 10GE MAC 设计。现在我正在尝试实施CRC。我在 VHDL 中有一个 64 位并行 CRC-32 生成器。

规格:
- 数据总线为 64 位
- 控制总线为 8 位(用于验证数据字节)

问题:
假设我的传入数据包长度为 14 字节(假设没有填充)。

CRC 是针对一个时钟周期中的前 8 个字节计算的,但是当我尝试计算剩余 6 个字节的 CRC 时,由于附加了零,结果是错误的。

有没有一种方法可以使用 64 位并行 CRC 生成器为任何长度的字节数据包长度生成 CRC?

我尝试过:
我使用了不同的并行 CRC 生成器(8 位并行 CRC、16 位并行 CRC 生成器等)。但这会消耗大量 FPGA 资源。我想只使用 64 位并行 CRC 生成器来节省资源。