IP地址基础知识详解



随着电脑技术的普及和因特网技术的迅猛发展,因特网已作为二十一世纪人类的一种新的生活方式而深入到寻常百姓家。谈到因特网,IP地址就不能不提, 因为无论是从学习还是使用因特网的角度来看,IP地址都是一个十分重要的概念,INTERNET的许多服务和特点都是通过IP地址体现出来的。 

  一、IP地址的概念   

  我们知道因特网是全世界范围内的计算机联为一体而构成的通信网络的总称。联在某个网络上的两台计算机之间在相互通信时,在它们所传送的数据包里都会含有某些附加信息,这些附加信息就是发送数据的计算机的地址和接受数据的计算机的地址。象这样,人们为了通信的方便给每一台计算机都事先分配一个类似我们日常生活中的电话号码一样的标识地址,该标识地址就是我们今天所要介绍的IP地址。根据TCP/IP协议规定,IP地址是由32位二进制数组成,而且在INTERNET范围内是唯一的。例如,某台联在因特网上的计算机的IP地址为: 

  11010010 01001001 10001100 00000010 

  很明显,这些数字对于人来说不太好记忆。人们为了方便记忆,就将组成计算机的IP地址的32位二进制分成四段,每段8位,中间用小数点隔开,然后将每八位二进制转换成十进制数,这样上述计算机的IP地址就变成了:210.73.140.2。 

  二、IP地址的分类  
  
  我们说过因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的计算机通过其自身的IP地址而被唯一标识的,据此我们也可以设想,在INTERNET上这个庞大的网间网中,每个网络也有自己的标识符。这与我们日常生活中的电话号码很相像,例如有一个电话号码为0515163,这个号码中的前四位表示该电话是属于哪个地区的,后面的数字表示该地区的某个电话号码。与上面的例子类似,我们把计算机的IP地址也分成两部分,分别为网络标识和主机标识。同一个物理网络上的所有主机都用同一个网络标识,网络上的一个主机(包括网络上工作站、服务器和路由器等)都有一个主机标识与其对应?IP地址的4个字节划分为2个部分,一部分用以标明具体的网络段,即网络标识;另一部分用以标明具体的节点,即主机标识,也就是说某个网络中的特定的计算机号码。例如,盐城市信息网络中心的服务器的IP地址为210.73.140.2,对于该IP地址,我们可以把它分成网络标识和主机标识两部分,这样上述的IP地址就可以写成: 

  网络标识:210.73.140.0 

  主机标识:     2         

  合起来写:210.73.140.2 

  由于网络中包含的计算机有可能不一样多,有的网络可能含有较多的计算机,也有的网络包含较少的计算机,于是人们按照网络规模的大小,把32位地址信息设成三种定位的划分方式,这三种划分方法分别对应于A类、B类、C类IP地址。 

  1.A类IP地址 

  一个A类IP地址是指,在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为7位,主机标识的长度为24位,A类网络地址数量较少,可以用于主机数达1600多万台的大型网络。 

  2.B类IP地址 

  一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码,剩下的两段号码为本地计算机的号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为14位,主机标识的长度为16位,B类网络地址适用于中等规模规模的网络,每个网络所能容纳的计算机数为6万多台。 

  3.C类IP地址 

  一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为21位,主机标识的长度为8位,C类网络地址数量较多,适用于小规模的局域网络,每个网络最多只能包含254台计算机。 
