我当前的心智模型
- 应用程序与操作系统交互,产生基于OSI模型堆栈的数据包处理-后续的封装层
- 在数据包被封装到以太网帧之前的某个时刻,假设在数据包被赋予 IP 报头之后,VPN 软件会劫持它并为其添加另一个封装层(AH 报头和加密有效载荷)以进行 VPN 隧道路由
- 带有(可能)ESP和AH报头以及加密有效负载的新数据包被传递给网络接口驱动程序,该驱动程序为其提供以太网帧并在网络上传输
我实际上不明白的是 VPN 软件如何像这样劫持进程间通信管道 - 它如何知道要劫持哪些应用程序,以及如何在不修改来自主机的所有网络通信的情况下有选择地执行此操作。
请解释 VPN 进程如何拦截发往网络接口驱动程序的 IPC
答案1
VPN 软件通常通过向您的系统添加“虚拟”网络接口来工作。
它使用普通的旧路由通过隧道接口引导流量(注意,非常通用),保存将通过常规方式进行通信的端点主机。
答案2
它不会“劫持”任何东西。
当您的应用程序需要到达 VPN 另一端的系统时,它将在隧道中发送数据包。
如果您使用客户端连接到 VPN,那么您的 PC 会执行加密部分(并在接收数据包时解密)。它会在创建时加密和封装数据包,并将其发送到隧道中的另一个对等端。
然后该对等方将解密数据包。
如果您正在使用 B2B 隧道,那么隧道一侧的对等方就会对数据包进行加密/解密。