【网络】NAT与代理服务器
来源:互联网 发布:淘宝时尚潘多拉代购点 编辑:程序博客网 时间:2024/05/21 17:36
网络地址转换[编辑]
维基百科,自由的百科全书
在计算机网络中,网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP封包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中。根据规范,路由器是不能这样工作的,但它的确是一个方便并得到了广泛应用的技术。当然,NAT也让主机之间的通信变得复杂,导致通信效率的降低。
在一个具有NAT功能的路由器下的主机并没有建立真正的IP地址,并且不能参与一些因特网协议。一些需要初始化从外部网络建立的TCP连接和使用无状态协议,比如UDP的服务将被中断。除非NAT路由器作一些具体的努力,否则送来的数据包将不能到达正确的目的地址。一些协议有时可以在应用层网关(见下)的辅助下,在参与NAT的主机之间容纳一个NAT的实例,比如FTP。NAT也会使安全协议变的复杂,比如IPsec。
端对端连接是被IAB委员会(Internet Architecture Board)支持的核心因特网协议之一,因此有些人据此认为NAT是对公用因特网的一个破坏。一些因特网服务提供商只向他们的客户提供本地IP地址,所以他们必须通过NAT来访问ISP网络以外的服务,并且这些公司能不能算的上真正的提供了因特网服务的话题也被谈起。
NAT除了带来方便和代价之外,对全双工连接支持的缺少在一些情况下可以看作是一个有好处的特征而不是一个限制。在一定程度上,NAT依赖于本地网络上的一台机器来初始化和路由器另一边的主机的任何连接,它可以阻止外部网络上的主机的恶意活动。这样就可以阻止网络蠕虫病毒来提高本地系统的可靠性,阻挡恶意浏览来提高本地系统的私密性。很多具有NAT功能的防火墙都是使用这种功能来提供核心保护的。另外,它也为UDP的跨局域网的传输提供了方便。
基本网络地址转换(Basic NAT)[编辑]
这一种也可称作NAT或“静态NAT”。它在技术上比较简单一点,仅支持地址转换,不支持端口映射,这就需要对每一个当前连接都要对应一个IP地址,因此要维护一个公网的地址池。宽带(broadband)路由器通常使用这种方式来允许一台指定的计算机去接收所有的外部链接,甚至当路由器本身只有一个可用外部IP时也如此,这台路由器有时也被标记为DMZ主机。
基本NAT要维护一个NAT表,结构如下
网络地址端口转换(NAPT)[编辑]
这种方式支持端口的映射并允许多台主机共享一个公用IP地址。
支持端口转换的NAT又可以分为两类:源地址转换和目的地址转换NAT。前一种情形下发起连接的计算机的IP地址将会被重写,使得内网主机发出的数据包能够到达外网主机。后一种情况下被连接计算机的IP地址将被重写,使得外网主机发出的数据包能够到达内网主机。实际上,以上两种方式通常会一起使用以支持双向通信。
NAPT也要维护一个NAT表,结构如下。
受到NAT影响的应用程序[编辑]
一些高层协议(比如FTP,Quake,SIP)是在IP包的有效数据内发送网络层 (第三层)信息的。比如,主动模式的FTP使用单独的端口分别来控制命令传输和数据传输。当请求一个文件传输时,主机在发送请求的同时也通知对方自己想要在哪个端口接受数据。但是,如果主机是在一个简单的NAT防火墙后发送的请求,那么由于端口的映射将会使对方接收到的信息无效。
一个应用层网关(Application Layer Gateway或ALG)可以修正这个问题。运行在NAT防火墙设备上的ALG软件模块可以更新任何由地址转换而导致无效的信息。显然,ALG需要明白它所要修正的上层协议,所以每个有这种问题的协议都需要有一个单独的ALG。
但是,除FTP外的大多数传统的客户机-服务器协议不需要发送网络层(第三层)信息,也就不需要ALG。
这个问题的另一个可能的解决方法是使用像STUN这样的技术,但是这只针对建立在UDP上的高层协议,并且需要它内建这种技术。这种技术对于对称NAT也是无效的。还有一种可能的方案是UPnP,但它需要和NAT设备配合起来使用
代理(英语:Proxy),也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。
提供代理服务的电脑系统或其它类型的网络终端称为代理服务器(英文:Proxy Server)。一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源(如:文件)。在后一种情况中,代理服务器可能对目标服务器的资源下载至本地缓存,如果客户端所要获取的资源在代理服务器的缓存之中,则代理服务器并不会向目标服务器发送请求,而是直接返回缓存了的资源。一些代理协议允许代理服务器改变客户端的原始请求、目标服务器的原始响应,以满足代理协议的需要。代理服务器的选项和设置在计算机程序中,通常包括一个“防火墙”,允许用户输入代理地址,它会遮盖他们的网络活动,可以允许绕过互联网过滤实现网络访问。
代理协议[编辑]
Socks[编辑]
SOCKS 4/5
HTTP[编辑]
HTTP 协议
功能[编辑]
提高访问速度:通常代理服务器都设置一个较大的缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度。
控制对内部资源的访问:如某大学FTP(前提是该代理地址在该资源的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务。
过滤内容:例如限制对特定计算机的访问,将一种语言的数据翻译成另一种语言,或是防御代理服务器两边的攻击性访问。
隐藏真实IP:上网者也可以通过代理服务器隐藏自己的IP,免受攻击。但是只一个代理很难保证安全,更安全的方法是利用特定的工具创建代理链(如:Tor)。
突破自身IP访问限制:访问国外站点。中国教育网和169网等网络用户可以通过代理访问国外网站。
突破内容过滤机制限制,访问被过滤网站。如防火长城对中国境内互联网访问的限制可通过使用代理服务器浏览而突破。但是每到国庆、两会等敏感时期,防火长城的封锁力度会大大加强,大多数代理服务器和代理软件都会无法连接。(如:Tor、***、无界浏览等)
种类[编辑]
根据协议区分[编辑]
FTP代理服务器
主要用于访问FTP服务器,一般有上传、下载以及缓存功能。端口一般为21、2121等。
HTTP代理服务器
主要用于访问网页,一般有内容过滤和缓存功能。端口一般为80、8080、3128等。
SSL/TLS代理
主要用于访问加密网站,一般有SSL或TLS加密功能(最高支持128位加密强度)。端口一般为443。
RTSP代理
主要用于Realplayer访问Real流媒体服务器,一般有缓存功能。端口一般为554。
Telnet代理
主要用于telnet远程控制(黑客入侵计算机时常用于隐藏身份)。端口一般为23。
POP3/SMTP代理
主要用于POP3/SMTP方式收发邮件,一般有缓存功能。端口一般为110/25。
SOCKS代理
只是单纯传递数据包,不关心具体协议和用法,所以速度快很多。一般有缓存功能。端口一般为1080。(SOCKS代理协议又分为SOCKS4和SOCKS5,SOCKS4协议只支持TCP,而SOCKS5协议支持TCP和UDP,还支持各种身份验证机制、服务器端域名解析等。简单来说:SOCK4能做到的SOCKS5都可以做到,但SOCKS5能做到的SOCK4不一定能做到)
根据匿名程度区分[编辑]
高度匿名代理
高度匿名代理会将我们的数据包原封不动的转发,在服务端看来就好像真的是一个普通客户端在访问,而记录的IP是代理服务器的IP。
普通匿名代理
普通匿名代理会在数据包上做一些改动,服务端上有可能发现这是个代理服务器,也有一定几率追查到你的真实IP。代理服务器通常会加入的HTTP头有HTTP_VIA和HTTP_X_FORWARDED_FOR 。
透明代理
透明代理不但改动了我们的数据包,还会告诉服务器你的真实IP。这种代理除了能用缓存技术帮你提高浏览速度,能用内容过滤提高你的安全性之外,并无其他显著作用。(最常见的例子是:内网中的硬件防火墙)
间谍代理
间谍代理指组织或个人创建的,用于记录用户传输的数据,然后进行研究、监控等目的代理服务器。
代理服务器与网络安全[编辑]
对网络安全的贡献[编辑]
它的内容过滤功能有利于防止骇客破坏电脑,保护计算机安全。
它的匿名功能可以帮助你隐藏真实IP,以免被骇客盯上。
对网络安全的破坏[编辑]
它的匿名功能可以帮助骇客隐藏自己的真实IP,进行破坏,这样就加大了警方的取证难度。(较常见的做法是只挂一个代理,但是安全性更高的做法是用好几台代理服务器串成“代理链”,或者入侵完成后将代理服务器的日志、缓存擦除掉。)还有一些恶意用户常常挂了代理之后随意留言,所以一些网站在用户使用代理的时候可能会给你“禁言”。
它的中转功能在使用时,所有发往服务器的数据都基本全部明文,一个前文提到过的“间谍代理”就有可能记录下所有经过的数据(包括用户名密码),所以如果可能的话,需要通过代理传输用户名密码时尽量使用SSL、TLS等协议先行加密。
反向代理服务器[编辑]
参见:反向代理
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量。安装反向代理服务器有几个原因:
加密和SSL加速
负载平衡
缓存静态内容
压缩
减速上传
安全
外网发布
维基百科使用开放源代码的Varnish代理服务器。
分布式代理服务器[编辑]
参见:破网软件
利用私立的域名解释系统,让相应的代理服务器客户端自动以安全链接连接上相应的多台代理服务器服务端,从而实现相应的代理功能。
或通过特定的分布式网络,将客户端与相应的出口端创建成虚拟的路由网络,让不同的数据包通过该网络的不同节点和不同出口与外界链接。此类软件较为著名的有Tor,***,无界浏览等。
以上转载自维基百科:
- 【网络】NAT与代理服务器
- 网络---NAT技术与代理服务器调研
- 网络基础 — 代理服务器与NAT技术
- 代理服务器与NAT服务器
- NAT技术与代理服务器
- NAT技术与代理服务器
- 代理服务器与NAT
- NAT技术与代理服务器
- 关于代理服务器与NAT
- NAT技术与代理服务器
- NAT技术与代理服务器
- NAT技术与代理服务器
- 代理服务器与NAT技术
- NAT技术与代理服务器
- NAT技术与代理服务器
- NAT技术与代理服务器
- NAT技术与代理服务器
- NAT技术与代理服务器
- Linux:信号(下)
- Linux:例行性工作
- 互联网协议相关知识
- Linux:守护进程
- Linux:前期总结
- 【网络】NAT与代理服务器
- 【网络】ARP协议
- 【网络】TCP协议
- socket编程:简单TCP服务器/客户端编程
- socket编程:简单UDP服务器/客户端编程
- 打印两个有序链表的公共部分
- socket编程:多路复用I/O服务端客户端之select
- socket编程:I/O模型
- socket编程:多路复用I/O服务端客户端之poll