有时候,我们需要提供客户端软件供用户使用,需要理解客户端网络。比如,SSL VPN客户端,需要有QT和android版本。
简单阅读了《windows internals》这本书的部分内容,学习windows网络相关的一些基础知识。
架构方面:
- windows 从 10开始,支持多平台,主机可以运行在hyper-v之上。
- windows 的内核服务实现为很多个执行体,分布在不同的.sys文件和.dll文件中,这与linux差异很大,尽管linux很多内核模块实现为ko的形式,关键部分还是一个文件。
- linux中很多由应用程序提供的功能,在windows中都是由内核提供的,比如图形界面,http服务,p2p服务,rpc服务等。这种大包大揽的做法与linux的只提供机制的做法不同。
- 类似于kvm,windows的hyper-v提供了虚拟化能力,WSL2基于hyper-v。 但是WSL-1不是基于hyper-v的,而是基于windows原有的一套posix subsystem实现。核心在于可以执行非PE类型的文件。
- windows提供了一套内核和应用程序都可用的配置管理系统,注册表,组策略是一种基于注册表的更上一层的管理机制。
网络方面:
- windows的协议栈对OSI的七层模型的实现,驱动层叫做NSIS,IP层叫TCPIP.sys, 用户也可以根据框架实现新的网络驱动。
- NAT和IPSEC的实现,属于windows的“Windows Filtering Platform”安全框架。这个框架跟linux的netfilter异曲同工,通过shim注册钩子点。而windows的NAT和IPSEC就是实现在这个框架中的两个moudule。
- 通过netsh可以配置windows的nat和ipsec,分别使用portproxy子命令和advfirewall consec子命令,windows server上还可以用netsh配置dhcp/dns server等功能
- 从1703版本开始,windows已经支持unix socket,可以通过sc.exe (service config)查看
- 类似于linux的tc功能,windows上也有QoS功能,可以通过组策略进行配置和查看
- 与网络认证相关的功能,windows支持ladp(active directory)和radius(nps)服务,nps是windows server上才有。
虚拟化方面:
- hyper-v是与kvm/vmware exsi类似的一级虚拟化,vxbox/vmware workstation 是二级虚拟化,二级虚拟化可以跑在一级虚拟化基础之上
- windows有个功能选项“虚拟机监控平台”,可以在使能hyper-v的情况下一样运行虚拟机,不过要求virtual box 版本6以上
- windows 还有个比较好用的sandbox功能,类似于非常简化的docker
- windows的hyper-v与wsl网络结合做的还不完善,wsl的桥模式使能以后,重启会出现网络连接不可用的情况,需要重新设置一遍