以下是引用 孤舟蓑笠翁 于 2006-11-11 11:56:07 发表的文字:
用户环境是局域网,通过代理访问外网。使用DP2CATOLOG程序时不能访问外网服务器,抓屏图如下:
建议增加“采用浏览器网络连接选项”设置。
我听懂你的问题了,用户是内外网络,而不是常见的路由器上Internet,也就是早几年常见的模式。这种模式下,单位有一台服务器有双网卡,一个网卡有合法的外部IP地址,可以和Internet连通,而单位内部的其他机器,和上述服务器的另一块网卡相连,构成一个内部局域网,如果没有代理,单位内部的这些机器都不能访问外部Internet。
但你所说的“采用浏览器网络连接选项”就让我匪夷所思了。
Z39.50协议,前端(和服务器)走的根本不是HTTP协议,所以和前端机器内的IE浏览器根本没有关系。IE浏览器有一个选项对话框,可以配置代理,那是“HTTP”协议的代理,而不是socket代理。
而socket代理,常见的有SOCKS 5协议代理,IE浏览器也支持,但是需要和上述HTTP协议代理区分开来,两者不是同一码事。
所谓HTTP代理,就是单位的对外服务器上,有一个HTTP Proxy在监听,它收到前端的HTTP协议,然后同样用HTTP协议转发给远方的真正目的服务器。如果你向它发送Z39.50的通讯包,它是不会接受的。从通讯包的形态看,HTTP协议是文本型的,和TELNET/FTP等的同属于一族,可以用telnet前端模拟和观看。但是Z39.50的协议包,完全是二进制的,如果不用专门的解析工具,完全是看不懂的。
所谓SOCKS代理,就是从TCP协议的层次,转发通讯包,不管它是文本的还是二进制的,没有特别的要求,原样转发。这样,SOCKS代理的适应性就要强得多,HTTP协议和Z39.50以及一切基于TCP的上层协议,都可以通过SOCKS出去到外网。
不过,SOCKS代理也有一些特点需要引起注意:SOCKS应用,简单分成两种模式:1)从前端机器底层接管socket通讯,前端软件没有感觉,自动透明地就可以访问外网了。这种方式,需要在前端安装SOCKS底层软件;2)前端应用程序裸露地直接支持SOCKS5,也就是说,前端应用软件必须开发针对SOCKS的接口,没有这个接口就不行。例如IE浏览器,QQ软件,原来的ZTRANS等,都开发有SOCKS接口。
不管哪种模式,当然对外的服务器上都要安装SOCKS服务器软件。这通常是一个小软件,因为它的功能很简单,就是转发通讯包而已。
目前dp2Catalog还没有来得及编写SOCKS5接口。如果必要,今后会加上。不过,现在听说对SOCKS5的需求,好像听到了古代的需求似的。因为现在路由太普及了,不能通过路由出去的局域网,太罕见了。
如果着急,可以用抓包器TcpMonitoer呀!
dp2Catalog配置实际的地址到单位的对外服务器,在对外服务器上装一个tcpmonitor,然后配置到真正的目标服务器。
可惜的是,tcpmonitor暂时没有多个端口一起监听,提供针对多个目标转发的功能,因此用户只能用来玩一下访问一个服务器。如果针对这个需求,把tcpmonitor改造成可以多个端口一起监听,似乎是有一些意义。在这种模式下,dp2Catalog看到的“端口”,成了最终目标服务器的暗示条件。如果要对外访问100个Z39.50服务器,tcpmonitor就得监听100个端口呢。这维护管理都是一个问题。
所以,真的动干戈起来,你就会发现,实际上SOCKS协议已经比较好解决了此类问题(只是前端需要增加接口)。因为SOCKS在启动通讯阶段,前端会给服务器发去最终目标服务器的地址和端口信息,它是专门为这个设计的。只要前端软件增加了SOCKS接口,就皆大欢喜了,成本也不高。而上述tcpmonitor增强方案,好处可能是前端软件并不需要增加接口,而只要操心端口含义就可以了。