首页 > 解决方案 > python socket是否基本上像计算机到计算机VPN一样通过互联网连接主机和客户端?

问题描述

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

标签: pythonsocketsnetworkingconnectionvpn

解决方案


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

“我想知道的是当客户端通过python套接字连接到主机时,它是否也在程序外部建立连接?”

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

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

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

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

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

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


推荐阅读