我有一种情况,我使用pcap_sendpacket()
将包放在LLC层的线路上,同时使用带有关联回调函数的pcap_dispatch()
接收包。发送和接收发生在不同的执行线程中。
我观察到当传入数据包速率特别高时,我没有看到我的传出数据包出现在线路上(使用wireshark)。但是,我也没有看到pcap_sendpacket()
失败(返回-1)。是否可能连接不是全双工的,即如果网络连接的带宽已满,那么传出的数据包可能会以某种方式无限期地阻塞?
最佳答案
我有一种情况,我使用pcap_sendpacket()将数据包放到LLC层的线路上
这不是数据包放在电线上的层-它们放在数据链路层的电线上,在LLC层下面;在以太网上,是在802.3层,而不是802.2层。
IEEE 802.2逻辑链路控制层(以太网)是全双工的吗?
它既不是全双工也不是半双工。
它也不是以太网;它可以运行在以太网之上,但也可以运行在FDDI或令牌环或IEEE 802.11或。。。。
也许你在想IEEE 802.3,哪一个是以太网?如果是的话,以太网有全双工和半双工两种版本。
我观察到当传入数据包速率特别高时,我没有看到我的传出数据包出现在线路上(使用wireshark)。
以太网适配器不会接收它们自己的数据包;如果主机发送数据包,并且该主机上的代码正在数据包发送的适配器上捕获,这是因为操作系统的网络堆栈接收正在发送的数据包,并将其作为数据包捕获机制的输入,而不是因为数据包是由上的网络适配器接收的你在捕捉的。
可能包到达太快,包接收线程看不到它们?使用pcap_stats()
查看是否有任何数据包被丢弃。
关于c - IEEE 802.2逻辑链路控制层(以太网)是全双工吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55521141/