一。有类编址
与MAC地址相似,IP地址是网络设备接口的属性,而不是网络设备自己本身的属性。在给设备分配一个IP地址时,实际上指的是给设备的某个接口分配一个IP地址,当设备有多个接口时,通常每个接口都至少需要一个IP地址。
通常情况下,路由器和计算机的接口是需要使用IP地址的,而“二层交换机”不具备网络层转发功能,是不需要IP地址的。我们常把路由器和计算机统称为“主机”,常把主机的某个接口的IP地址简称为主机IP地址。
1.IP地址的格式
IP地址的长度为32bit,由4个字节组成。IP地址通常采用点分十进制数来表示,方便阅读和书写。主机IP地址分为网络号、主机号这两个部分。网络号:用于表示主机接口所在的网络;主机号:表示主机在网络号所定义下的网络范围内某个特定的主机接口。
2.IP地址的分类
IP地址在最开始的时候被划分成5类:A类、B类、C类、D类、E类。
(1)A类、B类、C类地址:属于单播IP地址(一些特殊的IP地址除外),只有这三类中的地址才能分配给主机接口使用。其中的主机接口的IP地址既可以是该接口的身份信息,又在一定的程度上表示了接口的位置信息。
(2)D类地址:属于组播IP地址;E类地址:专用于特殊的实验目的的IP地址。
3.三类地址的结构差异
通常将A类地址的网络称为A类网络,等等。A类网络的网络号的个数很少,相反A类网络中能够允许接入的主机接口的个数是非常多的;而C类网络的网络号的个数较多,但是每个C类网络中所允许的主机接口的数目是很少的。
网络号位数 | 网络号个数 | 主机号位数 | 每个网络号下可分配的主机IP地址的个数 | 地址范围 | |
A类 | 8 | 2^7=128 | 24 | 2^24-2=16777214 | 0.0.0.0~127.255.255.255 |
B类 | 16 | 2^14=16384 | 16 | 2^16-2=65534 | 128.0.0.0~191.255.255.255 |
C类 | 24 | 2^21=2097152 | 8 | 2^8-2=254 | 192.0.0.0~223.225.255.255 |
从表格上可以判断,对于一个大型机构的网络(假如包含1.6*10^7个接口),则需要给它分配一个A类网络,对于一个只包含了500个左右接口的小型网络,只需要向其分配2个C类网络就可以。
4.IP地址的一些重要特点总结
(1)IP地址是一种分等级的地址结构。分两个等级的好处有:
**第一:IP地址管理机构在分配IP地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配,方便了IP地址的管理;
**第二:路由器仅根据目的主机所连接的网络号来转发分组(不考虑目的主机号),可以使路由表中的项目数大量的减少,以至于减少路由表所占的存储空间。
(2)IP地址实际上是标志一个主机(或路由器)和一条链路的接口。
**当一个主机同时连接到两个网络时,该主机就必须同时具备有两个相应的IP地址,其网络号必须是不同的。这种主机称为多归属主机。
**由于一个路由器至少应当连接到两个网络(在这样的条件下,才可以将IP数据包从一个网络转发到另一个网络),所以呢一个路由器至少要有两个不同的IP地址。
5.网段
把一个网络号所定义的网络范围称为一个网段。
计算:一个网段中可分配的主机IP地址=2^主机号的位数-2(减2的原因:每个网络号下(即每一个网段中)都预留了两个特殊的地址)。
(1)一个IP地址,若网络号为X,且主机号的每个比特均是0,那么该IP地址就称为网络号为X的网络的网络地址。而且网络地址是不能分配给具体的主机接口的。
(2)一个IP地址,若网络号为X,且主机号的每个比特均是1,则该IP地址称为网络号为X的网络的广播地址。广播地址也是不能分配给具体的主机接口的。
示例:
二。无类编址
正所谓的无类编址是不限定网络号和主机号的个数的,IP地址的利用率得到了很好的提高。我们可以扩展网络号的位数,减少主机号的位数,就可以使这个范围的IP地址可以分配给更多的组织或机构。
规划和分配IP地址的方式:假设一个机构所需要的主机IP地址的数目为N,通过计算确定出大于或等于N+2的最小的2的幂,再以幂的值作为主机号的位数,则余下的位数就是网络为的数目。
三。子网掩码
子网掩码是由32个bit组成的,可以看成是4个字节。也是采用点分十进制数来表示的。
注:子网掩码本身不是一个IP地址,它必须由若干个连续的1后面接若干个连续的0组成。
例如:11111100 00000000 00000000 00000000(252.0.0.0)子网掩码
(1)通常将一个子网掩码中1的个数称为该子网掩码的长度。上诉例子中的子网掩码的长度为6。
(2)子网掩码总是与IP地址结合使用。当一个子网掩码与一个IP地址结合使用的时候,子网掩码中1的个数(其长度)就表示该IP地址的网络号的位数,0的个数表示这个IP地址的主机号的位数。
(3)将一个子网掩码与一个IP地址进行逐位“相与”运算,就能得到该IP地址所在网络的网络地址。
(4)子网掩码的引入,使得无类编址可以完全的后向兼容有类编址方式。在这样的情况下,有类编址就成为了特殊的无类编址。使用无类编址时,子网掩码的长度是可以根据实际情况变化的,这时的子网掩码也可以称为“可变长子网掩码(VLSM)”。
(5)现在的Internet所使用的编址方式都是无类编址方式,其中一个IP地址总是有其相对应的子网掩码。
(6)在书写IP地址和其对应的子网掩码时,习惯IP地址在前,子网掩码在后,中间使用“/”隔开。常常用子网掩码的长度来代替子网掩码本身。例如:192.168.1.5/252.0.0.0——192.168.1.5/6。
四。特殊IP地址
IP地址是由ICANN(因特网名字与数字分配机构)统一分配的,保证任何一个IP地址在Internet上是具有唯一性的(这里的IP地址是公网IP地址)。连接到Internet的网络设备是必须具有由ICANN分配的公网IP地址。
当然有的网络设备是不需要使用公网IP地址的,只要保证在同一网络中的网络设备的IP地址是不会发生冲突的就可行。
1.私网IP地址(只能用于私有网络)
(1)A类:10.0.0.0~1.255.255.255;
(2)B类:172.16.0.0~172.31.255.255;
(3)C类:192.168.0.0~192.168.255.255。
只要是Internet上的设备是都不可以接收、发送或者转发源IP地址或目的IP地址在上面范围内的报文的。但是,如果私有网络与Internet需要互联,则必须使用网络地址转换NAT技术。
私网地址的使用使网络得到更好的扩展,同一个私网IP地址是可以在不同的私有网络中得到重复使用的。
255.255.255.255
该地址称为有限广播地址,可以作为一个IP Packet的目的IP地址使用。路由器接收到目的IP地址为有限广播地址的IP Packet后,会停止对该IP Packet的转发。
0.0.0.0
作为一个网络地址来讲的话,表示“任何网络的地址”;作为一个主机接口地址来看待,则表示“这个网络上这个主机接口”的IP地址。
当一个主机接口在启动过程中尚没有获得自己的IP地址时,就可以向网络发送目的IP地址为有限广播地址、源IP地址为0.0.0.0的DHCP(动态主机配置协议)请求报文,希望DHCP服务器在收到自己的请求后,能够给自己分配一个可用的IP地址。
127.0.0.0/8
该部分地址称为环回地址。环回地址可以作为一个IP Packet的目的IP地址使用。一个设备所产生的、目的IP地址为环回地址的IP Packet是不可能离开这个设备本身的。环回地址的作用是用来测试设备自身的软件系统。
169.254.0.0/16
如果一个网络设备获取IP地址的方式是自动获取方式,但是又没有找到可用的DHCP服务器,那么该设备会使用169.254.0.0/16网段中的某个地址来进行临时的通信。
五。IP转发原理
1.路由器的工作内容主要有两方面:
(1)通过运行路由协议来建立并维护自己的路由表;
(2)根据自己的路由表对IP报文(IP包)进行转发。路由器对IP包的转发也称为IP转发,或网络层转发,或三层转发。
与交换机一样,一台路由器上也有若干个转发数据的接口,一个接口的行为也是由与该接口对应的网卡控制的。这些网卡的组成结构是与交换机上的网卡或计算机上的网卡的结构完全一样的,同样包含了CU、OB、IB、LC、LD、TX、RX这7个模块。而且每个接口的网卡都有自己的MAC地址,这个MAC地址也通常称为这个接口的MAC地址。
2.路由器上接口的行为特点:
(1)当一个单播帧从线路(传输介质)上进入路由器的一个接口后,这个接口会将这个帧的目的MAC地址与自己的MAC地址进行比较。若两个MAC地址不相同,则这个接口会将这个帧直接丢弃;若相同,这个接口会将这个帧的载荷数据提取出来,并根据帧的类型字段值将载荷数据上送至路由器的网络层中相应的模块进行后续的处理。
(2)当一个广播帧从线路上进入路由器的一个接口后,这个接口会直接将这个帧的载荷数据提取出来,并根据帧的类型字段值将载荷数据上送至路由器的网络层中相应的模块进行后续的处理。
由上图解释IP转发原理的核心内容:
(1)假设当一个单播帧X从线路上进入到路由器的某个接口上时,由于该帧的目的MAC地址与这个接口的MAC地址相同,该接口会将单播IP包给提取出来;
(2)假设这个帧的类型字段为0x0800,那么该接口会将单播IP包上送至路由器的网络层中的IP转发模块进行处理;
(3)IP转发模块在收到这个单播IP包后,会根据其中的目的IP地址查询自己的路由表。查询结果有以下两种可能:1.将单播IP包直接丢弃;2.确定出单播IP包的出接口,以及下一跳IP地址。
(4)IP转发模块将IP包下发给出接口,同时将其下一跳IP地址告诉出接口。
(5)出接口会将IP包封装成一个单播帧为Y,Y帧的载荷数据就是这个单播IP包,而Y帧的类型字段的值是0x0800,Y帧的源MAC地址就是出接口的MAC地址,Y帧的目的MAC地址是IP包的下一跳IP地址所对应的MAC地址。若路由器能从自己的ARP缓存表中查找到IP包的下一跳IP地址所对应的MAC地址,则直接将这个MAC地址作为Y帧的目的MAC地址;否则的话,出接口会发出ARP请求,已至得到IP包的下一跳的IP地址所对应的MAC地址。
分组转发算法:
(1)从数据报的首部提取出目的主机的IP地址D,得出目的网络地址为N。
(2)若网络N与此网络的路由器直接相连,则把数据报直接交付给目的主机D;否则是间接交付,执行(3)。
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中指定的下一跳路由器;否则,执行(4)。
(4)若路由表中有到达网络N的路由,则把数据报传送给路由表知名的下一跳路由器;否则,执行(5)。
(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由;否则,执行(6)。
(6)报告转发分组出错。
在划分子网的情况下路由器转发分组的算法:
(1)从收到的分组首部提取出目的IP地址D。
(2)先用各网络的子网掩码和D逐位相“与”,看是否和相应的网络地址匹配,若匹配,则直接将分组交付;相反就是间接交付,执行(3)。
(3)若路由表中有目的地址为D的特定主机路由,则把分组传送给路由表中指定的下一跳路由器;否则,执行(4)。
(4)对路由表中的每一行的子网掩码和D逐位相“与”,若其结果与改行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(5)。
(5)若路由表中有一个默认路由,则把分组传送给路由表中所指明的默认路由;否则,执行(6)。
(6)报告转发分组出错。
六。IP报文格式
版本(4bit) | 包头部长度(4bit) | DS域(8bit) | 总长度(16bit) | |
标识 | 标志 (3) | 分段偏移(13) | ||
存活时间 | 协议 | 头部检验和 | ||
源IP地址 | ||||
目的IP地址 | ||||
选项/长度填充 | ||||
载荷数据(包载荷) |
(1)包头部长度:表示IP包的头部的长度。IP包的头部是不固定的(必须是4字节的整数倍):
“包头部长度“字段的值*4=包头部的字节数
(2)DS域:该字段的作用是表示报文在QoS中的服务等级,用以区分报文的转发优先级。
(3)总长度:表示整个IP报文的长度,一个IP报文的最大长度是2^16=65536个字节。
(4)标志、标识、分段偏移:用于IP报文的分片和重组。
(5)存活时间:TTL;当一个IP报文在Internet中运动时,没经过一个路由器,该字段的值就被路由器减1.若该字段的值被减为0后,则这个报文就会被设备直接丢弃。倘若没有TTL机制,当一个Internet中存在的路由环路时,IP报文就可能在环路中循环运动,消耗大量的网络资源。
(6)协议:表示IP报文的载荷数据的类型。0x01——表示IP报文的载荷数据是一个ICMP报文;0x02——表示IP报文的载荷数据是一个IGMP报文;0x06——是一个TCP段;0x11——一个UDP报文;0x59——一个OSPF报文,等等。
(7)IP数据报首部的可变部分:一个选项字段,用来支持排除、测量以及安全等措施,同时转发过程中可以指定路径放在可选项中。
特别强调:
(1)IP数据报的首部中没有地方可以用来指明“下一跳路由器的IP地址”;
(2)当路由器收到待转发的数据报时,不是将下一跳路由器的IP地址填入到IP数据报中,而是送交下一层的网络接口软件;
(3)网络接口然健使用ARP负责将下一跳路由器的IP地址转换成硬件地址,并将此硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器。