注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

Tun与tap的不同  

2013-06-09 06:54:30|  分类: vpn技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
tun表示虚拟的是点对点设备;

tap表示虚拟的是以太网设备.

这两种设备针对网络包实施不同的封装。
工作原理:用tun/tap 驱动,可以将tcp/ip协议栈处理好的网络分包传给任何一个使用tun/tap驱动的进程,由进程重新处理后再发到物理链路中。


关于TUN/TAP的概念


TUNTAP不一样
现在统一的说法是:
TUN
是点对点的三层设备,工作在IP层,处理IP分组;
TAP
是虚拟以太网设备,工作在第二层,处理以太网帧;

而以下查得的资料也印证了这一点:
摘自Universal TUN/TAP device driverFAQ
The TUN is Virtual Point-to-Point network device.TUN driver was designed as low level kernel support forIP tunneling.
The TAP is a Virtual Ethernet network device.TAP driver was designed as low level kernel support forEthernet tunneling.
TUN works with IP frames. TAP works with Ethernet frames
摘自OpenVPNFAQThe difference between a tun and tap device is this: a tun device is a virtual IP point-to-point device and a tap device is a virtual ethernet device

其实这只是一面,说的很笼统,下面看一些更多的不同:
1
、设备号大不同。
TUN
设备号是10 200,是字符设备下的misc设备,在2.6内核的miscdevice.h中定义的TUN_MINOR(从设备号)也是200;而TAP的是36 16,字符设备的netlink支持。

http://www.lanana.org/docs/device-list/devices-2.6+.txt

2
、显然,设备号的不同导致了文件节点的不同:
TUN
/dev/net/tun
TAP
/dev/tap0
但是Universal TUN/TAP device driver的似乎是/dev/tun的类型,仔细发现这是在2.4内核之前的,在2.6以后,TUN设备就会对应于文件/dev/net/tun

3、补充一下:

TAP:子网掩码是/24255.255.255.0,对应以太网设备

TUN:子网掩码是/30255.255.255.252,点对点设备,仅支持两台设备。

最后,在VTUN源代码咋实现open设备的打开时,TAPTUN也是分开的,好像有两个TUN,一个是/dev/tun的节点(不包 含<linux/if_tun.h>),一个是/dev/net/tun(包含<linux/if_tun.h>)。前者看来是 为了2.4的核而设置的。


总结一下吧(主要是TUN设备的困惑,TAP就没有):
2.4
的核:TUN 设备号是36 16+,文件节点:/dev/tun0

  评论这张
 
阅读(104)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017