当前位置: 首页 > news >正文

NAT和Proxy的区别

在internet共享上网技术上,一般有两种方式,一种是proxy代理型,一种是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方式相当于一个软路由器,在中小访问量的情况下,速度也不错,资源占用少,所以适用普遍使用.

相关文章:

  • mysql的sql执行原理图_Sql语句的执行原理-MySQL
  • RAS和微软终端或者Citrix有什么区别
  • 什么是DDN ASDL ISDN 宽带,它们之间有什么区别和联系
  • mysql主从配置实现_MySQL主从配置实现
  • 《英雄无敌 V》初次接触!
  • tableau 字段去重_Tableau 我常用函数整理
  • 分组查询 mysql_mysql基础-分组查询
  • 夜已深
  • oracle从mysql抓数据_关于oracle数据库读取数据的三种方式
  • mysql查看表中最高价格_一个MySQL查询来查找两个表中的最高价和最低价?
  • 金科玉律
  • python 打开pytorch_pytorch学习(五)—图像的加载/读取方式
  • 本周技术关注[面向webapps运维]:你养着工作还是工作养着你?
  • python保持登录状态_Python-保持登录状态进行接口测试
  • 有人见过在Windows Server 2003下面出现这样的字体变形模糊的异常吗?
  • [笔记] php常见简单功能及函数
  • Android 架构优化~MVP 架构改造
  • flutter的key在widget list的作用以及必要性
  • Git的一些常用操作
  • HTTP 简介
  • java小心机(3)| 浅析finalize()
  • PHP面试之三:MySQL数据库
  • React as a UI Runtime(五、列表)
  • tweak 支持第三方库
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 来,膜拜下android roadmap,强大的执行力
  • 马上搞懂 GeoJSON
  • 前言-如何学习区块链
  • 异常机制详解
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​2020 年大前端技术趋势解读
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • "无招胜有招"nbsp;史上最全的互…
  • #LLM入门|Prompt#3.3_存储_Memory
  • $refs 、$nextTic、动态组件、name的使用
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (安卓)跳转应用市场APP详情页的方式
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core 中的路径问题
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .Net 垃圾回收机制原理(二)
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @RequestBody与@ResponseBody的使用
  • @Transactional类内部访问失效原因详解
  • [ C++ ] STL---stack与queue
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现