TUN/TAP 学习总结(一) ——简介

TAP/TUN
TAP/TUN 是在 Linux 内核 2.4.x 版本之后完全由软件实现的虚拟网络设备,在功能上 TAP/TUN 和物理网卡没有区别,它们同样都是网络设备,都可以设置 IP 地址,而且都属于 Linux 网络设备管理模块,由 Linux 网络设备管理模块统一来管理。通过字符设备/dev/net/tun作为用户空间和内核空间交换数据的接口。

虚拟网卡和物理网卡
对于一个物理网卡来说,它的两端分别是内核协议栈和外面的物理网络,从内核协议栈接收到的数据会通过物理网络发送出去,通过物理网络接收到的数据会转发到内核协议栈进行处理。

对于一个虚拟网卡来说,它的两端分别是内核协议栈和网络设备驱动,从网络驱动接收到的数据会发送到内核协议栈,应用程序从内核协议栈发送过来的数据会发送到网络驱动。

TUN
TUN 模拟的是一个三层设备,通过它可以处理来自网络层的数据,也就是可以直接处理IP数据包。因此TUN没有 MAC 地址,只能工作在 IP 层,无法与物理网卡做桥转发。

TAP
TAP 设备是一个二层设备,可以收发 MAC 层数据包,即数据链路层,拥有 MAC 层功能,可以与物理网卡做桥转发,支持 MAC 层广播。并且可以给TAP设备配置IP地址。TAP的表现更像一个物理网卡。

用途
tun/tap设备将协议栈中的部分数据包转发给用户空间的应用程序,给用户空间的程序一个处理数据包的机会。常用于加密、VPN、隧道、虚拟机等。

VPN
VPN 软件通常使用TUN 设备,通过配置静态路由的方式将指定网段的用户数据指向tun设备,VPN 软件获取报文后,进行封装/修改将数据从物理网卡发出。回来的数据VPN 软件从协议栈中获取数据解封装得到IP层数据,在通过TUN写回网络协议栈中,协议栈通过socket 返回给用户APP。

TUN/TAP 学习总结(一) ——简介

文章知识点与官方知识档案匹配,可进一步学习相关知识网络技能树跨区域网络的通信学习网络层的作用22133 人正在系统学习中

来源:傍晚的烟火

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年9月21日
下一篇 2021年9月21日

相关推荐