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日

相关推荐