下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、HTTP代理服務(wù)器在Windows下的實(shí)現(xiàn)摘耍:本文介紹了代理服務(wù)器的優(yōu)點(diǎn),HTTP代理服務(wù)器在Windows卜的實(shí)現(xiàn),最后 簡(jiǎn)單討論實(shí)現(xiàn)代理服務(wù)器的意義。關(guān)鍵字:代理服務(wù)器(proxy)、HTTP、Windows、線程普通的因特網(wǎng)訪問是一個(gè)典型的客戸朗1/服務(wù)器(Client/Server)結(jié)構(gòu):用戶本地計(jì)算機(jī) 上的客門端程庁如瀏覽器發(fā)生請(qǐng)求,遠(yuǎn)端WWW服務(wù)器程序響應(yīng)請(qǐng)求并捉供相應(yīng)的數(shù)據(jù)。 而代理(Proxy)處于客戶機(jī)和服務(wù)器之間,對(duì)丁服務(wù)器來說,Proxy是客戶機(jī),提出請(qǐng)求: 對(duì)于客戶機(jī)來說,Proxy是服務(wù)器,它接受請(qǐng)求并提供數(shù)據(jù)。代理服務(wù)器模電代理服務(wù)器具有以卜兒個(gè)的優(yōu)點(diǎn):(一)安全
2、屏障Proxy是建立在應(yīng)用層的軟件,它的最主耍功能是作為firewall的旋要組成部分,為它保 護(hù)的主機(jī)起到了安全屏障的作用。Proxy起到流帚控制,包過濾,訪問控制,和操作系統(tǒng)用 八集成等作用,所以Proxy町以成為簡(jiǎn)單網(wǎng)絡(luò)管理軟件的核心部分,同時(shí)它也是屮小型企業(yè) INTERNER訪問解決方案的重要組成部分。(二)提高網(wǎng)絡(luò)性能當(dāng)Internet的用戶以指數(shù)函數(shù)增長(zhǎng)時(shí),網(wǎng)絡(luò)的擁擠是網(wǎng)絡(luò)管理的一個(gè)幣:耍問題。Proxy Server 就好像一個(gè)人儲(chǔ)藏庫(kù),它仃很人的Cache空何。如來通過該P(yáng)roxy何人左過了某個(gè)站點(diǎn),傳 輸了某此內(nèi)容,那么Proxy會(huì)將相關(guān)的資料(包含文字、圖型、多媒體)備份一
3、份在Proxy Server屮。為用戶再要通過該P(yáng)roxy訪問相同地址時(shí),可直接從Cache屮獲得數(shù)據(jù)。一個(gè)仃 效的Proxy服務(wù)器將叮能將90%的用帚控制在Proxy服務(wù)器Z 2所以不僅用戶的訪問速度 將會(huì)提高,網(wǎng)絡(luò)的擁擠狀況也將會(huì)人人改觀。(三)多機(jī)共享一個(gè)IP地址當(dāng)一個(gè)局域網(wǎng)只有一個(gè)IP時(shí),就可以在服務(wù)器上安裝Proxy,帑個(gè)局域網(wǎng)的用戶就町通過一 個(gè)IP訪問Internet 了,這樣將會(huì)給局域網(wǎng)用戶節(jié)省人鼠申請(qǐng)IP的費(fèi)用。WWW代理服務(wù)器包括主耍代理gopher, http, ftp, Tclncl等幾種服務(wù),乞種代理服務(wù) 的幕木工作原理是相同的。HTTP代理服務(wù)器是WWW代理服務(wù)器的
4、一個(gè)最朿要的組成部 分,同時(shí)HTTP的代理服務(wù)器的實(shí)現(xiàn)比較簡(jiǎn)單,因此在這里以它為樣本介紹Windows卜的 代理服務(wù)器的實(shí)現(xiàn)方法。本文只介紹的代理服務(wù)器數(shù)據(jù)包轉(zhuǎn)發(fā)的實(shí)現(xiàn)方法,111 J" Cache的處 理比較復(fù)雜,所以本文不對(duì)苴進(jìn)行討論。1、Brower通過proxy訪問Web Server頭文件的數(shù)據(jù)賂式111 丁不町能在此解釋HTTP協(xié)議,所以只給出/簡(jiǎn)單的數(shù)據(jù)格式的例子: 動(dòng)作: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啟動(dòng)監(jiān)聽Brower的連接審請(qǐng)2) Proxy接受Brower的申請(qǐng),Brower向Proxy發(fā)數(shù)據(jù)3) Proxy解析Brower發(fā)的數(shù)據(jù),確定服務(wù)類型(HTTP),服務(wù)器地址和服務(wù)端口號(hào)4) Proxy連接服務(wù)器5) Proxy 啟動(dòng) B_P_S (bro we r to proxy to server)線程,該線程負(fù) jJi Brower 把數(shù)據(jù)傳到 Proxy» 再由 Proxy 傳到
7、Server6) B_P_S啟動(dòng)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)啟動(dòng)線程,直到所有傳輸完成BrowerProxyServerV2.連接上,發(fā)數(shù)據(jù)一1.監(jiān)聽1tI:i1初始化Brower.Proxy Socket 3 .解析>4.連接服務(wù)器5啟動(dòng)線程數(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頁(yè)面屮的每個(gè)文本,圖片都是作為獨(dú)立單元 傳送的,為了提高Proxy的效率防止主程序阻塞,特意啟動(dòng)三級(jí)線程。并線程Z間的關(guān)系主線程在Proxy端I 1監(jiān)聽Brower的申請(qǐng),然后啟動(dòng)B_P_S線程;B_P_S線程負(fù)貞接受 每個(gè)Brower的川請(qǐng)(每個(gè)B_P_S都是獨(dú)立的),在完成Brower到Server單向數(shù)據(jù)傳送的同 時(shí)啟動(dòng)S_P_B線程,然后由S_P_S線程完成Ser
9、ver到Brower的單向數(shù)據(jù)傳送。由篇幅 所限,本文將簡(jiǎn)耍介紹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ù)器申請(qǐng)接受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的地址。同時(shí)
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線程由主線程心動(dòng),在整個(gè)Proxy程序中負(fù)貞協(xié)調(diào)該線程心動(dòng)并同步S_P_B線 ®o該線程在Accept Brower以后,復(fù)制門(2,因?yàn)锳ccept函數(shù)是阻塞的,在沒仃收到Brower 的連接巾請(qǐng)時(shí)會(huì)阻屣,所以同時(shí)最多只冇一個(gè)空閑(處F Acce
12、pt阻塞狀態(tài))的線程。UINT B_P_S(LPVOID pParm)/Accept Brower的連接申請(qǐng)/AfxBeginThrcad(B_P_S)重新啟動(dòng)-個(gè) B_P_S 線程收到一塊Brower發(fā)送的數(shù)據(jù)/ GetAddressAndPort分析數(shù)據(jù)并去掉數(shù)據(jù)中的服務(wù)器地址啟動(dòng)S_P_B線程等待60秒或S_P_B線程連接上服務(wù)器/ Brower把數(shù)據(jù)傳到Proxy,再由Proxy傳到Server,循壞肖到數(shù)據(jù)傳輸完畢等待S_P_B線程結(jié)束。因?yàn)锽_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線程啟動(dòng),是B_P_S的子線程。不把S_P_B線程介入B_P_S線 榨的原因是,S_P_B線程仃一個(gè)阻瘙的連接遠(yuǎn)端服務(wù)器的connect動(dòng)作,當(dāng)網(wǎng)絡(luò)傳輸條件較 差時(shí),該動(dòng)作會(huì)占用很多時(shí)間,其至使程序無法控制,是在B_P_S屮加入時(shí)間控制以保 證程序正常運(yùn)行。S_P_B相對(duì)簡(jiǎn)單一些,但是由于它與遠(yuǎn)端服務(wù)器連接,所以一定要注意借 謀與例外的處理,本文僅介紹程序流程,錯(cuò)誤與例外的處理請(qǐng)參考相關(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ù)包,對(duì)這些數(shù)據(jù)包進(jìn)行阻塞,轉(zhuǎn)發(fā)和流屆記錄。同時(shí),它也町以監(jiān)控Server 發(fā)出的所有的HTTP數(shù)據(jù)包,對(duì)這些數(shù)據(jù)包進(jìn)行阻窘,轉(zhuǎn)發(fā)和流杲記錄。對(duì)Browser而言,在HTTP服務(wù)上是連通的,但是在IP層卻不通;然而對(duì)Server而言,它 看到的只是一個(gè)IP節(jié)點(diǎn)。在Internet環(huán)境看,這是一個(gè)單向的數(shù)據(jù)傳輸模式。所冇這些
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 不動(dòng)產(chǎn)抵押借款示范協(xié)議2024年版版B版
- 二零二四年度航油供應(yīng)與物流服務(wù)全面合作協(xié)議
- 2024年規(guī)范:鐵路貨物運(yùn)輸勞務(wù)合同2篇
- 2024年高層管理崗位人才聘用協(xié)議
- 2024試用期勞動(dòng)協(xié)議書模板:新材料產(chǎn)業(yè)專用版3篇
- 2024權(quán)買賣合同協(xié)議書:醫(yī)療設(shè)備使用權(quán)轉(zhuǎn)讓協(xié)議3篇
- 2024年高新技術(shù)企業(yè)研發(fā)項(xiàng)目不可撤銷風(fēng)險(xiǎn)擔(dān)保書3篇
- 中國(guó)傳媒大學(xué)《動(dòng)物學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江同濟(jì)科技職業(yè)學(xué)院《生物實(shí)驗(yàn)安全概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 長(zhǎng)江工程職業(yè)技術(shù)學(xué)院《證券從業(yè)知識(shí)技能》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024至2030年中國(guó)柔性電路板(FPC)行業(yè)市場(chǎng)深度分析及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 小學(xué)三年級(jí)下一字多義(答案)
- 江西省第一屆職業(yè)技能大賽分賽場(chǎng)項(xiàng)目技術(shù)文件(世賽選拔)木工
- 反分裂課件完整版本
- 氧氣站安全責(zé)任書
- 一年級(jí)上冊(cè)數(shù)學(xué)教案-第3單元 加與減(一)9 小雞吃食(北師大版)
- 犀角多肽與免疫細(xì)胞相互作用的機(jī)制研究
- 中國(guó)食物成分表2018年(標(biāo)準(zhǔn)版)第6版
- 九三學(xué)社申請(qǐng)入社人員簡(jiǎn)歷表
- 植樹問題專項(xiàng)講義(五大類型+方法+練習(xí)+答案)六年級(jí)數(shù)學(xué)小升初總復(fù)習(xí)
- 二年級(jí)上冊(cè)數(shù)學(xué)豎式計(jì)算300道帶答案
評(píng)論
0/150
提交評(píng)論