天天看點

正向代理、透明代理、反向代理

代理方式有三種:正向代理、透明代理和反向代理。

一、正向代理

正向代理是一個位于用戶端和目标伺服器之間的代理伺服器(中間伺服器)。為了從目标伺服器取得内容,用戶端向代理伺服器發送一個請求,并且指定目标伺服器,之後代理向目标伺服器轉發請求并且将獲得的内容傳回給用戶端。正向代理的情況下用戶端必須要進行一些特别的設定才能使用。

正向代理可以但不限于為區域網路内用戶端做代理,它扮演的角色類似于NAT。

代理内部主機上網,共享上網,緩存,控制内網使用者上網行為等功能(用戶端需要設定代理伺服器的IP和代理端口)

正向代理分析圖:
		外網
		 |
		modem
		 |
		路由器(dhcp,snat共享上網,上網行為控制,限速等)
		 |
		 |
	 squid正向代理(共享上網,靜态頁面緩存加速,内網使用者四七層上網行為控制,限速等)
		 |
		 |	
	|----------------------|
 上網使用者一		    上網使用者二
           

正向代理服務的作用

1. 替代通路

2. 加速通路

3. Cache作用

Cache(緩存)技術和代理服務技術是緊密聯系的(不光是正向代理,反向代理也使用了Cache(緩存)技術。

還是上面的例子,假如某宿舍的學生 A 通過這個代理伺服器下載下傳了某個動作電影,而在此之前同學 B 已經通過這個代理伺服器下載下傳過,這個時候代理伺服器可以将這個電影儲存在代理伺服器上一段時間,A 去下載下傳的時候直接傳回給 A,而不需要再跑去目标伺服器重新下載下傳。這個過程就是 Cache 命中,如果用戶端和代理之間帶寬夠高,也可以起到加速通路的作用,達到秒下載下傳的效果。

4. 用戶端通路授權

比如在一些機構内部不能随意通路外網,這個時候就可以用正向代理伺服器,為不同的使用者配置設定固定 IP 或者 ID 身份識别,用戶端通過設定代理伺服器通路網絡時,代理伺服器會檢查網絡請求的用戶端來源,非允許的用戶端請求資料包會被直接丢棄。

5. 隐藏通路者的行蹤

顯然,如果我們通過一個代理伺服器去通路某個網站資源,網站伺服器隻能看到代理伺服器在發請求,并不知道其背後真正的請求者,這就可以在一定程度上起到隐匿行蹤的作用。

二、透明代理

透明代理(transparent proxy),透明代理其實也叫做内網代理(inline proxy)、攔截代理(intercepting proxy)以及強制代理(force proxy)。透明代理和正向代理的行為很相似,但細節上有所不同。透明代理将攔截用戶端發送的請求,攔截後自己代為通路服務端,擷取響應結果後再由透明代理交給用戶端。一般公司内的上網行為管理軟體就是透明代理。

​​和正向代理的功能完全一緻(用戶端不需要設定代理伺服器的IP和代理端口,對使用者是透明的)

例如,用戶端要通路www.baidu.com,如果是正向代理的方式,用戶端會指明它要交給正向代理服務,就像路由中說要交給網關一樣。如果是透明代理的方式,則是發送出去,然後被透明代理攔截,用戶端以為請求的這個過程是自己完成的,并不知道是透明代理完成的。

正向代理和透明代理的差別

細分起來還是有不少的,但主要幾點:

  • 正向代理時,用戶端明确指明請求要交給正向代理服務,也就是說要設定代理。而透明代理對用戶端是透明的,用戶端不知道更不用設定透明代理,但是用戶端發出去的請求都會被透明代理攔截。
  • 正向代理為了實作某些額外的需求,有可能會修改請求封包,但按照RFC文檔的要求,透明代理不會修改請求封包。
  • 正向代理可以内網也可以外網,但透明代理都是内網。

三、反向代理

反向代理正好與正向代理相反,對于用戶端而言代理伺服器就像是原始伺服器,并且用戶端不需要進行任何特别的設定。

用戶端向反向代理的命名空間(name-space)中的内容發送普通請求,接着反向代理将判斷向何處(原始伺服器)轉交請求,并将獲得的内容傳回給用戶端,使得這些内容就好似他自己一樣,一次用戶端并不會感覺到反向代理後面的服務,也是以不需要用戶端做任何設定,隻需要把反向代理伺服器當成真正的伺服器就好了。

反向代理	從外部網絡通路内部伺服器,與正向方向相反,主要用于網站架構的緩存加速或CDN
反向代理分析圖:
			client
			  |
			  |
			反向代理 (緩存加速,七層切分,負載均衡,會話保持等)
			  |
			  |	
			  web
           

舉個例子,使用者通路 http://julizi.com/404

但julizi.com上并不存在 404 頁面,于是它是偷偷從另外一台伺服器上取回來,然後作為自己的内容吐給使用者,但使用者并不知情,這很正常。這個域名所對應的伺服器就使用了反向代理的功能。

反向代理伺服器的作用

  1. 保護和隐藏資源伺服器
  2. 負載均衡,CDN 技術的就是利用了反向代理技術

正向代理和反向代理的差別

從用途上來講:

  • 正向代理的典型用途是為在防火牆内的區域網路用戶端提供通路Internet的途徑。
  • 正向代理還可以使用緩沖特性減少網絡使用率。
  • 反向代理的典型用途是将防火牆後面的伺服器提供給Internet使用者通路。
  • 反向代理還可以為後端的多台伺服器提供負載平衡,或為後端較慢的伺服器提供緩沖服務。
  • 另外,反向代理還可以啟用進階URL政策和管理技術,進而使處于不同web伺服器系統的web頁面同時存在于同一個URL空間下。

從安全性來講:

  • 正向代理允許用戶端通過它通路任意網站并且隐藏用戶端自身,是以你必須采取安全措施以確定僅為經過授權的用戶端提供服務。
  • 反向代理對外都是透明的,通路者并不知道自己通路的是一個代理。

參考:

  1. https://www.xiaohuait.com/2019/11/29/squid%E8%AF%A6%E8%A7%A3%EF%BC%88%E6%AD%A3%E5%90%91%E4%BB%A3%E7%90%86%E3%80%81%E9%80%8F%E6%98%8E%E4%BB%A3%E7%90%86%E3%80%81%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%EF%BC%89/
  2. https://blog.csdn.net/suool/article/details/105241362
  3. https://zhuanlan.zhihu.com/p/68560128
  4. https://www.cnblogs.com/f-ck-need-u/p/9739870.html