TCP/IP 因特网的寻址方案
因特网的寻址方案
1 标识一台主机
名字 -> 对象是什么
地址 -> 对象在哪里
路径 -> 如何到达对象
(通过IP地址来进行标识)
2 早期的IP地址方案
有类别的地址方案
长度 32bit -> 对应一个32位的整数 (网络号+主机号)
地址分类:ABCDE,D类为广播地址,E类为保留地址
定义的是主机和一个网络的连接,(例如多接口主机需要多个IP地址)
IP地址不是指定具体一台地址,而是连接到网卡的一条路径
具体表示:点分十进制,
类别 低地址 高地址
A 1.0.0.0 127.0.0.0
B 128.0.0.0 191.255.0.0
C 192.0.0.0 223.255.255.0
D 224.0.0.0 239.255.255.255
E 240.0.0.0 255.255.255.254
地址的特殊类别:
1 单播:(不能作为目标地址来使用)
hostid全为零:本网的网络地址
2 广播:(不能作为源地址来使用)
netid确定情况下hostid全为1:定向广播地址
32位全为1:本网有限广播。(在系统启动时若还没得到网络号可以使用此地址进行广播,若得到网络号则用定向广播地址)
32位全为0:保留地址(在初始化时节点还未获取IP地址则如此表示)
3 多播:(多播是将分组传送到一个指定的主机集合
loopback(不能上线,逻辑分配的地址,仅在主机内部做测试)
地址方案缺陷:
一台主机从一个网络移动到另一个网络,则它的地址需要重新分配。
网络地址数量太多。
分类地址规模固定。
主机由多个接口时,通信报文传输路径由多条
3 网络字节顺序
大端存储和小端存储
因特网中的传输规则:
多个字节的整数,采用大端的形式
4 IPv4子网地址
子网划分(将原来两部分的地址划分成了三部分的地址,是一个分层的结构)
网络号:因特网部分
主机号:本地部分
取其中一部分bit出来 来区分本地的不同的物理网络,可以将这一部分看成网络的子网号,剩余部分为主机号
可变长的子网划分 VLSM
背景问题:一个机构内部的网络规模不一样,不同局域网中的主机数量不同。此时,固定长度的子网划分的方法不适用。所以使用可变长的子网划分方法,大的网络的主机号多一些子网号部分少一些,小的网络号反之。
缺点:管理员设计不当可能导致地址重复使用
优点:可以支持大小网络混合的环境,可以提高地址的利用率
注:VLSM中全0全1地址是可用的,区别于单纯的子网划分
子网掩码(用于指定子网划分)
长度:32bit
设定规则:对应IP地址子网部分的bit取1,对应主机地址的部分取0
说明:子网掩码和IP地址的类别无关
记法:(两种表示方法)
1 三元组(网络号,子网号,主机号)
缺点:无法得知子网号与主机号的位数
优点:屏蔽底层细节
2 as/24 (CIDR):整数值为网络号与子网号的位数
5 目标:最小化网络数量
1 对于一个路由表,网络数量增加路由表项也会增加,当增加到一定数量之后路由器无法承受
2 地址的消耗问题,尤其是B类地址
解决方案:
无类别的寻址方案:CIDR -> 无类别域间路由
1 减少路由表的表项数量
2 分配不均
CIDR的最初应用:
超网分配方案:以多个连续用的C类地址的块来连成一块B类
CIDR记法:
斜杠记法,例如 128.211.168.0/21,其中/21表示掩码的21位
CIDR和VLSM的区别
在使用CIDR聚合地址时,将原来有类IP地址中的网络位划出一部分作为主机位使用。
在使用VLSM划分子网时,将原来有类IP地址中的主机位按照需要划出一部分作为网络位使用。
CIDR是把几个有类网络合成一个大的网络(超网),用于路由地址聚合。
VLSM是把一个有类网络分成几个小型网络(子网),用于更高效划分子网。
IPv6寻址方案
IPv6记法:
采用冒号分十六进制记法
将128位地址平均分成8组,每组16位
全为零的一组可以直接记成0
零压缩记法: 连续全零组记为 :: ,在一个地址中最多只能出现1次
CIDR表示:例如 FF05::03/60
IPv6地址空间
前缀 地址类型 地址空间分片
010 全局单播地址 1/8
1111111010 本地链路单播地址 1/1024
11111111 多播地址 1/256
从IPv4到IPv6的迁移
高64位全零,中间两个16位为0000和FFFF,低32位是IPv4地址
IPv6单播地址
高N位为全球路由前缀,中间(64-N)位是子网号,最后64位是接口号
IPv6接口标识和MAC地址
将MAC地址映射成64位接口ID:格式命名为EUI-64
将48位MAC地址映射成EUI-64:
(MAC地址: 高24位代表厂家,表示一个机构的唯一标识符,低24位为厂家分配,是接口地址)
1 在MAC地址的高24位和低24位之间插入一个16位的,15个1和1个0(FFFE)
2 将Bit6从原来的0改成1
Bit1:G/L位,表示地址是local的还是global的,一般情况下使用的是global地址为0,所以将此0改为1
Bit0:I/G位,用来表示地址是单播地址还是组播地址
全局地址:48位地址
局部地址:16位地址
IPv6多播和任播地址
IPv6中没有广播,通过多播的方式来解决
广播的缺点:
1 浪费的资源多
2 广播一般情况下不跨网
所以IPv6采用多播来取代广播
协议中预先定义的一些保留的多播组:
all routers : 网上的所有路由器节点
all hosts : 网段上的所有主机节点
all nodes : 所有节点
IPv6 Anycast地址
本质上是一个单播地址
作用:处理多服务器的情况(handle server replication)
这些服务器以一个逻辑的整体对外提供服务;服务器所有的配置、提供的功能和对外提供的任播地址都是一样的。当用户在访问这些服务器的时候,使用Anycast地址去访问,最后解析出来的地理位置上距离最近的服务器上进行通信。
典型应用例如:DNS服务器
IPv6 Link-Local 地址
用于本地局部使用,不是一个全局地址
节点在初始启动时,自动得到一个Link-Local地址
Link-Local地址的类别:
由最高的10位来决定: 1111 1110 10
分组中带有Link-Local地址,报文不会被转发到不同的网络上去。Link-Local地址只局限在接口所在的网段中。
IPv6中接口自动获取地址
1 OS启动激活接口
2 构造Link-Local地址
3 从48位转换为EUI-64得到接口ID,作为低64位,高10位是Link-Local地址,中间54位全为0
4 得到此接口上的linklocal地址,接口可以通过此地址与本地链路上的其他节点进行通信
5 本地链路中的路由器向外发送一条路由恳求,路由器返回通告包括:全局单播地址的前缀
6 全局前缀加上接口ID最终得到全局单播地址
参考资料:
- INTERNETWORKING WITH TCP/IP PRINCIPLES, PROTOCOLS, AND ARCHITECTURE Vol1 (6th Edition). DOUGLASE E. COMER
- Understanding IPv6 ,Your Essential Guide to IPv6 on Windows Networks 3rd(2012) . Joseph Davies.