linux虚拟网络设备之,Linux虚拟网络设备
8種機械鍵盤軸體對比
本人程序員,要買一個寫代碼的鍵盤,請問紅軸和茶軸怎么選?
tap/tun常用于隧道通訊,通過一個字符設備來實現用戶態和內核態的通訊,字符設備一端連接著用戶空間,一端連接著內核空間。
對應的字符設備文件位置:tap: /dev/tap0
tun: /dev/net/tun
當應用程序打開字符設備文件時,驅動程序會創建并注冊相應的虛擬設備接口,以tunX或tapX命名。應用程序關閉設備文件時,驅動程序會刪除tunX和tapX網絡虛擬設備,并刪除建立起來的路由信息。
兩個設備的不同點:tap是一個二層網絡設備,只能處理二層的以太網幀
tun是一個點對點的三層網絡設備,只能處理處理三層的IP數據包1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26┌──────────────┐
│ │
│ APP │
│ │
└───────┬──────┘
│
│
│
│
│
│
┌────────────▼──────────┐
│ │
─ ─ ─ ─ ─ ─│ /dev/net/tun ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
│ │
└────────────┬──────────┘
│
│
│
│
│
┌───────▼──────┐ ┌──────────────┐
│ │ │ │
│ tunX ├────────────────?│Network Stack │
│ │ │ │
└──────────────┘ └──────────────┘
tun設備應用舉例1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33┌──────────────┐ ┌──────────────┐
│ │ │ │
│ APP A │ │ APP B │?┐
│ │ │ │ │
└───────┬──────┘ └───────┬──────┘ │
│ │ │
│ │ │
1│ │ │
│ 5│ │
│ │ │
─ ─ ─ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ┼ ─ ─ ─ ─ ─
│ │ │
│ │ 4│
│ │ │
┌────────────▼────────────────────────▼─────┐ │
│ │ │
│ Network Stack │ │
│ │ │
└────────────┬───────────────────────┬──────┘ │
│ │ │
6│ 3│ │
│ │ │
┌───────▼──────┐ ┌─▼─────────┴──┐
│ │ │ │
10.1.1.11 │ eth0 │ │ tun0 │ 192.168.1.11
│ │ │ │
└───────┬──────┘ └──────────────┘
│
7│
│
▼
10.1.1.100 / 192.168.1.100
應用程序A要發送數據到其他物理機192.168.1.100,由于物理網絡環境下只有10.1.1.11和10.1.1.100是相互連通的,192.168.1.11和192.168.1.100是不通的,為了192.168.1.11和192.168.1.100能夠進行通訊,需要將數據包進行一次封裝。
應用程序B是通過打開字符設備文件/dev/net/tun0的方式來打開網絡設備
流程如下:A構造數據包,目的ip為192.168.1.100,并發送給協議棧
協議棧根據數據包中的ip地址,匹配路由規則,要從tun0出去
內核協議棧將數據包發送給tun0網絡設備
tun0發送應用程序B打開,于是將數據發送給應用程序B
B收到數據包后,在用戶態構造一個新的數據包,源IP為eth0的IP 10.1.1.11,目的IP為配置的對端10.1.1.100,并封裝原來的數據包
協議棧根據當前數據包的IP地址選擇路由,將數據包發送給eth0
reference
總結
以上是生活随笔為你收集整理的linux虚拟网络设备之,Linux虚拟网络设备的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银行的定期存款年利率是多少
- 下一篇: linux du -h按文件大小,【玩转