`PCAP_IF_UP`和`PCAP_IF_RUNNING`有什么区别?

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

我正在考虑使用 pcap 来获取有关可用网络接口的信息。查看

pcap_findalldevices
的文档显示了描述每个接口的标志列表。不过,我感兴趣的两个没有得到充分解释:

PCAP_IF_UP
:设备是否启动时设置

PCAP_IF_RUNNING
:设置设备是否正在运行

两者有什么区别?什么时候设置

PCAP_IF_UP
而不设置
PCAP_IF_RUNNING
,反之亦然?

pcap libpcap
1个回答
0
投票

这些含义主要由操作系统定义。 “启动”和“运行”的概念最初出现在 BSD 网络堆栈的 UN*X 中; 4.2BSD 网络实施说明文档说

接口在分配系统资源并在其管理的设备上发布初始读取后设置

IFF_RUNNING
。该状态位用于避免接口地址更改时出现多次分配请求。

“接口”指的是设备驱动程序,而不是硬件。他们没有对

IFF_UP
说太多,只是表示“接口设备已启动”,对于“启动”的某些未指定的含义。 “上”与“下”主要是配置设置;接口可以配置为“向上”或“向下”。

大多数其他 UN*X 网络堆栈也有这些标志。

在 Windows 上,libpcap 尝试匹配该概念。

何时设置

PCAP_IF_UP
而不设置
PCAP_IF_RUNNING
,反之亦然?

如果接口已配置为“up”但尚未完全初始化以运行,则

PCAP_IF_UP
将设置为不带
PCAP_IF_RUNNING
PCAP_IF_RUNNING
如果接口未启动,则不会设置。

这些标志主要在 libpcap 内部用于决定将哪些接口放在接口列表的开头 - “up and running”位于“up”之前,“up”位于“not up”之前,因为在未启动的接口上进行捕获“正在运行”但可能会失败,因为它无法打开,或者在运行之前不会给您任何数据包,并且在非“启动”的接口上捕获更有可能失败,因为它无法打开并且不会给你任何包裹。

我会看看文档是否可以改进。

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