美文网首页
Windows Internals - Network

Windows Internals - Network

作者: 我是柯南 | 来源:发表于2018-03-22 10:38 被阅读51次

NDIS

1. Definition

[Wikipidia] The Network Driver Interface Specification is an application programming interface (API) for network interface cards (NICs).

image

网络驱动接口规范,为网络接口卡制定出标准的 API 接口,NDIS 提供一个函数库,这个函数库既可以被 MAC (Medium Access Controller) 驱动调用,也可以被高层协议(TCP/IP)驱动调用,这使得 MAC 驱动和协议驱动的开发不用关心具体的网卡类型,面对相同的接口。它最早由 Microsoft 和 3Com 联合开发的,伴随着 Windows 7 发行的版本是 NDIS 6.20。

NDIS 函数库位置位于目录 %SystemRoot%\Windows\WinSxS ,如下图,会存在几个不同的版本。

image.png

WinSxS (Side by Side)目录的作用,XP 时代的 dll hell 问题使得从 Windows 7 时代开始有了这个目录,用于存放同一个库的不同版本,以便于不同的应用程序能够使用自己特定的版本。从而向前兼容了几乎所有的历史应用程序。

image.png

2. NDIS Drivers Features

  • Report wherer or not their network medium is active Windows 就是利用该特性实时在任务栏中显示网络的连接和断开状态,应用程序可以通过次特性感知 NIC 的状态变化从而响应地作出状态调整, TCP/IP 传输协议也是用该特性重新得到从 DHCP 获取到的地址信息。
  • Can be paused and resumed 这样就可以在 NDIS 驱动中实时添加或移除一些 Ligthtweight Filter Driver。
  • TCP/IP offloading including task and chimney offloading 这个特性允许网卡只实现部分或全部TCP/IP协议栈,这个特性可以通过卸载这些任务从而释放出占用的CPU来提高系统和网络性能。
  • Receive-side scaling 使得多处理器能并行处理网卡接收到的数据包
  • Wake-on-LAN 支持此特性的网卡能通过给网卡发送一个特定的数据包唤醒计算机
  • Header-data split allows compatible network cards to improve network performanceby splittingthe data and header part of an Ethernet frame into different buffers andsubsequentlycombining the buffers into smaller regions of memory than if the buffers werecombined.
  • Connection-oriented NDIS (CoNDIS) allows NDIS drivers to manage connection-oriented media (typically, a WAN), such as ISDN or PPP devices.

3. Remote NDIS

到目前为止 Windows 只支持 USB 类型的 RNDIS。


image.png

QoS

通常情况下,IP 网络流量的分发基于 first-come first-served 原则。应用程序无法控制他们的网络消息的优先级,所以应用程序的行为会受到突发网路行为的影响。但对于一些实时应用(ERP,Video Conference, Audio Conference etc.)来说,这样不一致的网络行为(时而低延迟、时而高延迟、时而高带宽、时而底带宽)会导致应用的用户体验无法得到满足。

IEEE 802.1P 标准就是为了保证服务质量而提出的一个标准,它规定了 QoS的包格式以及 OSI 2层设备(交换机、路由器)如何响应这些包格式。

Windows 通过基于策略的 QoS 实现来支持 QoS,基于应用、源地址、目标地址、源端口、目标端口等条件提供优先的带宽保证从而保证网络性能的一致性。

Policy-based QoS Architecture


image.png

qWAVE Architecture


image.png

Remote Access

客户端通过连接到 Remote Access Server 存取网络资源(文件,打印机,网络服务等等),行为上就像是客户端直接物理连接到 Server 所在网络一样。Windows 提供两种类型的 Remote Access:

  • Dial-up Remote Access
  • VPN Remote Access SSTP L2TP/IPsec etc.

Active Directory

AD 是 Windows 上的 LDAP (Lightweight Directory Access RF4510) 的一个实现,本质上讲, AD 是一个数据库,其中存储了网络中的各种资源(用户账号,密码,访问策略,组织架构等等)。对象的存储结构类似注册表的树形结构。

Kerberos
Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。

image.png

Network Load Balancing

Windows 服务器版本都包含有网络负载均衡服务,底层是基于 NDIS lightweight filter 技术实现(如下图),网络服务均衡支持最多32台主机组成集群,每个主机有自己单独的IP地址,同一个集群中的主机维护唯一的一个虚拟IP地址,客户端请求通过虚拟IP地址发送到所有集群主机,但一个请求有且只有一个主机进行响应。


image.png

硬件负载均衡方案

F5 硬件设备,价格昂贵

软件负载均衡方案

nginx + keepalive (高可用)

image.png image.png

haproxy

Network Access Protection

对于网络管理员来说一个最困难的挑战就是要时刻确保通过VPN连接到公司网络的所有计算机都符合健康策略,而要确保这点是非常难得。

NAP提供了一种机制,帮助管理员来达成这样的目的,如果接入的计算机没有达到健康要求,会将该计算机做隔离处理,在隔离状态下的计算机无法访问组织内的大部分资源,只能访问一些更新服务器资源,从而下载更新确保计算机满足健康要求,完成后再次接入网络即可访问所有分配的资源。

image.png

Direct Access

image.png

相关文章

网友评论

      本文标题:Windows Internals - Network

      本文链接:https://www.haomeiwen.com/subject/eumnqftx.html