gpt4 book ai didi

c# - C# 中的 IPv6 地址范围

转载 作者:行者123 更新时间:2023-11-30 16:31:37 26 4
gpt4 key购买 nike

我正在编写一个套接字服务器,它需要通过 IP 允许/限制的能力,并且我正在努力使其与 IPv4 和 IPv6 兼容。

我非常了解 IPv4 原理,例如,我可以允许 192.168.0.0/255.255.255.0 满足所有 192.168.0.* 地址的需求,我的代码基于 http://blogs.msdn.com/b/knom/archive/2008/12/31/ip-address-calculations-with-c-subnetmasks-networks.aspx .

但是,这如何与 IPv6 一起工作?即我如何使用该协议(protocol)处理范围?

最佳答案

按照惯例,IPv6 不像 IPv4 那样使用子网掩码格式。但是,您仍然没有理由不能以这种方式想象它。

IPv6 中/64 的等效“子网掩码”是 ffff:ffff:ffff:fffff:0:0:0:0。只是不要尝试向任何 IPv6 用户引用它,因为没有人会知道你的意思。并且不要尝试将其粘贴到任何 IPv6 配置中——人们使用过/64、/48、/32 等前缀(任何小于/64 的前缀,例如/96,很少使用在 LAN 环境中使用,并正式弃用。)

这是我刚刚写的一个方便的 ASCII 艺术图表,可以帮助您理解 IPv6 前缀:

2001:db8:1000:2000:3000:4000:5000:6000/32
<--net--><-------------------host---->

2001:db8:1000:2000:3000:4000:5000:6000/48
<--network--> <--------------host---->

2001:db8:1000:2000:3000:4000:5000:6000/64
<--network-------> <---------host---->

2001:db8:1000:2000:3000:4000:5000:6000/96
<--network------------> <----host---->

希望以上内容与您想象 IPv4 子网的方式相同(老实说,几乎完全一样)。事实上,计算 IPv6 在你的头脑中稍微容易一些,因为 IPv6 使用十六进制,所以如果你坚持使用可被 4 整除的前缀,你就可以在 nybble(即数字)边界处划分你的子网——这是你不能用 IPv4 做的!

我承认我的回答中没有任何特定于 C# 的信息。尽管如此,它应该让您找到正确的轨道:指定前缀长度。

关于c# - C# 中的 IPv6 地址范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4765548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com