ipv4 和ipv6的一些特殊地址

本文详细介绍了IPv4和IPv6的地址分类与特殊用途,包括私网地址、广播地址、保留地址及组播地址的范围。同时,对IPv4的A、B、C、D、E类地址进行了划分说明,并解释了IPv6的全局单播、本地单播、链路本地及组播地址的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ipv4:

私网地址:10.0.0.0-10.255.255.255(第一个为00001010的)

                   127.16.0.0-127.31.255.255(开头为01111111.0001XXXX的)

                   192.168.0.0-192.168.255.255(这个太好记住了,学校各种校内网就用这个)

ps:一般来说10开头的都是大型网络地址,127是中型,以此类推(突然醒悟为啥校园网是192.168)

通用广播地址:255.255.255.255(有人记不住吗?)

ps:所谓广播地址,就是除了主机地址意外,全部为1

保留地址:127.0.0.0-127.255.255.255(127.0.0.1也叫回送地址)

ps:网络号127 不可用于任何网络,用做循环测试用的。

ps*2:特殊保留地址:169.254.X.X

169.254.X.X是Windows操作系统在DHCP信息租用失败时自动给客户机分配的IP地址。由于网络连接问题(网线问题),DHCP服务器(其实就是Modem,路由器,或提供共享上网的主机)问题等),而令DHCP信息租用失败。

附录ipv4地址划分:

A: 0.0.0.0-127.255.255,其中段0和127不可用

B: 128.0.0.0-191.255.255.255

C: 192.0.0.0-223.255.255.255

D: 224.0.0.0-239.255.255.255

E: 240.0.0.0-255.255.255.255,其中段255不可用

ipv6

 

0:0:0:0:0:0:0:0 (::) 相当于IPv4 地址0.0.0.0通常在使用有状态DHCP 配置时,用作主机的源地址。

0:0:0:0:0:0:0:1 (::1) 相当于IPv4 地址127.0.0.1。

0:0:0:0:0:0:192.168.100.1 在同时支持IPv4和IPv6 的网络中,从IPv4 地址转换而来的IPv6地址通常这样书写。

2000::/3 全局单播地址范围。

FC00::/7 唯一的本地单播地址范围。

FE80::/10 链路本地单播地址范围。

FF::/8 组播地址范围。

 

组播的附录:FF+标志+范围

1.组播为FF开头

2.第三个字节如果为0是指永久分配    如果为1为临时(这就是第三字节一般为0)

3.范围:

节点本地 1     链路本地 2     站点本地 5      组织本地 8      全局范围 E

 

3FFF:FFFF::/32 保留举例和编写文档时使用。

2001 :0088: :/32 保留举例和编写文档时使用。

FF02::1:FF00:0/104   + 单播IPv6最后24比特   (请求节点组播地址(用于重复地址检测还有邻居地址解析等))

2002::/16 保留供6to4 隧道技术使用。6to4 隧道技术是一种从IPv4 迁移到IPv6 的方法,让IPv6 分组能够通过IPv4 网络进行传输,而无需配置显式的隧道。

6to4隧道技术解释:6to4是一种IPv6转换传输机制,是将IPv6的数据包直接封装在IPv4的数据包中,并通过内嵌于IPv6地址的IPv4地址信息实现无需显式配置隧道就可以直接在IPv4网络上传输。同时一种特殊配置的中继路由允许其能与原生IPv6网络进行通信。

附录:http://weibo.com/vinsoney

ps:由于本人巨菜ipv6全程转录,加强记住

 

ipv4附上特殊地址一图:

 

### Java中IPv4IPv6地址之间的转换 对于Java中的网络编程而言,处理不同版本的IP地址是一个常见的需求。Java提供了`InetAddress`及其子类`Inet4Address``Inet6Address`用于表示IPv4IPv6地址[^1]。 为了实现IPv4IPv6以及相反方向的转换,在某些特定场景下可以采用映射方式。然而需要注意的是,标准库并不直接支持两者间的互转操作;通常情况下,这种转换指的是将IPv4地址嵌入至IPv6地址空间之中(即IPv4-mapped IPv6 address),反之亦然。下面给出一段简单的代码示例展示如何创建这样的映射: ```java import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetAddress; public class IPConverter { public static InetAddress convertToMappedV6(Inet4Address v4Addr) throws Exception { byte[] addr = new byte[16]; System.arraycopy(new byte[12], 0, addr, 0, 12); System.arraycopy(v4Addr.getAddress(), 0, addr, 12, 4); return Inet6Address.getByAddress(null, addr); } public static Inet4Address extractFromMappedV6(Inet6Address v6Addr) throws Exception { byte[] addr = v6Addr.getAddress(); if (isIpv4Compatible(addr)) { return (Inet4Address) Inet4Address.getByAddress(Arrays.copyOfRange(addr, 12, 16)); } else { throw new IllegalArgumentException("Not an IPv4-mapped IPv6 address"); } } private static boolean isIpv4Compatible(byte[] bytes) { for (int i = 0; i < 12; ++i) { if (bytes[i] != 0) return false; } return true; } } ``` 上述代码展示了两种主要的功能:一是将给定的IPv4地址对象转化为对应的IPv4-mapped IPv6形式;二是从一个被认为是IPv4-mapped类型的IPv6地址实例中提取原始的IPv4部分并返回一个新的IPv4地址对象。这里的关键在于理解这些特殊格式的二进制表达方式,并据此编写相应的解析逻辑。 当涉及到实际应用时,请注意以下几点事项: - 上述方法适用于理论上的地址转换,但在真实环境中应当谨慎考虑是否真的需要执行此类变换。 - 对于大多数应用程序来说,保持各自协议栈内的通信更为合理——也就是说尽量让IPv4流量走纯IPv4路径,同样地对待IPv6也是如此。 - 如果确实存在跨版本的需求,则更推荐的做法可能是利用双栈技术或是专门设计的支持混合模式的服务端点来进行适配工作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值