1、Basic IP Address Structure
1.1 classful Addressing:
这是早期的网络地方划分方式,现在已经被CIDR取代。
分为A B C D E五类,A B C都是单播地址,D是广播地址,E保留,A B C主要区别在于网络号和主机号所占的字节不同
1.2网络地址分类:
unicast address:
最普遍的ip地址,每个连接至Internet的端点都需要一个unicast address
multicast address:
一个多播地址代表一个多播组,给这个多播地址发送一个数据包,多播组内所有的成员(每个成员都有自己的ip地址),发送者是不会知道有哪些ip地址会收到这个包的。一个端口(ip地址)可以申请加入一个多播组,或者退出一个多播组
broadcast address:
本地广播地址:255.255.255.255,只会在单个子网内转发,路由器不会对这个地址进行转发
直接广播:子网号+全1的主机号,可以给别的子网发送广播消息,这个广播地址目前大部分路由器都不支持了
anycast address:
任意播(额。。。记得老师是这么称呼的,好像任意门啊,有木有),anycast的地址不是指向一个具体的host,而是对应了一个最适合的或者最近的ip地址。anycast一般用于发现提供公共服务的host(比如DNS server)
private address:
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 这是三个私有地址网段,这个地址在外网上是不会被路由的。
1.3 subnet:
为什么会出现子网:
原来使用的A B C的方式,如果有新的LAN(局域网,不存在NAT),需要给这个新网络分配一个网络号(A的或者B的或者C的),这样会很麻烦,为什么会很麻烦呢,书中没有明说。我自己的思路还不清晰,就不瞎说了
子网的实现方式:
原来的网络地址主要是由网络号和主机号组成,现在把主机号拆分一下,高位的(左边的)作为子网络号,右边的作为主机号。那么问题来了,以前路由器拿到一个网络地址的时候,看看地址prefix就知道这是哪类地址了,进而知道哪几位是网络号,哪几位是主机号,但是现在不行了,所以引入了一个新的机制叫做子网掩码(subnet mask),子网掩码中1都在最左边,多少个1就标识网络号(含网络类别前缀、网络号、子网号)占了多少位,这样路由器就能知道子网号是多少位、主机号是多少位了
在子网外的网络中,子网对路由器来说是不可见的,意思就是你有没有子网,外面的路由器是不知道的,只有当数据包到达当前子网的边界路由器时,子网掩码才开始产生作用,因为这个边界交换机需要根据子网号进行转发。子网还可以继续划分子网,逻辑是类似的,可以随意扩展,因为对外网来说子网是透明的,所以不需要对外网的路由器进行任何改变,是不是很方便撒
VLSM(变长子网掩码):
之前的一个网络内划分的子网的子网号都是定长的,只需要一个子网掩码就够了,但是这样划分子网的话每个子网的主机数都是相同的,是不是很不方便,尤其是当不同子网的主机数差别很大时。这个时候VLSM就开始发挥作用了,子网掩码的长度是不同的(即网路号的长度不一样)。可以根据子网内的主机数不同配置不同规模的子网
1.4 CIDR and Aggregation
1.4.1 CIDR (ClasslessInter-Domain Routing)
CIDR是为了解决什么问题:
B类网络已经快用完了(因为实际上很多分配的网路号中的地址利用率不高,所以挺浪费的)
CSDR的原理:
CSDR不再按之前的方式一次分配一个A、B或者C类的网络号,而是一次分配一块相邻的IP地址(不一定是整个某一个类网络),可以理解为现在的网络号不是以前固定的三种长度了,而是变长的了,这样ip地址的利用率提高了。但是因为网络号是变长的了,所以需要一种方式去告诉路由器,这个就是network prefix.这个机制和子网掩码是类似的,都是用来告诉路由器网络号的长度,不同的时 network prefix是用于标识网段(ip地址区间),而子网掩码是用来标识子网号的
1.4.2 Aggregation
Aggregation是为了解决什么问题:
不断有新加入的网络,因为地理分布是随机的,所以路由器的路由表的规模也在不断增加,影响到了路由器的性能。
Aggregation的原理:
把相邻的IP地址段地理分布上聚集(aggregate)到一起,这样路由器就可以根据地址的前缀进行转发了,假设一个ip地址需要一个路由表项,那么把1024个ip地址分配到同一个片区,那么路由器就不需要记录1024个表项,1个就够了。例子参看下图