虚拟网络网卡与物理网卡的区别

网卡就像一根管道(piple),数据从一端进入,从另外一端流出。物理网卡的一端连接内核协议栈,另外一端连接外部网络,当数据从协议栈流入物理网卡,将从另外一端流入外部网络。虚拟网络与之类似,只是虚拟网卡的一端连接内核协议栈,另外一端连接哪里就不一定,由相应的网卡驱动程序决定。

TUN/TAP是Linux内核中的其中一种虚拟网卡,它的一端连接内核协议栈,另外一端连接的是用户空间的应用程序(比如OpenVPN)。

TUN/TAP应用案例

OpenVPN就是使用TUN/TAP设备在公网上建立加密通道,实现异地网络内网连通。

实现原理图

tun_tap

参考链接

Linux虚拟网络设备之tun/tap - Linux程序员 - SegmentFault 思否