Skip to content

ipv4和ipv6


TLDR(省流)


IPV4:形如xxx.xxx.xxx.xxx的地址,xxx取值范围为0~255(端点0、255有特殊含义,一般取不到)

IPV6:IPv6地址通常表示为8组4个十六进制数,每组之间用冒号(:)分隔,例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。为了简化表示,IPv6地址允许省略前导零和使用双冒号来压缩连续的零段,但每个地址中双冒号只能出现一次。如前面那个就可以化简为2001:db8:85a3::8a2e:370:7334

省流结束

IPV4

基本概念

IP地址:IPv4地址由32位二进制数构成,通常分为4个字节(或称为8位组),每个字节范围从0到255,用点分十进制表示法表示,例如192.168.1.1。

子网掩码:用来指示IP地址中哪一部分是网络地址,哪一部分是主机地址。与IP地址一样,子网掩码也是32位的,网络部分用连续的1表示,主机部分用0表示。例如,255.255.255.0表示前24位是网络地址,后8位是主机地址。

子网划分

子网划分(Subnetting)是将一个较大的网络划分成若干个较小的网络的过程。它可以帮助组织内部管理IP地址、提高地址利用率、提高网络安全性和性能。通过改变子网掩码,可以将一个网络划分成多个子网。

如何计算

网络地址:通过将IP地址与子网掩码进行AND运算得到。例如,IP地址192.168.1.1与子网掩码255.255.255.0进行AND运算后得到网络地址192.168.1.0。

广播地址:将子网内的主机部分地址全部设置为1,用于在子网内广播消息。例如,对于子网掩码255.255.255.0,网络192.168.1.0的广播地址是192.168.1.255。

可用地址范围:网络地址和广播地址之间的地址用于分配给设备。继续上面的例子,192.168.1.1至192.168.1.254可用于分配。

CIDR表示法

CIDR(无类别域间路由)表示法是一种更灵活的表示IP地址和其对应子网掩码的方法,使用斜线后跟一个数字的形式,如192.168.1.0/24,其中"/24"表示前24位是网络地址,即子网掩码255.255.255.0。

CIDR(无类别域间路由)表示法中的子网掩码并不总是8的倍数。CIDR允许更灵活地分配IP地址,通过在IP地址后面添加斜线和一个数字(例如192.168.1.0/24)来表示。这个数字,称为前缀长度,表示网络地址部分的位数,它可以是从1到32之间的任何值,不仅仅是8、16或24这样8的倍数的值。

CIDR示例

192.168.1.0/24:这是比较常见的,表示子网掩码为255.255.255.0,网络部分占了24位。这意味着这个子网内可以有256-2=254个可用IP地址(减去的2个是网络地址和广播地址)。

192.168.1.0/25:这个例子中,子网掩码为255.255.255.128,表示网络部分占了25位。这样划分的子网可以容纳128-2=126个可用IP地址。这种情况下,192.168.1.0/24的地址空间被分成两个等大的子网。

192.168.1.0/30:在这种情况下,子网掩码为255.255.255.252,网络部分占了30位。这样的子网只能容纳4-2=2个可用IP地址,通常用于点对点链接。

为什么会有非8倍数的CIDR?

CIDR的设计目的是为了更有效地利用IP地址空间和更灵活地进行网络划分。通过允许任意长度的前缀,网络管理员可以根据实际需求创建大小不一的网络,而不是被迫使用传统的、固定大小的子网(如Class A、B或C网络)。这种灵活性有助于减少IP地址的浪费,特别是在IP地址越来越稀缺的今天。

总之,CIDR通过提供非8的倍数的子网掩码长度,大大增加了网络设计的灵活性,使得IP地址资源的利用更加高效。

注意事项

私有地址空间:某些IP地址范围被设计为在私有网络内使用,而不是在互联网上路由。这些包括10.0.0.0/8、172.16.0.0/12和192.168.0.0/16。

地址枯竭:由于IPv4地址空间的有限性,加之分配不均等等问题,IPv4地址正逐渐枯竭。为此,IPv6被设计出来,以支持更多的地址空间。

特殊用途的地址

标黄的是一些常见的地址(都不是公网ip)

点击图片可查看完整电子表格

IPV6

IPv6(Internet Protocol Version 6)是因特网下一代协议,旨在替代IPv4。随着设备数量的增加,IPv4地址资源的枯竭已成为互联网发展的一个主要瓶颈。IPv6设计之初就致力于解决地址空间不足的问题,并引入了多项新特性以提高网络性能和安全性。

IPv6的最显著特点是其庞大的地址空间。IPv6地址长度为128位,理论上可以提供约$3.4 \times 10^{38}$个唯一IP地址,远远超过IPv4的约43亿个地址。这个庞大的地址空间解决了地址耗尽的问题,并且能够满足未来可预见的所有网络设备的需求。

地址格式

IPv6地址通常表示为8组4个十六进制数,每组之间用冒号(:)分隔,例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。为了简化表示,IPv6地址允许省略前导零和使用双冒号来压缩连续的零段,但每个地址中双冒号只能出现一次。

