.NET Core PrefixOrigin逻辑

问题描述

我正在将一些Windows代码移植到Linux。 Windows对象的部分属性未在.net core的linux实现中实现。 UnicastIPAddressInformation.PrefixOrigin就是其中之一。

.NET Core代码文档显示将其定义为:

用于标识单播IP地址前缀的来源的值。

MSDN将其定义为:

指定IP地址网络前缀的定位方式。

我正在.NET Core存储库浏览器中搜索此属性的实现,该属性返回以下枚举:

public enum PrefixOrigin
{
    Other = 0,Manual,WellKnown,Dhcp,RouterAdvertisement,} 

在.NET Core存储库浏览器中找不到实现UnicastIPAddressInformation的类。在.NET Framework回购浏览器中,我了解通过将OS数据编组为C#类/类型,为结构IdAdapterUnicastAddress分配了PrefixOrigin。无论如何,我现在不知道如何确定应该将哪个枚举值应用于给定IP。

我几乎不了解计算机网络,我正在研究什么是IP前缀以及如何弄清楚它。我可以找到的实际示例是this one。据我了解,但是,它提供了一种计算前缀长度的方法。我仍然需要知道如何确定给定IP的PrefixOrigin枚举值。

是否可以通过简单地考虑前缀长度来完成?如果没有,如何确定给定IP的哪个PrefixOrigin值?

解决方法

该字段的值告诉您如何确定系统上已配置(或自动配置)的IP地址。

手册:有人将其键入控制面板中的适配器配置GUI或使用例如netsh或类似的内容。

众所周知来自知名来源。我不确定Windows是否使用此值。在没有其他任何配置的情况下分配了169.254.x.x地址并且不存在DHCP服务器时,可以使用它。

DHCP :当DHCP服务器自动分配IP地址时(几乎在所有家庭和办公室网络中都是这样(但有时在数据中心网络中则没有这种情况)),这就是您可以知道的。

路由器广告:IPv6具有一个自动配置系统,该系统应该替代DHCP。为简单起见,请认为这与字段的DHCP值在功能上相同。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...