ALE 层
应用程序层强制 (ALE) 由多个筛选层和多个匹配的丢弃层组成。 筛选 层标识符中介绍了所有 Windows 筛选平台 (WFP) 筛选引擎层(包括 ALE)。 本主题包含作为 ALE 一部分的筛选层的更详细说明。
FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V{4|6} 层的筛选器匹配网络绑定操作(显式或隐式)。
如果匹配此层的筛选器来授权创建原始套接字,则将设置 FWP_CONDITION_FLAG_IS_RAW_ENDPOINT 标志。
如果匹配此层的筛选器来授权混杂模式接收,则 FWP_CONDITION_ALE_PROMISCUOUS_MODE 字段将设置为SIO_RCVALL。 有关SIO_RCVALL的说明,请参阅 WSAIoctl。
备注
这是唯一可以筛选杂乱模式的层。
如果在 bind () 期间未指定端口,即端口设置为 0 (零) ,则 TCP/IP 堆栈将从动态端口范围 (19152–65535) 选择一个端口。 所选端口将与 FWP_CONDITION_FLAG_IS_WILDCARD_BIND 标志一起在此层进行分类。
如果未在 bind () 调用中指定本地地址,则本地地址字段设置为 FWP_EMPTY。
FWPM_LAYER_ALE_AUTH_LISTEN_V{4|6} 层的筛选器匹配 TCP 侦听 () 调用。
FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V{4|6} 层上的筛选器将匹配 TCP accept () 调用、第一个 UDP 数据包 (来自唯一远程地址/端口元组的单播) ,以及使用唯一 ICMP 类型、代码和 ID (单播) 的第一个入站非错误 ICMP 消息。
备注
非 TCP 或 ICMP 的协议被视为 UDP。
原始套接字接收的 TCP 数据包的处理方式与 UDP 流量类似。 也就是说,仅筛选原始套接字上的第一个 TCP 发送 () 和第一个 TCP recv () 。
FWPM_LAYER_ALE_AUTH_CONNECT_V{4|6} 层的筛选器匹配 TCP connect () 调用、发送到唯一远程地址和端口元组的第一个 UDP 数据包,以及具有唯一 ICMP 类型、代码和 ID 的第一个出站非错误 ICMP 消息。
备注
非 TCP 或 ICMP 的协议被视为 UDP。
原始套接字发送的 TCP 数据包的处理方式与 UDP 流量类似。 也就是说,仅筛选原始套接字上的第一个 TCP 发送 () 和第一个 TCP recv () 。
TCP 三向握手成功完成后, 将匹配FWPM_LAYER_ALE_FLOW_ESTABLISHED_V{4|6} 层的筛选器。 对于非 TCP 流量,筛选器在 AUTH_RECV_ACCEPT 或 AUTH_CONNECT 层的筛选器匹配后立即匹配。
此层的筛选器不应返回 Block 或 Permit。
标注驱动程序使用此层来跟踪连接状态, 详请参阅 Windows 驱动程序工具包 文档。
释放通过RESOURCE_ASSIGNMENT分配的资源后,将匹配FWPM_LAYER_ALE_RESOURCE_RELEASE_V{4|6} 层上的筛选器。
关闭连接的 TCP 流或 UDP 套接字终结点时, 将匹配FWPM_LAYER_ALE_ENDPOINT_CLOSURE_V{4|6} 层的筛选器。
FWPM_LAYER_ALE_CONNECT_REDIRECT_V{4|6} 层的筛选器允许修改远程地址和端口。 出站连接在该连接期间将被重定向。
FWPM_LAYER_ALE_BIND_REDIRECT_V{4|6} 层的筛选器允许修改基础套接字的本地地址和端口。 将在套接字的生存期内重定向本地套接字
对于上述每个 ALE 层,筛选引擎都包含一个匹配的丢弃层。 标注使用 ALE 放弃层进行日志记录。 在某个 ALE 筛选层中丢弃的数据包和指示会指示到匹配的 ALE 丢弃层。