TUN适用于IP帧。Tap适用于以太网帧。
TAP摸拟一个以太网设备(以arp广播MAC识别),它操作第二层数据包如以太网数据帧。
TUN模拟了网络层ip设备(以点对点的方式,使用ip标识),操作第三层数据包比如IP数据封包。

TUN/TAP口就相当于是一个以太网卡,只是虚拟出来的东西。

 
如上图所示。实体网卡是通过网线来进行收发报文,也就是说在实体网线上传输的是已经完全封装好的报文格式,也就是完整的以态帧。
而对于TAP/TUN就有点区别了,我们知道它是虚拟出来的,那么它们就不是实体网卡。
那么问题来了,那么它们收到的报文是从哪里传送过来的?
当然还是得有“网线”了,但是这里说的“网线”并不是真正的网线,而是文件描述符。
TAP/TUN在用户态的接口也与实体网卡一样的,也就通过ifconfig可以配置和管理的网络接口,通过socket绑定到这些
接口上收到的数据就是用户态的数据,也就是剥离最外层二三层的数据。

openvpn有dev
tun和dev tap模式的区别。

cookbook的解释是:A TUN device is used mostly for VPN
tunnels where only IP-traffic is used. A TAP device allows full Ethernet
frames to be passed over the OpenVPN tunnel. hence providing support
for non-ip based protocols such as IPX and AppleTalk.

简单的翻译一下:一个TUN设备大多时候,被用于基于IP协议的通讯。一个TAP设备允许完整的以太网帧通过Openvpn隧道,因此提供非ip协议的支持,比如IPX协议和AppleTalk协议。

再简单的说一下,如果在互联网上使用,那肯定是基于ip协议的,用tun没错,如果是在一个以太网内使用,那么tap可能是一个更好的选择。



 
像这种模式,就是VPN的典型应用场景了。 这也是开源项目Vtun
的模型
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

TAP/TUN摘要的更多相关文章

  1. 一文总结 Linux 虚拟网络设备 eth, tap/tun, veth-pair

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Linux 虚 ...

  2. 利用 Linux tap/tun 虚拟设备写一个 ICMP echo 程序

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 前面两篇文章已 ...

  3. Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 在前面一篇文章 ...

  4. [原创] 详解云计算网络底层技术——虚拟网络设备 tap/tun 原理解析

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 在云计算时代, ...

  5. 【转】Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

    原文:https://www.cnblogs.com/bakari/p/10449664.html -------------------------------------------------- ...

  6. TAP/TUN(二)

    tap.c代码      #include<assert.h> #include<fcntl.h> #include<stdio.h> #include<st ...

  7. TAP/TUN浅析(一)

    参考链接:https://www.ibm.com/developerworks/cn/linux/1310_xiawc_networkdevice/ TAP 设备与 VETH 设备     TUN/T ...

  8. TAP/TUN浅析

    转:http://www.cnblogs.com/yml435/p/5917628.html 参考链接:https://www.ibm.com/developerworks/cn/linux/1310 ...

  9. [转]Linux-虚拟网络设备-tun/tap

    转: 原文:https://blog.csdn.net/sld880311/article/details/77854651 ------------------------------------- ...

随机推荐

  1. 商品条形码(JBarcode)Java版(二)

    下午开了一个下午的会议,其实开会我听不进去,因为今天妖都特别冷,下班在公司等待小媳妇一个钟头,然后带着她去吃饭,吃完饭回到家.她做运动,我就开始慢慢整理我自己的小博客. ——题记 先说一下,写这篇文章 ...

  2. php读取excel内容

    使用php读取到excel文件中的内容 1.下载PHPExcel类 2.代码: header("Content-type:text/html;charset=utf-8");req ...

  3. Office2010安装错误1402问题(我安装成功了)

    转载:http://blog.sina.com.cn/s/blog_555ea2470101831d.html 做个记录. 1.卸载OFFICE  使用工具 MicrosoftFixit,Window ...

  4. iOS简单动画

    知识架构 CALayer 图层类 CABasicAnimation 基础动画 CAKeyFrameAnimation 帧动画 CATransition 转场动画 CAAnimationGroup 动画 ...

  5. 像Maven一样构建java项目的目录,更好的管理java工程的源码

    都知道maven具有管理Java或者Javaweb的功能.我个人尤其看中的是其代码层次的分离.不同的代码在不同的文件夹下.这是在eclipse新建一个普通的工程无法实现的.而如果用maven实现有时候 ...

  6. PHP文件操作:遍历文件目录

    <?php /*遍历目录,列出目录中的文件 * array scandir(string $directory [,int $sorting_order]) * $directory为待遍历目录 ...

  7. MFC编辑框字体大小调节(转)

    在学习MFC中需要调整编辑框中的字体大小,以下是我结合网上与自己实际操作总结的,希望对其它同学有所帮助.       首先,了解以下函数原型:BOOL CreateFont( int nHeight, ...

  8. HTML 链接 - href

    链接 在HTML的学习中,链接的标签发挥着很大的作用,HTML 使用超级链接与网络上的另一个文档相连.几乎可以在所有的网页中找到链接.点击链接可以从一张页面跳转到另一张页面. 比如说:实例 创建超级链 ...

  9. RStudio中,出现中文乱码问题的解决方案

    RStudio中,出现中文乱码问题的解决方案解决步骤:1.设置RStudio文本显示的默认编码:RStudio菜单栏的Tools -> Global Options2.选择General -&g ...

  10. JavascriptExecutor

    Why we use it?To enhance the capabilities of the existing scripts by performing javascript injection ...