Windows下的命令行工具在网络故障检测中的应用(下)

 11、arp

作用:显示并修改地址解析协议(arp)的缓存表,也就是所用到的将IP地址解析成本地主机物理地址的翻译表。
主要参数:arp [-a] [-d] [-s]
说明:-a  显示arp翻译表
  -d  目的主机IP地址  删除指定的arp项
  -s  目的主机IP地址  指定物理地址  指定物理地址与IP地址关联
arp命令相对而言比上期介绍的命令要难懂,为了便于理解,我们先来看一看网络通信过程的一些细节问题。
在以太网(Ethernet)中,一个网络设备要和另一个网络设备进行直接通信,除了知道目标设备的网络层逻辑地址(如IP地址)外,还要知道目标设备的第二层物理地址(MAC地址)。arp协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。网络设备通过arp表在缓存中保存IP与MAC地址的映射信息。在一次arp的请求与响应过程中,通信双方都把对方的MAC地址与IP地址的对应关系保存在各自的arp表中,以在后续的通信中使用。arp表使用老化机制,删除在一段时间内没有使用过的IP与MAC地址的映射关系。那么,arp命令如何管理arp协议的缓存表呢?我们还是由一个具体的实例入手来看一看。
网络情况如图6所示:
图6
在局域网中两台计算机要实现互相访问,并且还要通过网关同Internet保持联系。
检测步骤:判断两台主机是否可以保持联系,我们已经知道可以利用ping来检测,看看是否有数据包回复。同时也可以在命令行中键入arp -a,结果如下:
Interface: 10.0.0.220 on Interface 0x2000003
Internet Address   Physical Address        Type
10.0.0.2        00-07-53-00-bf-82   dynamic
10.0.0.5        00-76-17-00-ad-66   dynamic
显然,双方主机的MAC地址已经互相交换了arp的缓存表,并且可以互相通信。如果只能看到自己的MAC地址,则说明网络存在连通问题,数据包不可到达。但还有一种情况,那就是一方可以看到自己的arp缓存表保存了通信双方的MAC地址,而另一方的arp缓存表却没有保存,双方也不能够通信。
例如我们在A主机上键入 arp -a ,结果如下:
Interface: 10.0.0.220 on Interface 0x2000003
Internet Address   Physical Address         Type
10.0.0.2        00-07-53-00-bf-82    dynamic
10.0.0.5        00-76-17-00-ad-66    dynamic
在A主机上ping一下B主机,显示结果是“Request timed out”(请求超时)。
随后我们在B主机上键入 arp -a ,结果如下:
Interface: 10.0.0.220 on Interface 0x2000003
Internet Address      Physical Address        Type
10.0.0.5           00-76-17-00-ad-66    dynamic
在A主机上ping一下B主机,显示结果是“Destination host unreachable”(目标不可到达)。
跟据前文我们对arp协议在双机通信中所起作用的分析,可以断定B数据包无法到达A,而A的数据包却可以到B,同时A通过arp协议获得了B的MAC地址,然而却收不到B发回的Echo Reply报文,所以显示网络超时。毫无疑问,双方的网络连通性不存在问题,因为已经有一方获得了对方的MAC地址;有问题的是B的子网掩码,由于B的子网掩码设置错误,使得B误以为A不在自己的网段中。将B的子网掩码改正之后,网络故障即可排除。
还要提到的一点是,当我们利用缺省网关同远程主机通信时,我们不会获得远程主机的MAC地址,而是把IP包发向缺省网关,由网关对IP包完成转发过程。如果源主机没有缺省网关MAC地址的缓存记录,它就会通过arp协议获取网关的MAC地址,因此arp协议的工作范围只局限于我们所在的网段。
arp命令在Windows 9x、Windows 2000、Windows XP下均可使用。

12、netsh

从Windows 2000开始,netsh提供了一系列脚本配置实用工具,本文在此仅通过一个实例来提示读者如何通过netsh命令来快速切换不同网络环境的配置参数。
作为网络管理员或者移动办公的用户,我们都会有这样的经验,自己的电脑往往要在不同的网络环境下使用,如此一来,IP地址、子网掩码、网关、DNS等重要的网络参数都要不定期地调整,很是令人心烦。到了Windows 2000/XP的环境下,不论检测网络情况还是切换网络配置,都可以利用netsh命令行工具方便快捷地实现。
网络检测的实例如下:我们有一台计算机,IP为192.168.0.2,子网掩码为255.255.255.0,默认网关为192.168.0.1,DNS服务器为192.168.0.254,由于工作的需要,我们必须使用netsh命令把它切换到另一个网络环境中,相应的IP为10.0.0.2,子网掩码为255.0.0.0,默认网关是10.0.0.1,DNS服务器为10.0.0.254。
首先我们打开“程序”→“附件”→“命令提示符”,在C:>后面键入netsh,切换到netsh的脚本执行环境。随后执行以下命令(括号内为命令执行的含义注释):
C:>netsh
netsh>interface       (进入网络配置的脚本环境)
interface>ip          (查看ip的配置)
interface ip>dump     (检测ip配置的详细情况)

