



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、HTTP代理服務(wù)器在Windows下的實(shí)現(xiàn)摘耍:本文介紹了代理服務(wù)器的優(yōu)點(diǎn),HTTP代理服務(wù)器在Windows卜的實(shí)現(xiàn),最后 簡單討論實(shí)現(xiàn)代理服務(wù)器的意義。關(guān)鍵字:代理服務(wù)器(proxy)、HTTP、Windows、線程普通的因特網(wǎng)訪問是一個典型的客戸朗1/服務(wù)器(Client/Server)結(jié)構(gòu):用戶本地計算機(jī) 上的客門端程庁如瀏覽器發(fā)生請求,遠(yuǎn)端WWW服務(wù)器程序響應(yīng)請求并捉供相應(yīng)的數(shù)據(jù)。 而代理(Proxy)處于客戶機(jī)和服務(wù)器之間,對丁服務(wù)器來說,Proxy是客戶機(jī),提出請求: 對于客戶機(jī)來說,Proxy是服務(wù)器,它接受請求并提供數(shù)據(jù)。代理服務(wù)器模電代理服務(wù)器具有以卜兒個的優(yōu)點(diǎn):(一)安全
2、屏障Proxy是建立在應(yīng)用層的軟件,它的最主耍功能是作為firewall的旋要組成部分,為它保 護(hù)的主機(jī)起到了安全屏障的作用。Proxy起到流帚控制,包過濾,訪問控制,和操作系統(tǒng)用 八集成等作用,所以Proxy町以成為簡單網(wǎng)絡(luò)管理軟件的核心部分,同時它也是屮小型企業(yè) INTERNER訪問解決方案的重要組成部分。(二)提高網(wǎng)絡(luò)性能當(dāng)Internet的用戶以指數(shù)函數(shù)增長時,網(wǎng)絡(luò)的擁擠是網(wǎng)絡(luò)管理的一個幣:耍問題。Proxy Server 就好像一個人儲藏庫,它仃很人的Cache空何。如來通過該P(yáng)roxy何人左過了某個站點(diǎn),傳 輸了某此內(nèi)容,那么Proxy會將相關(guān)的資料(包含文字、圖型、多媒體)備份一
3、份在Proxy Server屮。為用戶再要通過該P(yáng)roxy訪問相同地址時,可直接從Cache屮獲得數(shù)據(jù)。一個仃 效的Proxy服務(wù)器將叮能將90%的用帚控制在Proxy服務(wù)器Z 2所以不僅用戶的訪問速度 將會提高,網(wǎng)絡(luò)的擁擠狀況也將會人人改觀。(三)多機(jī)共享一個IP地址當(dāng)一個局域網(wǎng)只有一個IP時,就可以在服務(wù)器上安裝Proxy,帑個局域網(wǎng)的用戶就町通過一 個IP訪問Internet 了,這樣將會給局域網(wǎng)用戶節(jié)省人鼠申請IP的費(fèi)用。WWW代理服務(wù)器包括主耍代理gopher, http, ftp, Tclncl等幾種服務(wù),乞種代理服務(wù) 的幕木工作原理是相同的。HTTP代理服務(wù)器是WWW代理服務(wù)器的
4、一個最朿要的組成部 分,同時HTTP的代理服務(wù)器的實(shí)現(xiàn)比較簡單,因此在這里以它為樣本介紹Windows卜的 代理服務(wù)器的實(shí)現(xiàn)方法。本文只介紹的代理服務(wù)器數(shù)據(jù)包轉(zhuǎn)發(fā)的實(shí)現(xiàn)方法,111 J" Cache的處 理比較復(fù)雜,所以本文不對苴進(jìn)行討論。1、Brower通過proxy訪問Web Server頭文件的數(shù)據(jù)賂式111 丁不町能在此解釋HTTP協(xié)議,所以只給出/簡單的數(shù)據(jù)格式的例子: 動作:Brower 獲得 hg:/202.196.4&9/indcx.htmBrower發(fā)送到proxy的數(shù)據(jù):Get http:202 196.4&9/index.htm HTTP/1.0
5、Accept: */*Acccpt-Languagc: zh-cnAcceptEncoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)Host: 202.196.4&9Proxy-Connection: Keep-AliveServer返回proxy的數(shù)據(jù)頭HTTP/1.0 200 OKServer: Microsoft-IIS/2.0Date: Thu. 02 Sep 1999 09:45:42 GMTContent-Type: text/htmlAccept-Ranges:
6、bytesLast-Modified: Wed. 25 Aug 1999 00:10:35 GMTContent-Length: 26402 2、HTTP代理服務(wù)器的建立過程:1) Proxy啟動監(jiān)聽Brower的連接審請2) Proxy接受Brower的申請,Brower向Proxy發(fā)數(shù)據(jù)3) Proxy解析Brower發(fā)的數(shù)據(jù),確定服務(wù)類型(HTTP),服務(wù)器地址和服務(wù)端口號4) Proxy連接服務(wù)器5) Proxy 啟動 B_P_S (bro we r to proxy to server)線程,該線程負(fù) jJi Brower 把數(shù)據(jù)傳到 Proxy» 再由 Proxy 傳到
7、Server6) B_P_S啟動S_P_B (Server to Proxy to Brower)線程,該線程負(fù)責(zé)Server把數(shù)據(jù)傳到 Proxy,再由 Proxy 傳到 Client7) 傳輸完畢結(jié)束B_P_S線程和S_P_B線程8) 循環(huán)啟動線程,直到所有傳輸完成BrowerProxyServerV2.連接上,發(fā)數(shù)據(jù)一1.監(jiān)聽1tI:i1初始化Brower.Proxy Socket 3 .解析>4.連接服務(wù)器5啟動線程數(shù)據(jù)?Proxy.Server Socket1數(shù)據(jù)接收一i發(fā)送-B_P_S線程1Brower_Proxy Socket1JProxy.Server Socket發(fā)送-
8、接收數(shù)據(jù)S_P_B線程Brower_Proxy Socket. . 2. MB»i : “aProxy.Server SocketHTTP代理服務(wù)器的建立過程3、程序框架結(jié)構(gòu)HTTP協(xié)議是各部分單獨(dú)連接傳送的,Web頁面屮的每個文本,圖片都是作為獨(dú)立單元 傳送的,為了提高Proxy的效率防止主程序阻塞,特意啟動三級線程。并線程Z間的關(guān)系主線程在Proxy端I 1監(jiān)聽Brower的申請,然后啟動B_P_S線程;B_P_S線程負(fù)貞接受 每個Brower的川請(每個B_P_S都是獨(dú)立的),在完成Brower到Server單向數(shù)據(jù)傳送的同 時啟動S_P_B線程,然后由S_P_S線程完成Ser
9、ver到Brower的單向數(shù)據(jù)傳送。由篇幅 所限,本文將簡耍介紹B發(fā)給P的數(shù)據(jù)分析函數(shù)、B_P_S線程函數(shù)和S_P_B線程函數(shù)(I)B發(fā)給P的數(shù)據(jù)分析這部分的主要功能是分析B發(fā)給P的數(shù)據(jù),確定服務(wù)類型和服務(wù)器相關(guān)信息??蛻魴C(jī)向服務(wù)器申請接受HTTP數(shù)據(jù),它發(fā)出的HTTP命令格式第一行一般是:命令-URL-協(xié)議,例如上文提到的:Get (命令)hg:/202.196.4&9/indcx.hlm (URL) HTTP/1.0 (協(xié)議)Proxy程序需要通過查找“URL”屮的“hltp:/”串確定是否是HTTP服務(wù),從URL部分中 解析到Web服務(wù)器的地址,作為Proxy連接的H的地址。同時
10、將“hllp:/服務(wù)器地址”部分 從URL部分剔除,這樣可以避免某些Web服務(wù)器重定向URL。int Get Address A ndPort( char * str. char *address. int * port)讀出"Gel”、"hUD:20296.4&9/indcx.hlm” 和 “HTTP1.0"分別存入 s_Cmd, s_Server, s_Pro在s_Pro中査找“hup:/”如果沒冇找到,則表示lb HTTP服務(wù),返冋1 /*port=80 HTTP 缺省端口從 s_Server «|«解析地址 “202.196.4
11、&9” 存入*str把*sir 屮的服務(wù)器地址去掉,即"Get hie:/20296.4&9/indcx.hlm HTTP 1.0” e “Gel /indcx.htmHTTPl.O”,返回 1(II)B_P_S 線程這部分的功能是:Brower把數(shù)據(jù)傳到Proxy,再由Proxy把數(shù)據(jù)傳到Server。B_P_S線程由主線程心動,在整個Proxy程序中負(fù)貞協(xié)調(diào)該線程心動并同步S_P_B線 ®o該線程在Accept Brower以后,復(fù)制門(2,因為Accept函數(shù)是阻塞的,在沒仃收到Brower 的連接巾請時會阻屣,所以同時最多只冇一個空閑(處F Acce
12、pt阻塞狀態(tài))的線程。UINT B_P_S(LPVOID pParm)/Accept Brower的連接申請/AfxBeginThrcad(B_P_S)重新啟動-個 B_P_S 線程收到一塊Brower發(fā)送的數(shù)據(jù)/ GetAddressAndPort分析數(shù)據(jù)并去掉數(shù)據(jù)中的服務(wù)器地址啟動S_P_B線程等待60秒或S_P_B線程連接上服務(wù)器/ Brower把數(shù)據(jù)傳到Proxy,再由Proxy傳到Server,循壞肖到數(shù)據(jù)傳輸完畢等待S_P_B線程結(jié)束。因為B_P_S是線程S_P_B的父線程,所以在S_P_B結(jié)束以前B_P_S 不能提前結(jié)束(III) S_P_B這部分的主要功能是:Server把數(shù)據(jù)
13、傳到Proxy,再由Proxy傳到ClientS_P_B線程由B_P_S線程啟動,是B_P_S的子線程。不把S_P_B線程介入B_P_S線 榨的原因是,S_P_B線程仃一個阻瘙的連接遠(yuǎn)端服務(wù)器的connect動作,當(dāng)網(wǎng)絡(luò)傳輸條件較 差時,該動作會占用很多時間,其至使程序無法控制,是在B_P_S屮加入時間控制以保 證程序正常運(yùn)行。S_P_B相對簡單一些,但是由于它與遠(yuǎn)端服務(wù)器連接,所以一定要注意借 謀與例外的處理,本文僅介紹程序流程,錯誤與例外的處理請參考相關(guān)資料UINT S_P_B(LPVO1D pParm)解析服務(wù)器的域名新建socket并連接到服務(wù)器/ Server把數(shù)據(jù)傳到Proxy,再宙Proxy傳到Brower,循環(huán)1工到數(shù)據(jù)傳輸完畢/返回從以上的程丿了; »J'以看出,Proxy是Brower Wj問Server的屮介,它nJ以監(jiān)控Brower發(fā)11的所 仃的HTTP數(shù)據(jù)包,對這些數(shù)據(jù)包進(jìn)行阻塞,轉(zhuǎn)發(fā)和流屆記錄。同時,它也町以監(jiān)控Server 發(fā)出的所有的HTTP數(shù)據(jù)包,對這些數(shù)據(jù)包進(jìn)行阻窘,轉(zhuǎn)發(fā)和流杲記錄。對Browser而言,在HTTP服務(wù)上是連通的,但是在IP層卻不通;然而對Server而言,它 看到的只是一個IP節(jié)點(diǎn)。在Internet環(huán)境看,這是一個單向的數(shù)據(jù)傳輸模式。所冇這些
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國組合柜用玻璃行業(yè)市場前景預(yù)測及投資價值評估分析報告
- 地基加固分析報告
- 2025年車載電源項目深度研究分析報告
- 2025年中國植物工廠行業(yè)發(fā)展現(xiàn)狀分析及未來前景分析報告(定制版)
- 中國手工工具行業(yè)市場規(guī)模及投資前景預(yù)測分析報告
- 租地栽樹合同協(xié)議書范本
- 眼鏡店轉(zhuǎn)讓協(xié)議合同
- 租賃烘干塔合同協(xié)議
- 私人按揭房抵押合同協(xié)議
- 磚廠資產(chǎn)轉(zhuǎn)讓合同協(xié)議
- 全國青年教師觀摩大賽數(shù)學(xué)賽課一等獎作品教學(xué)設(shè)計模板(三)
- 蒙特利爾認(rèn)知評估量表北京版
- TSXDZ 052-2020 煤礦礦圖管理辦法
- YY/T 1778.1-2021醫(yī)療應(yīng)用中呼吸氣體通路生物相容性評價第1部分:風(fēng)險管理過程中的評價與試驗
- GB/T 28734-2012固體生物質(zhì)燃料中碳?xì)錅y定方法
- GB/T 19363.2-2006翻譯服務(wù)規(guī)范第2部分:口譯
- GB/T 11865-2008船用離心通風(fēng)機(jī)
- GA/T 652-2006公安交通管理外場設(shè)備基礎(chǔ)施工通用要求
- 高考語文一輪復(fù)習(xí):作文素材《長津湖》 課件(53張PPT)
- 《課程與教學(xué)論》形考二答案
評論
0/150
提交評論