IP助手函数
介绍一些新的A P I函数,有了这些函数,便可在自己的计算机上对I P协议统计情况
进行查询和管理。它们有助于获得下面的能力:
■ I p c o n f i g . e x e(或适用于微软Windows 95的Wi n i p c f g . e x e):显示I P配置信息,允许释放
和更新D H C P分配的I P地址。
■ N e t s t a t . e x e:显示T C P连接表、U D P监听者表以及I P协议统计情况。
■ R o u t e . e x e:显示并处理网络路由表。
■ A r p . e x e:显示并修改供“地址解析协议”(A R P)使用的I P到物理地址翻译表。
本附录介绍的这些函数主要用于Windows 98和Windows 2000操作系统。有几个还可以用
于Windows NT SP4及以后的S P(服务包)版本,但所有这些函数都不能用于Windows 95。接
下来的讨论中,我们将一一指出各个函数适用于哪些平台。本附录中的所有函数原型均定义
在I p h l p a p i , h文件中。在建立你自己的应用程序时,必须把它链接到这个库文件I p h l p a p i . l i b。
B.1 IPCONFIG
I p c o n f i g . e x e程序展示了两条信息: I P配置信息和I P配置参数,参数是由安装在机器上的
网络适配器所决定的。要获得I P配置信息,利用G e t N e t w o r k P a r a m s函数即可。它的定义如下:
p F i x e d I n f o参数取得一个缓冲区指针,该缓冲区接收F I X E D _ I N F O数据结构,你的应用程
序必须提供这个结构,以便获得I P配置信息。p O u t B u f L e n参数是一个变量指针,指定投入
p F i x e d I n f o参数中的那个缓冲区的长度。如果你提供的缓冲区不够大, G e t N e t w o r k P a r a m s就会
返回E R R O R _ B U F F E R _ O V E R F L O W,并将p O u t B u f L e n参数设为正确的缓冲区长度。
G e t N e t w o r k P a r a m s中所用的F I X E D _ I N F O结构的格式如下:
它的各个字段定义如下:
■ H o s t N a m e:代表你的计算机名,这个名字由D N S进行识别。
■ D o m a i n N a m e:说明你的计算机属于哪个D N S域。
■ C u r r e n t D n s S e r v e r:包含当前D N S服务器的I P地址。
■ D n s S e r v e r L i s t:是一个链接列表,其中包含你的机器所采用的D N S服务器。
■ N o d e Ty p e:说明I P网络上的系统是如何解析N e t B I O S名的。表B - 1包含了该字段可能的值
■ S c o p e I d:识别一个字串值。这个值加在N e t B I O S名中,通过逻辑方式把两个或两个以
上的计算机组在一起,在T C P / I P网络中进行通信。
■ E n a b l e R o u t i n g:说明系统是否会在它连接的网络中,路由I P包。
■ E n a b l e P r o x y:说明系统是否充当网络上的W I N S代理。W I N S代理通过W I N S,响应它
已解析过的名字查询,并允许由b节点计算机组成的网络与其他已经用W I N S注册的子
网上的服务器建立连接。
■ E n a b l e D n s:说明N e t B I O S是否向D N S查询W I N S不能解析的名字、广播或L M H O S T文
件。
表B-1 节点类型可能的值
值说明
BR O A D C A S T _ N O D E T Y P E : 即b节点N e t B I O S名字解析法,采用了这种解析方法,系统便利用
I P广播来执行N e t B I O S名字注册和名字解析
P E E R _ TO _ P E E R _ N O D E T Y P E : 即p节点名字解析,采用了这种解析方法,系统便利用点到点通信
与一个N e t B I O S名字服务器(比如W I N S)通信,进而对I P地址进行
注册和计算机名的解析
M I X E D _ N O D E T Y P E : 即m节点(m i x e d节点)N e t B I O S名字解析法,采用了这种解析法,
系统便同时采用前面的b节点和p节点方法。先用b节点方法;如果失
败,再用p节点方法
H Y B R I D _ N O D E T Y P E: 即h节点(h y b r i d节点)N e t B I O S名字解析法,采用了这种解析
法,系统便同时采用前面所讲的b节点和p节点。先用p节点;如果
失败,再用b节点
F I X E D _ I N F O结构的D n s S e r v e r L i s t字段是一个I P _ A D D R _ S T R I N G结构,代表I P地址链接
列表的起始处。它的格式如下:
N e x t字段标识列表中的下一个D N S服务器之I P地址。如果把它设为N U L L,就表明列表中
的最后一个地址。I p A d d r e s s字段是一个字符串,以点式十进制字串表示I p地址。I P M a s k字段
也是一个字符串,表示子网掩码,这个掩码与I p A d d r e s s中列出的I P地址关联在一起。最后一
个字段是C o n t e x t,用一个独一无二的值来标识系统上的I P地址。
另外,利用I p C o n f i g . e x e程序,也可获得网络接口专有的I P配置信息。网络接口不仅可以
是一个硬件以太网适配器,甚至还可以是一个R A S拨号适配器。调用G e t A d a p t e r s I n f o命令,
便可获得适配器信息。该函数的定义如下:
附录B计IP助手函数计计465
下载
通过p A d a p t e r I n f o参数,把一个指针投递给应用程序提供的缓冲区,这个缓冲区取得一个
A D A P T E R _ I N F O数据结构,该结构中含有这个适配器的配置信息。p O u t B u f I n f o参数是一个
变量指针,这个变量指定投入p A d a p t e r I n f o参数中的缓冲区的长度。如果你提供的缓冲区不够
大,G e t A d a p t e r s I n f o就会返回E R R O R _ B U F F E R _ O V E R F L O W,并把p O u t B u f L e n参数设为所
需要的缓冲区长度。
事实上, I P _ A D A P T E R _ I N F O结构是一个结构列表,你的机器上所有可用的网络适配器
的I P配置信息都在这个列表中。I P _ A D A P T E R _ I N F O的格式如下:
各字段定义如下:
■ N e x t:缓冲区内的下一个适配器。N U L L值表明列表中的最后一个适配器。
■ C o m b o I n d e x:未用,将设为0。
■ A d a p t e r N a m e:适配器名。
■ D e s c r i p t i o n:是一个关于适配器的简单说明。
■ A d d r e s s L e n g t h:A d d r e s s字段中的那个适配器的物理地址由多少个字节组成。
■ A d d r e s s:该适配器的物理地址。
■ I n d e x:该适配器分配的唯一的网络接口内部索引编号。
■ Ty p e:将适配器类型指定为一个数字化的值。表B - 2定义了已获支持的适配器类型。
■ D h c p E n a b l e d:说明这个适配器上是否启用D H C P。
■ C u r r e n t I p A d d r e s s:未用,但将设为N U L L(空)值。
■ I p A d d r e s s L i s t:指定为这个适配器分配的I P地址列表。
■ G a t e w a y L i s t:指定代表默认网关的I P地址列表。
■ D h c p S e r v e r:指定一个列表,表中只有一个元素,代表D H C P服务器S所用的I P地址。
■ H a v e Wi n s:说明该适配器是否使用W I N S服务器。
466计计第四部分附附录
下载
■ P r i m a r y Wi n s S e r v e r:指定一个列表,表中只有一个元素,代表主W I N S服务器所用的
I P地址。
■ S e c o n d a r y Wi n s S e r v e r:指定一个列表,表中只有一个元素,代表辅助W I N S服务器所
用的I P地址。
■ L e a s e O b t a i n e d:标识何时开始租用D H C P服务器提供的I P地址。
■ L e a s e E x p i r e s:标识D H C P服务器提供的I P地址何时期满。
表B-2 适配器类型
适配器类型的值说明
M I B _ I F _ T Y P E _ E T H E R N E T 以太网适配器
M I B _ I F _ T Y P E _ F D D I F D D I(光纤分布数据接口)适配器
M I B _ I F _ T Y P E _ L O O P B A C K L o o p b a c k适配器
M I B _ I F _ T Y P E _ O T H E R 其他类型的适配器
M I B _ I F _ T Y P E _ P P P P P P(点到点协议)适配器
M I B _ I F _ T Y P E _ S L I P S l i p适配器
M I B _ I F _ T Y P E _ TO K E N R I N G 令牌环适配器
B.1.1 释放和更新IP地址
I p c o n f i g . e x e程序的另一个特色是:能够释放和更新从D C H P服务器处获得的I P地址。这是
通过指定/ r e l e a s e和/ r e n e w命令行参数来完成的。如果想通过编程释放I P地址,则可调用
I P R e l e a s e A d d r e s s函数,该函数定义如下:
如果打算更新I P地址,则调用I P R e n e w A d d r e s s函数,它的定义如下:
这两个函数均突出了A d a p t e r I n f o参数是一个I P _ A D A P T E R _ I N D E X _ M A P结构,该结构识
别即将对其地址进行释放和更新的适配器。I P _ A D A P T E R _ I N D E X _ M A P结构的格式如下:
它的各个字段是这样定义的:
■ I n d e x:标识为适配器分配的内部网络接口索引。
■ N a m e:标识适配器名。
调用G e t I n t e r f a c e I n f o函数,便可获得某一特定适配器的I P _ A D A P T E R _ I N D E X _ M A P结构。
该函数的定义如下:
附录B计IP助手函数计计467
下载
p I f Ta b l e参数是一个指针,指向一个I P _ I N T E R FA C E _ I N F O应用程序缓冲区,该缓冲区将
接收接口信息。d w O u t B u f L e n参数是一个变量指针,这个变量指定投入p I f Ta b l e参数中的缓冲
区的长度。如果这个缓冲区内容纳不下这个接口信息, G e t I n t e r f a c e I n f o便返回E R R O R _
I N S U F F I C I E N T _ B U F F E R错误,并把d w O u t B u f L e n参数设为合适的缓冲区长度。
I P _ I N T E R FA C E _ I N F O结构的格式如下;
它的各个字段是这样定义的:
■ N u m A d a p t e r s:A d a p t e r字段中的适配器编号。
■ A d a p t e r:是一个I P _ A D A P T E R _ I N D E X _ M A P结构(见前面的定义)的数组。
一旦获得了特定适配器的I P _ A D A P T E R _ I N D E X _ M A P 结构,便可利用前面的
I P R e l e a s e A d d r e s s和I P R e n e w A d d r e s s这两个函数,释放或更新D H C P分配的I P地址了。
B.1.2 改变IP地址
I p c o n f i g . e x e程序不允许改变网络适配器的I P地址(D H C P分配的除外)。但是,有两个函
数允许你增添或删除特定适配器的I P地址,它们是: A d d I p A d d r e s s和DeleteIpAddress IP助手
函数。使用这两个函数时,需要知道网络适配器的索引编号和I P场景编号。Wi n d o w s中,每
个网络适配器都有一个独一无二的索引I D(前面已讲过),而且,每个I P地址都有一个独一无
二的场景I D。适配器索引I D和I P场景编号都可通过G e t A d a p t e r s I n f o获得。A d d I p A d d r e s s函数
的定义如下:
A d d r e s s参数把准备增添的I P地址指定为一个无符号的长整数值。I p M a s k参数把I P地址的
子网掩码指定为一个无符号的长整数值。I f I n d e x参数指定准备增添地址的适配器索引。
N T E C o n t e x t参数取得与所增添的I P地址关联的场景值。N T E I n s t a n c e参数取得与一个I P地址关
联的实例值。
如果想通过编程删除适配器的I P地址,调用D e l e t e I p A d d r e s s函数即可。它的定义如下:
N T E C o n t e x t参数是与I P地址关联的值,这个值可从G e t A d a p t e r s I n f o(前面已介绍)中得
到。
B.2 NETSTAT
N e t s t a t . e x e程序显示了你的计算机上的T C P连接表、U D P监听者表以及I P协议统计。用于
468计计第四部分附附录
下载
获得这一信息的函数不仅可用于Windows 98和Windows 2000,而且可用于Windows NT 4 SP4
(以及稍后的版本)。
B.2.1 取得TCP连接表
利用G e t Tc p Ta b l e函数,可获得T C P连接表。获得的信息和你在执行带上-p tcp-a选项的
N e t s t a t . e x e程序时看到的信息一样。G e t Tc p Ta b l e函数的定义如下:
p Tc p Ta b l e参数是一个指针,指向一个M I B _ T C P TA B L E应用程序缓冲区,该缓冲区内接收
T C P连接信息。p d w s i z e参数是一个变量指针,这个变量指定投入p Tc p Ta b l e参数中的缓冲区长
度。如果你提供的缓冲区容纳不下这个T C P信息,函数就会把这个参数设为合适的缓冲区长
度。b O r d e r参数指定是否对返回信息进行分类。
G e t Tc p Ta b l e函数返回的M I B _ T C P TA B L E结构的格式如下:
它的各个字段定义如下:
■ d w N u m E n t r i e s:说明t a b l e字段中有多少条目。
■ t a b l e:是一个M I B _ T C P R O W结构数组,其中包含T C P连接信息。
M I B _ T C P R O W结构中包含构成一个T C P连接的I P地址对。它的格式如下:
它的各个字段是这样定义的;
■ d w S t a t e:指定T C P连接的状态,参见表B - 3中的说明。
表B-3 TCP连接的状态
连接状态R F C说明
M I B _ T C P _ S TAT E _ C L O S E D “关闭”状态
M I B _ T C P _ S TAT E _ C L O S I N G “正在关闭”状态
M I B _ T C P _ S TAT E _ C L O S E _ WA I T “关闭等待”状态
M I B _ T C P _ S TAT E _ D E L E T E _ T C B “删除”状态
M I B _ T C P _ S TAT E _ E S TA B “已建立”状态
M I B _ T C P _ S TAT E _ F I N _ WA I T 1 “FIN WA I T 1”状态
M I B _ T C P _ S TAT E _ F I N _ WA I T 2 “FIN WA I T 2”状态
附录B计IP助手函数计计469
下载
(续)
连接状态R F C说明
M I B _ T C P _ S T A T E _ L A S T _ A C K “最后一次确认”状态
M I B _ T C P _ S T A T E _ L I S T E N “正在监听”状态
M I B _ T C P _ S T A T E _ S Y N _ R C V D “同步接收”状态
M I B _ T C P _ S T A T E _ S Y N _ S E N T “同步发送”状态
M I B _ T C P _ S T A T E _ T I M E _ W A I T “时间等待”状态
■ d w L o c a l A d d r:为连接指定一个本地I P地址。
■ d w L o c a l P o r t:为连接指定一个本地端口。
■ d w R e m o t e A d d r:为连接指定远程I P地址。
■ d w R e m o t e P o r t:为连接指定远程端口。
B.2.2 取得UDP监听者表
利用G e t U d p Ta b l e函数,可获得U D P监听者表。获得的信息和你在执行有一个-pudp -a选
项的N e t s t a t . e x e程序时看到的信息一样。G e t U d p Ta b l e函数的定义如下:
p U d p Ta b l e参数是一个指针,指向M I B _ U D P TA B L E应用程序缓冲区,该缓冲区将接收
U D P监听者信息。p d w S i z e参数是一个变量指针,这个变量指定投入p U d p Ta b l e参数内的缓冲
区的长度。如果缓冲区容纳不下这个U D P信息,函数便把这个参数设为合适的缓冲区长度。
b O r d e r参数指定是否对返回信息进行分类。
G e t U d p Ta b l e函数返回的M I B _ U D P TA B L E结构格式如下:
它的各个字段是这样定义的:
■ d w N u m E n t r i e s:说明t a b l e字段中有多少条目。
■ t a b l e:是一个M I B _ U D P R O W结构数组,其中包含U D P监听者的信息。
M I B _ U D P R O W结构中包含I P地址,U D P正在这些地址上监听数据报。它的格式如下:
该结构的各个字段是这样定义的:
■ d w L o c a l A d d r:指定本地I P地址。
■ d w L o c a l P o r t:指定本地I P端口。
470计计第四部分附附录
下载
B.2.3 取得IP协议统计情况
用于获得I P统计情况的四个函数是: G e t I p S t a t i s t i c s、G e t I c m p S t a t i s t i c s、G e t Tc p S t a t i s t i c s
以及G e t U d p S t a t i s t i c s。这些函数产生的信息和调用带上- s参数的N e t s t a t . e x e程序时返回的信息
一样。利用第一个统计函数G e t I p S t a t i s t i c s,可获得当前计算机上的I P统计情况,它的定义如
下:
p S t a t s参数是一个指针,指向M I B _ I P S TATA结构,这个结构接收你的计算机当前的I P统计
情况。M I B _ I P S TAT S结构的格式如下:
该结构的各个字段是这样定义的:
■ d w F o r w a r d i n g:说明你的计算机上是启用,还是禁止转发I P包。
■ d w D e f a u l t T T L:为你的计算机所发出的数据报指定最初的生存期( T T L)的值。
■ d w I n R e c e i v e s:说明已收到多少数据报。
■ d w I n H d r E r r o r s:说明已收到多少报头有误的数据报。
■ d w I n A d d r E r r o r s:说明已收到多少地址有误的数据报。
■ d w F o r w D a t a g r a m s:说明已转发多少数据报。
■ d w I n U n k n o w n P r o t o s:说明已收到多少协议不明的数据报。
■ d w I n D i s c a r d s:说明已收到多少已丢弃的数据报。
■ d w I n D e l i v e r s:说明已收到多少已投递的数据报。
附录B计IP助手函数计计471
下载
■ d w O u t R e q u e s t s:说明I P请求传输多少数据报。
■ d w R o u t i n g D i s c a r d s:说明已丢弃的外出数据报有多少。
■ d w O u t D i s c a r d s:说明丢弃的传输数据报有多少。
■ d w O u t N o R o u t e s:说明没有路由目标的数据报有多少。
■ d w R e a s m Ti m e o u t:说明分段数据报完全到达的最长时间。
■ d w R e a s m R e q d s:说明需要重组的数据报有多少。
■ d w R e a s m O k s:说明已成功重组的数据报有多少。
■ d w F r a g F a i l s:说明不能进行分段的数据报有多少。
■ d w F r a g C r e a t e s:说明可被分段的数据报有多少。
■ d w N u m I f:说明你的计算机上可用的I P接口有多少。
■ d w N u m A d d r:说明你的计算机上标识的I P地址有多少。
■ d w N u m R o u t e s:说明路由表中可用的路由有多少。
第二个统计函数: G e t I c m p S t a t i s t i c s,用于获得“互联网控制协议”(I C M P)统计情况。
它的定义如下:
p S t a t s参数是一个指针,指向M I B _ I C M P结构,这个结构接收你的计算机上当前的I C M P
统计情况。M I B _ I C M P结构的格式如下:
一眼可见,这个M I B _ I C M P结构中另包含一个M I B I C M P I N F O结构,后者的格式如下:
M I B I C M P I N F O结构通过M I B I C M P S TAT S结构接收接入或外出的I C M P信息。i c m p I n S t a t s
参数接收接入数据,而i c m p O u t S t a t s参数则接收外出数据。M I B I C M P S TAT S结构的格式如下:
472计计第四部分附附录
下载
它的各个字段是这样定义的:
■ d w M s g s:说明已收发多少消息。
■ d w E r r o r s:说明已收发多少错误。
■ d w D e s t U n r e a c h s:说明已收发多少“目标不可抵达”消息。
■ d w Ti m e E x c d s:说明已收发多少生存期已过消息。
■ d w P a r m P r o b s:说明已收发多少表明数据报内有错误I P信息的消息。
■ d w S r c Q u e n c h s:说明已收发多少源结束消息。
■ d w R e d i r e c t s:说明已收发多少重定向消息。
■ d w E c h o s:说明已收发多少I C M P响应请求。
■ d w E c h o R e p s:说明已收发多少I C M P响应应答。
■ d w Ti m e s t a m p s:说明已收发多少时间戳请求。
■ d w Ti m e s t a m p R e p s:说明已收发多少时间戳响应。
■ d w A d d r M a s k s:说明已收发多少地址掩码。
■ d w A d d r M a s k R e p s:说明已收发多少地址掩码响应。
用于获得T C P统计情况的第三个统计函数是G e t Tc p S t a t i s t c s,它的定义如下:
p S t a t s参数是一个指针,指向M I B _ T C P S TAT S结构,这个结构接收你的计算机当前的I P统
计。M I B _ T C P S TAT S结构的格式如下:
它的各个字段是这样定义的:
■ d w R t o A l g o r i t h m:说明即将采用哪种重传输算法。有效值包括: M I B _ T C P _ RTO _
C O N S TA N T、M I B _ T C P _ RTO _ R S R E、M I B _ T C P _ RTO _ VA N J以及针对其他类型的
M I B _ T C P _ RTO _ O T H E R。
■ d w R t o M i n:说明重传输超时的最小值,以毫秒计。
■ d w R t o M a x:说明重传输超时的最大值,以毫秒计。
附录B计IP助手函数计计473
下载
■ d w M a x C o n n:说明最多能接受多少连接。
■ d w A c t i v e O p e n s:说明你的计算机向服务器发起了多少次连接。
■ d w P a s s i v e O p e n s:说明你的计算机监听了多少次客户机发出的连接。
■ d w A t t e m p t F a i l s:说明尝试连接失败的次数是多少。
■ d w E s t a b R e s e t s:说明对已建立的连接实行了多少次重设。
■ d w C u r r E s t a b:说明目前已建立的连接有多少。
■ d w I n S e g s:说明收到了多少分段数据报。
■ d w O u t S e g s:说明传输了多少分段数据报(除已重新传输的分段外)。
■ d w R e t r a n s S e g s:说明已传输了多少分段数据报。
■ d w I n E r r s:说明收到多少错误。
■ d w O u t R s t s:说明重设标志后,又传输了多少分段数据报。
■ d w N u m C o n n s:说明连接的总数是多少。
最后一个统计函数G e t U d p S t a t i s t i c s,用于获得你的计算机上的U D P统计情况。它的定义
如下:
p S t a t s参数是一个指针,指向M I B _ U D P S TAT S结构,这个结构接收你的计算机当前的I P统
计。M I B _ U D P S TAT S结构的格式如下:
它的各个字段是这样定义的:
■ d w I n D a t a g r a m s:说明已收到多少数据报。
■ d w N o P o r t s:说明因为端口号有误而丢弃了多少数据报。
■ d w I n E r r o r s:说明已收到多少错误数据报(除d w N o P o r t s中统计的数目之外)。
■ d w O u t D a t a g r a m s:说明已传输多少数据报。
■ d w N u m A d d r s:说明监听者表中有多少U D P条目。
B.3 ROUTE
利用R o u t e . e x e命令,我们可以打印和修改路由表。路由表用于决定连接请求或收发数据
报在哪个I P接口上进行。“I P助手库”(IP Helper Library)提供了几个函数,用于对路由表进
行处理。这几个函数可用于Windows 98,Windows 2000以及Windows NT 4 SP4(或以后的版
本)。
首先,为大家讲讲R o u t e . e x e命令的作用。该命令最基本的用法便是打印路由表。一个路
由的组成有这几个要素:一个目标地址、一个网络掩码、一个网关、一个本地I P接口和一个
474计计第四部分附附录
下载
公制。另外的用法便是增添和删除路由。若想增添路由,必须指定前面提到的全部参数。若
想删除路由,只指定目标地址即可。在本小节,我们准备看看这几个I P助手函数是怎样打印
路由表的。随后,再为大家讲讲怎样增添或删除路由。
B.3.1 获得路由表
R o u t e . e x e执行的最常见操作便是打印路由表。这是通过G e t I p F o r w a r d Ta b l e函数来完成的。
该函数的定义如下:
第一个参数p I p F o r w a r d Ta b l e中包含了函数返回的路由表信息。在调用这个函数时,该参
数应该引用一个恰当的缓冲区。如果p I p F o r w a r d Ta b l e参数被设为N U L L(或者缓冲区长度不
够),p d w S i z e参数便返回成功调用该函数所需的缓冲区的长度。最后一个参数b O r d e r,表明
是否对返回结果进行分类。默认的分类顺序是:
1) 目标地址。
2) 生成路由的协议。
3) 多路径路由策略。
4) 下一跳的地址。
路由信息包含在M I B _ I N F O RWA R D R O W结构中,这个结构的格式如下:
这个结构内还有一个M I B _ I P F O RWA R D R O W结构数组。d w N u m E n t r i e s字段表明这个数组
中有几个结构。M I B _ I P F O RWA R D R O W结构的格式如下:
它的各个字段是这样定义的:
附录B计IP助手函数计计475
下载
■ d w F o r w a r d D e s t:是目标主机的I P地址。
■ d w F o r w a r d M a s k:是目标主机的子网掩码。
■ d w F o r w a r d P o l i c y:指定影响多路径路由选择的一系列条件。这些条件通常采用“ I P的
服务类型”(TO S)的形式。关于TO S的详情,可参考第9章和I P _ TO S选项。关于多路
径路由的详情,参考1 3 5 4。
■ d w F o r w a r d N e x t H o p:是路由表中下一跳的I P地址。
■ d w F o r w a r d I f I n d e x:表明针对该路由的接口之索引。
■ d w F o r w a r d Ty p e:表明RFC 1354中定义的路由类型。表B - 4列出了该字段可能的值及其
含义。
■ d w F o r w a r d P r o t o:是生成这个路由的协议。表B - 5列出了该字段可能的值。I P X协议值
定义在R o u t p r o t . h中,而I P条目则包含在I p r t r m i b . h中。
■ d w F o r w a r d A g e:表明路由持续时间,以毫秒计。
■ d w F o r w a r d N e x t H o p A S:是下一跳的自治系统编号。
■ d w F o r w a r d M e t r i c 1:是路由协议专有的公制值。详情参见RFC 1354。这个字段中包含路
由公制值,这个值是在执行R o u t e . e x e打印命令时经常看到的。若不使用这个条目,对这
个字段以及下面四个字段而言,其值均为M I B _ I P R O U T E _ M E T R I C _ U N U S E D(-1)。
■ d w F o r w a r d M e t r i c 2:是路由协议专有的公制值。详情参见RFC 1354。
■ d w F o r w a r d M e t r i c 3:是路由协议专有的公制值。详情参见RFC 1354。
■ d w F o r w a r d M e t r i c 4:是路由协议专有的公制值。详情参见RFC 1354。
■ d w F o r w a r d M e t r i c 5:是路由协议专有的公制值。详情参见RFC 1354。
表B-4 路由表条目中可能的路由类型
转发类型说明
M I B _ I P R O U T E _ T Y P E _ I N D I R E C T 下一跳不是最终目的地(远程路由)
M I B _ I P R O U T E _ T Y P E _ D I R E C T 下一跳是最终目的地(本地路由)
M I B _ I P R O U T E _ T Y P E _ I N VA L I D 路由无效
M I B _ I P R O U T E _ T Y P E _ O T H E R 其他路由
表B-5 路由协议标识符
协议标识符说明
M I B _ I P P R O TO _ O T H E R 未未列出的协议
M I B _ I P P R O TO _ L O C A L 未堆栈生成的路由
M I B _ I P P R O TO _ N E T M G M T 未R o u t e . e x e程序或S N M P添加的路由器
M I B _ I P P R O TO _ I C M P 未I C M P重定向的路由
M I B _ I P P R O TO _ E G P 未外部网关协议
M I B _ I P P R O TO _ G G P 未网关网关协议
M I B _ I P P R O TO _ H E L L O 未H E L L O路由协议
M I B _ I P P R O TO _ R I P 未路由信息协议
M I B _ I P P R O TO _ I S _ I S 未I P中间系统到中间系统协议
M I B _ I P P R O TO _ E S _ I S 未I P终端系统到中间系统协议
M I B _ I P P R O TO _ C I S C O 未I P C i s c o协议
M I B _ I P P R O TO _ B B N 未B B N协议
M I B _ I P P R O TO _ O S P F 未先打开最短路径(O S P F)路由协议
M I B _ I P P R O TO _ B G P 未边.界网关协议
476计计第四部分附附录
下载
(续)
协议标识符说明
M I B _ I P P R O TO _ N T _ A U TO S TAT I C 未最初由一个路由协议添加的、非静态路由
M I B _ I P P R O TO _ N T _ S TAT I C 未路由用户接口或R o u t e m o n . e x e程序添加的路由
M I B _ I P P R O TO _ S TAT I C _ N O N _ D O D 未等同于P R O TO _ I P _ N T _ S TAT I C,但这些路由不会引发
“按需拨号”(D O D)
I P X _ P R O TO C O L _ R I P 未I P X的路由信息协议
I P X _ P R O TO C O L _ S A P 未服务声明协议
I P X _ P R O TO C O L _ N L S P 未N e t Wa r e链接服务协议
B.3.2 增加路由
路由命令的另一个作用是添加路由。记住,要添加一个路由,必须指定其目标I P、网络
掩码、网关、本地I P接口以及公制。添加路由时,应该保证所给的本地I P接口是有效的。除
此以外,还需要根据本地I P接口的内部索引值,引用这个接口,因为路由将添加到这个接口
上。调用G e t I p A d d r Ta b l e函数,便可获得这一信息。该函数的定义如下:
第一个参数p I p A d d r Ta b l e,是将返回M I B _ I PA D D RTA B L E结构的缓冲区的正确长度。
p d w S i z e参数是被当作第一个参数投递的缓冲区的长度。最后一个参数b O r d e r,说明是否返回
以升序的方式处理I P地址的本地I P接口。要找到正确的缓冲区长度,可指定p I p A d d r Ta b l e参数
为N U L L。函数返回之后, p d w S i z e便指定正确的缓冲区长度。M I B _ I PA D D RTA B L E结构的格
式如下:
这个结构内还有一个M I B _ I PA D D R O W结构。d w N u m E n t r i e s字段表明t a b l e字段数组中有
多少M I B _ I PA D D R O W条目。M I B _ I PA D D R R O W结构的格式如下:
它的各个字段是这样定义的:
■ d w A d d r:是指定接口的I P地址。
■ d w I n d e x:与I P地址关联在一起的接口之索引。
附录B计IP助手函数计计477
下载
■ d w M a s k:是I P地址的子网掩码。
■ d w B C a s t A d d r:是广播地址。
■ d w R e a s m S i z e:是已收到的数据报重装后的最大长度。
■ unused1 and unused2:目前尚未使用。
利用这个函数,便可验证针对指定路由的本地I P地址是否有效。在路由表中添加路由的
函数是S e t I p F o r w a r d E n t r y,它的定义如下:
该函数中,唯一的参数p R o u t e,是一个指向M I B _ I P F O RWA R D R O W结构的指针。这个结构
定义了建立一个新路由所需要的元素。我们曾对这个结构及其成员字段进行了讨论。要添加一
个新路由,必须指定下面几个字段的值:d w F o r w a r d I f I n d e x、d w F o r w a r d D e s t、d w F o r w a r d M a s k、
d w F o r w a r d N e x t H o p以及d w F o r w a r d P o l i c y。
B.3.3 删除路由
路由程序的最后一个行动是删除路由,这个命令最简单。调用路由命令删除路由时,必
须指定准备删除的目标地址。然后,才能搜索与目标地址对应的M I B _ I P F O RWA R D R O W结构,
这个结构是G e t I p F o r w a r d Ta b l e返回的。接下来,再将M I B _ I P F O RWA R D R O W结构投递给
D e l e t e F o r w a r d E n t r y函数,便可删除指定的路由条目了。D e l e t e F o r w a r d E n t r y函数的定义如下:
删除路由的另一种可选办法是自行指定p R o,u t e字段。删除路由所需的字段有:d w F o r w a r d -
IfIndex、dwForwardDest、dwForwardMask、dwForwardNextHop以及dwForwardPolicy。
B.4 ARP
A r p . e x e程序用于查看和处理A R P缓存。通过I P助手函数仿真A r p . e x e程序的Platform SDK
范例名为I p r a p . e x e。A R P(也许大家还记得,它代表名字解析协议)负责把一个I P地址解析成
一个物理性的M A C地址。为不致影响性能,计算机将这一信息缓存下来,并可能通过A r p . e x e
程序对该信息进行访问。利用这个程序,选择- a选项,便显示A R P表;选择- d选项,便删除
一个条目;选择- s选项,则添加一个条目。下一小节中,我们将谈谈如何打印A R P缓存,在
A R P表中添加条目以及删除A R P条目。
本小节中讨论的I P助手函数适用于Windows 98、Windows 2000以及Windows NT4 SP4
(以及稍后的版本)。
用于获得A R P表的这个I P助手函数最简单。它便是G e t I p N e t Ta b l e,其定义如下:
第一个参数p I p N e t Ta b l e,是一个指向M I B _ I P N E T TA B L E结构的指针,这个结构返回的是A R P
478计计第四部分附附录
下载
信息。在调用这个函数时,必须提供一个足够大的缓冲区长度。和其他I P助手函数一样,如该参
数是N U L L,就会返回p d w S i z e参数所需的正确的缓冲区长度和E R R O R _ I N S U F F I C I E N T _B U F F E R
错误。反之, p d w S i z e则表明被当作p I p N e t Ta b l e投递的缓冲区的长度。最后一个参数b O r d e r,
表明是否按升序对返回的I P条目进行分类。
M I B _ I P N E T TA B L E结构内还有一个M I B _ I P N E T R O W结构数组,后者的格式如下:
d w N u m E n t r i e s字段表明t a b l e字段中有多少数组条目。M I B _ I P N E T R O W结构中包含真正
的A R P条目信息。它的格式如下:
该结构的各个字段定义如下:
■ d w I n d e x:指定适配器的索引
■ d w P h y s A d d r L e n:表明b P h y s A d d r s字段内包含的物理接口的长度,按字节数计
■ b P h y s A d d r:是一个字节数组,其中包含适配器的物理地址
■ d w A d d r:指定适配器的I P地址
■ d w Ty p e:表明A R P条目的类型。表B - 6展示了这个字段可能的值
表B-6 ARP条目类型可能的值
A R P类型含未未义
M I B _ I P N E T _ T Y P E _ S TAT I C 静态条目
M I B _ I P N E T _ T Y P E _ D Y N A M I C 动态条目
M I B _ I P N E T _ T Y P E _ I N VA L I D 无效条目
M I B _ I P N E T _ T Y P E _ O T H E R 其他条目
B.4.1 添加ARP条目
A R P另一个作用是在A R P缓存中添加条目,这个操作比较简单。用于添加A R P条目的I P
助手函数是S e t I p N e t E n t r y,它的定义如下:
唯一的参数是M I B _ I P N E T W O R K结构,我们已在前一小节中提过这个结构。要添加一个
A R P条目,只须用新A R P信息来填充这个结构。首先,把d w I n d e x参数设为一个本地I P地址的
索引,这个索引表明添加的A R P条目将用于哪个网络。记住,如果给出的是I P地址,就可利
附录B计IP助手函数计计479
下载
用G e t I p A d d r Ta b l e函数把它映射到索引。下一个字段d w P h y s A d d r L e n,一般设为6(多数物理
地址,比如说ETHEENET MAC地址,长度都是6个字节)。b P h y s A d d r字节数组必须设为物理
地址。多数M A C地址都用1 2个字符来表示,比如0 0 - A 0 - C 9 - 8 6 - E 8。这些字符需要被硬编码到
b P h y s A d d r字段的恰当的字节数组位置内。比如, M A C地址范例就会硬编码到下面的字节中:
编码方法和编码I P X及AT M地址所采用的方法一样(详情参见第6章)。d w A d d r字段必须
设为远程主机的I P地址,此时正在该机器上输入它的M A C地址。最后一个字段d w Ty p e,设为
表B - 6中所列的A R P条目类型之一。M I B _ I P N E T W O R K结构填充好之后,就调用S e t I p N e t E n t r y
函数,在缓存中添加A R P条目。如果成功,就会返回N O _ E R R O R。
B.4.2 删除ARP条目
删除A R P条目类似于添加条目,只不过删除时需要的信息有所不同,这里需要的是接口
索引d w I n d e x,和准备删除的A R P条目之I P地址—d w A D D R。用于删除A R P条目的函数是
D e l e t e I p N e t E n t r y,它的定义如下:
其唯一的参数是一个M I B _ I P N E T R O W结构,删除A R P条目时所需的唯一的信息是本地I P
索引和准备删除的I P地址。记住,本地I P接口的索引编号可通过G e t I p A d d r Ta b l e函数获得。如
果成功,便返回N O _ E R R O R。 |