另外,::ffff:1.2.3.4 格式叫做IPv4映射地址


IPv4位址可以很容易的转化为IPv6格式。举例来说,如果IPv4的一个地址为135.75.43.52(十六进制为0x874B2B34),它可以被转化为0000:0000:0000:0000:0000:FFFF:874B:2B34 或者::FFFF:874B:2B34。同时,还可以使用混合符号(IPv4-compatible address),则地址可以为::ffff:135.75.43.52。



由于同一非全局地址可能在同一范围的多个区域中使用(例如,在两条独立的物理链路中使用链路本地地址 fe80::1),而且一个节点可能连接到同一范围的不同区域的接口(例如,一个路由器通常有多个接口连接到不同的链路)。IPv6新增了区域ID(Zone ID)加以区分,或称作用域ID(Scope ID)。作用域ID仅用于本地链接,使用百分号追加在地址后面。其内容特定于操作系统,例如Windows使用数字 fe80::2%3 ,Linux使用网卡名字 fe80::2%eth0 。([7]) 在URI中使用时,百分号需要进行编码,例如 fe80::a%en1 应显示为 http://[fe80::a%25en1] 。


地址类型

IPv6有几种类型的地址,包括单播地址、多播地址和任播地址。IPv6不再使用广播地址,而是使用多播地址来实现类似的功能。

单播地址:指向网络中的一个接口,用于一对一通信。

多播地址:指向一组接口,通常位于不同的主机上,用于一对多通信。

任播地址:也指向一组接口,但数据包只被送达给这组接口中的任意一个,通常是最近的一个,用于负载均衡和冗余。

子网

IPv6同样有子网的概念,但与IPv4在处理方式上有所不同。在IPv6中,子网的划分和管理是通过IPv6地址结构的一部分来实现的,更具灵活性和扩展性。

IPv6地址结构

IPv6地址由128位组成,通常表示为8组每组4个十六进制数。这128位通常被分为两个主要部分:网络前缀和接口标识符。

网络前缀:用于识别特定的网络。它的长度可以变化,但通常是64位,前缀长度会在地址中通过斜杠后跟数字的形式表示,例如2001:db8::/64。

接口标识符:用于识别网络内的具体接口(通常是设备)。在大多数情况下,这部分也是64位,保证了网络内部设备的唯一性。

子网划分

在IPv6中,子网划分主要是通过调整网络前缀的长度来实现的。例如,一个组织可能被分配到一个2001:db8::/48的地址范围。该组织可以进一步将这个范围细分为更小的子网,比如通过将前缀扩展到56位(2001:db8:0:xx00::/56)或者64位(2001:db8:0:xx00::/64),其中xx可以是任何十六进制值,用来定义不同的子网。

子网的优势

IPv6的子网化提供了几个重要的优势:

简化的网络管理:通过逻辑地组织网络,简化了路由和管理任务。

安全性增强:不同的子网可以应用不同的安全策略,提高了网络的整体安全性。

更好的路由效率:有效的子网划分可以减少路由表的大小,提高路由效率和网络性能。

地址分配和管理

与IPv4相比,IPv6的庞大地址空间使得每个子网都可以分配到几乎无限数量的地址,从而消除了地址不足的问题,并简化了地址分配和管理的过程。使用SLAAC或DHCPv6可以进一步自动化地址的配置过程,减少了网络管理员的工作负担。

总的来说,IPv6保留了子网的概念,并通过其地址结构的灵活性和大规模的地址空间,提供了更加高效和灵活的网络设计和管理方式。

自动配置(SLAAC)

IPv6支持无状态地址自动配置(SLAAC),使设备能够自动配置自己的IP地址,无需手动设置或依赖DHCP。设备可以通过监听路由器的广播来获取网络前缀,然后结合自己的MAC地址(通过EUI-64格式转换)生成IPv6地址的后64位。

无状态地址自动配置(Stateless Address Autoconfiguration, SLAAC)是IPv6网络中一个重要的特性,它允许设备在没有手动配置和没有网络管理员干预的情况下,自动生成自己的IPv6地址。SLAAC极大地简化了网络配置过程,特别是在大型网络和动态环境中。下面将详细介绍SLAAC的工作原理。

工作原理

路由器通告(Router Advertisement, RA):

IPv6网络中的路由器定期发送RA消息,这些消息通过ICMPv6协议广播到所有局域网中的设备。RA消息包含网络的前缀信息和其他配置参数。

地址生成:

当一个设备接收到RA消息后,它会使用RA中的网络前缀和自己的网卡MAC地址(通过EUI-64格式转换,或者使用隐私扩展)生成IPv6地址的后64位,从而形成一个完整的128位IPv6地址。

EUI-64格式涉及将48位MAC地址扩展为64位,方法是在MAC地址的中间插入FF:FE(16位),同时反转MAC地址的第七位(U/L位),以区分全球管理的地址和本地管理的地址。

重复地址检测(Duplicate Address Detection, DAD):

