免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1325 | 回复: 0
打印 上一主题 下一主题

NAT和proxy的区别 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-05 13:17 |只看该作者 |倒序浏览
用户的一个tcp连接在NAT方式实际下还是只有一个连接,而对于proxy方式来说则是两个连接。
基本的NAT工作在Layer 4,当用户发起一个tcp请求时,这个ip包是否经过NAT用户是不得而知的。NAT设备修改源地址,源端口以及ip包的校验和之后就将该ip包送出,至于ip包内的内容则不得而知。由于需要修改ip包的校验和,因此NAT是cpu密集型应用,如果用路由器来做会比较吃力,而专门的防火墙特别是硬件防火墙则更为合适。对于一些复杂应用例如ftp、h.323等,仅仅修改ip包头信息是不够的,这些应用在报文中的某些信息也必须被同步修改,否则仅能完成控制信息交互而无法建立数据传送通道,因此这时NAT设备需要ALG来完成更复杂的功能。但是ALG仍然保持了用户到最终服务器的单一的连接。如果对通过NAT的tcp连接抓包分析就会发现,tcp的sequence number在通过NAT时是不会发生变化的。
以http的proxy方式为例来说,首先用户端程序和proxy server之间建立连接一个连接,随后由proxy server向最终的server发起一个请求并建立连接,然后proxy server替用户端完成和最终server的信息交互,并将结果通过和用户间的连接返回给用户端,这个过程中很明显存在2个tcp连接,当然用户端的tcp sequence number不会被最终的server看到,最终的server能够看到的只是proxy发起的tcp连接的sequence nubmer。如果不能和最终server建立连接,proxy server会将错误信息返回给用户端,这个过程就只有一个tcp连接被成功建立。而NAT方式在这两种情况下要么成功建立一个连接,要么一个都建立不了。Proxy方式是从头到尾抽丝剥茧地工作,更为彻底,也更费资源。
对于sequence number在两种方式下的不同:由于NAT方式下sequence number不会发生变化,因此对于ISP来说如果宽带用户使用NAT共享上网,则可以通过sequence number发现用户是否自己私自接了别的用户。但是如果用户通过proxy方式共享上网则不能通过sequence number被发现。
由于NAT和proxy两种方式在连接建立方面的不同会有以下的差别:
在一些病毒发作的情况下,例如code red或Nimda,病毒主机会向internet发送大量的http连接请求,而大量的目标地址主机是不存在的或者是并不提供http服务。如果是NAT方式,发往这些不存在的主机或者是并不提供http服务的主机并不能建立任何tcp连接,只会在NAT设备上留下大量的tcp 请求的信息,占用NAT设备的cpu资源。
而对于proxy方式来说,如果是透明代理,病毒主机会先和proxy server建立连接,而由proxy server去向internet上的大量地址去发起请求,也就是说,病毒主机每个请求都和proxy server成功建立了连接。在这种情况下,proxy server如果不采取特殊的措施,连接数会很快被占满而不能工作了。
上面说的这种情况是指透明代理的模式,如果客户端都是手动在浏览器中设置代理服务器,那么病毒由于不知道代理的地址,不会和代理建立连接。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/100991/showart_2018529.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP