【问题标题】:Does python socket basically connect host and client over internet like a computer to computer VPN?python socket是否基本上像计算机到计算机VPN一样通过互联网连接主机和客户端?
【发布时间】:2020-09-22 20:03:36
【问题描述】:

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

【问题讨论】:

  • 是的,它和其他任何一个 TC/IP 套接字一样。

标签: python sockets networking connection vpn


【解决方案1】:

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

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

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

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

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

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

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

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

【讨论】:

  • 感谢您的详细解释!假设我有两个 python 脚本,并且连接是通过 UDP 建立的。并且该系统的设计方式是服务器脚本等待直到从客户端脚本接收到特定的字符串消息,然后再关闭套接字。与此同时,在我没有从客户端脚本发送特定消息之前,连接仍在运行。我可以说用服务器和客户端玩像 CS GO 这样的局域网多人游戏吗?
  • 您的问题更加集中,直到您谈到玩游戏。首先,UDP 协议中没有连接之类的东西。让我们来谈谈 TCP。如今的机器具有多进程能力。如果系统一次只能建立一个连接,那么这意味着我们处于石器时代。系统可以一次建立多个连接;该数量理论上受支持的协议和端口数的限制。而来到游戏部分,我不知道CSGO采用什么机制。但我相信它使用UDP。 >>
  • 现在,假设 CSGO 使用默认的 UDP 端口 56756,如果您的服务器或客户端绑定到该端口,那么您将禁用该特定节点的 CSGO 与其他节点 CSGO 通信。但是如果 CSGO 很聪明,并且如果它可以通过使用临时端口来管理通信,那么即使您的客户端和服务器正在运行,它也可以管理。
  • 谢谢它的解释!
猜你喜欢
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 2021-06-24
  • 2013-06-22
  • 2017-04-26
  • 2013-11-04
  • 2015-05-27
  • 2012-03-25
相关资源
最近更新 更多