TUN/TAP区别
在計算機網(wǎng)絡(luò)中,TUN與TAP是操作系統(tǒng)內(nèi)核中的虛擬網(wǎng)絡(luò)設(shè)備。不同于普通靠硬件網(wǎng)路板卡實現(xiàn)的設(shè)備,這些虛擬的網(wǎng)絡(luò)設(shè)備全部用軟件實現(xiàn),并向運行于操作系統(tǒng)上的軟件提供與硬件的網(wǎng)絡(luò)設(shè)備完全相同的功能。
TAP 等同于一個以太網(wǎng)設(shè)備,它操作第二層數(shù)據(jù)包如以太網(wǎng)數(shù)據(jù)幀。TUN模擬了網(wǎng)絡(luò)層設(shè)備,操作第三層數(shù)據(jù)包比如IP數(shù)據(jù)封包。
操作系統(tǒng)通過TUN/TAP設(shè)備向綁定該設(shè)備的用戶空間的程序發(fā)送數(shù)據(jù),反之,用戶空間的程序也可以像操作硬件網(wǎng)絡(luò)設(shè)備那樣,通過TUN/TAP設(shè)備發(fā)送數(shù)據(jù)。在后種情況下,TUN/TAP設(shè)備向操作系統(tǒng)的網(wǎng)絡(luò)棧投遞(或“注入”)數(shù)據(jù)包,從而模擬從外部接受數(shù)據(jù)的過程。
服務(wù)器如果擁有TUN/TAP模塊,就可以開啟VPN代理功能。
虛擬網(wǎng)卡TUN/TAP 驅(qū)動程序設(shè)計原理:
虛擬網(wǎng)卡TUN/TAP 驅(qū)動程序設(shè)計原理
一個是讓它工作在二層上。一個是工作在三層上。
http://vtun.sourceforge.net/tun/faq.html
Universal TUN/TAP device driver Frequently Asked Question.
1. General questions.
1.1 What is the TUN ?1.2 What is the TAP ?1.3 What platforms are supported by TUN/TAP driver ?1.4 What is TUN/TAP driver used for?1.5 How does Virtual network device actually work ?1.6 What is the difference between TUN driver and TAP driver?1.7 What is the difference between BPF and TUN/TAP driver?1.8 Does TAP driver support kernel Ethernet bridging?
1. General questions.
1.1 What is the TUN ?
The TUN is Virtual Point-to-Point network device.
TUN driver was designed as low level kernel support for
IP tunneling. It provides to userland application
two interfaces:
- /dev/tunX - character device;
- tunX - virtual Point-to-Point interface.
Userland application can write IP frame to /dev/tunX
and kernel will receive this frame from tunX interface.
In the same time every frame that kernel writes to tunX
interface can be read by userland application from /dev/tunX
device.
1.2 What is the TAP ?
The TAP is a Virtual Ethernet network device.
TAP driver was designed as low level kernel support for
Ethernet tunneling. It provides to userland application
two interfaces:
- /dev/tapX - character device;
- tapX - virtual Ethernet interface.
Userland application can write Ethernet frame to /dev/tapX
and kernel will receive this frame from tapX interface.
In the same time every frame that kernel writes to tapX
interface can be read by userland application from /dev/tapX
device.
1.3 What platforms are supported by TUN/TAP driver ?
Currently driver has been written for 3 Unices:
Linux kernels 2.2.x, 2.4.x
FreeBSD 3.x, 4.x, 5.x
Solaris 2.6, 7.0, 8.0
1.4 What is TUN/TAP driver used for?
As mentioned above, main purpose of TUN/TAP driver is tunneling.
It used by VTun (http://vtun.info).
1.5 How does Virtual network device actually work ?
Virtual network device can be viewed as a simple Point-to-Point or
Ethernet device, which instead of receiving packets from a physical
media, receives them from user space program and instead of sending
packets via physical media sends them to the user space program.
Let's say that you configured IPX on the tap0, then whenever
kernel sends any IPX packet to tap0, it is passed to the application
(VTun for example). Application encrypts, compresses and sends it to
the other side over TCP or UDP. Application on other side decompress
and decrypts them and write packet to the TAP device, kernel handles
the packet like it came from real physical device.
1.6 What is the difference between TUN driver and TAP driver?
TUN works with IP frames. TAP works with Ethernet frames.
1.7 What is the difference between BPF and TUN/TAP driver?
BFP is a advanced packet filter. It can be attached to existing
network interface. It does not provide virtual network interface.
TUN/TAP driver does provide virtual network interface and it is possible
to attach BPF to this interface.
1.8 Does TAP driver support kernel Ethernet bridging?
Yes. Linux and FreeBSD drivers support Ethernet bridging.
總結(jié)
- 上一篇: 经常晒太阳有什么好处 好处三:预防近视眼
- 下一篇: Sametime SDK