在最终确定使用该地址之前,设备会进行DAD过程,确保局域网中没有其他设备已经使用了这个IPv6地址。这是通过发送特殊的ICMPv6消息完成的,如果没有收到表示地址已被占用的回应,则设备确认地址的唯一性并开始使用该地址。

隐私扩展(Privacy Extensions):

由于使用EUI-64可能会暴露网卡MAC地址,带来隐私和安全问题,IPv6引入了隐私扩展(RFC 4941),使得设备可以生成临时的、不基于MAC地址的IPv6地址,用于隐藏设备的物理身份。

特点

无状态:
SLAAC被称为"无状态",因为路由器不需要跟踪网络上每个设备的地址分配情况,设备自己生成地址且保证其唯一性。

自我配置:
设备无需人工干预即可自动加入到IPv6网络中,极大简化了网络管理。

动态性:
当网络前缀发生变化时,设备可以快速地生成新的IPv6地址并加入网络,保证网络的灵活性和扩展性。

与DHCPv6的关系

SLAAC和DHCPv6是IPv6中用于地址配置的两种不同机制。SLAAC完全自动,而DHCPv6则提供了更多控制,包括地址分配、租期管理以及其他配置选项(如DNS服务器地址)。在某些网络中,两者可以同时使用,例如使用SLAAC进行地址配置,同时使用DHCPv6分发其他网络配置信息。

在不适合使用IPv6无状态地址自动配置的场景下,网络可以使用有状态配置(DHCPv6),或者使用静态方法手动配置。

安全性

IPv6设计时就考虑了安全性,IPsec(一种网络层安全协议)是IPv6的标准组成部分,而在IPv4中,IPsec是可选的。IPsec支持数据加密和身份验证,保证数据在传输过程中的安全性。

性能改进

IPv6还引入了一些其他特性,如简化的包头格式,减少了路由器处理包的复杂度,提高了转发效率。此外,IPv6原生支持移动性,允许用户在不丢失连接的情况下,更换网络。

兼容性

IPv4和IPv6是两个完全不同的协议,它们之间不直接兼容。为了实现平滑过渡,网络上部署了多种转换技术,如隧道技术(封装IPv6数据包在IPv4中传输)和双栈技术(同时支持IPv4和IPv6)。

IPv6的引入和普及是一个长期过程,但随着IPv4地址资源的枯竭和互联网设备的增加,IPv6的重要性日益凸显。它不仅解决了地址空间的问题,还提供了更好的网络性能、安全性和可扩展性。

特殊地址

IANA维护官方的IPv6地址空间列表。全局的单播地址的分配可在各个区域互联网注册管理机构或 GRH DFP 页面找到。

IPv6中有些地址是有特殊含义的:

1. 未指定地址

::/128-所有比特皆为零的地址称作未指定地址。这个地址不可指定给某个网络接口,并且只有在主机尚未知道其来源IP时,才会用于软件中。路由器不可转送包含未指定地址的数据包。

2. 链路本地地址

::1/128-是一种单播绕回地址。如果一个应用程序将数据包送到此地址,IPv6堆栈会转送这些数据包绕回到同样的虚拟接口(相当于IPv4中的127.0.0.1/8)。

fe80::/10-这些链路本地地址指明,这些地址只在区域连线中是合法的,这有点类似于IPv4中的169.254.0.0/16。

3. 唯一区域地址

fc00::/7-唯一区域地址(ULA,unique local address)只可用于本地通信,类似于IPv4专用网络地址10.0.0.0/8、172.16.0.0/12和192.168.0.0/16。这定义在RFC 4193中,是用来取代站点本地位域。这地址包含一个40比特的伪随机数,以减少当网站合并或数据包误传到网络时碰撞的风险。这些地址除了只能用于区域外,还具备全局性的范畴,这点违反了唯一区域位域所取代的站点本地地址的定义。

4. 多播地址

ff00::/8-这个前置表明定义在"IP Version 6 Addressing Architecture"(RFC 4291)中的多播地址([12])。其中,有些地址已用于指定特殊协议,如ff0X::101对应所有区域的NTP服务器(RFC 2375)。

5. 请求节点多播地址(Solicited-node multicast address)

ff02::1:FFXX:XXXX-XX:XXXX为相对应的单播或任播地址中的三个最低的字节。

6. IPv4转译地址

::ffff:x.x.x.x/96-用于IPv4映射地址。(参见以下的转换机制)。

2001::/32-用于Teredo隧道

2002::/16-用于6to4

7. ORCHID

2001:10::/28-ORCHID (Overlay Routable Cryptographic Hash Identifiers)(RFC 4843)。这些是不可绕送的IPv6地址,用于加密散列识别。

8. 文件

2001:db8::/32-这前置用于文件(RFC 3849)。这些地址应用于IPV6地址的示例中,或描述网络架构。

9. 遭舍弃或删除的用法

::/96-这个前置曾用于IPv4兼容地址,现已删除。

fec0::/10-这个站点本地前置指明这地址只在组织内合法。它已在2004年9月的RFC3879中舍弃,并且新系统不应该支持这类型的地址。

NAT、路由、端口转发


提起这个我就不困了啊


困了,明天再写

参见NAT穿透