Open×××中有个topology参数,该参数控制了tun模式下如何为Open×××客户端分配虚拟IP地址。在Open×××的manpage中,明确指出tun模式下对于windows平台不能使用p2p拓扑,有人说这是没有必要的,因为从TAP-win32的“字符设备”(姑且这么叫吧)中取到的数据包中是一个完整的以太帧,如果是tun模式,截去以太头即可,为何要专门为windows的tap-win32网卡单独划分一个30位掩码的子网呢,这是没有必要的啊!
       理论上,是没有必要的,然而tap-win32并不仅仅是open***的一部分,它只是一个单独的虚拟网卡的驱动程序而已,因此open***必须迎合tap-win32,而不是反过来。我们知道,windows平台上的tap虚拟网卡需要DHCP机制来分配IP地址(也可以不用DHCP,但是这就交叉到了另一个问题:用什么机制设置IP地址的问题),这个DHCP服务器实现在TAP-win32驱动中,且必须有一个IP地址,而这个IP地址也是需要Open×××服务器推送下来的。tun模式下对于三种拓扑,Open×××推下来的IP如下:
net30:ifconfig 客户端虚拟IP 客户端对端
p2p:ifconfig 客户端虚拟IP 服务器端虚拟网卡IP
subnet:ifconfig 客户端虚拟IP 客户端虚拟IP掩码
对于net30拓扑,服务器一下子推下来4个地址,该4个地址构成一个30位掩码的子网,因此DHCP服务