将接收到的数据包传输到 Windows 中的用户进程的 IRP 处理程序是什么?
我们知道Windows内核是由IRP(I/O请求数据包)驱动的,
当我们请求网页(或其他任何东西)时,网卡会收到一个IRP,这个IRP到底是什么?
As we know the windows kernel is driven by IRP(I/O request packet ),
when we request a webpage(or anything else),a IRP is received by NIC ,what's that IRP exactly?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有关组件列表,请参阅 Windows TCP/IP 堆栈组件页面此类请求涉及哪些内容。
NDIS 驱动程序模型确实隐藏了传递的 IRP,并公开了组件的“回调”函数来检查/转发/更改发送/接收请求的内容。
See the Windows TCP/IP Stack Components page for a list of the components which are involved in such a request.
The NDIS driver model does hide the IRP which gets passed around and exposes 'callback' functions for the components to inspect/forward/change the contents of send/receive requests.
NIC驱动是NDIS框架,它不从协议驱动程序(Tcpip.sys)接收IRP;相反,它导出函数指针供协议驱动程序调用。
请参阅 MSDN 初始化微型端口驱动程序 和NDIS 驱动程序堆栈。
在 XP/2k3/2000 上:
IRP 使用 TDI 框架发生在更高的网络层;即 AFD.SYS 发送 TDI IoControl 到 Tcpip .sys。 AFD 是一个 TDI 客户端,它通过向 Tcpip.sys 发送 IRP 来实现 Winsock。
在 Vista 及更高版本:TDI 已弃用,如果我猜对了,AFD.SYS 使用 WinSock 内核 与 Tcpip.sys 通信。没有 IRP。
尽管 TDI 在 Vista 上已被弃用,但如果您安装 TDI 客户端或过滤器,TDX.SYS 将被加载并为您模拟 TDI 框架(也通过 WinSock 内核)。在这种情况下,我们仍然看到来自 TDI 客户端的 TDI IRP ---(TDI)---> TDX ---(WSK)---> TCP/IP。
NIC drive is NDIS framework which does not receive IRPs from protocol driver(Tcpip.sys); instead it exports function pointers for protocol driver to call.
Please refer to MSDN Initializing a Miniport Driver and NDIS Driver Stack.
On XP/2k3/2000:
IRPs occurs at higher network layer using TDI framework; namely AFD.SYS sends TDI IoControl to Tcpip.sys. AFD is a TDI client which implements Winsock by sending IRPs to Tcpip.sys.
On Vista and later: TDI is deprecated, and if I am guessing right, AFD.SYS uses WinSock Kernel to communicate with Tcpip.sys. No IRPs.
Although TDI is deprecated on Vista, if you install a TDI client or filter, TDX.SYS will be loaded and emulates the TDI framework for you (via WinSock kernel also). In this case, we still see TDI IRPs from TDI-client ---(TDI)---> TDX ---(WSK)---> TCPIP.