openvpn原理如下:

openvpn原理如下:
1
openvpn驅動部分實現了網卡處理和字符設備。網卡處理網絡數據,字符設備完成與應用層的數據交互。
2
使用openvpn必須修改路由表
工作過程


 發送數據:
1
應用程序發送網絡數據
2
網絡數據根據修改後的路由表把數據路由到虛擬網卡
3
虛擬網卡把數據放到數據隊列中
4
字符設備從數據隊列中取數據,然後送給應用層
5
應用層把數據轉發給物理網卡
6
物理網卡發送數據

接收過程:
1
物理網卡接受到數據,並傳到應用空間
2
應用守護程序通過字符設備,把數據傳給驅動網卡
3
數據通過虛擬網卡重新進入網絡堆棧
4
網絡堆棧把數據傳給上層真實的應用程序。
基本上所有的VPN都是這麼實現的:
1.  
更改路由表,通過應用程序調用API函數更改和添加路由表。將數據包都先發送到虛擬網卡。
2.  
虛擬網卡得到數據包,先判斷該數據包是什麼類型的數據包。因爲本身是一個物理的虛擬網卡,它必須去處理ARP
,DHCP等一些數據包,用於欺騙上層網絡,否則該網卡將不能工作,這一點比IMD的驅動要麻煩一些。
3.  
虛擬網卡判斷得到的數據包是普通的Tcp和Udp數據包後,將該數據包壓入一個堆棧。該堆棧是一個和應用程序(通
常這個應用程序被稱爲守護程序)共享的內存塊。然後驅動Set一個Event。上層應用程序Wait這個Event。並從這個堆棧
中取得這個數據包。
4.  
上層應用程序得到這個數據包後,修改修改這個數據包的內容,然後建立一個Socket把該數據包重新封裝成TCP或
者UDP包後從物理網卡發送到Vpn的服務器上,由服務器再進行處理。轉發到最終的目的IP。
假設我們要打開一個IE,那麼數據包的路線如下所示。
ie-vnic-vpn client-tcp/udp-vpn網關-route-web服務器
  接收的時候正好相反。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章