TUN i TAP to sterowniki wirtualnych kart sieciowych.
Pakiety przekazane przez system operacyjny do sterownika TUN/TAP nie są wysyłane do fizycznego urządzenia (takiego jak karta sieciowa PCI), lecz przetwarzane przez oprogramowanie. Oprogramowanie może również za pośrednictwem TUN/TAP przekazywać pakiety, które system operacyjny odbierze i potraktuje tak, jakby pochodziły one z sieci zewnętrznej. Jest to wykorzystywane do komunikacji z maszynami wirtualnymi.
TAP operuje na pakietach drugiej warstwy ISO OSI RM (warstwa łącza danych), np. na ramkach Ethernetowych.
TUN operuje na pakietach trzeciej warstwy ISO OSI RM (warstwa sieciowa), np. na pakietach IP.
Przykładowe dodanie interfejsu tap w Linuksie:
root@host:~# tunctl -t tap1
Set 'tap1' persistent and owned by uid 0
root@host:~# ifconfig tap1
tap1 Link encap:Ethernet HWaddr 00:ff:00:ff:00:ff
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)