在这一章中介绍了Internet中使用的网络层地址(也就是IP地址),还有如何为Internet中的设备分配地址,以及各种类型的地址等等……
一、IP地址的表示
为大家所常见的有IPV4地址和IPV6地址,但在IPV4地址中,通常采用所谓的点分四组或点分十进制表示法,例如192.168.56.101,点分四组表示法由四个用点分隔的十进制组成,每个数字是个非负整数,范围在[0,255]代表整个IP地址的四分之一,IP地址为二进制组成,IPV4由32位二进制组成,八个八个分为一组,一共分为四组数字中间用点表示,例如:192.168.56.100即由1100 0000.1010 1000.0011 1000.0110 0100表示,为了方便我们看而转化为十进制显示出来,二进制转化为十进制看二进制有多少位为一组,例如IPV4中的八位一组,则0000 0000,从右到左第一个0到第二个0分别为2的0次方,2的1次方,2的2次方,2的三次方……2的7次方,依次为1 2 4 8 16 32 64 128,当二进制为一时将其中为1的部分的十进制数相加得到该组二进制的十进制数,若有n位二进制,则从左到右第x位上的二进制为1时该位十进制为2的(x-1)次方,这n位二进制范围为[0,2的n次方-1]即最大为2的n次方-1。则IP地址十进制与二进制之间的关系即为如此。
因为IPV4随着互联网的发展,越来越多的设备需要分配IP导致不够用,随后又有了IPV6地址,该地址长度为128位是IPV4的四倍长,IPV6地址的传统表示方法采用 块 或 字段 的四个十六进制数,这些 块 或 字段 的数由冒号分隔,例如一个包含八个块的IPV6地址可写为5f05:2000:80ad:5800:0058:0800:2023:1d71采用的十六进制,该八个 块 每个 块 由十六位二进制组成,在十六位二进制中可分为四个四个为一体组成一个十六进制,方法依然是相加,但是与十进制不同是,超过10和包含10的时候不是用数字10或11等等去表示而是用a,b,c等去表示,这里a=10,b=11,c=12,d=13,e=14,f=15,所以一个十六进制的范围为[0,15]==> [0,f]来表示。
由于IPV6太长了看着不好看,又有了一些取得共识的IPV6地址简化表示法被标准化。
1,一个块中前导的零不必书写。
2,全零的块可以省略,用::两个冒号代替。例如IPV6地址0:0:0:0:0:0:0:1可简写为::1,同样如此12:13:0:0:0:0:0:1可简写为12:13::1。为了避免出现歧义,::只能在一个IPV6地址中使用一次 。(只能用于影响最大的地方"压缩最多的0",如果多个块包含相同长度的0,顺序靠前的块将被替换为::)
3.在IPV6地址中嵌入IPV4地址可使用混合符号形式,紧接着IPV4部分的地址块的值为ffff,地址的其余部分使用点分四组格式。例如,IPV6地址 ::ffff:10.0.0.1可表示IPV4地址10.0.0.1。这被称为IPV4映射的IPV6地址。
4.IPV6地址的低32位通常采用点分四组表示法。因此,IPV6地址 ::0101:f001相当于地址::1.2.240.1。这被称为IPV4兼容的IPV6地址。需要注意IPV4兼容地址与IPV4映射地址不同,它们只能用类似IPV4地址的方式书写或由软件处理方面给人以兼容的感觉。这种最初用于IPV4和IPV6之间的过渡计划,但现在不再需要。
还有注意的一点是,a~f的十六进制数字应该用小写表示。
二、基本的IP地址结构
IPV4地址空间有2的32次方-1=4 294 967 296个可能的地址,而IPV6有2的128次方-1=340 282 366 920 938 463 463 374 607 431 768 211 456个地址,由于地址数量太大,尤其是IPV6,可以方便的将这些地址空间划分为块。IP地址可根据类型和大小分组。大多数IPV4地址被细分为一个地址,用于识别Internet或某些专用的内联网的计算机网络接口。这些地址称为单播地址。IPV4地址空间大部分是单播地址空间。IPV6地址空间大部分目前未使用。除了单播,其他类型的地址包括广播,组播和任播地址。
地址中的一些连续位称为网络号,其余位称为主机号地址空间的划分涉及五大类。每类都基于网络中可容纳的主机数量,确定在一个32位的IPV4地址中分配给网络号和主机号的位数,如图所示
类由地址中的头几位来定义,如图中所示0为A类,10为B类,110为C类,1110为D类组播使用,1111为E类保留
由上图可看出不同类地址 可使用的大小数量不同,下图将显示它们最初“分类”的划分
该表显示了分类地址结构的主要使用方式,例如一个A类网络号18.0.0.0,其中有2的24次方可以分配给 主机(范围为18.0.0.0~18.255.255.255)但整个Internet中只有127个A类网络。某站点分配了一个C类网络,例如192.125.3.0,只能容纳256台(范围192.125.3.0~192.125.3.255),但整个C类网络有超过两百万个网络号是可用的。
这些数字是不准确的,有几个地址通常不作为单播地址使用。特别是地址块中的第一个和最后一个地址通常不使用,实际上18.0.0.0能分配2的24次方-2=16 777 214个单播IP地址。
子网寻址:改变一个IP地址的网络部分和主机部分的限制,Internet其余部分将只能“看到”传统的A类,B类和C类部分。支持此类功能的方法称为子网寻址。通过子网寻址,一个站点被分配一个A类,B类或C类的网络号,保留一些剩余主机号进一步用于站点内分配。该站点可能将基础地址中的主机部分进一步划分为一个子网号和一个主机号。从本质上来说,子网寻址为IP地址结构增加了一个额外部分,但它没有为地址增加长度。因此,一个站点管理员能在子网数和每个子网中预期的主机数之间折中,同时不需要与其他站点协调。子网寻址虽然提供额外灵活性,但是代价为成本增加。由于当前的子网字段和主机字段的定义是由站点指定的(不是由网络号分类决定),一个站点中所有路由器和主机需要一种新的方式以确定地址中的子网部分和其余的主机部分。在出现子网之前,这个信息可直接从一个网络号中获得,只需知道是A类,B类或C类地址(由地址的前几位表示)。
子网掩码:子网掩码由一台主机或路由器使用的分配位,以确定一台主机对应IP地址中获得网络和子网信息。IP子网掩码与对应的IP地址长度相同。通常在一台主机或路由器中以IP地址向荣的方式配置,也可以是静态的(通常是路由器),也可以使用一些动态方式,例如动态主机配置协议(DHCP)
下图列出了一些IPV4以及IPV6子网掩码的例子
掩码由路由器和主机使用,以确定一个IP地址的网络/子网部分的结束和主机部分的开始。子网掩码中的一位设为0,表示一个IP地址的对应位作为主机ID的一部分。例如下图所示的一个例子
这里面看到地址中的每一位与子网掩码中的对应位进行与计算。还看到128.32.1.14属于子网128.32.1.0/24。子网掩码纯粹是站点内部的局部问题。
可变长度子网掩码(VLSM),VLSM可用于分割一个网络号,使每个子网支持不同数量的主机。每个路由器和主机除了IP地址,还需要配置一个子网掩码。大多数软件支持VLSM,除了一些旧的路由协议(例如RIP版本1)
广播地址 在每个IPV4子网中,一个特殊地址被保留作为子网广播地址。子网广播地址通常将IPV4地址的网络/子网部分设置为适当值,已经主机部分所有位设置为1而形成。例如下所示例子:
地址128.32.1.14/24的广播地址;
掩码为24位则地址前二十四位不变128.32.1,地址后八位为00001110与掩码取反的后八位11111111进行或运算得到后八位全为1,即该子网广播地址为128.32.1.255
IPV6地址和接口标识符,IPV6地址除了比IPV4长4倍,还有一些额外的特点。IPV6地址使用特殊的前缀表示一个地址范围。一个IPV6地址范围是指它可用的网络规模。在IPV6中,大部分节点通常在同一个网络接口上使用多个地址。虽然IPV4中也支持这,但并不常见。一个IPV6节点中需要一组地址,包括组播地址。
链路本地IPV6地址(和一些全球性IPV6地址)使用接口标识符(IID)作为一个单播IPV6地址分配基础。除了地址是以二进制值000开始以外,IID在所有情况下都作为一个IPV6地址的低序位,这样它们必须在同一网络中有唯一前缀。IID的长度通常是64位,并直接由一个网络接口相关的链路层MAC地址形成,该地址使用修改的EUI-64格式,或由其他进程随机提供的值形成,以提供可防止地址跟踪的某种程度的隐私保护。
三、CIDR和聚合
前缀,为了帮助缓解IPV4地址(特别是B类地址)的压力,分类寻址方案通常使用一个类似VLSM的方案,扩展Internet路由系统以支持无类别域间路由(CIDR)。这提供了一种方便的分配连续地址范围的方式,包含多于255台但少于65536台主机。使用CIDR,未经过预定义的任何地址范围可作为一个类的一部分,但需要一个类似子网掩码的掩码,有时也称为CIDR掩码。CIDR掩码不再局限于一个站点,而对全球性路由系统都是可见的。因此,除了网络号之外,核心Internet路由器必须能解释和处理掩码。这个数字组合称为网络前缀,用于IPV4和IPV6地址管理。下图展示了一些例子
这个表中,由前缀来定义并固定的位被圈在一个框中。剩余位可设置为0和1的任意组合 从而涵盖可能的地址范围。显然,一个较小的前缀可对应于一个更大的地址范围。
聚合,在Internet环境中,可采用分层路由思想以一种特定方式减少Internet路由条目数。这通过一个称为路由聚合的过程来实现。通过相邻的多个IP前缀合并成一个短前缀(称为一个聚合或汇聚),可以覆盖更多地址空间。如下例子所示;
在这个例子中,第一步,190.154.27.0/26和190.154.27.64/26可以聚合,这是由于他们数值相邻,但是190.154.27.192/26不能聚合。通过与190.154.27.128/26相加,它们可经过两步骤聚合形成190.154.27.0/24。最后,通过与相邻的190.154.26.0/24相加,生成聚合结果190.154.26.0/23
四、特殊用途地址、IPV4和IPV6地址空间中都包括几个地址范围,它们被用于特殊用途(因此不能用于单播地址分配)。
在IPV6中,许多地址范围和个别地址用于特定用途,如下图所示
对于IPV4和IPV6,没有指定作为特殊、组播或保留地址的地址范围可供单播使用。一些单播地址空间(IPV4的前缀10/8,172.16/12,192.168/16以及IPV6的前缀fc00::/7)被保留用于构建专用网络。
IPV4/IPV6地址转换、在有些网络中,可能需要在IPV4和IPV6之间转换。目前已制定了一个用于单播转换的框架,以及一个正在开发的用于组播转换的方案。一个基本功能是提供自动,基于算法的地址转换。该方案使用一种特殊地址格式,称为嵌入IPV4的IPV6地址。这种地址在IPV6地址内部包含IPV4地址。它可采用6种格式之一来编码,IPV6前缀长度必须是下列数值之一:32,40,48,56,64或96。下图显示了可用的格式
如图所示,前缀可以是一个众所周知的 前缀,也可以是组织为转换器分配的唯一前缀,第64至71位必须设置为0,以保持与[RFC4291]指定标识符的兼容性。后缀的位被保留,并且应设置为0。然后采用简单方法来生成嵌入IPV4的IPV6地址:将IPV6前缀与32位的IPV4地址相串联,并确保第64至71位被设置为0(如果有必要,插入)。在后缀的后面增加0,直到生成一个128位地址。嵌入IPV4的IPV6地址使用96位前缀选项,该选项通常用前面提到的IPV6映射地址来表示。
组播地址、IPV4和IPV6支持组播寻址一个IP组播地址(也称为组或组地址)标识一组主机接口而不是单个接口。一般来说,一个组可以跨越整个Internet。一个组所覆盖的网络部分称为组的范围。管理范围的地址可用于一个网络区域内已手动配置到路由器的地址。站点管理员可将路由器配置为管理范围边界,这意味着相关组的组播流量不会被路由器转发。在软件的控制下,每个Internet主机中的协议栈能加入或离开一个组播组。当一台主机向一个组发送数据时,它会创建一个数据报,使用(单播)IP地址作为源地址。当一台主机向一个组发送数据时,它会创建一个数据报,使用(单播)IP地址作为源地址,使用组播IP地址作为目的地址。已加入组的所有主机将接受发送到该组的任何数据报。发送方通常不知道主机是否接收到数据报?除非它们明确做出应答。事实上,发送方甚至不知道通常有多少台主机接收它的数据报。
IPV4组播地址、对于IPV4,D类空间已被保留支持组播。28位空闲意味着可提供2的28次方=268 435 456个主机组(每个组是一个IP地址)。这个地址空间被分为几个注意部分,它建立在对路由分配和处理的基础上。下图列出了这些主要部分
第一个Ad hoc(特定)块用于保留一些地址,避免它们落入本地或互联网络控制块。其他主要地址块的出现稍晚于IP组播的演变。
最近,IPV4组播地址分配机制将多个组播地址与一个IPV4单播地址前缀关联。这被称为基于单播前缀的组播寻址(UBM),UBM的IPV4地址范围是234.0.0.0至234.255.255.255。单播地址需分配一个/24或更短的前缀以使用UBM地址。分配更短的地址(即/25或更长的前缀)必须使用一些其他机制。UBM地址被构造成前缀234/8,分配单播前缀与组播ID的串联,为了确定与一个单播分配相关的UBM地址,分配前缀只是简单的在前面添加前缀234/8。UBM地址比其他类型的组播地址分配有更多优点。例如,用于GLOP寻址时,它们可以不受16位AS号限制。另外它们可作为已存在的单播地址空间的分配结果。
IPV6组播地址、对于IPV6,对组播的使用相当积极,前缀ff00::/8已被预留给组播地址,并且112位可用于保存组号。一般格式如下
(1 1 1 1 1 1 1 1| 0| R| P |T|范围4位|组ID112位)其中0EPT是标志(四位)
可提供组数为2的112次方组,IPV6组播地址的第2字节包含一个4位标志字段和一个4位范围ID字段。范围字段表示到某些组播地址的数据报的分配限制。十六进制值0,3和f保留,十六进制值6,7和9~d未分配。下图给出了这些值
很多IPV6组播地址由IANA分配为永久使用,并且故意跨越多个地址范围。这些组播地址对每个范围都有一定偏移量(由于这个原因,这些地址被称为相对范围或可变范围)。例如下图所示一些预留定义的地址
在P和R位字段设置为0时,使用下图给出的组播地址格式
当P设置为1,无须基于每个组的全球性许可。当T位字段被设置时,表示组地址是临时或动态分配的。当P字段被设置为1,T位也必须被设置为1。
与IPV4相似,IPV6也有一些保留的组播地址。除了前面提到的可变范围地址,这些地址还根据范围划分成组。下图给出了IPV6组播空间中的保留列表。
任播地址、任播地址是一个单播IPV4或IPV6地址,这些地址根据它所在的网络确定不同的主机。这是通过配置路由器通知Internet中多个站点有相同单播路由来实现。
五、分配,IP地址通常被分配为大的块可以,这由一些分层组织的权威机构完成。权威机构是各种“所有者”分配地址空间的组织,“所有者”通常是ISP或其他较小的权威机构。权威机构经常参与全球单播地址空间分配,但有时也分配其他类型的地址(组播和特殊用途)。权威机构为用户分配一个不限时的地址块,或是一个限时(例如实验)的地址块。这个层次结构的顶部是IANA[IANA],它负责分配IP地址和Internet协议使用的其他号码。
单播、对于单播IPV4和IPV6的地址空间,IANA将分配权限主要委托给几个地区性Internet注册机构(RIR)。下图列出了加入NRO的地区性Internet注册机构
组播、在IPV4和IPV6中,组播地址(即组地址) 可根据其范围来描述,他们需要确定组播方式(静态、动态的协议或算法),以及是否使用ASM或SSM。
六、单播地址分配,一个站点分配了单播IP地址范围后-----通常是从自己的ISP处获得,站点或网络管理员需要决定如何为每个网络接口指定地址,以及如何建立子网结构。如果这个站点只有一个物理网段(例如大多数家庭),这个过程相对简单。对于规模较大的企业,尤其是那些由多个ISP提供服务,并且多个物理网段分布在很大地理区域的企业,这个过程可能非常复杂。
单个供应商/无网络/单个地址,目前我们可获得的最简单的Internet服务是由ISP提供一个在一台计算机上使用的IP地址。
单个供应商/单个网络/单个地址,拥有多台计算机的Internet用户发现只有一台计算机连接到Internet并不是理想情况。因此,他们通常拥有家庭局域网(LAN)或无线局域网(WLAN),并使用一台路由器或主机作为路由器连接Internet。这种配置与单个计算机情况类似,除了路由器将分组从家庭网络转发到ISP,它们也执行NAT,在于ISP通信时重写分组中的IP地址。从ISP角度来看,只有一个IP地址被使用。
单个供应商/多个网络/多个地址,很多组织发现仅分配一个单播地址,特别是当它只是暂时分配时,通常无法满足自己的上网需求。对于运行Internet服务器(例如web站点)的组织,通常希望拥有一个固定的IP地址。这些站点经常有多个局域网,其中有些是内部的,有些可能是外部网。对于这样的网络,通常需要有一个站点或网络管理员,以确定站点需要多少个IP地址,如何构建网站的子网,以及哪些子网是内部或外部网。
多个供应商/多个网络/多个地址(多宿主),对于一些依赖Internet接入来保证持续运营的组织,它们通常使用一个以上的供应商(称为多宿主),以便在失效时或其他情况下提供冗余连接。由于CIDR,只有一个ISP的组织通常拥有与该ISP相关联的PA地址。
七、与IP地址相关的攻击 IP地址基本上都是数字,只有少数网络攻击涉及它们。一般情况下,执行攻击可发送“欺骗”数据包或其他相关活动,也就是说,IP地址现在有助于查明涉嫌不良活动的个体(例如,对等网络中的版权侵权或非法材料分发)。这样做可能被以下几个原因所误导。例如,在很多情况下,IP地址只是暂时的,并在不同时间重新分配给不同用户。因此,在精准计时中出现任何错误,容易造成数据库中的IP地址到用户的映射出错。另外访问控制没有被广泛和安全的部署;用户可能通过一些公共的接入点,或无意中开放的家庭或办公室的无线路由器连接Internet。在这种情况下,不知情的家庭或企业所有者可能因IP地址而成为嫌疑人,即使这个人并不是网络流量的发送者。这种情况也可能因受攻击的主机被用于组成僵尸网络而发生。目前,这类计算机(和路由器)可通过基于Internet的黑市来租凭,并被用于执行攻击、非法内容服务和其他违法活动。