一、代理服务器

      背景 

  随着Internet技术的迅速发展,越来越多的计算机连入了Internet。很多公司也将自己公司的局域网接入了Internet。如何快速地访问Internet站点,提高网络的安全性,成为了当今的热门话题。在这种情况下,代理服务器便应运而生了。

  代理服务器的概念

  代理服务器(Proxy Server)个人网络Internet服务商之间的中间代理机构,它负责转发合法的网络信息,对转发进行控制和登记。代理服务器作为连接 Internet(广域网)Intranet(局域网/企业内部网)的桥梁,在实际应用中发挥着极其重要的作用,它可用于多个目的,最基本的功能是连接,此外还包括安全性,缓存,内容过滤,访问控制管理等功能。代理服务器,顾名思义就是局域上不能直接上网的机器将上网请求(比如说,浏览某个主页)发给能够直接上网的代理服务器,然后代理服务器代理完成这个上网请求,将它所要浏览的主页调入代理服务器的缓存;然后将这个页面传给请求者。这样局域网上的机器使用起来就像能够直接访问网络一样。并且,代理服务器还可以进行一些网站的过滤和控制的功能,这样就实现了我们控制和节省上网费用。

  代理服务器能够让多台没有IP地址的电脑使用其代理功能高速、安全地访问互联网资源。当代理服务器客户端发出一个对外的资源访问请求,该请求先被代理服务器识别并由代理服务器代为向外请求资源。由于一般代理服务器拥有较大的带宽,较高的性能,并且能够智能地缓存已浏览或未浏览的网站内容,因此,在一定情况下,客户端通过代理服务器能更快速地访问网络资源。代理服务器应用的常见例子:拥有上百台电脑的局域网通过一台能够访问外部网络资源的代理服务器而也能访问外部互联网。

  代理服务器的功能

  1.充当局域网与外部网络的连接出口

  充当局域网与外部网络的连接出口,同时将内部网络结构的状态对外屏蔽起来,使外部不能直接访问内部网络。从这一点上说,代理服务器就充当的网关。

  2.作为防火墙

  代理服务器.可以保护局域网的安全,起防火墙的作用。通过设置防火墙,为公司内部的网络提供安全边界,防止外界的侵入。

  3.网址过滤和访问权限限制

  代理服务器可以设置IP地址过滤,对外界或内部的Internet地址进行过滤,限制不同用户的访问权限。例如代理服务器可以用来限制封锁IP地址,禁止用户对某些网页进行浏览。

  4.提高访问速度

  代理服务器将远程服务器提供的数据保存在自己的硬盘上,如果有许多用户同时使用这一个代理服务器,他们对Internet站点所有的访问都会经由这台代理服务器来实现。当有人访问过某一站点后,所访问站点的内容便会被保存在代理服务器的硬盘上,如果下一次有人再要访问这个站点时,这些内容便会直接从代理服务器磁盘中取得,而不必再次连接到远程服务器上去取。因此,它可以节约带宽、提高访问速度。

  代理服务器的工作原理

  代理服务器(Proxy Server)的工作原理是:当客户在浏览器中设置好Proxy Server后,你使用浏览器访问所有WWW站点的请求都不会直接发给目的主机,而是先发给代理服务器,代理服务器接受了客户的请求以后,由代理服务器向目的主机发出请求,并接受目的主机的数据,存于代理服务器的硬盘中,然后再由代理服务器将客户要求的数据发给客户。下面我们来详细说明其工作过程:

  在网络上,当客户端向服务器端请求数据时,服务器端会随即将所需的数据传给客户端。但是这个服务器可能在很远的地方(例如在美国),数据传输需要较长的时间,如果需要同样数据的用户很多,则每次都要重复传送.

  代理服务器的角色

  代理服务器是为了减少长距离的传送而诞生的。它不仅可以代理客户端向服务器端提出请求,也可以代理服务器传给客户端所需要的数据。

  当客户端对服务器端提出请求时,此请求会被送到代理服务器,然后代理服务器会检查本身是否有客户端所需要的数据。如果有,代理服务器便代替服务器将数据传给客户端。而代理服务器一般都是设置距自己传输距离较近的某台代理服务器,所以它传数据给客户端的速度会比从远程服务器传数据要快。

  如果代理服务器没有客户端所请求的数据,它会去服务器获取所需的数据。在代理服务器从服务器端取得数据传给客户端时,自己保存一份,待下次如果有用户提出相同的请求时,便可以将数据直接传过去,而不需要再去服务器端获取了。可见,代理服务器改善网络数据传输阻塞的功能是显而易见的。

  代理服务器的其他有关说明

  代理服务器的适用环境

  无论是家庭还是公司,都不可能为内部的每一台计算机都申请或租用一个合法的 IP地址。要使内部的多个计算机用户高效,安全地访问Internet,使用代理服务器是一种最好的选择。代理服务器需要至少拥有一个合法的IP地址,为内部局域网中的每一台客户机都分配一个独立的IP地址,并且通过在客户机软件上配置使用代理服务器(如用Microsoft Internet Explorer浏览器设置)、指向代理服务器的IP地址和服务端口,这样就可以使局域网内部的众多用户通过代理服务器访问Internet。

  对于局域网内部的用户来说,是利用资源共享,实现局域网内部用户对Internet的访问:而对于服务器来说,一般是使用专线,实现多台计算机同时上Internet。

  代理服务器对硬件的特殊需求

  代理服务器能实现许多功能,它对服务器的硬件有一定要求。通常安装代理服务器软件的计算机都需要一个较大的硬盘作为访问数据存放的缓冲区(可能高达几个GB或者更大),当有远程服务器提供的信息通过时,就将其保存到缓冲区中,当其他用户再访问相同的信息时,直接由缓冲区取出信息传送给用户,以提高访问速度,因为代理服务器需要保持多路连接,这会使用大量的内存,所以它需要一个大容量的内存;在一定环境下,有的代理软件需要二个或者更多的网卡。

