• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 代理服務器的研究與實現

    發表于:2007-06-23來源:作者:點擊數: 標簽:
    代理服務器作為連接Internet與Intranet的橋梁,在實際應用中發揮著極其重要的作用。它可用于多個目的,最基本的功能是連接,此外還包括 安全 性、緩存、內容過濾、 訪問控制管理等功能。目前市場上主要是國外的代理服務器產品,而國外的產品并不能很好的適應

       

    代理服務器作為連接Internet與Intranet的橋梁,在實際應用中發揮著極其重要的作用。它可用于多個目的,最基本的功能是連接,此外還包括安全性、緩存、內容過濾、 訪問控制管理等功能。目前市場上主要是國外的代理服務器產品,而國外的產品并不能很好的適應國內企業的需求。

    本文實現了一個代理服務器系統,可代理HTTP, FTP, TELNET, SMTP, POP這五個常用協議,此外還有用戶管理和撥號等功能。

    引言

    隨著Internet與Intranet的飛速發展,作為連接Internet與Intranet的橋梁,代理服務器在實際應用中發揮著極其重要的作用。它可用于多個目的,最基本的功能是連接,此外還包括安全性、緩存、內容過濾、訪問控制管理等功能。具體來說主要有以下特點:

    ??(1) 可通過一個公用IP地址供多個用戶同時訪問Internet

    ??(2) 在內部網絡和外部網絡之間構筑起防火墻

    ??(3) 通過緩存區的使用降低網絡通信費用

    ??(4) 對局域網用戶進行訪問權限和信息流量計費管理

    ??(5) 對進入局域網的Internet信息實現訪問內容控制

    ??(6) 在確保局域網安全的環境下提供Internet信息服務

    在代理服務器的眾多功能中,安全性是一個突出且敏感的功能。絕大多數企業、部門在使用代理服務器的時候,都會考慮這個問題,把它作為選購代理服務器產品的重要依據。目前市場上流行的代理服務器,像Microsoft Proxy Server、Netscape Proxy Server、WinGate等,都是國外的產品,雖然功能和性能等方面都還不錯,但畢竟是別人的東西,從保證安全性的角度出發,很有必要開發一個自己的代理服務器。而且,在實際使用國外這些產品的過程中,發現它們并不能很好的滿足國內企業的要求。比如說,訪問日志功能,雖然絕大多數的國外產品都有,但是,這些日志功能都是定死的,不能夠根據企業的要求來靈活的生成,而這個功能又是國內很多企業所必須的。因此研究并實現代理服務器不僅有助于我們深入了解各種Internet協議的實現細節,掌握代理的技術,而且可實現軟件的國產化,滿足國內用戶的安全性需求,對于社會和個人都是有積極意義的。

    代理服務器的實現模型和總體框架

    代理服務器(Proxy)是接收或解釋客戶端連接并發起到服務器的新連接的網絡節點。它是客戶端/服務器關系的中間人,這意味著代理服務器必須滿足以下條件:

    ??◎ 能夠接收和解釋客戶端的請求

    ??◎ 能夠創建到服務器的新連接

    ??◎ 能夠接收服務器發來的響應

    ??◎ 能夠發出或解釋服務器的響應并將該響應傳回給客戶端

    上述四個條件也即是代理服務器的四個基本功能。如果說接收客戶端請求并發回響應是服務器的功能的話,那么發起到服務器的連接并接收服務器的響應則是客戶端發揮的作用。因此實現代理服務器必須要同時實現服務器和客戶端兩端的功能。

    代理服務器實現模型如圖1所示。

    代理服務器的研究與實現(圖一)

    根據代理服務器工作的層次,一般可分為應用層代理、傳輸層代理和SOCKS代理。應用層代理工作在TCP/IP模型的應用層之上,它只能用于支持代理的應用層協議(如HTTP,FTP)。它提供的控制最多,但是不靈活,必須要有相應的協議支持。如果協議不支持代理(如SMTP和POP),那就只能在應用層以下代理,也即傳輸層代理。傳輸層代理直接與TCP層交互,更加靈活。要求代理服務器具有部分真正服務器的功能:監聽特定TCP或UDP端口,接收客戶端的請求同時向客戶端發出相應的響應。另一種代理需要改變客戶端的IP棧,即SOCKS代理。它是可用的最強大、最靈活的代理標準協議。SOCK V4允許代理服務器內部的客戶端完全地連接到外部的服務器,SOCK V5增加了對客戶端的授權和認證,因此它是一種安全性較高的代理。

    為便于統一處理,本文采用傳輸層代理,即不管協議是否支持代理,都采用傳輸層代理模式。代理服務器接收內部網的TCP和UDP包,改變源和目的IP地址,甚至改變TCP或UDP頭,然后將包發送到外部網。

    傳輸層代理主要有兩種方案:端口重定向和客戶端服務器代理。端口重定向比較簡單,代理服務器通過監聽特定的TCP或UDP端口接收連接,希望連接到外部網絡的客戶端通過該端口,連接到代理服務器,代理服務器使用另外的端口和IP地址發出對遠端目的地的連接。建立連接以后,所有客戶端和遠端目的地的數據都由代理服務器轉發??蛻舳朔掌鞔硇枰惭b客戶端,用戶啟動與外部網絡通信的程序時,代理客戶端封裝包并直接轉發給代理服務器。代理服務器打開封裝并將包傳輸給外部網絡。接到響應時,代理服務器封裝數據并轉發給客戶端。這種方案有一個嚴重缺點,由于客戶端程序的安裝,改變了TCP/ IP棧的工作方式,使代理復雜化,增加了發生問題的機會。

    出于對可靠性和簡單性方面的考慮,本代理服務器系統采用端口重定向方案,只是簡單定制了客戶端的操作過程。代理服務器監聽特定端口,客戶端需要連接到外部網絡時,要先顯式地連接代理服務器的監聽端口。代理服務器響應后,客戶端指出需要連接的遠端目的地,由代理服務器來進行連接。連接成功以后,代理服務器轉發數據,客戶端的操作就象直接與遠端相連一樣了。

    本代理服務器系統的總體框架如圖2所示:

    代理服務器的研究與實現(圖二)

    系統由七大模塊組成。TELNET代理模塊、HTTP代理模塊、FTP代理模塊、SMTP代理模塊和POP代理模塊分別實現了對應協議的代理。用戶管理模塊貫穿整個代理服務器系統,主要負責對用戶的認證和訪問權限控制等。撥號連接模塊是專為那些通過撥號訪問Internet的用戶提供的服務。

    代理服務器的實現

    本代理服務器系統建立在Windows NT平臺上,基于WinSock網絡通信接口,使用Microsoft Visual C++,利用MFC類庫中提供的兩個Socket類CAsyncSocket和Csocket。這兩個類不僅使我們可以用面向對象的方法來進行Socket編程,而且它們還分別在較低和較高層次上封裝了Windows Sockets API,為程序員開發Socket程序提供了便利。而圖2中五種協議的代理實際上是設計此軟件時涉及的五個基本對象,這五個對象涉及五種協議和五種代理服務,代理服務不同則對象的屬性及行為均不同,因此很自然地用C++中的五個類來對應這五個對象。即CTPSocket(Telnet代理)、CFPSocket(FTP代理)、CSPSocket(SMTP代理)、CPPSocket(POP代理)、CWPSocket(WWW代理),它們都是CAsyncSocket類的子類。顯然這樣設計既考慮了實際需求,又很好地利用了C++的面向對象程序設計的優點,同時由于每一個類分別代表一種服務,封裝了其實現細節,有利于程序的移植、擴展和維護。下面以Telnet代理(CTPSocket)為例來說明實現的細節。

    2.1 TELNET協議

    TELNET為遠程登錄協議。此協議允許TELNET客戶端在遠程主機上登錄,就好象該客戶端是直接連接到遠程主機上的一個終端一樣。

    會話開始前,用戶在客戶端輸入遠程服務器的地址,然后該客戶端就與遠程服務器建立一個TCP連接。連接建立后開始進入會話,接著遠程服務器會給用戶顯示登錄提示符,讓用戶鍵入用戶名和口令。用戶名和口令獲得通過后,客戶端就與服務器相互傳遞命令和數據,直到會話結束,然后服務器或客戶端關閉連接。

    與其它應用協議不同的是,TELNET允許其客戶端與Internet上任何服務器的每個協議端口建立TCP連接,并進行TCP會話,用戶可以利用TELNET的這一功能檢測其它協議。如用戶可以把TELNET客戶端連到端口25(SMTP的周知口)來實現Internet e_mail的發送或者連到端口110(POP的周知口)來實現Internet e_mail的接收等等。因此TELNET代理的實現是其它代理實現的基礎,可以用TELNET代理來測試其它代理。

    2.2 TELNET代理的實現

    TELNET代理的工作流程可歸納為:啟動該代理服務,監聽客戶端連接。當客戶端的連接請求到達代理服務器后,代理服務器根據訪問控制文件,以及連接的源和目的地址對連接進行過濾,若是不合法的連接,則予以拒絕。然后代理程序代理服務器端與客戶端建立連接,并代理客戶端與服務器端建立連接,當三方的連接接通后,代理程序在服務器與客戶端之間轉發命令及反饋,直到有一方退出或超時時結束代理服務,其流程如圖3所示:

    代理服務器的研究與實現(圖三)

    其它幾個協議的實現與TELNET在TCP連接上是類似的。其中FTP協議特殊一點,它使用了兩個TCP連接,控制連接和數據連接。在整個FTP處理過程中,控制連接起傳輸控制信息的作用,它始終保持主動狀態。數據連接負責傳輸用戶需求的數據。當啟動FTP代理服務時,系統首先啟動守護進程(默認端口為21),FTP客戶向該端口發送控制連接請求,與代理服務器建立控制連接,然后代理服務器與遠端FTP服務器建立控制連接??刂七B接建立成功后,FTP客戶與代理服務器(默認端口20)建立數據連接,代理服務器進而與遠端FTP服務器建立數據連接,數據連接成功后,FTP客戶和遠端FTP服務器就可以進行數據的傳輸了。

    代理服務器的其它功能

    3.1 用戶管理

    代理服務器對客戶端的管理可以是基于主機,即基于IP地址的管理。這種管理在實現上比較簡單,但不靈活。代理服務器是根據各個客戶端的IP地址來進行配置的,若客戶端主機有所修改,則需相應修改代理服務器的配置。這樣的話,對于網絡管理員來說,是很不方便的。同時,對于多人共用一臺計算機的情況,基于IP地址管理的代理服務器是不能區分各個用戶的,這就給管理帶來了隱患。另外,基于IP地址管理的代理服務器也不能防止他人盜用問題,只要能打開某臺代理服務器認可的計算機,就可訪問外部網絡。

    本系統中,對客戶端的管理是基于用戶的管理。用戶在使用代理服務器訪問外部網絡之前,需要先啟動一個客戶端程序,輸入用戶名和口令以登錄到代理服務器。代理服務器檢測用戶名和口令,判斷該用戶是否合法,以及該用戶的訪問權限,從而對用戶訪問外部網絡進行控制。代理服務器檢測完成后,斷開與客戶端的登錄連接。但是代理服務器會定時地主動連接客戶端,從而監測已登錄用戶的狀態,當發現用戶狀態異常(如死機)時,對該用戶進行訪問封鎖,直到用戶重新登錄。同時,若用戶暫時不再訪問外部網絡,可主動啟動客戶端程序,顯式地注銷在代理服務器上的登錄,這樣就可防止他人在用戶離開后,繼續使用代理服務器訪問外部網絡,解決了盜用問題。

    3.2 撥號連接

    撥號連接也是代理服務器中較為常見的一個服務。代理服務器與Internet建立連接一般有兩種方法,一種是通過專線直接與Internet建立連接,另一種是通過電話線與撥號服務器建立撥號連接,然后登錄到Internet上。雖然代理服務器本身是一個上層軟件,它不關心底層連接的具體建立,無論該底層連接是通過專線還是撥號連接。但是為了增強代理服務器的功能,提高其適用范圍,本系統提供了撥號連接的服務。

    使用撥號連接功能,需要對代理服務器進行配置。首先要配置好Windows系統的電話撥號功能,建立電話簿登記項。啟動代理服務器后,系統調用Windows系統的電話簿登記項進行電話撥號連接,登錄到ISP的計算機系統。然后再通過系統的電話撥號配置窗口對登記項進行參數配置。

    結束語

    本文分析了代理服務器工作的基本原理,并對其開發作了較深入的研究。實際開發了一個代理服務器系統,在實驗室進行一系列功能測試后,現已在某企業網上正式運行。運行結果顯示,系統能穩定地代理各類Internet訪問服務;企業利用系統基于用戶的管理機制,加強了訪問管理和控制??梢哉f系統很好地適應了企業的需求,在企業的整個管理系統中起了不可忽視的作用。



    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>