在发送方的 WireGuard 中,数据包如何从“wg0”接口发送到 UDP 端口?

在发送方的 WireGuard 中,数据包如何从“wg0”接口发送到 UDP 端口?

我想了解,一旦数据包到达 WireGuard 接口(wg0),它会如何发送到 UDP 端口,然后从那里发送到接收对等体。

我读过 WireGuard 白皮书,上面写着

接口本身有一个私钥和一个它监听的 UDP 端口(稍后会详细介绍),后面跟着一个对等点列表

我对网络只有基本的了解,但我认为进程在端口上监听,那么网络接口在 UDP 端口上监听意味着什么?

如果网络接口有某种方式可以监听端口,那么在接收方,数据包同样可以从 UDP 端口在 WireGuard 接口上接收。这是正确的理解吗?

答案1

WireGuard 确实会创建一个 UDP 套接字,并将其绑定到具有特殊内核功能的地址:sock_create_kernkernel_bind

这是 WireGuard 的源代码用于创建 IPv4 套接字。IPv6 套接字也有类似的代码。

setup_upd_tunnelWireGuard也将套接字通过调用绑定到 UDP 隧道。

相关内容