IEEE 802.2逻辑链路控制层(以太网)是否是全双工的?

问题描述 投票:1回答:1

我有一种情况,我使用pcap_sendpacket()将数据包放在LLC层的线路上,同时我使用带有相关回调函数的pcap_dispatch()接收数据包。发送和接收在不同的执行线程中发生。

我观察到当传入的数据包速率特别高时,我没有看到我的传出数据包出现在线路上(使用wireshark)。但是,我也没有看到pcap_sendpacket()失败(返回-1)。是否有可能连接不是全双工,即如果网络连接的带宽已满,那么传出的数据包可能会以某种方式无限期地阻塞?

c pcap raw-ethernet
1个回答
1
投票

我有一种情况,我使用pcap_sendpacket()将数据包放在LLC层的线上

这不是数据包放在线路上的层 - 它们被放在LLC层下面的数据链路层的线路上;在以太网上,它位于802.3层,而不是802.2层。

IEEE 802.2逻辑链路控制层(以太网)是否是全双工的?

它既不是全双工也不是半双工。

它也不是以太网;它可以在以太网上运行,但它也可以在FDDI或令牌环或IEEE 802.11或...之上运行。

也许您正在考虑IEEE 802.3,即以太网?如果是这样,则有以太网的全双工和半双工版本。

我观察到当传入的数据包速率特别高时,我没有看到我的传出数据包出现在线路上(使用wireshark)。

以太网适配器不接收自己的数据包;如果主机发送数据包,并且该主机上的代码正在发送数据包的适配器上捕获,那是因为操作系统的网络堆栈接收正在发送的数据包并将其作为输入提供给数据包捕获机制,而不是因为数据包您正在捕获的网络适配器收到了。

也许数据包到达的速度太快,数据包接收线程无法看到它们?使用pcap_stats()查看是否有丢弃的数据包。

© www.soinside.com 2019 - 2024. All rights reserved.