除了上面三种类型的IP地址外,还有几种特殊类型的IP地址,TCP/IP协议规定,凡IP地址中的第一个字节以“lll0”开始的地址都叫多点广播地址。因此,任何第一个字节大于223小于240的IP地址是多点广播地址;IP地址中的每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;IP地址中凡是以“llll0”的地址都留着将来作为特殊用途使用;IP地址中不能以十进制“127”作为开头,27.1.1.1用于回路测试,同时网络ID的第一个6位组也不能全置为“0”,全“0”表示本地网络。 

  三、IP的寻址规则  
  
  1.网络寻址规则 

  A、 网络地址必须唯一。 

  B、 网络标识不能以数字127开头。在A类地址中,数字127保留给内部回送函数。 

  C、 网络标识的第一个字节不能为255。数字255作为广播地址。 

  D、 网络标识的第一个字节不能为“0”,“0”表示该地址是本地主机,不能传送。 

  2.主机寻址规则 

  A、主机标识在同一网络内必须是唯一的。 

  B、主机标识的各个位不能都为“1”,如果所有位都为“1”,则该机地址是广播地址,而非主机的地址。 

  C、主机标识的各个位不能都为“0”,如果各个位都为“0”,则表示“只有这个网络”,而这个网络上没有任何主机。 

  四、IP子网掩码概述   
   
  1.子网掩码的概念 

  子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。 

  2.确定子网掩码数 

  用于子网掩码的位数决定于可能的子网数目和每个子网的主机数目。在定义子网掩码前,必须弄清楚本来使用的子网数和主机数目。 

  定义子网掩码的步骤为: 

  A、确定哪些组地址归我们使用。比如我们申请到的网络号为 “210.73.a.b”,该网络地址为c类IP地址,网络标识为“210.73”,主机标识为“a.b”。 

  B、根据我们现在所需的子网数以及将来可能扩充到的子网数,用宿主机的一些位来定义子网掩码。比如我们现在需要12个子网,将来可能需要16个。用第三个字节的前四位确定子网掩码。前四位都置为“1”,即第三个字节为“11110000”,这个数我们暂且称作新的二进制子网掩码。 

  C、把对应初始网络的各个位都置为“1”,即前两个字节都置为“1”,第四个字节都置为“0”,则子网掩码的间断二进制形式为:“11111111.11111111.11110000.00000000” 
  D、把这个数转化为间断十进制形式为:“255.255.240.0” 

  这个数为该网络的子网掩码。 

  3.IP掩码的标注 

  A、无子网的标注法 

  对无子网的IP地址,可写成主机号为0的掩码。如IP地址210.73.140.5,掩码为255.255.255.0,也可以缺省掩码,只写IP地址。 

  B、有子网的标注法 

  有子网时,一定要二者配对出现。以C类地址为例。 

  1.IP地址中的前3个字节表示网络号,后一个字节既表明子网号,又说明主机号,还说明两个IP地址是否属于一个网段。如果属于同一网络区间,这两个地址间的信息交换就不通过路由器。如果不属同一网络区间,也就是子网号不同,两个地址的信息交换就要通过路由器进行。例如:对于IP地址为210.73.140.5的主机来说,其主机标识为00000101,对于IP地址为210.73.140.16的主机来说它的主机标识为00010000,以上两个主机标识的前面三位全是000,说明这两个IP地址在同一个网络区域中。 

  2.掩码的功用是说明有子网和有几个子网,但子网数只能表示为一个范围,不能确切讲具体几个子网,掩码不说明具体子网号,有子网的掩码格式(对C类地址):主机标识前几位为子网号,后面不写主机,全写0。 

  五、IP的其他事项   

  1.一般国际互联网信息中心在分配IP地址时是按照网络来分配的,因此只有说到网络地址时才能使用A类、B类、C类的说法; 


  2.在分配网络地址时,网络标识是固定的,而计算机标识是可以在一定范围内变化的,下面是三类网络地址的组成形式: 

  A类地址:73.0.0.0 

  B类地址:160.153.0.0 

  C类地址:210.73.140.0 

  上述中的每个0均可以在0~255之间进行变化。 

  3.因为IP地址的前三位数字已决定了一个IP地址是属于何种类型的网络,所以A类网络地址将无法再分成B类IP地址,B类IP地址也不能再分成C类IP地址。 

  4.在谈到某一特定的计算机IP地址时不宜使用A类、B类、C类的说法,但可以说主机地址是属于哪一个A类、B类、C类网络了。 

  通过上面的学习,大家对IP地址肯定有了了解。有了IP地址大家就可以发送电子邮件了,并且可以获得Internet网上的其他信息,例如可以获得Internet上的WWW服务、BBS服务、FTP服务等等 。 
下面我们要认识的是 Net Mask (网路遮罩或称网路掩码)。  

到了这里我必须要向大家交代清楚一件事情在我们进行IP地址划分的时候IP和Net Mask都必须一对使用的两者缺一不可不过当我们使用分等级的IP地址的时候我们也可以使用预设的mask比如A Class的mask是255.0.0.0B Class的mask是255.255.0.0C Class的则是255.255.255.0。  

这是什麽意思啊看255比较难理解如果您将之换算为二进位就容易理解多了255 = 11111111(8个1)。然後当您把这些Net Mask和各等级IP对应看看聪明的您就会发现一个现象就是~~ 凡是被1所对应着的IP部份就是Net ID凡是被0所对应部份就是Host ID  


