本文用傻瓜的方式讲义了IP分类编址的原理,IP地址的表示法,IP地址存在的意义,基于IP分类遍址的路由表,以及基于IP分类遍址的路由选择 . 知识点: IP地址的表示法; IP地址存在的意义; IP分类遍址; 基于IP分类遍址的路由表; 基于IP分类遍址的路由。 目标: 利用分类遍址规划园区网络。 什么是IP地址 IP地址由32位的2进制组成。地址中最小数是32个2进制的0,最大数是32个1(2的32次方-1)。 1、点分10进制 计算机里以2进制形式存储IP地址,但这不方便人的记忆。比如,您的电脑里有一些电影希望被别人访问,电脑的IP地址是--10000000110000001110000011110000,人们要记住这个地址会非常困难。因此,需要将IP地址转换成人们理解的形式--点分10进制表示发,它将每8位2进制转换为一组10进制数,每组数字以“.”区分。以上2进制数“10000000110000001110000011110000”就可以表示为128.192.224.240。 2、256进制 通过观察可以发现,点分10进制表示法是256进制的,就是说在点分10进制表示法里没有256这个数,逢256就进一位。比如,系统访问十进制IP地址是257的电脑,点分10进制表示法是0.0.1.1。 3、第1例 分别给出10000000110000001110000011110000的点分10进制和10进制形式。 解: 3.1 点分10进制 将每8位2进制数转换成10进制,转换后的结果是--128.192.224.240。 3.2 10进制 利用乘权相加法进行转换(每一个位置的符号乘以这个位置的权重后再相加。2进制是以2为基数)。 1*2的31次方+0*2的30次方……0*2的0次方=2160124144 4、第2例 分别给出128.192.224.240的2进制和10进制形式。 解: 4.1 转换到2进制: 将每个以“.”点分割的10进制数转换2进制。 4.2 利用乘权相加法转换成10进制(点分10进制是以256为基数): 128*256的3次方+192*256的2次方+224*256的1次方+240*256的0次方=2160124144 5、第3例 利用除基取余法,给出十进制数78的二进制形式;十进制数3607的256进制形式。(除基取余法就是利用这个数循环除以基数,得到的余数连接起来就是最终的结果。) 解: 5.1 78的二进制。从78开始除以基数2,再用商39除以2,直到商为0: ![]() 最后的结果就是:1001110 5.2 3607的256进制 ![]() 最后的结果就是:0.0.14.23 为什么使用IP地址 熟悉了进制的转换,下一个问题就是为什么需要IP地址。这明显,要访问位于Internet上设备里的信息,每个设备必须至少有一个地址。比如,您想浏览Internet地址是2160124144电脑上的影片,那么就必须把这个地址告诉网络,网络会把你的请求发给目的地址。 1、MAC地址和IP地址的区别与联系 MAC地址存储在网卡上,它也是用来寻址的。可是为什么有了MAC地址还需要使用IP地址,不使用IP地址可以吗? 1.1 物理编址可能重复 类比:有两个班级一班和二班,一班有座位号1、2、3……,二班的座位好也是1、2、3,如果一班某个同学想写信给二班的1号座位,那么负责传信的将人无法得知这封信是给一班的1号还是二班的一号,因为信封上写的是“座位号是1的同学打开此信”。 这个类比说明了网卡MAC地址并不是全球统一发放,不同机构生产的网卡其MAC地址可能重复。 1.2 不同物理编址方案有不同的语法、语意 类比:一班座位号是从1、2、3……开始顺序排列下去,而二班则是以1、3、5奇数形式排列的。如果一班某同学想写信给二班的第3个同学,信封上的目的地址是3,而这个地址却是二班的第2个座位号,结果事与愿违。 1.3 不同的物理网络有不同的工作方式 Apple公司的LocalTalk网络,每当计算机加电时它的物理地址就改变一次,如果客户再用以前的服务器IP地址去访问就不对了。 2、使用统一的IP地址 为了达到统一性,一种办法是在物理地址级别上实施统一编址。但我们不能要求所有厂商废除已经卖出的网卡,然后再重新发行,搞种族灭绝。所以这就需要在底层仍然使用MAC地址,而在Internet上通信时就必须使用全球统一的地址,既IP地址。还以上面的例子类比: 班级座位拓扑 ![]() 2.1 为设备分配物理地址 首先,将两个班机的座位号按照行列交叉点命名。位于两个班机交叉点的座位拥有两个坐标,一个位于一班,另一个位于二班。 2.2 为设备分配网络地址 给位置分配字母形式的地址,这个地址在两个班级不能重复,此地址我们就称为网络地址,既IP地址。 注意:位于两个班机交叉点的座位拥有两个IP地址。 2.3 ARP表 每个座位上贴了一张ARP表。ARP表的内容是本班级IP地址与物理地址(MAC)的对应关系。 位于两个班级交叉点座位的ARP表拥有两个班级的IP地址与物理地址的对应关系。 如IP地址为A的ARP表 [table][tr][td]目的IP地址[/td][td]目的MAC地址[/td][/tr][tr][td]a[/td][td]1,1[/td][/tr][tr][td]b[/td][td]1,2[/td][/tr][tr][td]i[/td][td]2,3[/td][/tr][tr][td]……[/td][td]……[/td][/tr][/table]2.4 route表 每个座位上还帖了一张Route(路由)表。路由表的内容是IP地址、出口、下一跳三者的对应关系。 如IP地址为a的route表 [table][tr][td]目的IP地址[/td][td]出口[/td][td]下一跳地址[/td][/tr][tr][td]a[/td][td]自己[/td][td]自己[/td][/tr][tr][td]b[/td][td]I[/td][td]-[/td][/tr][tr][td]i[/td][td]I[/td][td]-[/td][/tr][tr][td]……[/td][td]……[/td][td]……[/td][/tr][tr][td]d[/td][td]I[/td][td]i[/td][/tr][tr][td]k[/td][td]I[/td][td]i[/td][/tr][/table]3, ARP、Route表是如何工作的 类比 不同物理网段,a有封信要投递给k: 3.1主机查询route表 a根据route表的条目判断目的IP地址是否和自己在同一个班级,如果不在,则把这封信转交给i。具体而言,A顺着route表向下查,[下一跳地址]若是短横杠”-”,就表示在一个班级,否则需要把信投递给下一跳标出的地址,这里是地址i。可由于还不知道IP地址i的具体经纬度,也就是它的物理地址在几行几列,所以需要查询ARP表。 3.2主机将数据包投递给网关 a根据ARP表得知i在第2行第3列这个物理位置,于是把信交给i. 3.3网关查询路由表 i收到此信后,也是根据其自身的route表,判断这个包应该从哪个出口出去,Route发现目的IP地址k应该从2号出口送出去。 i的route表 [table][tr][td]目的IP地址[/td][td]出口[/td][td]下一跳地址[/td][/tr][tr][td]a[/td][td]I[/td][td]-[/td][/tr][tr][td]b[/td][td]I[/td][td]-[/td][/tr][tr][td]c[/td][td]I[/td][td]-[/td][/tr][tr][td]……[/td][td]……[/td][td]……[/td][/tr][tr][td]d[/td][td]II[/td][td]-[/td][/tr][tr][td]k[/td][td]II[/td][td]-[/td][/tr][/table]3.4 网关将数据包投递给主机 然后i根据ARP表得到目的IP的i的物理位置,既2行2列。 3.5 同一物理网段 b给a发信,b根据route表发现a与自己在同一个班级,再根据arp表得出a的物理位置,就可以直接把信送过去了,而不需要任何中间环节。a收到此信后,检查Route表判断是不是给自己的,因为route表有一行(a自己自己)的条目,所以是给自己的,因此a就把数据包传递给自身的上一层协议继续处理这封信。 总结 MAC地址是用来在同一个物理网段寻址的,而IP地址则是用来跨物理网段在Internet级寻址的。 IP地址在哪里1、路由表 通过上面的例子可以发现,IP地址存在于route表中。至于如何向route表中添加条目,后面我们会提到。 2.设备接口 哪些设备需要IP地址呢?其实我们可以发现,需要IP地址的不是设备,而是设备的 接口,位于多个网络的设备(多宿主)需要在其没个接口上设置IP地址。 Internet的网络层是怎样工作的通过Arp表、Route表,不同的物理网络可以通信了,但存在一个严重的问题,如果Internet上有1亿台设备,那么route表上就要有1亿行,这对于设备查询起来是非常慢的,所以需要对路由表进行优化以后,Internet的网络层才可以正常工作。 1、Route表优化 1.1 层次化的IP地址 1.1.1为了达到优化的目的,首先需要对IP地址重新解释。以前一个IP地址是无层次的,现在将IP地址分为两部分--网络地址部分和主机地址部分。还是以上面的两个班级类比,以点“.”作为分割符,点“.”前面的数字是班级地址,点“.”后面的是座位号。把a的IP地址替换为1.1,b的IP地址1.2,i的IP地址是1.6,位于另个班级的d的IP地址是2.1,k的IP地址是2.5: 分层的座位号结构 ![]() 现在A的router表是这样的 [table][tr][td]目的IP地址[/td][td]出口[/td][td]下一跳地址[/td][/tr][tr][td]1.1[/td][td]自己[/td][td]自己[/td][/tr][tr][td]1.0[/td][td]I[/td][td]-[/td][/tr][tr][td]2.0[/td][td]I[/td][td]i[/td][/tr][/table]位于两个班级交叉点的Route表是这样的 [table][tr][td]目的IP地址[/td][td]出口[/td][td]下一跳地址[/td][/tr][tr][td]1.0[/td][td]I[/td][td]-[/td][/tr][tr][td]2.0[/td][td]II[/td][td]-[/td][/tr][/table]1.1.2 为了弄清两个表是如何工作的,假设a有封信要投递给k. 1.1.2.1 首先A根据route表判断目的IP地址是否和自己在同一个班级,如果不在,则把这封信转交给i.具体而言,就是A顺着route表向下查,班级号(网络号)相同,就表示在一个班级,否则不在一班级。 1.1.2.2 然后A根据arp表得到i在第2行第3列的位置,于是把信交给i. 1.1.2.3 i收收到此信后,也是根据其自身的route表,判断这个包应该从哪个出口出去,具体而言就是判断信的网络号,routeri发现目的网络号2应该从II号出口送出去。 1.2默认路由选择 如果Internet有1000万个网络,难道每个台电脑或者路由器都需要在route表中增加1000万行?比如上面的例子,如果路由器i连了5百个网络,难道不同网络中的电脑都上的route表都要有5百行么? 比如A的路由表 [table][tr][td]目的IP地址[/td][td]出口[/td][td]下一跳地址[/td][/tr][tr][td]1.0[/td][td]I[/td][td]-[/td][/tr][tr][td]2.0[/td][td]I[/td][td]i[/td][/tr][tr][td]3.0[/td][td]I[/td][td]i[/td][/tr][tr][td]100.0[/td][td]I[/td][td]i[/td][/tr][/table]一个简便的做法就是在路由表中采用默认路由选择 比如现在A的路由表 [table][tr][td]目的IP地址[/td][td]出口[/td][td]下一跳地址[/td][/tr][tr][td]1.0[/td][td]I[/td][td]-[/td][/tr][tr][td]0.0[/td][td]I[/td][td]i[/td][/tr][/table]0.0表示任何其他网段,这样所有不是1.0网段的数据包都匹配0.0这条,下一跳地址是i。 2、分类的IP地址 尽管象上面把IP地址分成网络部分和主机部分,极大的优化了Route表,但还不够灵活。因为每个网络都有相同个数的IP地址。比如0.0.1.0,前3位代表网络ID,后1位代表主机ID,这就意味有2^24个网络,每个网络有2^8个设备。 第一个网络地址是:0.0.1.0/这个网络的第一个IP地址是0.0.1.1/这个网络的最后一个IP地址0.0.1.255。 第二个网络地址是:0.0.2.0/这个网络的第一个IP地址是0.0.2.1/这个网络的最后一个IP地址0.0.2.255。 最后个网络地址是:255.255.255.0/这个网络的第一个IP地址是255.255.255.1/这个网络的最后一个IP地址255.255.255.255。 如果有个学校需要25500个IP地址,就不得不申请100个含有2^8个IP的网络。而管理100个网络是难维护的。比如限制100个网络都不可以访问某个非法IP地址,就需要分别对100个网络进行访问控制。 于是Internet的设计者参考了电话号码的方式重新对IP地址解释。电话号码是由11位组成的,大城市前3位是区号,主机号是8位,表示每个大城市可以容纳10^8台电话。而小城市前4位是区号,主机号是7位,表示每个小城市可以容纳10^7台电 话。 Internet的设计者将IP地址划分了5类.A类地址前8位2进制是网络ID,后24位是主机ID, B类地址前16位是网络ID/后16位是主机ID, C类地址前24位是网络ID/后8位是主机ID, D类和E类不区分网络号和主机ID,做为特殊用途。 ![]() 经过这样设计,需要25500个地址的学校,只需要申请一个B类地址就可以,因为每个B类网络可以容纳2^16=65536台主机。而需要10万台设备的网络,可以申请一个A类网络,因为A类网络可以容纳2124=16777216台设备。而只有几十台设备的小公司,申请一个C类网络就够了。 3、IP分类编址网络的地址范围 这5类网络,分别占了IP地址空间0-2^32的哪些部分?Internet的设计者同样参考了电话号码:所有大城市的电话号码之和肯定大于所有小城市之和。所有的A类地址之和肯定大于所有C类地址之和。具体实现是: ![]() 4、辨认类别 在二进制记法中找出地址类 ![]() A类第一个地址是 00000000000000000000000000000000 A类最后一个地址 01111111 11111111 1111111 111111111 B类第一个地址是 10000000000000000000000000000000 B类最后一个地址 1011111111111111111111111111111111 例子1:怎样用2进制证明A类地址中有2147483648个地址? 解: 在A类地址中,只用1位定义地址的类。剩下的31位可以用于地址分配。31位2进制可以容纳2^31或2147483648个地址。 例子2:找出每一个地址的类别。 a.00000001 00000011 00000111 00001111 b .11000000 10000011 00011011 10101010 c.10100111 11011011 10000011 0101 111111111111 4.11110011 10101010 11111011 00000000 解: 参考上图所示过程。 a.第一位是0,这是A类地址。 b.前两位是1,第三位是0,这是C类地址。 c.第一位是1,第二位是0,这是B类地址。 d.前四位是1;这是E类地址。 在点分十进制记法中找出地址类 ![]() 5、地址类与地址块 对于分类编址,每一类地址都划分为固定数目的地址块,每一块都有相同的地址数。 A类 ![]() 列子1:如何证明A类地址有128个网络块。 解: 因为A类地址的网络号占8位,而1位用来定义类别,所以A类共有2^7或128个 网络。 例子2:如何证明A类地址每一个网络块有16777216个地址。 解: 因为A地址的主机号占24位,所以A类共有2^24或16777216个地址。 B类 ![]() 例子1:如何证明B类地址有16384个网络块。 解 因为B地址的网络号占16位,而2位用来定义类别,所以B类共有2^14或16384 个网络。 例子2:如何证明B类地址每一个网络块有65536个地址。 解: 因为B地址的主机号占16位,所以B类共有2^16或65536个地址。 C类 ![]() 例子:如何证明C类地址有2097152个网络块? 因为C地址的网络号占24位,而3位用来定义类别,所以B类共有2^21或2097152 个网络。 特殊约定 1.网络块中第一个地址不可以为设备分配网络中的第一个地址是为了标识这个网络的。 2.网络块中最后一个地址不可以为设备分配 网络中最后一个地址是作为在这个网络中发送广播报使用的。 3、环回地址 第一个字节等于127的IP地址叫做环回地址,这个地址用类测试机器的软件。 4.专用地址 每一类地址中都有一些块被指派作为专用地址 [table][tr][td]类别[/td][td]网络号[/td][td]块数[/td][/tr][tr][td]A[/td][td]10.0.0[/td][td]1[/td][/tr][tr][td]B[/td][td]172.16~172.31[/td][td]16[/td][/tr][tr][td]C[/td][td]192.168.0~192.168.255[/td][td]256[/td][/tr][/table]6、分类编址网络中的路由 在分类编址中,通过目的IP地址,就可以知道这个IP地址属于哪类网络,进而就可 以知道这个目的IP地址的网络地址,最后用目的网络地址和自己的网络地址比较一 下,一样的话就直接通信,不一样就通过网关。 网络拓扑图 ![]() 193.193.6.6与123.123.123.123通信流程图 ![]() 193.193.6.6的路由表 [table][tr][td]目的IP地址[/td][td]出口[/td][td]下一跳地址[/td][/tr][tr][td]193.193.6.6[/td][td]127.0.0.1[/td][td]127.0.0.1[/td][/tr][tr][td]193.193.6.0[/td][td]1[/td][td]-[/td][/tr][tr][td]0.0.0.0[/td][td]1[/td][td]193.193.6.1[/td][/tr][/table]193.193.6.6的ARP表 [table][tr][td]目的IP地址[/td][td]目的MAC地址[/td][/tr][tr][td]193.193.6.6[/td][td]a[/td][/tr][tr][td]193.193.6.7[/td][td]b[/td][/tr][tr][td]193.193.6.1[/td][td]c[/td][/tr][/table]链接193.193.6.0网络路由器的Router表 [table][tr][td]目的IP地址[/td][td]出口[/td][td]下一跳地址[/td][/tr][tr][td]193.193.6.0[/td][td]1[/td][td]-[/td][/tr][tr][td]150.150.0.0[/td][td]2[/td][td]-[/td][/tr][tr][td]220.193.6.0[/td][td]2[/td][td]150.150.9.9[/td][/tr][tr][td]123.0.0.0[/td][td]2[/td][td]150.150.9.9[/td][/tr][tr][td]0.0.0.0[/td][td]2[/td][td]150.150.100.1[/td][/tr][/table]链接193.193.6.0网络路由器的Arp表 [table][tr][td]目的IP地址[/td][td]目的MAC地址[/td][/tr][tr][td]150.150.0.1[/td][td]a[/td][/tr][tr][td]150.150.9.9[/td][td]c[/td][/tr][tr][td]150.150.100.1[/td][td]b[/td][/tr][/table] SubnetlD初探 通过上面的通信过程,我们可以发现在分类编址中,通过目的IP地址,就可以知道这个IP地址属于哪类网络,进而就可以知道这个目的IP地址的网络地址, 最后用目的网络和自己的所在的网络比较一下,一样的话就直接通信,不一样就通过路由器。 同样的路由过程,可以用另一种方式来完成,那就是利用SubnetID o SubnetlD可以更显示的表示出一个IP地址属于哪一类。这样做是出于划分子网的目的(在子网划分章节有详细描述)。 1、什么是SubnetID? SubnetlD(子网掩码)是32位从左侧最高位连续的I组成的2进制。比如: 11111111 00000000 00000000 00000000(255.0.0.0) 11111111 11000000 00000000 00000000(255.192.0.0) 不是从左侧开始连续的1组成的2进制都不能作为子网掩码。比如: 00000000 00000000 00000000 11111111(0.0.0.255) 10101010 00000000 00000000 00000000(168.0.0.0) 2、SubnetlD和IP地址是如何协同工作的? SubnetlD不能单独存在,必须和IP地址协同工作才有实际意义。就是说,无论是给单独的设备,还是给路由器接口分配IP地址时,同时必须为其分配子网掩码,反之亦然。 3、位与运算 两个2进制数,如果对应位上都是1,则输出1。对应位上任何一个数为0,输出0。只要记住下面法则就可以了: *若子网掩码的位是1,那么IP地址的相应位在输出结果时保持不变。 *若子网掩码的位是0,那么输出的结果为0。 4、使用SubnetlD的分类编址网络的路由 193.193.6.6的Route表 [table][tr][td]SubnetID[/td][td]目的地址[/td][td]出口[/td][td]下一跳[/td][/tr][tr][td]255.255.255.255[/td][td]193.193.6.6[/td][td]127.0.0.1[/td][td]127.0.0.1[/td][/tr][tr][td]255.255.255.0[/td][td]193.193.6.0[/td][td]1[/td][td]-[/td][/tr][tr][td]0.0.0.0[/td][td]0.0.0.0[/td][td]1[/td][td]193.193.6.1[/td][/tr][/table]链接193.193.6.0网络路由器的Route表 [table][tr][td]SubnetID[/td][td]目的地址[/td][td]出口[/td][td]下一跳[/td][/tr][tr][td]255.255.255.0[/td][td]193.193.6.0[/td][td]1[/td][td]-[/td][/tr][tr][td]255.255.0.0[/td][td]150.150.0.0[/td][td]2[/td][td]-[/td][/tr][tr][td]255.255.255.0[/td][td]220.193.6.0[/td][td]2[/td][td]150.150.9.9[/td][/tr][tr][td]255.0.0.0[/td][td]123.0.0.0[/td][td]2[/td][td]150.150.9.9[/td][/tr][tr][td]0.0.0.0[/td][td]0.0.0.0[/td][td]2[/td][td]150.150.100.1[/td][/tr][/table]为设备分配IP地址和子网掩码1、电脑的设置 1.1 图型方式设置 这种设置方式简单方便,但只能设置默认路由。若是windows系统,可以直接在网卡属性设置。 1.2命令行方式设置 这种方式设置功能相对强大,并且可以查看路由表。 添加默认路由: route add 0.0.0.0 mask 0.0.0.0 193.193.6.1 查看路由表: Route print 1.3 DHCP方式设置 对于有大量主机的设备,使用DHCP方式设置减少了认为配置出错等问题。 2、路由器的设置 命令行方式设置,这是最常用的设置方式。 配制以太网接口地址 步骤1,进入全巨配置模式 步骤2,进入接口配置模式 步骤3,指定接口地址和SubnetID 步骤4,开启该接口 R1(config)#interface f0/0 R1(config-if)#193.193.6.1 255.255.255.0 R1(config-if)#no shutdown 配置静态路由 步骤1、进入全局配置模式 步骤2,利用ip route命令增加路由表条目 步骤3,重复步骤2 备注: IP地址由位于美国的ICANN(互联网域名与地址管理机构)全球统一发放。未经许可,擅自设置自己机器的公网IP地址是无用的,因为Internet其余部分没有指向您设备的路由。 参考资料: TCP/IP协议族 清华大学出版社 清华大学信息科学技术学院教材 Cisco自学指南 人民邮电出版社 |
联系客服