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. qq

    引用:http://blog.sina.com.cn/s/blog_9e2e84050101blqz.html 腾讯QQ使用何种开发平台?                   腾讯QQ的开发分客户端软 ...

  2. Centos 6.5安装bugzilla 5.0.2

    1. 下载bugzilla 下载地址:https://ftp.mozilla.org/pub/webtools/ 因为我在github上搜了一下“bugzilla cn”提示有中文语言包就下了5.0. ...

  3. C# ComBox 垂直滚动条

    用到Combox控件两个属性: 1 MaxDorpDownItems 显示条数 2 IntegralHeight 设置 为false 例如:显示最多20条,超过20条显示垂直滚动条 this.comb ...

  4. Timus 2068. Game of Nuts 解题报告

    1.题目描述: 2068. Game of Nuts Time limit: 1.0 secondMemory limit: 64 MB The war for Westeros is still i ...

  5. Windows访问Ubuntu14.04远程桌面全攻略

    最近接到一个任务,在Ubuntu系统下开发一个串口读写程序.开发要在台式机上进行,安装UbuntuKylin 14.04,并且在串口连接了设备.个人使用的是笔记本电脑,系统是Windows8.1.自然 ...

  6. Redmine性能测试

    Redmine部署使用有一个月了,反馈有时很慢. 1.查看log发现,事务更新后要发送Email,如果连接邮件服务器有问题,会等待超时,导致很慢. 2.解决发送邮件问题后,仍然有时慢,ActiveRe ...

  7. Django(三)

    1.Django请求的生命周期         路由系统 -> 视图函数(获取模板+数据-->渲染) -> 字符串返回给用户   2.路由系统         /index/    ...

  8. spring " expected single matching bean but found 2" 问题一例。

    初入java,使用spring时遇到一个问题,左边是一个接口和实现.右边是service和实现. @Service@Transactional(rollbackFor = Exception.clas ...

  9. module not exists: xxxx Error in ThinkPHP

    Introduction ThinkPHP is a very charming PHP framework to easily build a website. It's structured in ...

  10. 勇者斗恶龙UVa11292 - Dragon of Loowater

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=s ...