WSK简要介绍

来源:互联网 发布:centos xfce 编辑:程序博客网 时间:2024/05/23 11:45

 

WSK是一种内核模式的网络编程接口,通过使用WSK模块,内核软件就可以使用与用户态winsock2相同的概念来进行网络I/OWSK支持类似的socket操作,包括建立socket,绑定,建立连接和数据传输(发送和接收)等。当然,WSK 的网络编程接口支持winsock2中大部分的socket编程概念,但它是一个完全新的并且不同的接口,具有自己的一些特性,例如,使用IRP进行异步I/O和事件回调提高性能。

1.1.1. 结构框架

WSK Architecture

WSK结构的核心是WSK子系统,它实现了WSK网络编程接口的提供者部分。WSK子系统在它的底层与传输提供者交互,支持不同的传输协议

WSK应用程序加在WSK子系统之上,为进行网络I/O操作,它实现WSK 网络编程接口的客户端部分。WSK子系统可以调用WSK客户端的NPI通知WSK应用程序某种事件发生。

WSK应用程序通过WSK注册函数发现并加在WSK子系统之上。应用程序可以使用注册函数检测到WSK子系统是否可用并且交换分派表。

1.1.2. 四种socket

WSK网络编程接口定义了四种不同的socket类型:基本socket,监听socket,数据报socket以及面向连接的socket

1、基本socket(Basic Sockets)

基本socket用于设置、获取传输的socket选项或者进行socket控制操作。不能绑定到本地传输端口,不支持传输或接收网络数据;

2、监听socket(Listening Sockets)

用于监听从远程传输地址发起的连接,包含所有基本socket的功能

3、数据报socket(Datagram Sockets)

用于发送和接收数据报,包括基本socket的所有功能

4、面向连接的socket(Connection-oriented Sockets)

用于面向连接的发送和接收数据,包括基本socket的所有功能。

1.1.3. 两种工作方式

对于某些socket操作,WSK应用程序可以通过调用WSK函数进行操作,或者实现并使能事件回调函数。例如:当在一个面向连接的socket接收数据,WSK的应用程序可以直接调用socket的WskReceive函数, 或者实现并使能事件回调函数。

下面介绍两种工作方式的特点:

1、使用WSK函数方式

(1)WSK应用驱动socket操作,表示WSK应用可以决定什么时候socket发生操作,可以简化同步处理

(2)WSK应用为socket函数提供IRP,这些IRP被WSK子系统排队知道socket操作完成

(3)WSK应用可以通过等待IRP阻塞socket操作

(4)为提高面向连接socket传输的性能,避免数据报socket内容的丢失以及避免监听socket丢失连接,WSK应用需要实现多socket操作排队

(5)WSK应用为数据传输操作提供buffer,这就减少了数据拷贝的次数,可能会对内存数据有更高的要求

2、使用事件回调函数

(1)WSK子系统驱动socket操作,WSK子系统通过调用事件回调函数通知WSK应用程序。WSK应用程序在同步时需要更复杂的处理;

(2)WSK应用不使用IRP

(3)WSK应用不需要排队socket操作,WSK子系统会在socket事件发生后尽快调用WSK应用的回调函数

(4)WSK子系统支持数据buffer。WSK应用必须自己释放这些数据buffer,因此可能需要内存拷贝操作。

 

原创粉丝点击