首页 > 解决方案 > .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 存储库浏览器中,我了解结构IdAdapterUnicastAddress是通过将PrefixOriginOS 数据编组为 C# 类/类型来分配的。无论如何,我现在不知道如何确定应该将哪个枚举值应用于给定的 IP。

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

是否可以通过简单地考虑前缀长度来完成?如果不是,我如何确定PrefixOrigin应该为给定 IP 分配哪个值?

标签: networking.net-coredhcpsubnet

解决方案


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

手动:有人将其键入控制面板中的适配器配置 GUI 或使用例如netsh或类似方法进行设置。

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

DHCP:当 DHCP 服务器自动分配 IP 地址时,几乎所有家庭和办公室网络都是这种情况(但有时不是在数据中心网络上!),这就是您可以判断的方式。

路由器广告:IPv6 有一个自动配置系统,它应该取代 DHCP。为简单起见,将其视为在功能上与字段的 DHCP 值相同。


推荐阅读