哈哈~~应该是个值得庆贺的发现哦~~~我想您的心情并不亚於当初哥伦布发送美洲大陆啦不过问题又来了既然我们已经分好等级了还用那mask干嘛我们照等级使用不就好了吗  

呵~呵~~阁下真是太聪明了佩服佩服啦不过您可别忘了电脑是一台好蠢好蠢的机器哦请您告诉我电脑怎麽识别Net ID和Host ID呢嗯不会吧那好让我告诉您好了  

还记得AND和NOT的逻辑运算吗如果忘了赶快往前翻翻补习补习再来看这里。当电脑获得了一对IP和Mask(都是二进位数字)之後电脑先使用一个AND的运算来求出Net ID。您可以拿自己电脑的IP来做例子这里让我们拿先前用winipcfg看出来的IP来算算  


139.175.152.254换成二进位是  
10001011.10101111.01101010.11111110  
(这时候您应该知道我为何当初一口就说出这是一个B Class的IP了吧还不知道看看头两个bit是什麽)  

这个Class的预设mask是255.255.0.0换成二进位是  
11111111.11111111.00000000.00000000  

然後将IP和mask加以AND 运算  
10001011.10101111.01101010.11111110  
AND  
11111111.11111111.00000000.00000000  
得出  
10001011.10101111.00000000.00000000  

换成十进位就是139.175.0.0这个就是Net ID了。 
那麽怎麽求Host ID呢也很简单  


先将Net Mask做一个 NOT 运算可以得出  
00000000.00000000.11111111.11111111  

然後再和IP做一次 AND 运算就可以得到Host ID:  
00000000.00000000.01101010.11111110  

换成十进位就成了0.0.152.254。  


简单吧是不是哈哈~~我看到您大摇其头哦~~~不用担心啦多拿些IP例子来运算运算您就得心应手了。  

还有当我们设定网路环境的时候除了要输入 IP地址netmask网路地址之外有时候还需要指定广播地址(broadcast)。我已经知道如果 Host ID 全部为 0 是网路地址,而全部为 1 则是广播地址了。其实广播地址也可以通过一个简单运算得到  


先将Net Mask做一个 NOT 运算可以得出  
00000000.00000000.11111111.11111111  

然後再和IP做一次 OR 运算就可以得到 Broadcast Address:  
10001011.10101111.01101010.11111110  
OR  
00000000.00000000.11111111.11111111  
得出  
10001011.10101111.11111111.11111111  

换成十进位就成了139.175.255.255。  


不过说到这里为止我总还觉得有些不妥因为许多网路都有一定的节点极限比如Ethernet通常最多只能连接1,200台主机如果您获得一个B Class 的 Net ID岂不是浪费很多Host ID了吗要是使用A Class就更是骇人  
 

当您遇到这种“有钱人的困扰”的时候Sub-net Mask就派上用场了。如果您刚才还认为预设的Net Mask是多馀的话那麽当您知道Sub-net Mask的功能之後我敢保您不会再忽略Net Mask了。  

Sub-net Mask的使用手法就是靠“借”或可以说靠“抢”就是从左往右的按需要将本来属於Host ID的一些bit转为Sub-net ID来使用。也就是将预设的Net Mask的“1”逐渐的往右增加相对地Net Mask的“0”则越来越少。这样的结果当然是可以获得更多的Net ID换一句话说您可以将一个大的IP网路分割成更多的子网路而每一个子网路的主机数目却相应的减少。  


其情形会是当您借用1个bit的Host ID来做Sub-net ID的时候会将网路切割开两个(2 1 = 2)子网路如果借2个bit则有4个子网路3个bit则8个4个bit则16个..... 当所有的Host ID都借出去之後您可以得到最多数量的子网路但这是毫无意义的因为没有Host ID了您怎麽分配IP给主机呢要是您的Host ID只剩下一个bit没有借出去的话那麽您在每个网路只能得到0和1来作为Host ID这也是不行的因为这两个ID也不可以用来分配给主机。  

当您切割网路的时候您得最少留下 2 个 bit 来做 Host ID这时候每个网路最多只能连接 2 台主机(咦22 不是等於 4 吗但别忘了 Host_ID 不能是两个 0 或两个 1 哦)。这样的网路通常会用在 WAN 与 LAN 之间的路由器连接。而在 LAN 中的应用通常最少要保留 3 个 bit 来做 Host_ID。  

