我们把整个因特网看成一个抽象的网络,IP地址就是给因特网上的每个主机的接口分配的一个在全世界范围内唯一的32 bit的标示符。
要了解网络中设备的运作方式,就必须知道设备处理地址和数据方式:二进制方式。
二进制表示仅用数字“0”和“1”表示信息。
任何信息与文件在计算机内存储的方式就是二进制。例如,在键盘上输入任何汉字或者字母,在计算机内部以二进制形式存储,只是表示在屏幕上的时候,由OSI参考模型的表示层把内部的信息表示成人们可以读懂看懂的信息。计算机中的每一个字母都采用二进制表示方式,计算机使用美国信息交换码(ASCII)。
网络中的设备是以二进制的方式存储信息,但在以人为本的网络中,人们却很难读懂一连串的二进制信息,所以机器会把二进制的信息变成人们熟知的十进制数值。
要掌握二进制与十进制之间的转换方法,首先必须了解数制的概念,下表显示了各种常用的进位制及表示。
进位计数制 | 基数 | 数码 | 权重 | 符号 |
---|---|---|---|---|
二进制数 | 2 | 0、1 | 2^i | B |
八进制数 | 8 | 0、1、2、3、4、5、6、7 | 8^i | O |
十进制数 | 10 | 0、1、2、3、4、5、6、7、8、9 | 10^i | D |
十六进制数 | 16 | 0、1、2、3、4、5、6、7、8、9 、A、B、C、D、E、F | 16^i | H |
在IPv4地址中,地址为32 bit(4字节),然而为了方便使用,IPv4地址使用十进制数表示,中间用“.”分开,记作点分十进制,表示为“X.X.X.X”。这种表示方式首先使用句点将32位二进制模式按字节(8 bit)分开。
机器中存放的IP地址是32 bit的二进制代码10101100000100000111101011001100,我们把它每隔8 bit插入一个空格提高可读性,
10101100 00010000 01111010 11001100,然后将每8 bit的二进制数转换成十进制数得到172 16 122 204,采用点分十进制计法进一步提高可读性为:172.16.122.204。
IPv4地址是一种分层的地址结构,由网络号与主机号两部分组成,叫作两级IP地址,如图所示。
在IP地址两级结构中,要确定网络部分和主机部分,必须看bit位的二进制代码,而不是十进制数值。在32 bit中,部分bit组成网络号,部分bit组成主机号。
对于同一个网络中的设备,其网络号必须相同,而主机号则是唯一的。如果有两台设备的IP地址中网络部分相同,则可以判定这两台设备处于同一个网络。
对于两级IPv4地址而言,如何判断32 bit的二进制位中哪部分是网络号,哪部分是主机号呢?这项工作是由子网掩码负责的。
在配置主机时,必须通知配置一个子网掩码。与IP地址一样,子网掩码也是32 bit,子网掩码的表示方式一般情况是左边部分是1,右边部分是0,总共32 bit。
将子网掩码与IP地址从左至右逐位进行比较,子网掩码中的1代表网络号,子网掩码中的0代表主机号,如图所示。
和IPv4地址类似,子网掩码也使用点分十进制表示。子网掩码与IPv4地址一起标识了主机所属的网络。下表显示了子网掩码中每个字节的可能的取值及其指定网络的网络号和主机号的位数。
最初,IPv4地址是按类编址的,这种编址体系结构叫作分类编址。
在IPv4地址空间中,总共分成A类、B类、C类、D类、E类五类。每一类地址都有两个固定长度的字段(网络号和主机号),各类IP地址的网络号和主机号字段如图所示。
常用的三类IP地址A、B、C,一般给用户使用,默认情况下的子网掩码如下表所示。
网络号(字节) | 主机号(字节) | 子网掩码(默认) | |
---|---|---|---|
A类 | 1 | 3 | 255.0.0.0 |
B类 | 2 | 2 | 255.255.0.0 |
C类 | 3 | 1 | 255.255.255.0 |
IP地址的可用范围如下表所示
网络类别 | 最大网络数 | 第一个可用网络号 | 最后一个可用网络号 | 网络中的主机数 |
---|---|---|---|---|
A | 126 | 1 | 126 | 16 777 214 |
B | 16384(2^14) | 128 | 192.255 | 65534 |
C | 2 097 152(2^21) | 192.0.0 | 223.255.255 | 254 |
在IPv4地址空间中,有一些特殊的IP地址是不能分配给某一台主机的,具体格式如下表所示。
网络地址
网络地址是表示网络的一种形式。在IPv4地址中,第一个地址留作网络地址,其格式是主机号,是0,即子网掩码中所有0 bit的对应位都是0。该网络中所有的主机共用一个网络地址,网络地址用于表示网络,不能用于主机通信。
广播地址
IPv4中的广播地址是特殊的IP地址,其格式是主机号为全1(二进制比特位为全1,非十进制数值),用于网络中的所有主机通信。如果IPv4数据报中的目的地IP地址是一个广播地址,则数据会发送给全网上所有的主机。
为了验证广播过程,在Packet Tracer中搭建如图所示拓扑,并将模拟器切换到Simulation模式,创建复杂PDU,如图所示,其目的地地址设置为192.168.1.255(广播地址)。单击Capture Forward观察结果,发现主机A发出的广播数据包,主机B、C、D、E都能收到。
回送地址
127开头的IP地址用于网络软件测试。例如127.0.0.1,一旦使用该地址发送数据,则立即返回给本主机。
如图所示,在主机命令行中输入命令ping 127.0.0.1,则立刻收到了自己的回复。
主机地址
每一个终端设备工作时都必须要分配一个IP地址才能通信。
在IPv4地址中,特殊的IP地址一般情况是不能分配给终端的,其他所有的地址都是可以给分配终端的(网络地址与广播地址之间的值)。
在一个主机地址中,主机号可以是任何0与1的组合,但不能是全0(网络地址)或者全1(广播地址)。
在IPv4网络中,主机可以用三种方式来通信:单播、组播、广播。
公用地址
IPv4地址中大多数都是公有地址,用于访问Internet的网络,只有使用公用IP地址的数据包才能被Internet的路由器转发。
公有地址一般情况由运营商等机构向Internet NIC(Internet Network Information Center,因特网信息中心)申请,用户再向运营商租用。
私有地址
私有地址又称为专用地址,专门保留给私有网络使用,这些地址只能用于一个机构的内部通信,而不能用于和Internet上的主机通信,专用地址只能用作本地地址而不能用作全球地址。Internet中的所有路由器对目的地址是专用地址的数据报一律不进行转发,私有地址的地址空间如表所示。
RFC1918定义了私有地址,这些地址也称作RFC1918地址。位于不同网络中的主机可以使用相同的私有地址空间。当使用此类地址作为IP数据包中地址时是不能在Internet上传输的。
由于私有地址的数据包不能在Internet上传输,所以私有地址要上网时必须进行网络地址转换(Network Address Translation,NAT)。下显示了私有地址转换的示意图,一般地址转换工作由网络边缘的设备完成,如路由器、防火墙等,目的是将IP数据包首部中的私有地址转换成公有地址。
通过网络地址转换,私有网络可以与外部的网络进行通信。尽管NAT能够解决IP地址一些局限性的问题,但NAT最终还是没有办法解决IP地址不足的根本性问题。
任何企业或者高校的网络运作,都需要IP地址的支持。在企业或者高校中如何合理的分配IP地址是一个非常重要的工作,需要合理设计。网络管理人员不能随意的分配IP地址,也不能随机分配。
给一个企业规划IP地址必须考虑的几个问题是:
为一个企业规划网络时需要考虑很多方面,也有很多方法可以分配地址。
例如,可以按照地理位置信息来分配地址,或者按照用户的类型来分配地址,再或者按照业务类型来分配,但分配的原则都是一致的。
在一个企业的网络内,在分配IP地址时会考虑到多种情况,比如网络中的地址可以动态分配给用户,也可以静态设定,可以按照IP地址的类别分配给不同的用户,可以根据设备的不同特点与作用分配给用户等。
当采用静态分配IP地址时,网络管理员必须给设备设置以下几个参数:IP地址、子网掩码、默认网关,DNS服务器地址等。各个参数都是手工输入的。
在设备静态地址时,网络管理员必须知道网络中的各种参数,比如网关的地址、DNS服务器的地址等。静态地址一般会分配给一些固定的服务器使用,比如域名服务器、Web服务器、打印机等设备,如果服务器的地址经常改变,就会导致一些功能不能正常使用。
与动态地址相比,静态地址有其自身的优点。但对于大规模的局域网来说,要静态分配IP地址会是一件非常耗时的事情,而且分配用户的数量越多,越容易出错(如重复使用,输入错误等),所以在分配静态地址时一般都需要做好文档记录,列出分配清单。
由于静态管理IP地址工作量繁重,而且容易出错,在大型网络中,通常使用动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)为终端设备分配地址。
DHCP协议可以给用户自动分配IP地址、子网掩码、默认网关和DNS等信息。在大型网络中DHCP协议是给用户分配IP地址的首选方法,而且网络管理员可以结合DHCP协议做各种安全策略,比如ARP攻击检测,IP合法性检测等。
在ARPANET的早期,IP地址的设计确实不够合理,比如A类的IP地址,默认情况子网掩码是255.0.0.0,主机位占3字节,那么一个网络总共可以容纳16 777 214(224-2)台主机;B类的IP地址默认情况可以支持65 534(216-2)台主机,试问有哪个网络能有这么多台主机?IP地址设计的不合理之处主要体现在以下几个方面:
从1985年起在IP地址中又增加了一个“子网号字段”,使两级的IP地址变成为三级的IP地址,如图所示。
值得说明的是:三级IP地址中的子网号字段并不是新增的,而是从主机域中借用若干比特作为子网号Subnet-id,而主机号 Host-id 也就相应减少了若干比特。
三级IP地址中借用的子网部分有以下几个特点:
前面我们已经介绍了常用的A、B、C三类IP地址的默认子网掩码,三级IP地址中的子网掩码同样也是32比特,在32位子网掩码中,网络地址、子网地址部分为“1”,对应主机部分为“0”,如图7-4所示。
三级IP地址中的网络地址 = 子网掩码与IP地址做逻辑“与”运算。
在设计选择子网划分方案时,必须考虑以下5个问题:
子网数目计算
子网数用公式N=2X来计算。X是被占用的表示子网比特的数目,或者说1的个数。例如,一个C类的IP地址192.168.1.1,它对应的子网掩码是255.255.255.192,那么对于这个IP地址而言,本来主机号占8比特,而根据新的子网掩码,有2比特被占用成了子网号,如图所示。
在二进制数中,2比特共有4种组合方式:00、01、10、11,所以用2比特表示子网,就划分了4个子网。同样道理,如果用3比特表示子网,那么共有组合方式式为000、001、010、011、100、101、110、111,即23=8,这是数学中排列组合的计算方法。
子网掩码
一般情况下,子网掩码的分配是根据子网的数目来确定的,规则是对应的网络部分、子网部分部分为“1”,对应主机部分为“0”。如子网掩码部分为1100000,则十进制数值为128+64=192,子网掩码的点分十进制数值为255.255.255.192。
主机数目计算
每个子网的主机数目用公式M=2Y-2来计算。Y是未被占用的比特数目,或者说0的个数。如图所示,最后一字节中有2比特被占用作为了子网号,剩下6比特为主机号。6比特的主机号可以表示26种组合,但是主机号是不能为全0或者全1的(全0:000000,表示网络地址;全1:111111,表示广播地址),所以需要减2。有效的主机是两个子网之间去掉“全0”和“全1”的数。
子网地址计算
每个子网地址是指每个子网中主机号是0的地址,划分了几个子网,就有几个子网地址。对于192.168.1.1与255.255.255.192这样的划分,总共划分了4个子网,每个子网的地址如图所示。
对于子网数目比较多的划分情况,分析与计算二进制会显得比较麻烦,这里给出计算子网地址的简单方法。
首先计算地址基数:基数=256-子网掩码。如子网掩码的十进制数值为192,基数=256-192=64,子网地址为在对应子网地址字节中N×基数。对于上面的例子,子网地址对应字节中的值应该为64的0倍、1倍、2倍与3倍。所以4个子网地址可以直接写出:192.168.1.0,192.168.1.64,192.168.1.128,192.168.1.192。
对于C类网络的子网划分情况如表7-1所示。
广播地址计算
每个子广播址是指每个子网中主机号是“全1”的地址,划分了几个子网,就有几个广播地址。对于192.168.1.1与255.255.255.192这样的划分,总共划分了4个子网,每个子网对应的广播地址如图所示。
广播地址中所有的主机号为1,直接在下一个子网之前的数。
某单位申请了一个C类地址61.4.1.0,现在决定在主机字段借用3位作为子网号,剩下5位作为主机号,这样该单位最多可以划分8个子网(23=8),每个子网有30台主机可以分配(25-2=30)。
如图所示,展示了IP地址与子网掩码的分配方法。第一个子网的子网号为000,第二个子网的子网号为001,第三个子网的子网号为010,子网掩码都是11100000,十进制数值是224,点分十进制数值是255.255.255.224。
【例题】设有一个网络地址为172.16.0.0,要在此网络中划分16个子网,试问:
【例题】设有一个网络地址为204.1.16.0,此网络地址相应的子网掩码为255.255.255.192,试问:
子网掩码用来确定一个IP地址中网络部分与主机部分,而子网掩码的表示通常是一种比较烦琐的方式。
网络前缀(Network-prefix)是表示子网掩码的另外一种方法,指示的是子网掩码中“1”的位数,使用斜杠表示法,用符号“/”表示,后面紧跟着1的位数。例如,子网掩码为255.255.255.128,化成二进制后有25个1,因此,前缀长度为25,表示为“/25”。前缀和子网掩码都是用来说明一个网络地址中的网络部分的,指示两种不同的表示方法。下表显示了网络地址192.168.1.0不同前缀的子网掩码与前缀表示方式。
子网划分能够有效使用IP地址从而避免浪费地址,然而子网划分没有解决根本问题,许多大型的企业或者网络机构需要IP地址的数量庞大,C类的地址无法满足其要求,而B类地址到目前为止已经分配完毕。因此人们发展了超网技术。
超网是一种用于从小地址类型产生大型网络的重要方法,例如,某企业需要规划网络,网络容量至少支持10 000台主机,然而申请不到B类地址,就需要配置超网来满足需求。
划分子网在一定程度上缓解了因特网在发展中遇到的困难。1992年,因特网仍然面临以下三个必须尽早解决的问题,
变长子网掩码(Variable-Length Subnet Masks,VLSM)的出现打破了传统的以类(Class)为标准的地址划分方法,缓解IP地址紧缺状况,它指明了在一个划分子网的网络中可以同时使用几个不同的子网掩码。
采用VLSM计算和编址设计时状况一般按照以下步骤。
在进行VLSM编址方案设计时有以下2个原则:
【例题】有一个小型公司,申请了一块地址空间172.16.0.0/16,其网络拓扑结构如图所示,其区域1所在的网络被分配的地址空间是172.16.12.0/22,路由器D直接相连两个局域网,容纳200个用户,路由器A、B、C连接3个以太网,分别用1个24口的交换机相连,请给区域1中的局域网设计合适的编址方案。
路由器D直连2个局域网,容纳200台主机,根据IP地址特点,200台主机需要分配主机位8比特,即28-2为254(分配7比特主机数目不够,分配9比特造成地址空间浪费),对应的子网掩码是255.255.255.0,所以对应地址空间中172.16.12.0~172.16.13.255之间的地址分配给D的2个局域网,两个网络地址分别为172.16.12.0/24和172.16.13.0/24。
路由器A、B、C分别连接一个24口交换机,也就是说每个局域网最多容纳24台主机,所以对应的IP地址中主机位需要分配5比特,即25-2为30,对应的子网掩码是255.255.255.224,在进行 VLSM 设计时,一般情况下按照地址空间的顺序分配,以免最后导致混乱,所以紧跟着172.16.13.0后面的地址空间分配,在172.16.14.0/24基础上划分,三个以太网地址分别是172.16.14.0/27、172.16.14.32/27、172.16.14.64/27,如表所示。
最终为5个局域网的编址方案如表所示。
CIDR(Classless Inter-Domain Routing)消除了传统的A类、B类和C类地址以及划分子网的概念,因而可以更加有效地分配IPv4的地址空间。
CIDR使用各种长度的“网络前缀”来代替分类地址中的网络号和子网号,IP地址从从使用子网掩码的三级编址又回到了两级编址,CIDR将网络前缀都相同的连续的IP地址组成“CIDR地址块”。