網絡 代理服務器與NAT技術

 一、代理服務器

      背景 

  隨着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服務器可提供上萬個端口),就可以讓內網計算機和外網通訊(俗稱上網),並且能讓數臺內網計算機互不影響地同時上網。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章