为了更好的理解Sub-net Mask的功用我们还是以刚才的IP(139.175.152.254)为例子来看看  

我们知道它在预设情形之下的Net Mask是  
11111111.11111111.00000000.00000000  

如果我们借用了Host ID的其中三个bit来做Sub-net ID的话将原来的Net Mask和Sub-net Mask做一个 OR 的运算  
11111111.11111111.00000000.00000000  
OR  
00000000.00000000.11100000.00000000  
得出  
11111111.11111111.11100000.00000000  

换成十进位後实际的Net Mask将会变成这样255.255.224.0 。  

因为借用的只有3个bit所以切割成为8个子网路了而他们的Sub-net ID则分别从000到111这8个组合再加上原来的Net ID(10001011.10101111.00000000.00000000)各子网路的实际Net ID就成了  

10001011.10101111.00000000.00000000 (139.175.0.0)  
10001011.10101111.00100000.00000000 (139.175.32.0)  
10001011.10101111.01000000.00000000 (139.175.64.0)  
10001011.10101111.01100000.00000000 (139.175.96.0)  
10001011.10101111.10000000.00000000 (139.175.128.0)  
10001011.10101111.10100000.00000000 (139.175.160.0)  
10001011.10101111.11000000.00000000 (139.175.192.0)  
10001011.10101111.11100000.00000000 (139.175.224.0)  

这时候本来是16个bit的Host ID只剩下13个bit了也就是说在每个子网路里面最多只能有2 13 = 8,192 - 2 = 8,190台主机而它们可分配的号码分别由  
00000.00000001到  
11111.11111110之间。  

但我们并不能简单的将它以十进位的0.1到31.254这样表示我们还得将之配合各个不同的Sub-netID再相加一起才能得出最终的IP号码。例如  


在Sub-net ID 001 之下的主机号码将会是从  
00100000.00000001到  
00111111.11111110之间  
亦即是从32.1到63.254之间  
整个IP地址则是从139.175.32.1到139.175.63.254之间。  

而在Sub-net ID 100 之下的主机号码将会是从  
10000000.00000001到  
10011111.11111110之间  
亦即是从128.1到159.254之间  
整个IP地址则是从139.175.128.1到139.175.159.254之间。  


明白了  

唉呀~~~~头痛耶~~~  

别complaint啦~~自己再动手算算在110这个Sub-net ID之下的主机号码围是多少  

如果您得出来的答案不是139.175.192.1到139.175.223.254之间那麽您需要离开萤幕一会到外面呼吸一下空气(别抽烟)然後过5分钟回来重新看看前面几段文章。再重读的时候要确定您每一个概念都清楚了才继续往下读。

当然你说放弃也没什麽要紧啦反正您老又不会扣您工钱啦~~~  

IP的实际运用  

好了这里让我们归纳一下以上所学吧  

IP等级以开头的二进位数字来定0,10,110 分别是A,B,C等级 。 
IP分两部份Net ID和Host ID。预设情形下A以第一个otect来做Net ID,B则使用前面两个otect,C使用三个oect,而剩下的则做Host ID;  
在为机器指定Net ID和Host ID的时候换成二进位不可以全部为0也不可以全部为1而整个IP地址必须是唯一的  
Net Mask是给电脑用来计算Net ID和Host ID的将IP和mask用AND运算得出Net ID将mask先经过NOT运算再和IP做AND运算则可以得出Host ID  
Sub-net Mask是“借”Host ID来当Sub-net ID使用规则是从左往右递增作用是将一个较大的网路切割成多个较小的网路。而在显示IP的时候必须要和Sub-net ID加在一起也就是以完整的 otect 来表示。  

设定规则  

当我们设定IP网路的时候如果想各机器能够直接沟通那麽您得使用相同的Net ID和不同的Host ID。如果您想使用不同的Net ID(比如经过sub-net划分)那麽在不同Net ID之间的host就要经过router才能成功对讲。  

当电脑用AND运算得出Net ID之後会检查来源Net ID和目的Net ID是否一致如果一致的话就可以直接将封包传给对方否则就将封包传给Router或Default Gateway这个过程我在以後的ARP和RIP将会讲述。  

另外如果您使用了sub-net技术在分配IP地址的时候就要非常小心了以免IP超出了子网围而无法沟通。比如在没有划分子网路的情况下(例如使用255.255.0.0的mask)139.175.31.254和139.175.32.1都是在同一个网路之内的他们的IP封包不用router就可以直接传递了但经过借用3个bit的子网划分之後(net mask成了255.255.224.0)它们就被分隔在两个IP网路之内这时候它们一定要使用router才能传递封包了。  

