Internet 地址结构
写在前面
本篇文章,是对于《TCP/IP详解》卷一,中Internet地址结构的学习笔记,仅仅只是学习笔记,其中主要以自己所缺的来进行记录,所以如果有什么需要补充的,欢迎留言,如有错误,欢迎指正。
引言
连接到Internet的设备,必须要有一个IP地址
IP路由器实现的转发程序使用IP地址来识别流量去向
IP地址也表示流量来源
IP地址通常被Internet的DNS屏蔽在用户视线之外,DNS让大多数用户使用名字而不是数字地址
表示IP地址
IPv4,大小为32位,采用点分四组或点分十进制,范围是[0~255]
IPv6,大小为128位,传统的表示方法是采用称为块或字段的4个16进制数,由冒号分隔
通常IPv6的后32位表示位IPv4的地址,用于兼容IPv4,采用点分四组表示法
基本的IP地址结构
IP地址都有一个网络部分,用于识别接口使用的IP地址在那个网络中可被发现
IP地址都有一个主机部分,用于识别由网络部分给出的网络中的特定主机
地址空间的划分部分涉及五大类,每类都基于网络中的可容纳的主机数量
注:地址块中的第一个和最后一个地址通常是不使用的
第一个地址是网络地址,最后一个地址是广播地址
子网寻址
为了解决为接入Internet的新网段分配一个新的网络号,增加了站点管理员,用来进一步划分本地的子网数量
实现该想法,需要改变IP地址的网络部分和主机部分的限制,但此方法只是针对于一个站点来说,对于网络,只能看到A类、B类等网络——子网寻址
站点可能将基础地址中的主机部分进一步划分为一个子网号和一个主机号
注意:只有划分子网的网络中的主机和路由器才知道子网结构,在需要进行子网寻址之前,Internet其他部分仍将它作为站点相关的地址看待
子网掩码
子网掩码是一台主机或路由器使用的分配位,以确定如何从一台主机对应IP地址中获得网络和子网信息
IP子网掩码和对应的IP地址长度相同
注:在IPv6中没有子网掩码,取而代之的是一个叫做地址前缀的形式,长度为0-128
掩码由路由器和主机使用,已确定一个IP地址的网络/子网部分的结束和开始
一个IP地址可以与一个子网掩码使用按位与操作,以形成用于路由的地址的网络/子网标识符
注意:internet 路由系统其余部分不需要子网掩码的知识,
因为站点之外的路由器做出路由抉择只基于地址的网络号部分,并不需要网络/子网或主机部分,
所以,子网掩码纯粹是解决站点内部的局部问题
可变长度子网掩码(VLSM)
在同一站点的不同部分,可将不同长度的子网掩码应用于相同的网络号
VLSM用于分割一个网络号,使每个子网支持不同数量的主机
注意:主机和路由器的每个接口都需要用IP地址和子网掩码来描述,但掩码决定了网络拓扑的不同
广播地址
子网广播地址通过将IPv4地址的网络/子网部分设置成适当值,以及主机部分的所有位设置为1而形成
子网广播地址构建方式:对子网掩码取反,并与子网中任意计算机的地址进行按位或运算
所以广播地址一般为 XX.XX.XX.255
广播地址通常与某些协议一起使用,例如 UDP/IP 或 ICMP 因为这些协议不涉及TCP/IP那样的双方会话
IPv6没有任何广播地址,广播地址可用于IPv4中,而IPv6中使用组播地址
将这种地址作为目的地址数据报,被称为定向广播
但是,定向广播是个大问题,从安全角度来看,至今在Internet中任然禁用
特殊用途网址 255.255.255.255 被保留为本地网络广播(也称为有限广播)它根本不会被路由器转发
注意:虽然路由器不转发广播,但子网广播和连接在同一网络中的计算机的本地网络广播将工作,除非被终端主机明确禁止
这种广播不需要路由器,如果有的话,链路层的广播机制用于支持它们
IPv6地址和接口标识符
IPv6的地址使用特殊前缀表示一个地址范围
IPv6的范围是指可用于的网络规模,一般包括 节点本地、链路本地和全球性
IPv6中,大部分节点通常在同一网络接口上使用多个地址
链路本地IPv6地址,使用接口标识符(IID)作为一个单播IPv6地址的分配基础
除了地址是以二进制000开始的以外,IID在所有情况下都作为一个IPv6的低序位
IID长度通常是64位,并直接由一个网络接口相关的链路层MAC地址形成,该地址使用修改的 EUI-64 格式
EUI表示扩展唯一标识符,EUI-64标识符开始于一个24位组织唯一标识符(OUI),接着是一个由40位扩展标识符,由前面的24位识别
很多IEEE标准兼容的网络接口(例如 以太网)在使用短格式的地址(48位的EUI)
EUI-48和EUI-64都是用于IPv6的地址,他们通过将接口标识符取反u位来形成的
OUI的长度是24位,并占据EUI-48和EUI-64的前3个字节,这些地址的第一个字节低两位分别是u位和g位
当u位被设置时,表示该地址是本地管理
当g位被设置时,表示该地址是一组或组播类型的地址
一个EUI-64的地址可以由EUI-48形成
修改的EUI-64用于形成IPv6地址的IID,但是需要对u位取反
网络问题
20世纪90年代初,在采用子网寻址缓解增长带来的痛苦后, Intemet开始面临更严重的 规模问题。有三个问题很重要,需要立即引起注意:
1. 到1994年,一半以上的B类地址已被分配。预计, B.类地址空间大约在1995年将被用尽
2. 32位的IPv4地址被认为不足以应付Intemet在21世纪初的预期规模0
3. 全球性路由表的条目数(每个网络号对应一条), 1995年大约为65000个条目,目前 仍在增长中。随着越来越多A类、 B类和C类路由条目的出现,路由性能 将受到影响。
从1992年开始,这些问题受到IETF中的ROAD (路由和寻址)小组的关注。
他们认为 问题1和3将很快来临,问题2需要一个长期的解决方案。
他们提出的短期解决方案是有效 清除IP地址的分类缺陷,并提高层次化分配的IP地址的聚合能力。
这些措施将有助于解决问题1和3。 IPv6被设想用于解决问题2
前缀
为了缓解IPv4的压力,分类寻址方案通常使用类似于VLSM的方式,扩展Internet路由系统以支持无类别域间路由(CIDR)
它提供了一种方便分配连续地址范围的方式,包含多于255,但少于65536台主机 2^8~2^16 8位
使用CIDR,未经过预定义的任何地址范围可作为一个类的一部分,但需要一个类似于子网掩码的掩码,有时也称为CIDR掩码
CIDR掩码,对于全球范围都是可见的
一个较小的前缀,可硬对应一个更大的网络范围
注:除了网络号以外,核心Internet路由器必须能解释和处理掩码
聚合
通过取消分类结构的IP地址,能够分配各种尺寸的IP地址块
20世纪70年代,由Kleinrock和Kamoun发表的分层路由研究
发现,如果将网络拓扑排列为一棵树,并且以对这个网络拓扑“敏感的”方式分配地址,这样可获得一个非常小的路由表,同时保持到所有目的地的最短路径
注意:图中所示的任意路由器,需要的条目数都不会超过它拥有的链路数
即使越来越多的路由器加入如图所示树,其良好的属性也保持不变
在Internet环境中,可采用分层路由思想,以一种特定的方式减少Internet的条目数
这个方法,通过路由聚合来实现,通过将相邻的多个IP前缀合并成一个短前缀
IPv4/IPv6地址转换
对于IPv4和IPv6的转换,目前已制定了一个用于单播转换的框架,以及一个正在开发的用于组播的方案
其一个基本功能是提供自动、基于算法的地址转换
该方案使用一种特殊的地址格式,称为嵌入IPv4的IPv6,它采用6种方式来编程
其中,前缀既可以是一个众所周知的前缀,也可以是阻止为转换器分配的唯一前缀
第64~71位必须为0,以保持与指定表示符的兼容性
后缀的位被保留,并且应设置为0
组播地址
IPv4和IPv6支持组播寻址
一个IP组播地址,标识一组主机接口,而不是单个接口
一般来说,一个组可以横跨整个Internet
在软件的控制下,每个Internet主机中的协议栈能加入或离开一个组播组
当一台主机向像一个组发送数据时,它会创建一个数据报,使用(单播)IP地址作为源地址,使用组播IP地址作为目的地址
发送方通常不知道主机是否接收到数据报,除非他们做出明确的应答
事实上,发送方甚至不知道通常由多少台主机接受它们的数据
任意源组播(ASM):任何发送方可以发送任何组;一个加入组的接收方被指定唯一的组地址
源特定组播(SSM):在每个组中只使用一个发送方;当一台主机加入一个组后,它会被指定一个信道地址,其中包括一个组地址和一个源IP地址
SSM避免了ASM模型部署时的复杂性
IPv4组播地址
对于IPv4,D类空间(224.0.0.0~239.255.255.255)已被保留支持组播
28位空闲,意味着可以有2^28=268 435 456 个主机组
本地网络控制块限制为发送方的本地网络;发送到这些地址的数据报不会被组播路由器转发
第一个 Ad hoc (特定) 块用于保留一些地址,避免它们落入本地或互联网络控制块。在此范围内的大多数分配时用于商业服务,其中一些不需要全球分配;它们最终被返还,以支持GLOP寻址
SDP/SAP块中,包含某些应用所使用的地址,会话通告协议(SAP),会话描述协议(SDP)
在GLOP块中,组播地址基于主机的自治系统(AS)号,该主机处于应用分配地址的一端
AS号,用于ISP之间的Internet范围路由协议,以聚合路由器和实现路由策略
AS号最初是16位,后来扩展到32位
GLOP地址,生成的是将一个16位AS号放在IPv4组播地址的第2和第3字节,保留1字节的空间表示可能的组播地址
IPv4组播地址分配机制,将多个组播地址与一个IPv4单播地址前缀关联——基于单播前缀的组播寻址(UBM)
UBM的IPv4地址范围是234.0.0.0~234.255.255.255
单播地址需要分配一个/24或更短的前缀来使用UBM地址
为了确定与一个单播分配相关的UBM地址,分配前缀知识简单地在前面添加前缀234/8
IPv6的组播地址
对于IPv6,前缀 ff00::/8 已被预留给组播地址,可对112位可用于保存组号 128-16=112
IPv6组播地址的第2字节包含一个4位标志字段和一个4位范围ID字段。范围字段表 示到某些组播地址的数据报的分配限制。十六进制值0、 3和f保留。十六进制值6、 7和9 - d未分配。
在IPv6中,当P和R字段被设置为0时,使用 图2-12 中发组播地址格式
当P被设置为1时,对组播地址,有两种可用方法、
1.基于单播前缀的IPv6组播地址分配
2.链路范围的IPv6组播
当P位字段设置为1时,T位也必须设置为1,此时,地址格式如下所示:
为了创建唯一的链路本地范围的组播寻址,可使用一种基于IID的方式,当只需要链路本地范围时,方法是基于单播前缀分配的首选
当使用基于前缀地址(P位被设置时),R位表示组播路由协议需要知道一个会合点
会合点(RP),是一个路由器中用于处理一个或多个组播组的组播路由的IP地址
用于帮助参加同一组播组的中的发送方和接收方找到对方
当P位被设置时,如下所示
任播地址
任播时一个单播的IPv4或IPv6的地址,这些地址根据它所在的网络,确定不同的主机
一个任播地址,不是指Internet中的一台主机,而是对于任播地址"最合适"或"最接近"的一台主机
任播地址最常用于发现一台提供了常用服务的计算机