python 套接字是否基本上像计算机到计算机 VPN 一样通过 Internet 连接主机和客户端?

Does python socket basically connect host and client over internet like a computer to computer VPN?

我对此进行了很多搜索,但找不到任何内容。我没有尝试使用 python 套接字 ,只是制作了一个主机和客户端可以相互发送消息的系统。我想知道的是,当客户端通过 python 套接字连接到主机时,它是否也在程序 外部建立连接 ?例如,通过套接字连接后我们可以玩任何局域网游戏吗??

套接字不特定于任何语言;它们是底层 API 向用户空间提供的逻辑端点。您可以使用任何支持网络的语言创建 TCP/IP 套接字。

"What I want to know is when a client is connected to a host via python socket, does it make a connection outside the program too?"

这取决于您正在查看的图层。从顶部考虑 TCP/IP 模型的前三层(应用程序、传输、网络)。

  • 应用层:互联网的所有底层都是从应用层抽象出来的。现在,如果您看到是否在您的程序外部建立了连接,那完全取决于它们遵循的协议。如果考虑 HTTP 协议,它主要是无状态或无连接的(如果忽略 cookie)。但是如果你看一下 SSL,就会发生一些握手,并且会话状态在客户端和服务器端都保持不变。

  • 传输层:这一层最著名的两个协议是TCP和UDP。在任何数据传输之前使用 TCP,通过执行三次握手建立 TCP 连接。但在 UDP 的情况下,没有定义像连接这样的术语。

  • 互联网层:虽然众所周知和最常用的网络架构是互联网,但还有一些其他架构,如 ATM CBR 和 ATM ABR。 Internet 体系结构属于数据报网络类别,这意味着没有状态维护,link 层交换机或路由器只是转发数据包。相比之下,ATM 体系结构属于虚拟电路网络的范畴。监控网络层的每个连接以提供服务。例如,在 ATM CBR 的情况下,连接被监控以提供恒定比特率服务,而在 ATM ABR 的情况下,连接被监控以提供最小比特率服务。

这里我只是总结了前三层的连接设置,同样的事情也可能发生在其他层上。

综上所述,是否在您的程序之外建立了连接?这取决于以上所有这些因素,你使用的是什么应用层协议,你使用的是什么传输层协议,以及底层网络架构是什么......等等。你还可以看到连接建立发生在网络层而不是应用层,这就是所有这些网络抽象的来源。您可以幸福地忽略底层细节!