学校有个机房,线路没有问题,为什么网上邻居不能用呢
分类: 电脑/网络 >> 操作系统/系统故障
问题描述:
线路正常,安装智博教学软件,教师机不能用网上邻居来访问学生机,且学生机之间有的也不能互相访问。安装的是XP系统
解析:
导致Windows XP网络邻居不能正确浏览或浏览列表不全的因素很多,解决问题需要对症下药,而诊断过程分两个步骤:测试基本连接、解决文件共享问题。
一、解决基本连接问题。
1、检查计算机之间的物理连接。
网卡是网络连接的基本设备,在桌面计算机中,每个网卡后面的指示灯应该是亮的,这表示连接是正常的。如果不亮,请检查集线器或交换机是打开的,而且每个客户端连接的指示灯都是亮的,这表示链接是正常的。接下来检查网线的水晶头是否接触良好。
2、确保所有计算机上都安装了 TCP/IP,并且工作正常。
在Windows XP 中默认安装了 TCP/IP。但是,如果出了网络问题想卸载后重新安装 TCP/IP 就不容易了:在“本地连接”属性中显示的此连接使用下列项目列表中单击 Inter 协议 (TCP/IP) 项,您将发现卸载按钮不可用(被禁用)。
这是因为传输控制协议/Inter 协议 (TCP/IP) 堆栈是 Microsoft XP/ 2003 的核心组件,不能删除。在这种情况下,如果需要重新安装 TCP/IP 以使 TCP/IP 堆栈恢复为原始状态。可以使用 NetShell 实用程序重置 TCP/IP 堆栈,使其恢复到初次安装操作系统时的状态。 方法是:在命令提示符后键入以下命令,然后按 ENTER 键:sh int ip reset c:\ resetlogtxt,其中,Resetlogtxt记录命令结果的日志文件,一定要指定,这里指定了 Resetlogtxt 日志文件及完整路径。运行此命令的结果与删除并重新安装 TCP/IP 协议的效果相同。
另外,不会还有人用95吧,WIN95默认情况下不自动安装TCP/IP协议。
3、检查IP地址
有几种情况:
查看不同的计算机的IP是否在同一范围内,方法是在MSDOS方式下输入IPCONFIG/ALL。如果一台计算机收到的地址在 1921680x 范围内,而另一台收到的地址在 169254xy 范围内,需要根据网络拓扑确定哪一个是正确的地址。然后,集中解决地址错误的那台计算机的问题。
关于169254xy类IP地址
在不存在 Inter 连接的情况中,或者,每台计算机都有一个单独的 Inter 连接(拨号连接或宽带连接)。在这种配置中,计算机通常给自己分配 169254xy 范围内的 IP 地址(其中 x 和 y 是 1 到 254 之间的数字)。而将 ISP 提供的地址用于 Inter 连接。
关于1921680X类IP地址
一台计算机通过使用 Inter 连接共享连接到共享的Inter。该连接可以是拨号连接或宽带连接(一般是 xDSL 或电缆调制解调器)。该计算机也被称为代理服务器,常见的代理有SYGATE、WINGATE、NAT、ISA、CCPROXY等。通常是由代理服务器负责为家庭网络中的其他计算机分配 IP 地址。共享连接的计算机应该为连接到家庭网络的网卡配置 IP 地址 19216801。网络上其他计算机的地址应在 1921680x 范围内(其中 x 是 2 到 254 之间的数字)。当然,可以在成功共享后修改IP地址,如10XYZ等。
计算机连接到集线器,并且集线器通过宽带连接与 Inter 连接。这种配置也称为无边界网络。在这种配置中,家庭网络中的每台计算机都有一个 Inter 服务提供商 (ISP) 提供的 IP 地址。使用的地址因 ISP 而异。无边界网络是一种特殊情况。在这种情况下应使用 ICF,但必须采取其他措施才能在家庭网络启用连接。
4、使用 ping 命令测试网络中两台计算机之间的连接:
ping 其它计算机IP,在命令提示处,键入 ping xxxx(其中 xxxx 是另一台计算机的 IP 地址),然后按 ENTER 键。应该可以看到来自另一台计算机的几个答复,如:
Reply from xxxx:bytes=32 time<1ms TTL=128
如果没有看到这些答复,或者看到"Request timed out",说明本地计算机可能有问题。如果 ping 命令成功执行,那么您就确定了计算机可以正确连接,可以跳过下一步。如果没有看到这些答复,或者看到"Request timed out",说明本地计算机可能有问题。 PING 本地IP,如果看到"Request timed out",说明本地计算机可能有问题。
5、 使用 ping 命令测试网络中名称解析是否正常
ping putername,其中 putername 是远程计算机的名称。通过 ping 命令用名称测试计算机连接。确定计算机的名称的方法是:在命令提示处,输入SYSTEMINFO。或者在桌面上右击我的电脑-属性,然后单击计算机名称选项卡。如果看到该命令的成功答复,说明您在计算机之间具有基本连接和名称解析。名称解析跟NETBIOS密切相关,看下面的步骤。
6、分析日志
检查"网络安装向导"日志文件中没有成功执行的任何步骤中的错误。打开该日志的方法是依次单击开始、运行,键入 %SystemRoot%\ nswlog,然后按 ENTER 键。 如果 Nswlog 文件没有提供有关该问题的信息,请检查系统日志中的错误并查明错误原因。
二、解决文件和打印机共享问题
1、正确安装网络组件
首先右击网上邻居-属性,选择要共享的网卡。把IP设置在局域网的同一个网段上。比如1921680X网段。然后看一下TCP/IP的高级属性中,是否开启NETBIOS 。在利用WINNT40 构建的网络系统中,对每一台主机的唯一标识信息是它的NetBIOS名,系统是利用 WINS服务、信息广播方式及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址,从而实现信息通讯。在内部网络系统中(也就是通常我们所说的局域网中),利用NetBIOS名实现信息通讯是非常方便、快捷的。但是在Inter上对一台主机的唯一标识信息是它的FQDN格式的域名(163),在Inter是利用DNS标准来实现将域名解析为相应IP地址,WIN2K支持动态DNS,运行活动目录服务的机器可动态地更新DNS表。 WIN2K网络中可以不再需要WINS服务,但是WIN2K仍然支持WINS,这是由于向后兼容的原因。目前,大多数网络是混合网,既有Win98等系统,又有WINXP/WIN2K等系统,因此需要在TCP/IP协议上捆绑NETBIOS解析计算机名。
查看是否选定“文件和打印服务”组件,如果已将其取消选中,“浏览服务”将不绑定到 NetBIOS 接口。成为备份浏览器并且没有启用“文件和打印共享”的基于 Windows 的计算机无法将浏览列表与客户机共享。任何将要包括在浏览列表中的计算机也都必须启用“文件和打印共享”。
按此在新窗口浏览
2、启动"计算机浏览器"服务
计算机浏览器"服务在网络上维护一个计算机更新列表,并将此列表提供给指定为浏览器的计算机。如果停止了此服务,则既不更新也不维护该列表。
启动"计算机浏览器"服务
单击开始,右击我的电脑,然后单击管理。
在控制台树中,展开"服务和应用程序"。
单击服务。
在右边的详细信息窗格中,检查"计算机浏览器"服务是否已启动,右击计算机浏览器,然后单击启动。
关闭"计算机管理"窗口。
按此在新窗口浏览
3、查看共享文件夹
请依次单击开始、运行,键入 f gmtmsc,然后单击确定。在左窗格中,单击共享。右窗格中随即出现共享文件夹列表。记下每台计算机的相应共享名称。
按此在新窗口浏览
4、起用Guest(来宾)帐户
Windows XP的Guest帐户允许其他人使用你的电脑,但不允许他们访问特定的文件,也不允许他们安装软件。对 Windows XP Home Edition 计算机或工作组中的 Windows XP Professional 计算机的所有网络访问都使用来宾帐户。使用 user guest确保为网络访问设置了来宾帐户,如果该帐户是活动的,命令输出中会出现一行类似下面这样的内容: Account active Yes;如果该帐户不是活动的,请使用下面的命令授予来宾帐户网络访问:
user guest /active:yes
按此在新窗口浏览
5、允许Guest(来宾)帐号从网络 问。
在运行里输入gpeditmsc,弹出组策略管理器,在‘计算机配置-Windows设置-本地策略-用户权利指派’中,有“拒绝从网络访问这台计算机”策略阻止从网络访问这台计算机,其中居然有GUEST帐号,谁能访问这台计算机。解决办法是删除拒绝访问中的GUEST帐号。如图
按此在新窗口浏览
6、设置防火墙允许浏览服务
网络安全重要,所以最好开启网络防火墙,但是防火墙阻断正常的网络浏览服务通讯,结果是别人在网上邻居中看不到你的计算机,有没有两全其美的办法在开启防火墙的前提下允许浏览服务。办法是,如果开启了ICF,打开属性,在服务这栏,选择添加,添加服务的对话框共有四个编辑框,最上边是描述服务名称,以便于记忆,从上到下第二个是应用服务的IP地址或名称,输入127001表示本机。下面连个是内外端口号,旁边的tcp/udp标示这个端口是udp连接还是tcp连接。
按此在新窗口浏览
按照下面的表格输入3个服务
名 称 协 议 端 口
NetBIOS Name Service UDP 137
NetBIOS Datagram Service UDP 138
NetBIOS Session Service TCP 139
137/UDP -- NetBIOS 名称服务器, 网络基本输入/输出系统 (NetBIOS) 名称服务器 (NBNS) 协议是 TCP/IP 上的 NetBIOS (NetBT) 协议族的一部分,它在基于 NetBIOS 名称访问的网络上提供主机名和地址映射方法。
138/UDP -- NetBIOS 数据报,NetBIOS 数据报是 TCP/IP 上的 NetBIOS (NetBT) 协议族的一部分,它用于网络登录和浏览。
139/TCP -- NetBIOS 会话服务,NetBIOS 会话服务是 TCP/IP 上的 NetBIOS (NetBT) 协议族的一部分,它用于服务器消息块 (SMB)、文件共享和打印。
Windows XP 最新的SP2补丁对ICF做了很大的改进,功能更强大了,ICF有了自己的设置项,安装SP2后,默认情况下,启用ICF防火墙,不允许任何外部主动连接,即使是本地的应用程序要访问网络也需要在许可列表中做设置。
按此在新窗口浏览
7、取消简单文件共享
Windows 2000 操作系统中用户在设置文件夹的共享属性时操作非常简便,只需用鼠标右击该文件夹并选择属性,就可以看到共享设置标签。而在 Windows XP 系统设置文件夹共享时则比较复杂,用户无法通过上述操作看到共享设置标签。具体的修改方法如下:打开"我的电脑"中的" 工具",选择"文件夹属性",调出"查看"标签,在"高级设置"部分滚动至最底部将"Use simple file sharing (Remended)"前面的选择取消,另外如果选项栏里还有"Mickey Mouse"项也将其选择取消。这样修改后用户就可以象使用 Windows 2000一样对文件夹属性进行方便修改了。
按此在新窗口浏览
对于 Windows XP Home Edition:
1.开机时按"F8"进入"带网络连接的安全模式"
2.登录后就可象在 Windows 其它版本中一样设置共享权限了。
8、设置帐号和密码
由于WinNT内核的操作系统,在访问远程计算机的时候,好像总是首先尝试用本地的当前用户名和密码来尝试,可能造成无法访问,在这里把用户密码添加进去就可以了。
按此在新窗口浏览
9、多种方法访问“网络计算机”
例如要打开网络中名为“IBMZB”的计算机,其IP地址为10412215,如果你不清楚其它机器的IP地址,你可以使用“PING计算机名”来获得它的IP地址。
用计算机名访问,NETBIOS提供的服务。点击“开始”菜单,单击“运行”,在运行栏输入“\\IBM-ZB”,单击“确定”。
用IP地址访问,在运行输入栏中输入“\\10412215”,单击“确定”。
用搜索计算机的方法访问,计算机更新列表需要时间,搜索计算机可以加快更新列表。点击“网上邻居”右键中的“搜索计算机”,输入计算机名,点击“立即搜索”,就可以看到你要访问的计算机。直接双击右边计算机名就可以打开它了。
用映射驱动器的方法访问,进入MS-DOS方式,输入“NET VIEW \\IBMZB”,回车这是查看计算机IBMZB上有哪些共享文件夹,如D。再输入NET USE Z:\\IBMZB\D将计算机IBM-ZB共享的文件夹D映射为H:盘,在命令提示符下键入“Z:”。你会发现你已经连到 IBMZB计算机上了。
10、检查RPC、Plug and Play服务已启动,检查相应的系统文件夹的权限,重新注册以下的动态链接库:
regsvr32 shelldll
regsvr32 cfgxdll
regsvr32 mandll
IBM System x3650 M4 是一款企业级服务器,其最大功率取决于配置和使用情景。通常来说,IBM System x3650 M4 的最大功率在300瓦到1200瓦之间。
具体的最大功率取决于以下因素:
1 处理器配置:不同的处理器型号和数量会消耗不同的功率。更高效的处理器通常会减少功耗。
2 内存配置:更多的内存模块可能意味着更高的功耗。
3 存储设备:硬盘驱动器和固态驱动器等存储设备也会消耗一定功耗。
4 扩展卡:安装在服务器上的扩展卡,例如网络适配器、图形卡等,都可能增加功耗。
5 服务器负载:服务器运行的工作负载对功耗有直接影响,更高的负载通常意味着更高的功耗。
综上所述,要确定 IBM System x3650 M4 的确切最大功率,需要考虑以上因素并查看服务器的规格说明书或联系IBM或其授权销售代理商以获取准确的信息。
代理服务器的应用非常广泛。比如,在企业网内部,它可以用来控制员工在工作时浏览的Internet内容,阻止员工访问某些类型的内容或某些指定的网站。代理服务器实际上扮演着浏览器和Web服务器之间的中间人的角色,能够对浏览器请求进行各种各样的处理,能够过滤广告和Cookie,能够预先提取Web页面,使得浏览器访问页面的速度更快,等等。
一、基础知识
不管以哪种方式应用代理服务器,其监控HTTP传输的过程总是如下:
步骤一:内部的浏览器发送请求给代理服务器。请求的第一行包含了目标URL。
步骤二:代理服务器读取该URL,并把请求转发给合适的目标服务器。
步骤三:代理服务器接收来自Internet目标机器的应答,把应答转发给合适的内部浏览器。
例如,假设有一个企业的雇员试图访问wwwcnibmcom网站。如果没有代理服务器,雇员的浏览器打开的Socket通向运行这个网站的Web服务器,从Web服务器返回的数据也直接传递给雇员的浏览器。如果浏览器被配置成使用代理服务器,则请求首先到达代理服务器;随后,代理服务器从请求的第一行提取目标URL,打开一个通向wwwcnibmcom的Socket。当wwwcnibmcom返回应答时,代理服务器把应答转发给雇员的浏览器。
当然,代理服务器并非只适用于企业环境。作为一个开发者,拥有一个自己的代理服务器是一件很不错的事情。例如,我们可以用代理服务器来分析浏览器和Web服务器的交互过程。测试和解决Web应用中存在的问题时,这种功能是很有用的。我们甚至还可以同时使用多个代理服务器(大多数代理服务器允许多个服务器链接在一起使用)。例如,我们可以有一个企业的代理服务器,再加上一个用java编写的代理服务器,用来调试应用程序。但应该注意的是,代理服务器链上的每一个服务器都会对性能产生一定的影响。
二、设计规划
正如其名字所示,代理服务器只不过是一种特殊的服务器。和大多数服务器一样,如果要处理多个请求,代理服务器应该使用线程。下面是一个代理服务器的基本规划:
等待来自客户(Web浏览器)的请求。
启动一个新的线程,以处理客户连接请求。
读取浏览器请求的第一行(该行内容包含了请求的目标URL)。
分析请求的第一行内容,得到目标服务器的名字和端口。
打开一个通向目标服务器(或下一个代理服务器,如合适的话)的Socket。
把请求的第一行发送到输出Socket。
把请求的剩余部分发送到输出Socket。
把目标Web服务器返回的数据发送给发出请求的浏览器。
当然,如果考虑细节的话,情况会更复杂一些。实际上,这里主要有两个问题要考虑:第一,从Socket按行读取数据最适合进一步处理,但这会产生性能瓶颈;第二,两个Socket之间的连接必需高效。有几种方法可以实现这两个目标,但每一种方法都有各自的代价。例如,如果要在数据进入的时候进行过滤,这些数据最好按行读取;然而,大多数时候,当数据到达代理服务器时,立即把它转发出去更适合高效这一要求。另外,数据的发送和接收也可以使用多个独立的线程,但大量地创建和拆除线程也会带来性能问题。因此,对于每一个请求,我们将用一个线程处理数据的接收和发送,同时在数据到达代理服务器时,尽可能快速地把它转发出去。
三、实例
在用java编写这个代理服务器的过程中,注意可重用性是很重要的。因为这样的话,当我们想要在另一个工程中以不同的方式处理浏览器请求时,可以方便地重用该代理服务器。当然,我们必须注意灵活性和效率之间的平衡。
图一显示了本文代理服务器实例(HttpProxyjava)的输出界面,当浏览器访问http://www-900ibmcom/cn/时,代理服务器向默认日志设备(即标准输出设备屏幕)输出浏览器请求的URL。图二显示了SubHttpProxy的输出。SubHttpProxy是HttpProxy的一个简单扩展。
图一
图二
为了构造代理服务器,我从Thread基类派生出了HttpProxy类(文章正文中出现的代码是该类的一些片断,完整的代码请从本文最后下载)。HttpProxy类包含了一些用来定制代理服务器行为的属性,参见Listing 1和表一。
Listing 1
/
一个基础的代理服务器类
/
import javanet;
import javaio;
public class HttpProxy extends Thread {
static public int CONNECT_RETRIES=5;
static public int CONNECT_PAUSE=5;
static public int TIME-OUT=50;
static public int BUFSIZ=1024;
static public boolean logging = false;
static public OutputStream log=null;
// 传入数据用的Socket
protected Socket socket;
// 上级代理服务器,可选
static private String parent=null;
static private int parentPort=-1;
static public void setParentProxy(String name, int pport) {
parent=name;
parentPort=pport;
}
// 在给定Socket上创建一个代理线程。
public HttpProxy(Socket s) { socket=s; start(); }
public void writeLog(int c, boolean browser) throws IOException {
logwrite(c);
}
public void writeLog(byte[] bytes,int offset,
int len, boolean browser) throws IOException {
for (int i=0;i<len;i++) writeLog((int)bytes[offset+i],browser);
}
// 默认情况下,日志信息输出到
// 标准输出设备,
// 派生类可以覆盖它
public String processHostName(String url, String host, int port, Socket sock) {
javatextDateFormat cal=javatextDateFormatgetDateTimeInstance();
Systemoutprintln(calformat(new javautilDate()) + " - " +
url + " " + sockgetInetAddress()+"<BR>");
return host;
}
表一
变量/方法 说明
CONNECT_RETRIES 在放弃之前尝试连接远程主机的次数。
CONNECT_PAUSE 在两次连接尝试之间的暂停时间。
TIME-OUT 等待Socket输入的等待时间。
BUFSIZ Socket输入的缓冲大小。
logging 是否要求代理服务器在日志中记录所有已传输的数据(true表示“是”)。
log 一个OutputStream对象,默认日志例程将向该OutputStream对象输出日志信息。
setParentProxy 用来把一个代理服务器链接到另一个代理服务器(需要指定另一个服务器的名称和端口)。
当代理服务器连接到Web服务器之后,我用一个简单的循环在两个Socket之间传递数据。这里可能出现一个问题,即如果没有可操作的数据,调用read方法可能导致程序阻塞,从而挂起程序。为防止出现这个问题,我用setSoTimeout方法设置了Socket的超时时间(参见Listing 2)。这样,如果某个Socket不可用,另一个仍旧有机会进行处理,我不必创建一个新的线程。
Listing 2
// 执行操作的线程
public void run() {
String line;
String host;
int port=80;
Socket outbound=null;
try {
socketsetSoTimeout(TIMEOUT);
InputStream is=socketgetInputStream();
OutputStream os=null;
try {
// 获取请求行的内容
line="";
host="";
int state=0;
boolean space;
while (true) {
int c=isread();
if (c==-1) break;
if (logging) writeLog(c,true);
space=CharacterisWhitespace((char)c);
switch (state) {
case 0:
if (space) continue;
state=1;
case 1:
if (space) {
state=2;
continue;
}
line=line+(char)c;
break;
case 2:
if (space) continue; // 跳过多个空白字符
state=3;
case 3:
if (space) {
state=4;
// 只分析主机名称部分
String host0=host;
int n;
n=hostindexOf("//");
if (n!=-1) host=hostsubstring(n+2);
n=hostindexOf('/');
if (n!=-1) host=hostsubstring(0,n);
// 分析可能存在的端口号
n=hostindexOf(":");
if (n!=-1) {
port=IntegerparseInt(hostsubstring(n+1));
host=hostsubstring(0,n);
}
host=processHostName(host0,host,port,socket);
if (parent!=null) {
host=parent;
port=parentPort;
}
int retry=CONNECT_RETRIES;
while (retry--!=0) {
try {
outbound=new Socket(host,port);
break;
} catch (Exception e) { }
// 等待
Threadsleep(CONNECT_PAUSE);
}
if (outbound==null) break;
outboundsetSoTimeout(TIMEOUT);
os=outboundgetOutputStream();
oswrite(linegetBytes());
oswrite(' ');
oswrite(host0getBytes());
oswrite(' ');
pipe(is,outboundgetInputStream(),os,socketgetOutputStream());
break;
}
host=host+(char)c;
break;
}
}
}
catch (IOException e) { }
} catch (Exception e) { }
finally {
try { socketclose();} catch (Exception e1) {}
try { outboundclose();} catch (Exception e2) {}
}
}
和所有线程对象一样,HttpProxy类的主要工作在run方法内完成(见Listing 2)。run方法实现了一个简单的状态机,从Web浏览器每次一个读取字符,持续这个过程直至有足够的信息找出目标Web服务器。然后,run打开一个通向该Web服务器的Socket(如果有多个代理服务器被链接在一起,则run方法打开一个通向链里面下一个代理服务器的Socket)。打开Socket之后,run先把部分的请求写入Socket,然后调用pipe方法。pipe方法直接在两个Socket之间以最快的速度执行读写操作。
如果数据规模很大,另外创建一个线程可能具有更高的效率;然而,当数据规模较小时,创建新线程所需要的开销会抵消它带来的好处。
Listing 3显示了一个很简单的main方法,可以用来测试HttpProxy类。大部分的工作由一个静态的startProxy方法完成(见Listing 4)。这个方法用到了一种特殊的技术,允许一个静态成员创建HttpProxy类(或HttpProxy类的子类)的实例。它的基本思想是:把一个Class对象传递给startProxy类;然后,startProxy方法利用映像API(Reflection API)和getDeclaredConstructor方法确定该Class对象的哪一个构造函数接受一个Socket参数;最后,startProxy方法调用newInstance方法创建该Class对象。
Listing 3
// 测试用的简单main方法
static public void main(String args[]) {
Systemoutprintln("在端口808启动代理服务器\n");
HttpProxylog=Systemout;
HttpProxylogging=false;
HttpProxystartProxy(808,HttpProxyclass);
}
}
Listing 4
static public void startProxy(int port,Class clobj) {
ServerSocket ssock;
Socket sock;
try {
ssock=new ServerSocket(port);
while (true) {
Class [] sarg = new Class[1];
Object [] arg= new Object[1];
sarg[0]=Socketclass;
try {
javalangreflectConstructor cons = clobjgetDeclaredConstructor(sarg);
arg[0]=ssockaccept();
consnewInstance(arg); // 创建HttpProxy或其派生类的实例
} catch (Exception e) {
Socket esock = (Socket)arg[0];
try { esockclose(); } catch (Exception ec) {}
}
}
} catch (IOException e) {
}
}
利用这种技术,我们可以在不创建startProxy方法定制版本的情况下,扩展HttpProxy类。要得到给定类的Class对象,只需在正常的名字后面加上class(如果有某个对象的一个实例,则代之以调用getClass方法)。由于我们把Class对象传递给了startProxy方法,所以创建HttpProxy的派生类时,就不必再特意去修改startProxy。(下载代码中包含了一个派生得到的简单代理服务器)。
结束语
利用派生类定制或调整代理服务器的行为有两种途径:修改主机的名字,或者捕获所有通过代理服务器的数据。processHostName方法允许代理服务器分析和修改主机名字。如果启用了日志记录,代理服务器为每一个通过服务器的字符调用writeLog方法。如何处理这些信息完全由我们自己决定——可以把它写入日志文件,可以把它输出到控制台,或进行任何其他满足我们要求的处理。writeLog输出中的一个Boolean标记指示出数据是来自浏览器还是Web主机。
和许多工具一样,代理服务器本身并不存在好或者坏的问题,关键在于如何使用它们。代理服务器可能被用于侵犯隐私,但也可以阻隔偷窥者和保护网络。即使代理服务器和浏览器不在同一台机器上,我也乐意把代理服务器看成是一种扩展浏览器功能的途径。例如,在把数据发送给浏览器之前,可以用代理服务器压缩数据;未来的代理服务器甚至还可能把页面从一种语言翻译成另一种语言……可能性永无止境。
随着虚拟化应用变得越来越热门热门,简单分析几大虚拟化厂商之间的优缺点
Citrix公司:Citrix公司是近两年增长非常快的一家公司,他得益于云计算的兴起,Citrix公司主要有三大产品,服务器虚拟化XenServer,优点是便宜,管理一般;应用虚拟化XenAPP,桌面虚拟化Xendesktop。后两者是目前为止最成熟的桌面虚拟化与应用虚拟化厂家。企业级VDI解决方案中不少都是使用Citrix公司的Xendesktop与Xenapp的结合使用。
IBM:在2007年11月的IBM虚拟科技大会上,IBM就提出了“新一代虚拟化”的概念。只是时之今日,成功的案例全并不多见,像陕西榆林地区的中国神华分公司的失败案例到是不少。不过笔者认为IBM虚拟化还是具备以下两点优势:第一,IBM丰富的产品线;对自有品牌良好的兼容性,第二,强大的研发实力,可以提供较全面的咨询方案,只是成本过高,不是每一个客户都这么富有的。加上其对第三方支持兼容较差,运维操作也比较复杂,对于企业来说是把双刃剑。并且IBM所谓的虚拟化只是服务器虚拟化,而非真正的虚拟化。
VMware:做为业内虚拟化领先的厂商VMware公司,一直以其易用性和管理性得到了大家的认同。只是受其架构的影响限制,VMware还主要是在X86平台服务器上有较大优势,而非真正的IT信息虚拟化。加上,其本身只是软件方案解决商,而非像IBM与微软这样拥用各自己阵地用户基础的厂商。所以当前,对于VMware公司来说将面临着多方面的挑战,这其中包括微软、XenSource(被Citrix购得)以及Parallels、IBM公司。所以,未来对于VMware公司来说这条道虚拟化之道能否继续顺风顺水下去还真不好说。
微软:2008年,随着微软Virtualization的正式推出,微软已经拥有了从桌面虚拟化、服务器虚拟化到应用虚拟化、展现层虚拟化的完备的产品线。至此,其全面出击的虚拟化战略已经完全浮出水面。因为,在微软眼中虚拟化绝非简单的加固服务器和降低数据中心的成本。他还意味着帮助更多的IT部门最大化ROI,并在整个企业范围内降低成本,同时强化业务持续性。这也是微软为什么研发了一系列的产品,用以支持整个物理和虚拟基础架构。
并且,近两年随着虚拟化技术的快速发展,虚拟化技术已经走出了局域网,从而延伸到了整个广域网。几大厂商的代理商业越来越重视客户对虚拟化解决方案需求的分析,因此也不局限于仅与一家厂商代理虚拟化产品。
在UNIX和LINUX平台下使用最广泛的免费HTTP服务器是W3C、NCSA和APACHE服务器,而Windows平台NT/2000/2003使用IIS的WEB服务器。在选择使用WEB服务器应考虑的本身特性因素有:性能、安全性、日志和统计、虚拟主机、代理服务器、缓冲服务和集成应用程序等,下面介绍几种常用的WEB服务器。
Microsoft IIS
Microsoft的Web服务器产品为Internet Information Server (IIS), IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。IIS是目前最流行的Web服务器产品之一,很多著名的网站都是建立在IIS的平台上。IIS提供了一个图形界面的管理工具,称为 Internet服务管理器,可用于监视配置和控制Internet服务。
IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供ISAPI(Intranet Server API)作为扩展Web服务器功能的编程接口;同时,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。
IBM WebSphere
WebSphere Application Server 是 一 种功能完善、开放的Web应用程序服务器,是IBM电子商务计划的核心部分,它是基于 Java 的应用环境,用于建立、部署和管理 Internet 和 Intranet Web 应用程序。 这一整套产品进行了扩展,以适应 Web 应用程序服务器的需要,范围从简单到高级直到企业级。
WebSphere 针对以 Web 为中心的开发人员,他们都是在基本 HTTP服务器和 CGI 编程技术上成长起来的。IBM 将提供 WebSphere 产品系列,通过提供综合资源、可重复使用的组件、功能强大并易于使用的工具、以及支持 HTTP 和 IIOP 通信的可伸缩运行时环境,来帮助这些用户从简单的 Web 应用程序转移到电子商务世界。
BEA WebLogic
BEA WebLogic Server 是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。各种应用开发、部署所有关键性的任务,无论是集成各种系统和数据库,还是提交服务、跨 Internet 协作,起始点都是 BEA WebLogic Server。由于 它具有全面的功能、对开放标准的遵从性、多层架构、支持基于组件的开发,基于 Internet 的企业都选择它来开发、部署最佳的应用。
BEA WebLogic Server 在使应用服务器成为企业应用架构的基础方面继续处于领先地位。BEA WebLogic Server 为构建集成化的企业级应用提供了稳固的基础,它们以 Internet 的容量和速度,在连网的企业之间共享信息、提交服务,实现协作自动化。
APACHE
apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。它源于NCSAhttpd服务器,当NCSA WWW服务器项目停止后,那些使用NCSA WWW服务器的人们开始交换用于此服务器的补丁,这也是apache名称的由来(pache 补丁)。世界上很多著名的网站都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
Tomcat
Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。Tomcat Server是根据servlet和JSP规范进行执行的,因此我们就可以说Tomcat Server也实行了Apache-Jakarta规范且比绝大多数商业应用软件服务器要好。
Tomcat是Java Servlet 22和JavaServer Pages 11技术的标准实现,是基于Apache许可证下开发的自由软件。Tomcat是完全重写的Servlet API 22和JSP 11兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代码,特别是Apache服务适配器。随着Catalina Servlet引擎的出现,Tomcat第四版号的性能得到提升,使得它成为一个值得考虑的Servlet/JSP容器,因此目前许多WEB服务器都是采用Tomcat。
目前,许多大型Web应用一般将Apache和Tomcat结合使用,Apache负责接收用户的HTTP请求,如果请求是Servlet、Jsp,则把请求转发给Tomcat处理,并将处理结果封装响应给用户。
0条评论