二、NAT工作原理

    网络中只有一个电脑和外网(Internet)相连,当然有一个外网地址,我们局域网的电脑均能上网,几台同时上也没有问题,究竟是怎么实现的?

    Internet网上的计算机都必须有一个IP地址(公址Public IP),才能和Internet网络上其他设备正确通信。在某个时刻必须是唯一的(这句话某个时刻要解释一下,我以前家用电脑是通过电信上网的,每次登陆上网都会从电信公司ISP得到一个公址Public IP,但每次并不相同,当我得到某个公址Public IP,外网上的其他设备不会为我得到的那个公址Public IP;但是当我下线以后,其他某一台电脑是可以得到我刚才用的那个公址Public IP。其实ISP是把公址Public IP是租给我的,我不租时他们可以租给其他电脑以提高Public IP利用率(Public IP就是一种资源,不是无穷无尽的),但是不可以同时把一个公址Public IP租给两台设备,可以在不同时间把一个公址Public IP租给两台或更多设备,在任一时间一个公址Public IP只对应着Internet网上一个设备,如我的计算机,而不会两个)

 

   我们局域网的电脑均能上网,几台同时上也没有问题,究竟又是怎么实现的?这就要说到我们今天学习的NAT。

下面先来一段教科书上的定义:NAT网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的***,隐藏并保护网络内部的计算机。

    看了上面定义,还是不能理解局域网中电脑几台同时均能上网的问题。

    NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat 和 端口多路复用OverLoad。

    其中端口多路复用OverLoad是目前我们网络中应用最多的一类。

    搞懂了其中端口多路复用OverLoad,你就能理解理解局域网中电脑几台同时均能上网的问题了。

    我们说我的计算机和外网通信,一定是我的电脑里有一个应用程序在运行,比如说IE浏览器。这个应用程序能够和外界Internet网 通信,必须在本计算机上打开一个或几个端口;同样当他浏览某个网站的某个网页时,也必须通过网站服务器中的一个或几个端口才能复制网页内容再按原路传送过 来,我们的浏览器将他显示在我们的屏幕上。这就是我们运用浏览器浏览网页的过程。从上面的过程我们可以知道,网络设备间通信不仅要有Public IP(我的计算机和网站服务器的),而且要有各自端口号才能完成相互的通讯。IP+端口号才是完整的通讯地址!

    端口是什么?我罗嗦几句。这里的端口是指软端口。有有软就有硬,对!硬端口直观、简单,就是电脑主机箱后面的那些插口:RJ45接口、串口、并口、RS232等等,看得见、数得清的。

    软端口是什么东东?电脑里应用程序、服务等打开的端口,看不见的,当然你看不见不要紧,那些应用程序能知道并使用。每个和外部通信的应用程序均会创建属于自己的一个(或几个)软端口以便和外部通信。当然每个端口有自己的端口号以示区分。通常一台计算机最多可以开65535个端口,也就是说端口号可以是1~65535,完全够你(的计算机中的应用程序)用的了。我们说的远程桌面运用,其实就开了一个端口:3389.通过这一个端口就可以完全控制你的电脑了。

    有人还是搞不清软端口、硬端口,我们通常上网浏览、发邮件等会同时开几个软端口,他们都是通过RJ45这一个硬端口和外界通信的,也就是说,一个硬端口中可以同时通过几个软端口中的通信数据。

    应用程序都必须建立通信端口吗?不一定。比如有些游戏(也是一种应用程序)有单机版和网络版的,单机版就不一定建立通信端口(如果能更新就要建立),网络版一定会建立。

 

    正是这些端口构成NAT的基础,使内网的多台电脑能够共享一个公址Public IP同时上网。理解上面的内容,下面就说明NAT工作原理——本篇重点!

           

              NAT工作原理图

