日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TUN/TAP设备浅析(一) -- 原理浅析

發布時間:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TUN/TAP设备浅析(一) -- 原理浅析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TUN/TAP設備淺析

TUN設備

TUN 設備是一種虛擬網絡設備,通過此設備,程序可以方便地模擬網絡行為。TUN 模擬的是一個三層設備,也就是說,通過它可以處理來自網絡層的數據,更通俗一點的說,通過它,我們可以處理 IP 數據包。

先來看看物理設備是如何工作的:

tun設備

上圖中的 eth0 表示我們主機已有的真實的網卡接口 (interface)。

網卡接口 eth0 所代表的真實網卡通過網線(wire)和外部網絡相連,該物理網卡收到的數據包會經由接口 eth0 傳遞給內核的網絡協議棧(Network Stack)。然后協議棧對這些數據包進行進一步的處理。

對于一些錯誤的數據包,協議棧可以選擇丟棄;對于不屬于本機的數據包,協議棧可以選擇轉發;而對于確實是傳遞給本機的數據包,而且該數據包確實被上層的應用所需要,協議棧會通過 Socket API 告知上層正在等待的應用程序。

下面看看 TUN 的工作方式:

數據包處理過程

01_UDP_VPN.png

我們知道,普通的網卡是通過網線來收發數據包的話,而 TUN 設備比較特殊,它通過一個文件收發數據包。

如上圖所示,tunX 和上面的 eth0 在邏輯上面是等價的, tunX 也代表了一個網絡接口,雖然這個接口是系統通過軟件所模擬出來的.

網卡接口 tunX 所代表的虛擬網卡通過文件 /dev/tunX 與我們的應用程序(App) 相連,應用程序每次使用 write 之類的系統調用將數據寫入該文件,這些數據會以網絡層數據包的形式,通過該虛擬網卡,經由網絡接口 tunX 傳遞給網絡協議棧,同時該應用程序也可以通過 read 之類的系統調用,經由文件 /dev/tunX 讀取到協議棧向 tunX 傳遞的所有數據包。

此外,協議棧可以像操縱普通網卡一樣來操縱 tunX 所代表的虛擬網卡。比如說,給 tunX 設定 IP 地址,設置路由,總之,在協議棧看來,tunX 所代表的網卡和其他普通的網卡區別不大,當然,硬要說區別,那還是有的,那就是 tunX 設備不存在 MAC 地址,這個很好理解,tunX 只模擬到了網絡層,要 MAC地址沒有任何意義。當然,如果是 tapX 的話,在協議棧的眼中,tapX 和真是網卡沒有任何區別。

如果我們使用 TUN 設備搭建一個基于 UDPVPN ,那么整個處理過程可能是這幅樣子:

udp vpn

首先,我們的應用程序通過 eth0 和遠程的 UDP 程序相連,對方傳遞過來的 UDP 數據包經由左邊的協議棧傳遞給了應用程序,UDP 數據包的內容其實是一個網絡層的數據包,比如說 IP 數據報,應用程序接收到該數據包的數據(剝除了各種頭部之后的 UDP 數據)之后,然后進行一定的處理,處理完成后將處理后的數據寫入文件 /dev/tunX,這樣,數據會第二次到達協議棧。需要注意的是,上圖中繪制的兩個協議棧其實是同一個協議棧,之所以這么畫是為了敘述的方便。

TAP設備

TAP 設備與 TUN 設備工作方式完全相同,區別在于:

  • TUN 設備是一個三層設備,它只模擬到了 IP 層,即網絡層 我們可以通過 /dev/tunX 文件收發 IP 層數據包,它無法與物理網卡做 bridge,但是可以通過三層交換(如 ip_forward)與物理網卡連通。可以使用ifconfig之類的命令給該設備設定 IP 地址。
  • TAP 設備是一個二層設備,它比 TUN 更加深入,通過 /dev/tapX 文件可以收發 MAC 層數據包,即數據鏈路層,擁有 MAC 層功能,可以與物理網卡做 bridge,支持 MAC 層廣播。同樣的,我們也可以通過ifconfig之類的命令給該設備設定 IP 地址,你如果愿意,我們可以給它設定 MAC 地址。
  • 最后,關于文章中出現的二層,三層,我這里說明一下,第一層是物理層,第二層是數據鏈路層,第三層是網絡層,第四層是傳輸層。

    參考文章:
    [1]. https://blog.kghost.info/2013/03/27/linux-network-tun/

    ?

    總結

    以上是生活随笔為你收集整理的TUN/TAP设备浅析(一) -- 原理浅析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。