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. Fiddler 常用文档

    时间飞逝,已经俩月有余没写东西了(本来写的就不多,(^▽^)),最近俩月的苦闷,此处省略 1W 字.... 闲言碎语不多讲,使用 Fiddler 有一小段时间了,今天在这里总结下,一来做个笔记,二来可 ...

  2. LA 4255 UVa1423 拓扑排序

    题目给出的是Sij的正负号,Sij=ai+...+aj,所以令前缀和Bi=a0+a1+..+ai,a0=0,B0=0,则有Sij=Bj-B(i-1): 由此构造出Bi的拓扑序列,只要每个拓扑序列相邻的 ...

  3. SqlServer 一个查询语句以致tempdb增大55G (转载)

    SqlServer 一个查询语句导致tempdb增大55G 今天操作着服务器,突然右下角提示“C盘空间不足”! 吓一跳!~ 看看C盘,还有7M!!!这么大的C盘空间怎么会没了呢?搞不好等下服务器会动不 ...

  4. app开发方式大汇总

    1.原生方式.android平台使用java方式.IOS平台使用object-c或者swift方式.优点:可以将app的性能做到极致.缺点:开发效率低.维护成本高. 2.纯前端方式.比如用jquery ...

  5. Android下添加新的自定义键值和按键处理流程

            Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我 ...

  6. Scala学习资源

    Scala学习资源: Scala官方网站:http://www.scala-lang.org/ Scala github:https://github.com/scala/scala Twitter ...

  7. 关于Android中ArrayMap/SparseArray比HashMap性能好的深入研究

    由于网上有朋友对于这个问题已经有了很详细的研究,所以我就不班门弄斧了: 转载于:http://android-performance.com/android/2014/02/10/android-sp ...

  8. 【POJ2886】Who Gets the Most Candies?-线段树+反素数

    Time Limit: 5000MS Memory Limit: 131072K Case Time Limit: 2000MS Description N children are sitting ...

  9. 一看便知_配置linux 网络配置的几种方法

    一. -    setup    进入设置  -    /etc/rc.d/init.d/network  restart    运行完才会生效刚才的修改    二.命令设置 [临时生效]-    i ...

  10. Command调用存储过程小实例

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...