wKioL1c6i5Xgz1tYAAAsYPkOsT8367.png



                  图  1

我们现在以一个IE浏览器浏览新浪首页实例来说明NAT工作原理(阅读下文是请多参见图1):

    1、假设我们局域网中的一台电脑A(192.168.1.100),打开了IE浏览器,IE浏览器程序运行后,打开本机的1111端口(这个端口是随机的,系统动态产生),我想浏览新浪首页,就在地址栏输入http://www.sina.com.cn/,即我要访问http://www.sina.com.cn/,http://www.sina.com.cn就是12.130.132.30:80(这里面涉及到DNS,不是本篇重点,说明省略),此时我的电脑A就向内网(局域网)发一个数据包,这个数据包不仅有数据(即我想干什么——浏览网页),还包括一类重要的信息——源地址和目标地址。源地址就是表明数据包时由谁发出的,源地址由IP和端口两部分组成,我们这就是192.168.1.100:1111;目标地址表明此数据包要送到什么地方去,或者理解为要与谁通信,他也是由IP和端口两部分组成,我们这就是12.130.132.30:80,数据包大概以广播的形式发出,局域网上的其他电脑均能收到,但他们不会有响应,但是作为NAT服务器的计算机(本例为192.168.1.1)收到此数据包会有响应。

    2、(NAT服务器的计算机有两个网卡:一个和内网相连,此网卡IP是私址(PRIVITE IP)类型,我们这为(192.168.1.1);另外一个和外网(Internet)相连,此网卡IP是公址(PUBLIC IP)类型,我们这为(122.195.93.74)。他把局域网和外网联系起来,并完成内外网地址(IP+端口)的映射工作)NAT服务器会根据数据包中的目标地址,把这个数据包送到目标地址12.130.132.30:80——新浪网站(WEB服务器),但在送出此数据包之前,他对此数据包进行了修改:把此数据包的源地址由192.168.1.100:1111改为122.195.93.74:2222,这个过程就是NAT。数据包的目标地址不变。同时,他会在自己计算机中建立如图2的对照表(NAT TABLE),以后还用的上此表,后面会说到。

wKiom1c6kGvC0Y85AAAF4SAsqZ4583.png

                   图 2

    3、此时两者建立的关系是映射,即一一对应,在不中断IE浏览器程序运行,这种关系一直保持。此时如果你又打开搜狐网页,就又会增加建立一个映射,如192.168.1.100:1112——122.195.93.74:2223。从上我们可以看到,无论是IE浏览器程序开的端口,如本例中1111,还是NAT服务器的映射端口本例中2222,都是随机的,但一旦建立,他们必须是一一对应的映射关系,而且不会被其他程序再使用!

4、接着说,新浪网站(WEB服务器)——12.130.132.30:80口运行的程序收到此数据包以后,处理分析得知,要把本站某网页内容复制后再发到122.195.93.74:2222(注意这是我们的NAT计算机),就打包数据发送。这个数据包也有源地址和目标地址,源地址12.130.132.30:80(新浪),目标地址122.195.93.74:2222(我们的NAT计算机)。

5、很快我们的NAT计算机就收到到此包了,NAT计算机根据图2的对照表,把此数据包的目标地址从122.195.93.74:2222改为192.168.1.100:1111,这个过程也是NAT,源地址不变,为新浪网址12.130.132.30:80。

6、修改后将数据包向内网发出,我的这台局域网中的电脑A,更确切的说我的电脑运行着的IE浏览器程序就能收到他要的外网数据,处理以后就在我的显示器上将新浪网页显示出来。

至此完成我们内网电脑通过NAT服务器和外网设备一次完整的通讯,这个过程中地址改过两次,也就是说NAT两次:在我内网计算机上传的过程中,数据包的源地址改过一次,目标地址一直保持不变;下传过程中相反。

类似的,我们局域网中的计算机B要访问外网,过程和上相似,NAT服务器会提供另外一个未用的端口给局域网中的计算机B。只要NAT服务器能提供不同的端口(NAT服务器可提供上万个端口),就可以让内网计算机和外网通讯(俗称上网),并且能让数台内网计算机互不影响地同时上网。