IP.docx
《IP.docx》由会员分享,可在线阅读,更多相关《IP.docx(23页珍藏版)》请在冰豆网上搜索。
IP
一、IP寻址
1、什么是IP地址?
IP地址是每个TCP/IP宿主机的逻辑地址标识。
使用TCP/IP进行通讯的宿主机和网络部件都要求唯一的IP地址。
IP地址标识网络上的工作站、服务器或路由器。
2、IP地址的类型
每个IP地址有32位,由4个8位字段组成。
每8位字段为一个字节,8位字段也称为8位位组。
每个8位位组之间用点号隔开。
8位位组可以表示0-255之间的十进制数,这种标识称为"间断十进制计数"。
Internet委员会定义了五种地址类别,以适应不同规模的网络。
地址类别定义网络标识ID使用哪些位,宿主机标识ID使用哪些位,它也定义了网络的可能数目和每个网络的宿主机的数目。
下面的表格揭示A类、B类、C类IP寻址的网络和宿主机ID字段:
表中的w、x、y、z分别为IP地址的第一、二、三、四个字节。
通常,A类地址分配给拥有大量宿主机的网络。
A类地址中,网络号占第一个字节,其最高位为"0",接下来的7位表示网络ID。
宿主机ID占三个字节。
A类地址允许有126个网络,每个网络有16,777,2114个宿主机(约1700万)。
B类地址分配给中等规模的网络。
B类地址的网络号占前两个字节,其最前端两位为二进制"10",接下来的14位表示网络ID。
宿主机ID占两个字节。
B类地址共可表示16,384个网络,每个网络大约有65,534台宿主机。
C类地址通常用于小型的局域网。
C类地址前三个字节表示网络ID,其最高位为"110",接下来的21位表示网络ID,其余8位表示宿主机ID,它允许有2,097,152个网络,每个网络有254台宿主机。
此外,D类地址通常用于多点传送的各个宿主机。
它传递给网络上用户的选定子网。
只有那些注册为点传送地址的宿主机,才能接受它。
D类地址的高端前四位总是置为"1110",其余位用于有兴趣的宿主机识别的地址。
E类地址是一个实验地址,它保留给将来使用,E类地址的高端位置为"1111"。
3、IP寻址规则
(1)网络寻址规则
A、网络地址必须唯一。
B、网络ID不能以数字127开头。
在A类地址中,数字127保留给内部回送函数。
C、网络ID的第一个8位组不能为255。
数字255作为广播地址。
D、网络ID的第一个8位组不能为"0"。
"0"表示该地址是本地宿主机,不能传送。
根据以上规则,我们可以给出互连网络ID的有效范围为:
(2)宿主机寻址规则
A、宿主机ID在同一网络内必须是唯一的。
B、宿主机ID各个位不能都为"1",如果所有位都为"1",则该机地址是广播地址,而非宿主机ID。
C、宿主机ID的各个位不能都为"0",如果各个位都为"0",则表示"只有这个网络",而这个网络上没有宿主机。
IP地址是有限的资源,它由美国国防数据信息中心管理,如果我们计划连入Internet网,那么我们可以向这个组织申请一个网络ID,并在这个基础上进行子网寻址。
二、子网寻址
1、什么是子网寻址
子网是多网络环境中的一个网络,它用于单个IP地址的寻址方案。
把一个网络分成子网,要求每个子网使用不同的网络ID。
通过把宿主机ID分成两个部分,一部分用于标识网络的子网,为每个子网生成唯一的网络ID;另一部分用于标识子网中宿主机的地址。
2、子网寻址的步骤
(1)根据当前需要以及将来需要,确定互连网中所需子网络的数目。
(2)确定每个子网的宿主机所需的数目。
(3)根据以上需求定义子网掩码。
(4)根据子网掩码确定网络ID的范围。
下面分步讨论。
第一步、第二步略,从第三步定义子网掩码讨论。
A、什么是子网掩码
子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络ID和宿主机ID,并说明IP地址是在局域网上,还是在远程网上。
B、确定子网掩码数
用于子网掩码的位数决定于可能的子网数目和每个子网的宿主机数目。
在定义子网掩码前,必须弄清楚本来使用的子网数和宿主机数目。
定义子网掩码的步骤为:
首先,确定哪些组地址归我们使用。
比如我们申请到的网络号为"137.107.y.z",该网络地址为B类地址,初始网络ID为"137.107",宿主机ID为"y.z"。
其次,根据我们现在所需的子网数以及将来可能扩充到的子网数,用宿主机的一些位来定义子网掩码。
比如我们现在需要8个子网,将来可能需要12个。
用第三个字节的前四位确定子网掩码。
前四位都置为"1",即第三个字节为"11110000",这个数我们暂且称作新的二进制子网掩码。
再次,把对应初始网络的各个位都置为"1",即前两个字节都置为"1",第四个字节都置为"0",则子网掩码的间断二进制形式为:
"11111111.11111111.11110000.00000000"
最后,把这个数转化为间断十进制形式为:
"255.255.240.0",这个数为该网络的子网掩码。
第四步:
定义网络ID的范围
定义网络ID的范围时,使用与定义子网掩码时相同的位数,计算可能的位组合,然后转化成十进制格式。
定义网络ID范围的步骤如下:
A、使用定义子网掩码所用的相同位,列举所有可能的位组合,每个位表示一个子网。
B、跳过所有位都是"1"或"0"的值,IP地址的值不能全为"0"和"1",从左向右计算各位,把它们转化为十进制数。
C、这个十进制值表示起始值,终止值比下一轮的起始值小"1"。
以第三步中的例子说明如下:
表中前8个地址表示现在的网络ID,后几个地址用于以后扩充。
三、域名地址
上面所述的地址是Internet网中的IP地址。
但是,为了便于记忆,我们通常用域名表示法来表示计算机的地址。
域名是分层名字,由域名服务器完成。
域名称系统在结构上类似于DOS的文件系统。
由管理员把网络上的一台主机选作名字服务器,由各服务器将符号转换成对应的IP地址。
在采用DNS的网络中,主机组按树形结构分成域(Domains)和子域(Subdomain),这样,只要求主机名在本地域中唯一。
一般在DNS中,仅根目域由中央机构管理,而本地域完全由本地管理。
根目域唯一地标识组织,如edu表示教育机构,com表示商业组织,mil表示军队等。
其结构如下:
"host.subdomain.(subdomain...).rootdomain"
根据有关协议规定:
一个本地域名应小于64个字符,一个主机名应小于96个字符。
主机名在先,紧接着是本地子域,至根域总长度小于256个字符。
如微软公司下的一台计算机tiger的域名地址可以为:
。
内容摘要:
INERNET上的用户,每年成指数增加,而IP地址是有限的资源。
在RIP路由环境中,采用固定长度的子网的划分,造成了大量地址的浪费。
这使用户的增加与IP地址的急剧减少的矛盾更加突出。
而在OSPF环境中,采用可变长子网的划分,可以节省大量的地址。
本文对可变长度子网划分的步骤与方法作了初步探讨。
在一个TCP/IP网络上的计算机都有一个由四个数字组成的地址,每一个数字有一个字节长,也就是说,每个数字可以表示0-255之间的任一个数。
我们可以计算出来,用这四个数字编址的方案,最多可以表示2的32次方(4,294,967,296)个唯一的地址,在RIP路由环境中,由于IP编址的非连续性,一个网络申请一组地址时,即使只有几台宿主机,通常也会得到一个地址块,这就造成了IP地址的浪费。
现在Internet网上可分配的地址已经很少。
因此,IP可变长度子网的划分是一种可行的编址方案。
子网是一个多网络环境中的网络,把一个网络划分成多个子网,要求每一个子网使用不同的网络标识ID。
但是每个子网的宿主机数不一定相同,而且相差很大,如果我们采用RIP路由环境中的固定长度的IP寻址方案,即每个子网都采用固定长度子网掩码,而每个子网上分配的地址数相同,这就造成地址的大量浪费。
采取OSPF(最短路径优先协议)环境中的IP可变长度子网寻址方案,对节点数比较多的子网采用较短的子网掩码,子网掩码较短的地址可表示的网络/子网数较少,而子网可分配的地址较多;节点数比较少的子网采用较长的子网掩码,可表示的逻辑网络/子网数较多,而子网上可分配地址较少。
这种寻址方案必能节省大量的地址,节省的这些地址可以用于其它子网上。
如下图所示的网络:
在RIP路由环境中,每个网络使用固定长度的子网掩码(在例子中所有的网络都采用255.255.254.0的子网掩码配置),为了寻址406个物理节点,我们用3个分离的网络标识ID和1530个节点地址,如果把它迁移到OSPF环境中,利用IP可变长度寻址,可以得到大量的地址节约。
在上图中,我们只用了3个网络ID和642个节点地址来对406个物理节点寻址,共节省1530-642=888个节点地址。
下面,我们来讨论IP可变长度子网的划分方法:
第一步是网络管理员(或者是供应商)认真统计自己管理范围内网络的子网数以及每个子网上可能最多的节点数(即宿主机数)。
第二步是网络管理员(或供应商)向网络信息中心(NIC)申请一组地址,比如得到"w,x,0,0"的地址范围。
第三步是网络管理员(或供应商)向他的子网分配地址。
而每个子网允许利用任何长于由网络管理员所使用的子网掩码。
第四步是网络管理员(或供应商)用子网掩码概括其所管理范围内的所有网络。
一、子网掩码
(一)子网掩码的概念
子网掩码是一个32位地址,它用于屏蔽IP地址的一部分以区别IP地址中哪些位表示逻辑的网络/子网数,哪些表示逻辑的节点数,并说明IP地址是在本地网上还是在远程网上。
比如IP地址:
"139.56.97.235"
其二进制形式为:
10001011.00111010.01100001.11101011
采用的子网掩码为:
255.255.240.0其二进制形式为:
11111111.11111111.11110000.00000000
则可表示的逻辑网络/子网标识为:
10001011.00111010.0110
其十进制形式为:
139.56.6
可表示的逻辑节点标识为:
0001.11101011
其十进制形式为:
747
(二)确定子网掩码的步骤
1.确定现在或将来子网上的最大节点数。
2.根据子网上的最大节点数确定用IP地址上32位的哪几位来表示逻辑节点,将这些位都置为"0",其它位都置为"1"。
例如,子网上有300个节点,则可用二进制的9位来表示这些节点,则我们将后9位置为"0",其它位(前23位)都置为"1",即:
11111111.11111111.11111110.00000000
这个二进制数为二进制子网掩码。
3.将它转化为十进制形式为:
255.255.254.0
这个十进制数为十进制子网掩码。
从这个图中,我们用hostID的前7位来确定子网掩码,可用它来表示子网数,用hostID的后9位来确定节点数。
下列表格为w.x.0.0这组地址的子网掩码
上表中,每个子网上的节点数比在网屏蔽中所示的二进制值所能表示的节点数少2,这是因为IP地址中,不允许宿主机ID的各个位都为"0",如果都为"0",则表示只有这个网络,而网络上没有这台宿主机;而每个网络上还必须指定一个广播地址,供网络级别的广播使用。
通常,宿主机ID的各个位置都为"1"的地址为广播地址。
二、确定网络/子网ID的范围
确定网络/子网ID的范围时,使用定义子网掩码所用的同一宿主机的位数,计算可能的位组合,然后转化为十进制的形式,其步骤如下:
1.使用定义子网掩码所用的相同位列举所有可能的位组合,每个位组合表示一个子网。
2.跳过所有的位组合都为"0"或"1"的值。
IP地址的位不能全为"0"或"1",从左向右计算各位,把它们转化为十进制数。
3.这个十进制值表示起始值,终止值比下一轮的起始值小"1"。
例如:
对于网络w.x.0.0子网掩码为255.255.254.0的网络,确定其网络/子网ID的范围的步骤为:
2552552540
111111*********11111111000000000
00000000=0(无效)
00000010=2
00000100=4
……
11111100=252
11111110=254(子网掩码)
其范围为:
以同样的方法确定网络为"w.x.0.0",子网掩码为"255.255.255.128"的网络,其网络/子网ID的范围为:
表中,y为1-255之间的任意值。
三、网络管理员分发地址的方法
1.先给出子网上节点数的比较多的地址及其子网掩码。
其子网掩码比较短,网络/子网数较少,有较多的节点地址。
2.然后给出子网上节点数比较少的子网的地址及子网掩码。
其子网掩码比较长,可供选择的网络/子网数较多,有较少的节点地址。
3.子网掩码比较长的子网的网络ID范围比较大,但为了使网络环境中的每一个节点的地址唯一,我们使其取子网掩码比较短的子网没有取到的值。
举个例子:
某校园网共有16个子网,每个子网上的节点数不一样,如下图:
上表中,对于子网1、2、3,其节点数比较多,子网掩码较短,可供选择的网络/子网标识较少,因此,先给出其地址。
对于子网14、15、16,其节点较少,子网掩码较长,可供选择的网络/子网络标识较多,较灵活,最后给出其地址。
4.网络管理员(或供应商)在Internet中使用255.255.00子网掩码来屏蔽"w.x.0.0"的这组网络。
IP可变长度子网划分是迁移到OSPF路由环境中的最大优点之一,在OSPF中,每个网络的子网屏蔽被作为路由报文的一部分送出,所以不会有混淆。
OSPF还允许有不编号的点对点的网络(即一个网络上只连接两个路由器),这将更进一步减少在OSPF网络中使用的IP地址的数目。
结束语
IP可变长度子网的划分有可能摆脱IP地址的类别,所以即使32位IP地址中有16位表示网络标识ID的地址,供应商也能够利用不同的子网屏蔽向客户分发地址,这个地址用更长的位表示网络/子网标识ID,可能为24位或25位等等。
这将允许网络管理员在Internet中用一个子网掩码来概括所有的网络。
什么是域名系统?
(DNS:
DomainNameSystem)
域名系统完成的正是这一工作,它执行着从我们人类容易记忆的主机名到计算机容易处理的IP地址之间的映射工作。
当然,这只是我们需要域名系统的部分原因。
实际上域名系统是一种能咨询主机各种信息的标准工作,而不仅仅是地址变换。
并且,域名系统几乎被所有的计算机软件所使用,包括E-mail、远程终端程序(如Telnet)、文件传输程序(如Ftp)。
域名系统的另一个重要特征是使主机信息在全Internet网上都可得到。
将主机信息仅仅保存在一个独立计算机的文件中,只能帮助那台计算机上的用户,而域名系统提供了可供网络上任何地方远程查询的手段。
域名系统将主机信息的管理分布在许多地方和组织中。
你需要做的仅仅是将你所在的域(Domain)的信息在你的名字服务器上(NameServer)不断更新。
你的域名服务器将把你所在域的信息送到网络上所有其他的域名服务器。
域名系统的历史
正如我们所知,Internet是由ARPA网发展而来的。
70年代,网络规模仍然很小,只有几百台主机。
一个名叫HOSTS.TXT的文件就包含了连到ARPANET上的所有主机的"名字-地址"的映像,这个文件的标准版由位于斯坦福大学的网络信息中心(SRI-NIC)负责维护和发布。
ARPANET上的系统管理员们不断将他们的地址映射表的变化用E-mail发给SRI-NIC,并定期取回最新版本的HOSTS.TXT文件,这件工作大约一周一次或一周两次。
但是后来ARPANET开始大面积应用TCP/IP协议,连网的主机数量直线上升,HOSTS.TXT文件大小也就随着急剧增长。
而更新过程所产生的流量增长得更快:
每一个新增主机不仅意味着HOSTS.TXT文件多一行,而且SRI-NIC的维护工作量也大了一分。
所以,单一的HOSTS.TXT文件就存在诸多问题了,这表现在:
·网络流量的增加和处理机的负荷使SRI-NIC不堪重负。
·HOSTS.TXT中不能有任何两台主机重名,然而,NIC虽然可以保证地址分配的唯一性,但无权对主机进行命名,这样就不可避免地造成主机名字的冲突。
·随着网络规模的日益扩大,要保持HOSTS.TXT的一致性已越来越难。
当新产生的HOSTS.TXT文件到达ARPANET的边远地区时,新的主机又已经加到HOSTS.TXT中了。
所有这些问题都暴露了HOSTS.TXT已不再适合ARPANET的发展,需要新的系统来代替。
USC的信息科学研究所的PaulMockapetris被授权设计这个新系统的结构。
1984年,他提出了域名系统的概念。
第一个实际应用的域名系统称为JEEVES。
这之后实行的域名系统是BIND,它是KevinDunlap为伯克利4.3BSDUNIX操作系统写的,并已成为目前最流行的域名系统。
域名系统的介绍
域名系统是一个分布式的主机信息数据库,采用客户机/服务器机制,服务器中包含整个数据库的某部分信息,并供客户查询。
域名系统允许局部控制整个数据库的某些部分,但数据库的每一部分都可通过全网查询得到。
域名系统数据库类似于UNIX文件系统的结构,整个数据库是一个倒立的树形结构,顶部是根,根名是空标记"",但在文本格式中写成"."。
如图所示。
树中的每一个节点代表整个数据库的一个部分,也就是域名系统的域,域可以进一步划分成子域,每个域都有一个域名,定义它在数据库中的位置。
在域名系统中,域名全称是从该域名向上直到根的所有标记组成的串,标记之间是由"."分隔开的。
在域名系统中,每个域可以由不同的组织管理,每个组织可以将它的域再分成一系列子域,并将这些子域交给其他组织管理。
例如,Internet网络信息中心负责管理edu域,但它将子域berkeley.edu授权给Berkeley大学管理。
网络上的每台主机都有域名,指向主机的相关信息,像IP地址、Mail路由等。
主机也可以有一个或多个域名别名,它只是简单地从一个域名(别名)指向另一个域名(正式域名)。
域名系统采用层次结构的优点是,各个组织在他们的内部可以自由选择域名,只要保证组织内的唯一性即可,不用担心与其他组织内的域名相冲突。
域名服务器和解析器
域名系统采用的是Client/Server模式。
1.解析器(Resolver)是client方,它负责:
·查询名字服务器;
·解释从服务器回来的应答;
·将信息返回给请求方。
2.存储域名空间信息的程序(或者说主机)称为域名服务器,这是server方。
域名服务器在域名系统中起着至关重要的作用。
域名服务器通常保存着一部分域名空间的全部信息,这一部分域名空间称为区(zone)。
一个域名服务器可以管理一个区,也可以管理多个区。
域名服务器可以分为以下几种:
·主服务器:
每一个区至少有两个主名字服务器来保存所有的区内信息。
换一种说法,每一个给定的区的数据至少可以从两个服务器上得到。
其中一个服务器称为第一主服务器,另一个称为第二主服务器。
第一主服务器从磁盘中得到区内数据;第二主服务器从第一主服务器那里得到数据。
当第一主服务器坏了或过载时,第二主服务器可以当做一个备份服务器来工作。
·CachingOnly服务器:
所有的域名服务器都是Caching服务器。
这意味着域名服务器将所接到的信息保存在cache中,直到数据失效。
另外,还有一种CachingOnly服务器,它对于任何区来说都不负责。
这种服务器将所收到的问题转发到其他服务器上,直到得到所需信息,但它自己不保存任何可靠的数据。
·转发服务器:
转发服务器(fowardingserver)建立一张"转送服务器表",记载它的上级域名服务器,服务器接到地址映射请求时,首先在自己的cache中寻找,如果找不到,就请求送到上一级的服务器中,而不是送到根(看过域名系统工作过程后可以知道,一般域名系统查不到数据时,就将问题送到根上)。
该服务器将依次在表中向上一级查询,直到查到该数据为止,否则返回无此数据的信息。
这种服务器的优点在于主机可以建立非常大的数据cache,从而减少从本机到网上其它地方的访问。
域名系统工作过程
为了说明域名系统的工作过程,我们举一个例子。
设想北大计算机系一位学生,在他的域名为的机器上发出"mailxxxx@alecto.physics.uiuc.edu"的指令,计算机要做的第一件事就是进行域名到IP地址的变换。
·解析器向本地名字服务器发出请求,查询alecto.physics.uiuc.edu的地址;
·本地名字服务器向根""名字服务器发出查询alecto.physics.uiuc.edu地址的请求;
·根名字服务器给本地名字服务器返回一个指针信息,指向edu名字服务器;
·本地名字服务器向edu名字服务器发出查询alecto.physics.uiuc.edu地址的请求;
·edu名字服务器给本地名字服务器返回一个指针信息,指向uiuc.edu名字服务器;
·本地服务器向uiuc.edu名字服务器发出查询alecto.physics.uiuc.edu地址的请求;
·uiuc.edu名字服务器给本地名字服务器返回一个指针信息,指向physics.uiucedu名字服务器;
·本地名字服务器向physics.uiuc.edu名字服务器发出查询alecto.physics.uiuc.edu地址的请求;
·physics.uiuc.edu名字服务器将alec-to.physics.uiuc.edu地址返回给本地名字服务器。
·本地名字服务器将此地址送给解析器。
整个过程对于那些习惯使用主机表的用户来说可能有些繁琐。
但实际上,这个查询过程是很快的,原因之一是使用了caching的方法。
从上面的例子中,我们不难看出,本地名字服务器为了得到一个地址常常需要查询多个名字服务器。
因此,在查询地址的同时,本地名字服务器也就得到了许多其他名字服务器的信息,像它们的IP地址、负责的区域等。
本地名字服务器将这些信息连同最终查询到的主机地址全都放在cache中,以便将来参考。
当下次resolver再查询与这些域名相关的信息时,就可大大缩短时间了。
如果服务器中已经给予cache请求的地址,服务器就直接给出回答;即使没有,它也知道负责该域的名字服务器信息,就可以直接查询这些名字服务器,而不用从根开始逐步查询。
比方说,名字服务器已经查询了eecs.berkeley.edu的地址,那么在查询过程中,它将eecs.berkeley.edu的地址和berkeley.e-du名字服务器地址放在cache中。
现在如果某个resolver需要查询baobab.cs.berleley.e-du地址的话,名字服务器就可跳过根名字服务器,而直接查询berkeley.edu名字服务器。
caching除了能够加速查询过程以外,还能够避免重复查询根名字服务器,从而减轻根名字服务器的负担。
以上对域名系统作了一个大致的介绍。
最后想告诉读者朋友的是:
域名系统是一个很复杂也很重要的系统,如果你希望在Internet上能得心应手、游刃有余,可别忘了在域名系统上多下些功夫。
2000在整体上功能有了大量的改建,它集成了NTServer,Proxy,IIS等微软的一系列