# --------------------------------
# 接口IP配置
# -------------------------------
pushd interface ip

# “本地连接”的接口IP配置

set address name = “本地连接” source = static addr = 192.168.0.2 mask = 255.255.255.0
set address name = “本地连接” gateway = 192.168.0.1 gwmetric = 1
set dns name = “本地连接” source = static addr = 192.168.0.254
set wins name = “本地连接” source = static addr = none

popd
# 接口 ip 配置结束

从显示结果我们可以看出,网络配置无误。假如我们由于工作的需要,譬如说,要在网络中设置不同IP地址的虚拟主机,这样就需要在这个网卡上再绑定一个IP地址,如 192.168.0.10,此时该如何操作呢?只需接着键入以下命令:
interface ip>add address "Local Area Connection" 192.168.0.10  255.255.255.0
即可回到我们前文所提出的要求,现在我们要用netsh实现在两种不同网络条件下的网络参数的切换。
第一步,我们要保存当前的网络设置情况,把它保存为一个文本文件:
interface ip>exit (退出网络检侧)
C:>netsh -c interface ip dump >c:interface.txt

这条命令的功能是把网络配置保存在c:interface.txt文件中。这个文件非常重要,待会儿我们还会用得着。
第二步,打开interface.txt,修改其中的IP地址、子网掩码、网关、DNS(如图7所示)。
图7
修改的时候注意保持原文件的格式,不要随意空格或者回车。然后将修改过的文件保存为interface2.txt
第三步,导入符合新的网络环境的配置文件,即可实现网络配置的切换:
C:>netsh -f interface2.txt
这样一来,只需一行命令,我们已经把网络设置整个改变了。同理,如果想变回原来的网络设置,只需执行:
C:>netsh -f interface.txt
由此可见,只要网络配置的文本文件不丢失,我们就可以轻易地实现在网络环境中修改网络配置参数,netsh的高效便捷在这里得到了充分的体现。
netsh命令只能在Windows 2000/XP下使用。

13、shutdown

shutdown是Windows XP中所独有的无人值守自动关机命令。
主要参数:shutdown [-i] [-l] [-s] [-r] [-a] [-f] [-m] [ComputerName] [-t xx] [-c "message"] [-d[u][p]:xx:yy]
说明:
-i : 显示图形界面的关机选项,默认关闭的计算机为本地计算机,但如果Windows XP开启了活动目录服务,就可以使用“浏览”功能来指定域中需要关闭的远程计算机。
-l : 注销本地计算机的当前用户。
-s :关闭本地计算机,默认等待时间为30秒。
-r : 关闭之后重新启动本地计算机。
-a : 撤销关闭命令。
-f : 强制关闭正在运行的应用程序而不显示警告。
-m [ComputerName] : 指定局域网内要进行操作的远程计算机,这个参数必须和-s或-r配合使用。举例来说,在局域网内有一台名字为“linlin”的计算机,我们在本地机上键入shutdown -s -m linlin 即可实现对“linlin”的远程关机,无论“linlin”是工作组的成员还是域成员均可。但是,“linlin”的操作系统必须是Windows 2000/XP,我们才能在本地机上对其进行远程关机,若是Windows 9x则无效。
-t xx : 将用于系统关闭的定时器设置为 xx 秒。
-c "message" : 指定将在“系统关闭”窗口中的“消息”区域显示的消息。最多可以使用 127 个字符。引号中必须包含消息。
-d[u][p]:xx:yy : 列出系统关闭的原因代码,这个参数一般用户很少使用。
要提醒大家注意的是,当我们在使用shutdown -s -m linlin这样的办法来关闭远程计算机时,往往会得到“拒绝访问”这样的警告。这是因为shutdown向“linlin”发出关机命令时,采用的是Guest权限对“linlin”进行操作,要使得操作有效,我们必须:
1、在“linlin”上打开“管理工具”→“计算机管理”→“本地用户和组”→“用户”,启动Guest帐户,使之有效(如图8所示)。
图8
2、单击“开始”按钮,选择“运行”,在对话框中输入“gpedit.msc”,打开“组策略编辑器”。随后在组策略窗口的左窗格中打开“计算机配置”→“Windows设置”→“安全设置”→“本地策略”→“用户权力指派”,找到“从远端强制关机”,选择“属性”,可以看到默认只有“Administrators”组的成员才有权从远程关机;单击对话框下方的“添加用户或组”按钮,然后在新弹出的对话框中输入“Guest”,确定以后即可使得Guest也可以对计算机进行远程操作(如图9所示)。
图9

shutdown只在Windows XP中才具有,但它是一个外部命令(其对应文件为Windowssystem32shutdown.exe),我们只要把它复制到Windows 2000的机器上,在装有Windows 2000系统的机器之间便也能相互实现远程关机。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值