1. 前言
虽然IPv6会在未来逐渐替代IPV4,但是IPV4还会在还当长的时间内存在,并继续发挥作用,所以有必要对IPV4地址和子网有个比较清晰的理解。
2. 关于IPV4地址的表示这里不在详述,主要是怎么去理解地址的分类和子网划分。
关于IP地址分类,一般有两种方法,一种是有分类的地址,如分成A,B,C,D,E类地址;另一种是无分类的地址,即把地址看成不固定的分类。一般比较好理解的分类是更倾向于无分类的地址,而把分类地址看成是无分类地址的特殊情况。
3. 无分类地址的思想:
把整个地址空间分成变长的地址块,前缀(prefix)定义网络,后缀(suffix)定义一个节点或设备。这个prefix长度可以是0至32。分类地址可以看成是无分类地址的特殊情况。
A类地址可以看成prefix长度为8的无分类地址;
B类地址可以看成prefix长度为16的无分类地址。
4. 无分类地址的斜线表示法:
对于无分类地址,定义网络时必须给出前缀长度(记为n),即前缀长度唯一地定义了这个网络地址块。
byte |
. |
byte |
. |
byte |
. |
byte |
. |
/ |
n (prefix length) |
斜线记法(slash notation)的正式名称为无分类域间路由(classless interdomain routing)或者简称为CIDR,发音同单词cider。
网络地址,常常又分为两个部分:一是代表公网的网络ID,一是代表本地主机的主机ID.
>> IP地址:网络ID:主机ID
网络ID:标识一个网络,用于公网传输,即唯一标识一个网络,其长度为这里的前缀长度n,所以,网络ID有时候又称其为网络前缀(或者称为网络地址),标识主机连入的网络。
主机ID:仅在本地网络内部唯一即可,是局域网内部的ID。
任意地址:
5. 使用地址掩码
将前缀部分位设置为全1,后缀部分设置为全0,就形成地址掩码,提出地址掩码主要是方便使用与或排操作计算首末地址,使用地址掩码可以计算如下:
5.1 计算块中的地址数:NOT(Mask)+1
因为除去前缀部分,地址数据即为主机部分的所有组合再加上首地址。
5.2 块的首地址(网络地址):块中的任意地址 AND Mask
5.3 块的尾地址:块中的任意地址 OR [NOT(Mask)]
6. 网络地址:即这块地址的首地址。其优点在于,网络上发送数据包时,路由器在路由表中只需要记住这个网络的首地址,住这个网络发送即可,因为主机部分都是相同的,这样大大减小了路由表记录数。
7. 地址块分配原则:
7.1 请求地址址块N:必须是2的幂,原因是上面说过,地址数, 或者反过来,从两公式看出,N必须为2的幂。
7.2 分配的地址块必段是地址空间内连续的地址块,另外,块的首地址必须能被块地址数整除,原因为首地块必须是前缀后面跟32-n个0位构成。即
8. 子网:将地址块再划分成多个更小的网络,将子网分给各个组织使用,即子网,这正是网络分层结构的体现,划分子网时同样需要遵循几个原则。即
8.1 每个子网的地址数应为2的幂。
8.2 每个子网的前缀长度计算公式为
8.3 每个子网的起始地址应该被这个子网的地址总数整除。
9. 专有地址及其说明
专有地址分为5类,分别说明如下:
9.1 this-host address(本机地址)
只有一个地址,即:0.0.0.0/32。为什么这样设计,因为如果主机想要发送数据报,又不知道本机地址,那么使用这个地址作为源地址。
9.2 limited-broadcast(受限的广播地址)
只有一个地址,却255.255.255.255/32。用于向网络中的所有设备发送数据报,路由器会阻止目标主机为该地址的数据包发往本网络之外,即受限的广播,只能在本网络中发送。
9.3 private-address(私有地址)
4个地址块被划分为作为私有地址,分别为:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/6
169.254.0.0/6
9.4 multicast address(多播地址)
地址块为224.0.0.0/4
9.5 loopback address(环回地址)
环回地址为127.0.0.0/8,其作用为在本机测试基于tcp/ip的程序以及主机内进程间通信,本机既作为服务器,又作为客户端,本地址作为目标地址的数据包不会离开本机,默认使用127.0.0.1,因为首地址是网络地址不能占用,故而从127.0.0.1开始。其实,主机地址可以使用任意地址,不一定要使用127.0.0.1,例如使用127.0.0.2也是可以的,因为tcp/ip协议软件并不会检查主机部分。ping 127.0.0.1和ping 127.0.0.2是一样的效果。