关闭

关于LMHOSTS和APACHE之间的问题

1839人阅读 评论(0) 收藏 举报
 
       很郁闷,最近做的一个东西的apache服务器跑不起来了,apache.exe占用内存超多,重装几次都不行,猜想可能与我机器的啥配置有冲突了,最后证明的确如此,可没有想到的竟然是与LMHOSTS有关。关闭LMHOSTS一切ok。具体办法是:网上邻居-> 查看网络连接-> 本地连接(你正在使用的那个连接) => 右键点它选"属性" => 选中"internet协议(TCP/IP) => 属性 => 高级 => 切换到"wins"标签 => 去掉"启用LMhosts查询"前的勾.
以下是我在网上找到的关于的资料。不过都没有说明白为啥LMHOSTS和APACHE之间有冲突,有理解的朋友可以给我留言啊!!
LMHOSTS 文件是个纯文本文件,微软提供了一个示例程序 LMHOSTS.SAM,位于 C:/WinNT/System32/Drivers/Etc 目录下(跟以前的示例说明一样,我们这里的路径是“蓝网实验室”所采用的,朋友们可自行参照自己的实际安装情况而灵活改变)。如果我们需要启用 LMHOSTS 文件查询(至于什么时候会用到这种解析方式,我们在下面会讲到),则应该将其改名为 LMHOSTS,当然推荐的方法是制作副本(即另存为 LMHOSTS),这样可免除将原文件失手改错而不得不从安装光盘里解压还原出来的麻烦。下面是“蓝网实验室”NT服务器中 LMHOSTS 文件的部分内容:
#
# The following example illustrates all of these extensions:
#
# 102.54.94.97 rhino #PRE #DOM:networking #net group's DC
# 102.54.94.102 "appname /0x14" #special app server
# 102.54.94.123 popular #PRE #source server
# 102.54.94.117 localsrv #PRE #needed for the include
#
# #BEGIN_ALTERNATE
# #INCLUDE //localsrv/public/lmhosts
# #INCLUDE //rhino/public/lmhosts
# #END_ALTERNATE
#
# end of this file.
 
由上面的示例我们可以看出,LMHOSTS 文件跟我们在前面已经接触过的 HOSTS 文件的格式一样,当然其规则也一样,比如:
#字符是用来注释的;
IP 地址必须放在一行的第一栏,地址和主机名之间必须有空格;
计算机名称最长为 16 个字符,但是只能输入 15 个(为什么?回去看看《关于 WINS(二)》吧^_^)。
 
但是与 HOSTS 不同的是,LMHOSTS 文件中可以指定执行某种特殊功能的特定的命令。它们也是用 # 标记的,但如果看到有下面的特殊字符串,则表明其为命令字:
 
#PRE——这个命令放在 IP 地址和名称后面,表示当系统启动时,先将这个地址预先载入(Preload)到 Cache(内存高速缓存)中。查询时,系统先从 Cache 中开始,如果失败,再利用广播,再失败,才到本 LMHOSTS 文件中顺序读取。
 
#DOM:domain_name——这个命令放在计算机 NetBIOS 名字之后,表明它是一个域控制器(Domain Controller),这里 domani_name 是域名,表明该控制器属于哪一个域。
 
#INCLUDE ——这个命令表明将 filename 所指向的另一个 LMHOSTS 文件加入到本文件中,系统从该文件中读取 IP 地址和 NetBIOS 名字。Heatch 记得当年应付等级考试啃 C 时就遇到过相同的格式,当然在两年前风行一时的 config.sys 多重启动配置时也有相似的例子[Include],即使现在我们用 DreamWaver 做网页不是也还是有 Server-Side Include 吗,说这么多只是想证明它的好处——集中管理 LMHOSTS 文件,即可以将所有用户共享的 LMHOSTS 文件放到服务器上,每个用户再利用 #INCLUDE 命令把它添加到自己的 LMHOSTS 文件中。
 
#BEGIN_ALTERNATE 和 #END_ALTERNATE 命令必须配套使用,它们的作用是可以在一个 LMHOSTS 文件中指定多个 #INCLUDE 命令,即是说,如果我们有两个以上的域控制器,那么我们就可以 INCLUDE 其上的的 LMHOSTS 文件,一旦某个控制器“牺牲”,可立即用别的域控制器来替代。
 
/0xnn——这里的 /0xnn 命令是用来在 LMHOSTS 文件中指定包含非打印字符(Non-Printable)的 NetBIOS 名字,它们必须用引号括起来。正如前面的《关于 WINS(二)》所讲,这些非打印字符只用于特殊的设备名称,并且只能放在计算机名称后面第16个字符的位置(我的计算机名称没有15个字符那么长啊——按空格键嘛),如示例中的102.54.94.102 "appname /0x14"
 
关于 Preload 的特别说明:
1、一个 LMHOSTS 文件中最多只允许 Preload 100 个 IP 地址和计算机名称(我偏要输入 101 个怎么着!——怎么着?多的一个忽略不计!);
2、#INCLUDE 命令所指向的文件中的所有项都必须加上 #PRE 命令(我偏不加又怎么着!——怎么着?忽略不计);
3、修改注册表增加预载数目:主键 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Netbt/Parameters,新建字符串值 MaxPreLoads,输入自己想要的数目。
LMHOSTS 文件的应用场合是没有 WINS 服务器的网络环境,引入 LMHOSTS 文件的目的是用来解决广播方式无法跨越路由器的局限的,LMHOSTS 文件与广播方式相辅相行实现网段内外的全通信。这里我们再来看一下它们的的工作进程:
  1、系统启动时将 LMHOSTS 文件中被设为#PRE的地址和机器名预载到内存中;
  2、客户端发出查询请求时,先在 Cache 中检查是否已存在目的 IP 地址;
  3、找到了自不用说,如果在 Cache 中没有找到,系统改用广播方式再次查找;
  4、这次找到了也自不用说,如果广播查询还是没有找到,就得用到 LMHOSTS 文件了;
  5、找到啦,好!把它也添加到 Cache 中保存起来(看你下次还往哪跑^_^);还是没有找到?!对不起,俺只得报错了,你就在客户端去等着看错误信息吧。
  那么 LMHOSTS 文件的跨域操作又是如何实现的呢?还记得三天前的第一讲吗?我们说到了一个 #DOM:Domain_Name 命令。假定我们这里有两个域:Lanhome01和Lanhome02,其 IP 地址分别为 192.168.0.1 和 192.168.1.10,计算机名分别为 Heatch01 和 Heatch02,现在有一台域 Lanhome01 的工作站 cxy01 想要登录到域 Lanhome02,但我们在网络上没有运行 WINS 服务。如果仅通过广播方式,cxy01无法被 Lanhome02 域控制器审核并验证身份。这里只需在 LMHOSTS 文件添加如下一行即可:
  192.168.1.10    Heatch02 #PRE #DOM:Lanhome02
 
 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:175978次
    • 积分:2310
    • 等级:
    • 排名:第16758名
    • 原创:60篇
    • 转载:11篇
    • 译文:0篇
    • 评论:19条