Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 网络层的Windivert进程ID_Sockets_Networking_Port_Pid - Fatal编程技术网

Sockets 网络层的Windivert进程ID

Sockets 网络层的Windivert进程ID,sockets,networking,port,pid,Sockets,Networking,Port,Pid,我正在使用Windivert 2.0 我想知道我是否可以在套接字层用一个开放的Windivert句柄构建一个ProcessID到5元组(protocal、source ip、source port、dest ip、dest port)的映射,并在网络层用另一个开放的Windivert句柄使用该映射来过滤/阻止/拒绝数据包 可能吗?我可以想到两个潜在的问题: 我必须在同一个用户应用程序中打开两个不同层的Windivert句柄 对于一个指定的套接字,哪个层将首先接收事件?因为我需要先构建地图,然后在

我正在使用Windivert 2.0

我想知道我是否可以在套接字层用一个开放的Windivert句柄构建一个ProcessID到5元组(protocal、source ip、source port、dest ip、dest port)的映射,并在网络层用另一个开放的Windivert句柄使用该映射来过滤/阻止/拒绝数据包

可能吗?我可以想到两个潜在的问题:

  • 我必须在同一个用户应用程序中打开两个不同层的Windivert句柄

  • 对于一个指定的套接字,哪个层将首先接收事件?因为我需要先构建地图,然后在网络层中使用它


  • 非常感谢。

    您的基本方法是正确的。要根据进程ID在
    网络
    层进行过滤,需要打开两个WinDivert句柄:

  • SOCKET
    层有一个句柄,用于构建从网络5元组到
    ProcessID
    s的映射
  • 网络
    层的另一个句柄执行实际过滤。为此,使用
    SOCKET
    层映射将分组的网络5元组映射到
    ProcessID
    ,并且可以相应地过滤分组
  • 所以,是的,你确实需要处理


    您提到的另一个问题是,对于新连接,不能保证
    套接字
    层事件会首先到达。这也是事实。要解决此问题,用户应用程序应将
    网络
    -层事件排队,直到相应的
    套接字
    -层事件到达,并且仅在两个事件到达后处理数据包。这有点复杂,但它解决了问题。这也是。

    欢迎使用StackOverflow。在这里提问之前,请先阅读指南。非常感谢。我来看看牛油是怎么做的。