linux虚拟网络设备之,Linux虚拟网络设备
8種機(jī)械鍵盤軸體對(duì)比
本人程序員,要買一個(gè)寫代碼的鍵盤,請(qǐng)問紅軸和茶軸怎么選?
tap/tun常用于隧道通訊,通過一個(gè)字符設(shè)備來實(shí)現(xiàn)用戶態(tài)和內(nèi)核態(tài)的通訊,字符設(shè)備一端連接著用戶空間,一端連接著內(nèi)核空間。
對(duì)應(yīng)的字符設(shè)備文件位置:tap: /dev/tap0
tun: /dev/net/tun
當(dāng)應(yīng)用程序打開字符設(shè)備文件時(shí),驅(qū)動(dòng)程序會(huì)創(chuàng)建并注冊(cè)相應(yīng)的虛擬設(shè)備接口,以tunX或tapX命名。應(yīng)用程序關(guān)閉設(shè)備文件時(shí),驅(qū)動(dòng)程序會(huì)刪除tunX和tapX網(wǎng)絡(luò)虛擬設(shè)備,并刪除建立起來的路由信息。
兩個(gè)設(shè)備的不同點(diǎn):tap是一個(gè)二層網(wǎng)絡(luò)設(shè)備,只能處理二層的以太網(wǎng)幀
tun是一個(gè)點(diǎn)對(duì)點(diǎn)的三層網(wǎng)絡(luò)設(shè)備,只能處理處理三層的IP數(shù)據(jù)包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設(shè)備應(yīng)用舉例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
應(yīng)用程序A要發(fā)送數(shù)據(jù)到其他物理機(jī)192.168.1.100,由于物理網(wǎng)絡(luò)環(huán)境下只有10.1.1.11和10.1.1.100是相互連通的,192.168.1.11和192.168.1.100是不通的,為了192.168.1.11和192.168.1.100能夠進(jìn)行通訊,需要將數(shù)據(jù)包進(jìn)行一次封裝。
應(yīng)用程序B是通過打開字符設(shè)備文件/dev/net/tun0的方式來打開網(wǎng)絡(luò)設(shè)備
流程如下:A構(gòu)造數(shù)據(jù)包,目的ip為192.168.1.100,并發(fā)送給協(xié)議棧
協(xié)議棧根據(jù)數(shù)據(jù)包中的ip地址,匹配路由規(guī)則,要從tun0出去
內(nèi)核協(xié)議棧將數(shù)據(jù)包發(fā)送給tun0網(wǎng)絡(luò)設(shè)備
tun0發(fā)送應(yīng)用程序B打開,于是將數(shù)據(jù)發(fā)送給應(yīng)用程序B
B收到數(shù)據(jù)包后,在用戶態(tài)構(gòu)造一個(gè)新的數(shù)據(jù)包,源IP為eth0的IP 10.1.1.11,目的IP為配置的對(duì)端10.1.1.100,并封裝原來的數(shù)據(jù)包
協(xié)議棧根據(jù)當(dāng)前數(shù)據(jù)包的IP地址選擇路由,將數(shù)據(jù)包發(fā)送給eth0
reference
總結(jié)
以上是生活随笔為你收集整理的linux虚拟网络设备之,Linux虚拟网络设备的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银行的定期存款年利率是多少
- 下一篇: linux du -h按文件大小,【玩转