现在越来越多的家庭拥有两台或两台以上的电脑,一般家庭只有一条宽带网接入,如何让多台电脑共享上网,是很多人不得不考虑的问题,家用宽带路由器的出现很好的解决了这个问题.
在internet共享上网技术上,一般有两种方式,一种是proxy代理型,一种是NAT网关型,一般家用路由器 都属于NAT网关型,关于两者的区别与原理,身边很多人都不是很明白,下面我来讲讲我的理解.
1.先说应用例子:
服务器端,用wingate就是Proxy,用sygate和家用路由器就是NAT,
客户端,需要在IE中设置代理服务器的就是用Proxy,客户端只需设置网关即可就是用NAT
2.再说工作原理:
NAT工作在网络层,而Proxy工作在应用层
正因为如此,NAT方式下客户端只需要设定一个网关地址,HTTP,QQ,FTP都可以使用.而Proxy方式下,需要为每一种应用协议指定代理服务器,如IE中需要设定,QQ中需要设定,MSN需要设定,FTP也需要设定,增加了客户端使用的复杂性.
NAT绝大部分情况下只是修改数据包中的地址和端口,然后记录对应关系后把数据转发出去。
proxy不同于nat,proxy客户端需要访问互联网时,会先通知proxy服务器软件要做什么,然后proxy代理服务器去扮演客户请求而完成,然后将结果回传给客户端。Proxy服务器端先要分析数据包的内容,弄清楚要干什么,然后以自己的身份来 “代理”完成这个请求,并且将结果发送回客户端。
比如http,解析出请求的方向,然后以proxy主机的身份,把这个请求发送给远端的web服务器,远端数据返回以后,它又以主机的身份把数据传送给客户端。同时,还把这些数据放到CACHE中,如果其它客户有相同的内容请求,就直接从CACHE中拿数据,不用现向互联网上的服务器请求数据.
因为proxy在实现上具体到了应用层上的协议,因此带来了一些额外的管理功能和cache功能。
这样打个比方
nat=货运码头,管你是啥货,只管发就是了
proxy=代理商,先要看你买啥,清楚了后再帮你买,可能直接从库房中提货,也可能去其它地方调货,也有可能不代理你要买的货.
3.最后说优缺点
对客户端来说:
NAT设置简单,无需客户端软件
Proxy针对每一种应用设置代理服务器,或者安装一个客户端软件,设置相对复杂一些.并且并不一定支持所有的应用,如VPN客户端登录很多Proxy就无法代理应用.
对服务器来说:
Proxy需要耗用的资源更多一些(内存,硬盘等),以存CACHE内容,正因如此,在大量用户的情况下,获得的性能更高一些.
NAT方式相当于一个软路由器,在中小访问量的情况下,速度也不错,资源占用少,所以适用普遍使用
===============================================================================================
常用的局域网接入Internet的技术有三种:
1.直接路由;
2.网络地址转换(NAT);
3.代理服务器(proxy)。
第一种方法比较简单直接,不过要求客户机都有真实IP,仅这一点,大多数的环境就无法满足--IP地址可是紧缺资源哦。而且一台硬件路由器的价格不斐,真实IP挂在网上安全上也让人不放心。所以这种方案应用得不多。
再来看第二种方法--NAT。上文提到,ip地址常常是不够用的,那么NAT技术的出现就可以解决这一问题。其原理就是在局域网使用保留的私有地址,在ip数据包离开局域网网关(即NAT网关)发往Internet时改变其源地址为一个Internet可路由地址(通常就是网关的外部网卡地址),当回应的数据包返回网关时再将回应包的目的地址改为原先发出请求的客户机的IP地址,这通常是一个保留的私有地址。NAT网关自动跟踪客户机和外网的连线,保证数据包转发给正确的客户机。这样许许多多的局域网都可以使用保留地址而不用担心会相互冲突,就可以节约大量的IP地址资源。linux下的iptables,ipchains, FreeBSD下的ipfw都可以实现某种形式的NAT,从而充当局域网的Internet网关。还有M$的ICS(Internet Connection Sharing,大致如此吧:-) )也是使用NAT技术。至于sygate,据我所知也是采用NAT技术,所以它并不是真正意义上的代理服务器。
再有就是第三种方法--Proxy,也就是代理服务器。顾名思义它是一种客户机和服务器之间的代理人,它接受客户机的连接请求,然后自己“代替”客户机向服务器发起连接,接收到回应后,再将同样的回应发回客户机。注意这里建立了两个链接,客户机<==>Proxy,Proxy<==>服务器,要点是客户机服务器之间并没有直接建立连接,它们之间的对话是经过代理服务器“代理的”。这一点很重要,正是由于这一特点,Proxy通常可以用作一个不错的防火墙,因为它隔断了客户机与外部服务器之间的直接数据连接。还是由于这一特点,客户机不需要具有Internet可路由的IP地址,因为它与Internet根本没有发生直接连接。
至于透明代理,主要应从两个层面上来理解,首先它是一个代理服务器,第二由于作了特别的配置,对于客户的应用来讲它是“透明”的,就是说客户根本无需知道它的存在,也就不需要特别的设置。这可以简化客户端的配置工作,通常你只要指定客户机的IP地址、确省网关、和DNS地址就行了。如果网络上运行着DHCP服务器,那就更简单了,你只需要告诉客户机动态取得IP地址一件事就可以了,这是DHCP的功劳,不要也记到透明代里头上哦。:-)
再澄清一点,传统代理情况下,域名解析由Proxy完成,所以客户端DNS设得不对也能浏览;在透明代理环境下,域名解析是客户机自己的事,所以DNS一定要设对!
?
了解了NAT和Proxy的大致概念,现在我们来谈谈它们的主要区别。
1.它们工作的协议层不同,NAT需要对ip帧进行拆包重组,所以它工作在ISO七层模型的第三层,网络层;Proxy需要了解具体的应用层的协议,它通常工作在应用层,所以又称为应用网关。
2.速度不同,NAT工作在较低层,通常比工作在高层的Proxy速度要快些。如果Proxy作了cache缓冲的话就不一定了。
3.支持的协议不同,一般NAT支持很多上层的应用层协议,不被支持的协议反倒很少;而Proxy通常支持的协议较少,如squid支持HTTP和基于浏览器的FTP。所以有时会有多个Proxy协同工作,HTTP代理+FTP代理+SMTP代理+POP代理等等。当然也有的代理服务器集成了多协议的代理,如M$ Proxy,另外delegate支持的协议也比squid多。不过一般来说Proxy支持的协议较少且灵活性相对较差。
4.管理控制功能不同。NAT的控制功能相对较少;相比之下Proxy这方面的功能就比较强大了。用户认证,精细的访问控制,cache缓冲与管理等等。不过NAT常常可以与包过滤技术相结合以弥补其控制功能的不足。
如上所述,两种技术都可以带动局域网上Internet,节约IP地址资源。但又各有特点,各有所长,在实际环境中我们可以根据自己的需求和条件加以选用,实际上很多情况下两者可以很好的共存在同一个网络环境下,取长补短,为我们提供更好的服务。 |