Networking
VPN 軟體如何“劫持”數據包以進行隧道傳輸?
我目前的心理模型
- 應用程序與作業系統互動以產生基於 OSI 模型堆棧的數據包過程——隨後的封裝層
- 在數據包被封裝在乙太網幀之前的某個地方,但假設在給它一個 IP 標頭之後,VPN 軟體會劫持它並為其添加另一個封裝層(AH 標頭並加密有效負載)以用於 VPN 隧道路由
- 帶有(可能)ESP 和 AH 標頭和加密有效負載的新數據包被傳遞到網路介面驅動程序,該驅動程序為其提供乙太網幀並線上傳輸
我不明白的是 VPN 軟體實際上是如何像這樣劫持程序間通信管道的——它如何知道要劫持哪些應用程序,以及它如何在不修改來自主機的所有網路通信的情況下選擇性地執行此操作。
請解釋 VPN 程序如何攔截發往網路介面驅動程序的 IPC
VPN 軟體通常通過向您的系統添加“虛擬”網路介面來工作。
它使用普通的舊路由通過隧道介面引導流量,(注意,非常籠統)除了它將與正常方式通信的端點主機。
它不會“劫持”任何東西。
當您的應用程序需要訪問位於 VPN 另一端之後的系統時,它將在隧道中發送數據包。
如果您使用客戶端連接到 VPN,那麼您的 PC 正在執行加密部分(並在接收數據包時進行解密)。它將在創建時對數據包進行加密和封裝,並將其發送到隧道中的其他對等方。
然後該對等方將解密數據包。
如果您要進入 B2B 隧道,則隧道一側的對等方正在加密/解密數據包。