同时原本一些有效的IP地址在sub-net之後因为Host ID变成了全部0或1也就不能再分配给主机使用了例如139.175.63.255,139.175.64.0等等。 (如果您不明白为什麽?将之换成二进位然後找出经过子网切割後属於Host ID部份的数字就清楚了。)  

所以当我们在一开始设计网路的时候就要具备应有的责任和远见早早就将子网路划分好。否则等所有机器都设定好并且运作了一段时期之後才决定划分子网路其情形将会变得异常杂。如果要重新分配IP其所做的规划以及遇到的可见问题和隐藏问题都比从零开始难上百倍越大的网路越是如此  

保留IP  

当我们要将网路连上intetnet的时候我们必须先册好Net ID如果该ID已经被使用了您就必须选用另外的ID了。负责Internet IP册的机构叫做InterNIC(Network Information Center)他们的网路地址是 http://www.internic.net。  

由於Internet的爆炸性成长IP的地址买少见少而且在很多机构里也不是所有机器都有必要使用册的IP地址。於是我们就在 ABC这三个层级里面各划出一些地址围保留给私有位址所用它们是  

10.0.0.0 - 10.255.255.255  
172.16.0.0 - 172.31.255.255  
192.168.0.0 - 192.168.255.255 
当您使用这些地址的时候当然是有所限制的  


私有位址的路由资讯不能对外散播  
使用私有位址作为来源或目的地址的封包不能透过Internet来转送  
关於私有位址的参考纪录(如DNS)只能限内部网路使用  

然而正是由於这些限制当我们使用这些私有位址来设定网路的时候就无需担心会和其它也使用相同位址的网路突了。  

这给我们架设IP网路做成很大的方便比如即使您目前的公司还没有连上Internet但不保将来不会啊。如果使用公共IP的话如果没经过册等到以後真正要连上网路的时候就很可能和别人突了。也正如前面所分析的到时候再重新规划IP的话将是件非常头痛的问题。这时候我们可以先利用私有位址来架设网路等到真要连上intetnet的时候我们可以使用IP转换协定如NAT (Network Addresss Translation)等技术配合新册的IP就可以了。  

再者由於私有位址在 internet 上是不能路由的用来架设企业内部网路在安全上面也是有利的。当然了如果在课堂上或在家里架设 IP 网路使用私有位址也是个不错的主意哦。  

不分等级的IP  

思考一下如果我的IP是139.175.152.254而Net Mask则为255.255.255.0。您认为是否用错了net mask呢而 203.56.6.18 使用 255.255.0.0 做 mask 呢  

我们将较大的IP等级切割成许多较小网路可以说是“有钱人的烦恼”但难道“穷人”就没有烦恼吗当然是有啦例如您的公司有接近600台主机想连一个IP网路申请一个B Class网路似乎太浪费而且说实在也未必可以申请得到那麽申请3个C Class的网路总可以吧当然没问题啦(如果还没用光的话)。  

不过正如我们刚才知道的因为3个C Class网路它们的Net ID都各自独立的如果您要其下的电脑都能沟通的话就要router的参与了。但是router一点都不便宜哦~~~贵的router几乎可以换一辆“Benz”房车来开呢就算您老不在乎要设定和维护好几个网路的routing也不是一件轻松的事情搞不好还要专门请“半”个人来看管呢。  

*** 是您可以将这三个C Class网路整合在一起来使用啦使用的是CIDR (Classless Inter-Domain Routing)技术也就是所谓的不分等级IP了。  

使用CIDR的时候您大可不必理会IP的开首字元你可以随便设定您的Net Mask长度。也就是说一个C Class的网路也可以使用255.255.0.0这样的mask我们称这样的网路为“Supernet”和subnet正好相反。  


当然如果要和其它网路沟通您使用的router也必须支援CIDR才行啦而且设定上是比较杂的。  

如果您觉得139.175.152.254/255.255.0.0 和192.168.1.1/255.255.255.0 这样的IP表现方法实在太麻烦了这里有一个更好的表示法使用mask的bit数来表示Net Mask。这样我们就可以这样写了139.175.152.254/16 和203.56.6.18/24假如使用了三个bit的Sub-net我们只要将16改成19和将24改成27就可以了如果是使用了三个bit的Supernet我们将之改成13和21就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值