精華區beta winsock 關於我們 聯絡資訊
作者 jypai@ns.tp.silkera.net ("Pai. Jin-Yuan"), 看板 WWW 標題 答: 什麼是proxy 時間 Computer Science & Information Engineering (Fri Apr 10 06:11:02 1998) ─────────────────────────────────────── 幾乎每幾天就看到有人在問,"什麼是proxy", "我該用那一台proxy server", "proxy有什麼用"...。 所以我寫了以下這個FAQ,每月定期投書。 希望新手不會一直重覆問這個問題, 也讓老手不需花時間回答這種入門問題,有時間去思考,回覆真正難的問題,進 而讓本區內容更加充實。這篇文章也歡迎有需要的人士引用,或收錄至精華區 (請註明出處)。 本文如有謬誤,歡迎來信或在網上討論。 原文摘錄自旗標出版社 "Internet進階書 --- 實務與理論" (http://www.flag.com.tw/new_book/#pi) --------------------------------------------------------------------- 4-5 Cache和Proxy server的原理及作用。 ... (省略) [區域網路proxy伺服器] <<Proxy伺服器的角色>> 將cache的觀念再擴大,如果我們專門用一部電腦作為大家的快取區, 凡是要出去抓資料前,都先經過這部電腦檢查,真正沒有的資料才連線出去抓取, 那是不是會對加快速度和節省網路頻寬很有幫助呢?這部伺服器就稱作 proxy伺服器,其所處的地位如圖4-5所示。 《圖4-5 Proxy伺服器的角色》 抱歉,圖放不上來 圖4-5和4-3的差別在於多了一部proxy伺服器, 這部伺服器通常位於(網路位置上)離client很近的地方。任何由client出去的要求, 都會先經過proxy伺服器檢查。實際的流程如下: 步驟1: client告訴proxy,"我要foo.htm"。 步驟2: proxy檢查後,確定自己的快取區中的確沒有foo.htm, 於是真正連線到伺服器抓取foo.htm。如果發現自己的快取區中已有foo.htm, 就不連出去,同時直接跳至步驟4。 步驟3: WWW伺服器傳回foo.htm給proxy。 步驟4: proxy傳回foo.htm給client。 ---------------------------------------------------------------------------- | 常見疑惑解答 | +--------------+ Proxy伺服器究竟是什麼? Proxy這個字的原意是代理,所以廣義來說,任何有代理身份的伺服器, 都可以稱作Proxy伺服器,而不僅限於HTTP proxy﹑FTP proxy...這些常見的用途。 但現在因為proxy伺服器最普遍的用途是HTTP proxy,用來加快使用者讀取WWW的速度, 所以變成一般人以為proxy伺服器是WWW專用的。 ---------------------------------------------------------------------------- <<proxy可以省頻寬>> 如果proxy伺服器的快取區夠大(至少數百MB),使用者也多, 的確可以有效地減少圖4-5中步驟2和步驟3所造成的網路交通。節省下來的頻寬一般均在 40%~55%之譜,也就是說,每讀100MB的資料,就可以省下50MB的網路交通。 長期下來,可以省掉許多專線費用。例如若是不用proxy,公司現有的 128K專線就要昇級到256K才夠;但因為大家都用proxy,所以不需昇級。 這樣一年省下的費用可達24萬~80萬不等。 <<Proxy可以加速傳輸速度>> Proxy另一個好處是速度快!因為proxy伺服器距離近, 所以傳輸速度快,可以避開要連到遠端網路所造成的網路塞車現象。 (請參考第二章關於網路速度方面的討論。) 既然proxy是為了要避開連到遠端網路所帶來的網路塞車, 那您選用proxy一定要選一個離自己近的伺服器,才能真正達到效益。 這個道理雖然很簡單,但在USENET討論區上仍經常可見到有人不分清紅皂白, 也不管自己所在的網路位置,就想用台灣大學的proxy伺服器。 正確的作法是使用自己所在單位或是所用ISP的proxy伺服器。 例如台大學生用台大內部的伺服器(如proxy.ntu.edu.tw); HiNet用戶用HiNet的伺服器(proxy.hinet.net); 新絲路用戶用新絲路的伺服器(如proxy.tp.silkera.net)。 選錯伺服器,可能比不用proxy還要慢。除了因為路徑遙遠之外 (例如新絲路的用戶使用台大的proxy),另一個可能是用到負擔很重的伺服器。 有的大ISP在擴線的同時,忽略同時擴充proxy伺服器的效能, 造成數千人共用一部伺服器,速度之慢,可想而知。這種時候,您的正確做法是 關掉瀏覽器中proxy功能(還有順便抱怨一下 :))。 <<Proxy可能產生的問題>> 在上面的敘述中,proxy最主要的作用就是作為快取。 因此它和您瀏覽器中的快取功能同樣會遇到一個問題, 就是要確保資料的一致性。 一般default設定中,proxy伺服器都會連線至WWW伺服器, 確定快取區中的資料是最新的,再將資料送給client。但proxy伺服器通常也可以設定為 "只要是xx小時內才新抓的資料,就不必去WWW伺服器確認,直接傳回給client。" 這樣做,連圖4-5的步驟2所花的時間也省下來了。同樣地, 瀏覽器端只要按[Reload],仍然可以強制要求取得最新資料。 使用proxy還有另一個特點:即使您要求verify document every time, 但是當proxy無法對外連線時(如ISP整個對外的專線全部中斷), 它還是會傳回存在快取中的資料(如果有的話),而不給予錯誤訊息(例如告訴client 取不到最新的資料)。這是大部份proxy伺服器default的反應方式。 其實這對大部份的使用是很方便的,理由就如同上面所述, 大部份時間,我並不在乎取到的資料是不是絕對是最新的。可能很多時候, 大家並不想知道網路其實斷了;proxy 能給他一份資料(而不是回一個錯誤訊息), 雖然可能過期了,使用者反而比較高興。 <<我該使用那部proxy伺服器?>> 答案是,離您最近的那部proxy伺服器! 如果您是ISP的用戶,就使用該ISP所提供的伺服器。現在proxy伺服器已經成了必要配備A 所以每一家ISP都會提供,例如HiNet使用者用proxy.hinet.net﹑ SEEDNET使用者用proxy.seed.net.tw。 新絲路的作法則有些不同, 在每一個撥接點均有一部proxy伺服器(讓proxy伺服器儘量靠近使用者), 您應該使用這部伺服器。 例如台北使用者,他的電子郵件地址是foo@tp.silkera.net, 那他該用的伺服器就是proxy.tp.silkera.net; 高雄使用者的電子郵件地址是foo@ks.silkera.net, 那他所該用的伺服器就是proxy.ks.silkera.net...依此類推。 如果是學校的使用者,則使用學校的伺服器, 例如台大(ntu.edu.tw)使用者用台大的伺服器proxy.ntu.edu.tw, 交大(nctu.edu.tw)使用者用交大的伺服器proxy.nctu.edu.tw...。 說到這裡,您可能已經注意到了proxy伺服器的命名慣例, 就是 proxy + 該機構的domain-name 所以應該是很好記的。唯一要注意的是各家的伺服器用的port都不儘相同, 如HiNet用80﹑新絲路用8000...,因為這個值沒有一個統一的規定, 您必須問該機構的服務中心或管理者 "proxy.xxx.yyy所用的port是多少?" 才能得到肯定的答案。 很多初學者對proxy一知半解,只知道proxy有助於增加速度, 卻不知道挑錯伺服器反而適得其反。 例如網路上常有xxx ISP的使用者問台大proxy伺服器是那一部, 以為使用後可以幫他加快上網速度。 如果您用的ISP無法提供您滿意的proxy服務,您應該向ISP要求﹑ 換一家ISP﹑或是關掉瀏覽器中proxy設定,而不是用一個遠端網路的proxy, 反而減慢存取速度,增加網路上的交通。 在TWNIC(TaiWan Network Information Center)有一個台灣proxy伺服器 的整理表,希望籍由proxy的使用,有效地降低網路交通流量。 有興趣的讀者可參考下面4個URL: http://www.twnic.net/proxy.html http://www.twnic.net/proxy/tanet.html http://www.twnic.net/proxy/hinet.html http://www.twnic.net/proxy/seednet.html -- Writen byYES YES YES YESTER TER TER TERDAY DAY DAY DAY ※ 來源:‧玫瑰園資訊站 bbs2.ltc.edu.tw‧[FROM: h181.s11.ts32.hinet.]