问题标签 [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.
networking - HDLC 协议中的 REJECT 和 SELECTIVE REJECT 有什么区别?
我正在阅读 HDLC(高级数据链路控制)协议,其中帧的控制字段具有“类型位”。类型位 1 用于 REJECT,它基本上是一个否定确认数据包,要求重新传输损坏的帧。现在我对此没有问题。但类型位 3 用于选择性拒绝。我用谷歌搜索它,它声称与 REJECT 相同。这让我很困惑。什么是选择性拒绝?
c++ - 使用 C++ 中的开源应用程序捕获 Qualcomm Quectel 调制解调器的诊断帧数据
我想在 Linux 中捕获(并且可能剖析)从 Qualcomm Quectel 调制解调器(EC25)获得的诊断数据。我已经使用一些开源项目(例如mobile-insight和SnoopSnitch )在 android 环境中使用 Qualcomm 芯片组的移动设备完成了此操作。所以我可以剖析几乎所有从空中接口获得的诊断数据,如RRC信令消息和......
现在,我需要一个 C++ 开源程序来从 Quectel 芯片组捕获诊断帧。我知道osmocom在这方面有类似的项目。那么最好使用的开源 C++ 应用程序是什么?(如果osmocom是最好的,请指导我那个项目,因为我在osmocom文档中有些模棱两可)
diagnostics - 高通调制解调器的诊断输出结构
我有一个 Qualcomm Quectel EC25 调制解调器,我可以将 AT-Commands 发送到该模块并接收响应。我使用 python 开源应用程序 ( qcsuper ) 存储这个调制解调器诊断字节,并进行一些代码操作。这是一个示例诊断字节:
21 00 00 0A 08 01 01 00 00 50 1C 00 04 00 03 03 FF FF 00 FF 11 90 02 00 00 10 00 00 00 EF 1F AA 4C 0B 1E 03 00 00 11 90 6 0 02 00 0 00 20 08 .. 02 00 B2 00 4F 00 C0 7E 01 00 D2 00 FD 00 C0 8E 00 00 C5 00 C5 01 C0 7E 01 00 BA 00 ... 00 00 00 00 14 7E 01 00 50 81 01 00 40 7D 01 0 ... 8D 00 00 48 8C 00 00 7E 00 00 00 7D 00 00 00 78 00 00
QCSuper 还可以自动运行 Wireshark 来剖析 RRC 信令消息。
我有过使用高通 Snapdragon 手机的经验,在收到字节后,我可以使用特定的结构对它们进行剖析。在 python-c++ 开源应用程序 ( mobile-insight )中指出了这种结构的一些模式,例如 diag 字节中的帧以98 00开头,时间戳和具有特定大小的帧类型紧随其后。7E也表示帧的结束。
现在,我想知道这个调制解调器诊断输出中是否有类似的结构以允许解剖?您能给我提供合适的文档或应用程序,例如 mobile-insight 吗?
networking - 数据链路层最常用的错误控制机制是什么?
我已经阅读了 3 种错误控制技术,即停止和等待 ARQ、返回 N ARQ 和选择性 ARQ 所有我想知道网络行业目前正在使用哪种技术......
有人可以给我任何链接以获取有关网络行业当前变化的最新信息。
谢谢
ip-address - 如果在 Contiki-NG 中给出 uip 地址,是否可以获得链接地址
我正在使用 Contiki-NG 开发一个项目,并且正在研究类似于防火墙的东西。我有一个接收 IP 地址 (uip_ipaddr_t) 的函数,我想知道如果它被检查为邻居,是否可以获得该节点的链接地址(linkaddr_t)。
先感谢您。
networking - 互联网真的能以 1500 字节运行吗?
MTU(最大传输单元)是可以传输的最大帧大小。当我们谈论 MTU 时,它通常是硬件级别的上限,并且适用于较低级别的层 - 数据链路和物理层。
现在,考虑到 OSI 层,无论上层的效率如何,或者它们应用了什么样的魔法酱,数据链路层总是会构造大小小于 1500 字节(或者 MTU 是什么)的帧和任何东西在“互联网”中将始终以该帧大小传输。
互联网的传输速率真的上限为 1500 字节吗?现在,我们看到 10-100 Mbps 甚至 Gbps 的速度。我想知道这样的速度,帧是否仍然以 1500 字节传输,这将意味着接收器处的大量碎片和重新组装。这种规模,上层是如何实现效率的?!
[编辑]
根据以下评论,我重新提出我的问题:
如果数据层以 1500 字节帧传输,我想知道接收器的上层如何处理如此巨大的传入数据帧。
例如:如果互联网速度为 100 Mbps,则上层必须处理 104857600 字节/秒或 104857600/1500 = 69905 帧/秒。网络层也需要重新组装这些帧。网络层如何能够处理这样的规模。
networking - 在数据链路层拦截数据包
我正在尝试使用 rust library 在数据链路层拦截(即消耗而不是捕获)数据包pnet
,但是它似乎没有拦截它们,只是读取它们。我不确定是我对网络缺乏了解还是其他原因
这是示例代码:
我试图拦截我的无线接口。我期望的是,当程序运行时,如果我尝试连接到某个网站,例如,会出现一些网络连接错误,因为浏览器(或客户端)永远不会收到数据包。
mac-address - 来自虚拟/集群 IP 地址的 ARP 响应
我有一个配置为与单个 IP 地址通信的专用硬件。但是我想与 SQL Server 可用性组的 2 台服务器通信(两者都是彼此的副本),所以我制作了一个由 2 台服务器组成的集群(Windows Server)。
例如 :
服务器 1 的 IP 地址:185.178.94.2
服务器 2 的 IP 地址:185.178.94.3
集群/侦听器 IP 地址:185.178.94.5
现在的问题是当硬件(配置为与 185.178.94.5 通信)发送 ARP 请求(即询问 185.178.94.5 的 MAC 地址)时,响应来自正确的服务器,但就像 185.178.94.2 有 MAC 地址ae:23:dc:4r:2w:5r 而不是像 185.178.94.5 那样具有 MAC 地址 ae:23:dc:4r:2w:5r。
硬件的 arp 表现在有条目
185.178.94.2 --- ae:23:dc:4r:2w:5r
代替
185.178.94.5 --- ae:23:dc:4r:2w:5r
如果我们使用普通笔记本电脑而不是我们的专用硬件,则相同的设置可以正常工作。
我想在这里提到的另一件事是在硬件的情况下,如果我们从其中一台服务器上拔下 LAN 电缆,那么数据包就会开始出现,并且硬件的 arp 表会更新为 185.178.94.5 的条目。
sliding-window - 滑动窗口协议
当我偶然遇到这个问题时,我正在浏览样本 CN QnAs。
由于窗口大小大于 1 且为奇数,因此所引用的协议必须是 Go-Back-N 协议,而不是 Selective Repeat。
在确定要丢弃哪些帧时,我是否也考虑了 ACK 帧?此外,正如 Forouzan 中所给出的,在任何时刻最多有一个计时器(用于第一个未完成的帧)正在运行。如果有人帮助我解决这个问题,我将不胜感激。另外,有人可以在下面留下类似问题的链接吗?
frame - 数据链路级传输
在链路级别,有关接收帧的响应从一个节点传递到另一个节点,或者一个节点正在等待来自路由器的响应,该路由器来自另一个路由器,等等?