Python socket.connect()在内部做什么?

Python socket.connect()在内部做什么?,python,sockets,tcp,udp,Python,Sockets,Tcp,Udp,因此,我试图从总体上理解网络,尤其是此时此刻的套接字。我正在使用Python套接字库来处理一些事情 我在互联网上遇到了许多例子,这些例子通过简单的ECHO服务器演示了TCP和UDP套接字 对于TCP对等方,参考资料建议TCP echo客户端使用 socket_object.connect()连接到服务器并通过服务器交换数据。 类似地,TCP echo服务器使用 listen()和accept()处理与客户端的连接和交互 问题 现在,这些参考资料提到它是一个TCP连接,因此 面向连接(我从概念上理

因此,我试图从总体上理解网络,尤其是此时此刻的套接字。我正在使用Python套接字库来处理一些事情

我在互联网上遇到了许多例子,这些例子通过简单的ECHO服务器演示了TCP和UDP套接字

对于TCP对等方,参考资料建议TCP echo客户端使用

socket_object.connect()连接到服务器并通过服务器交换数据。 类似地,TCP echo服务器使用 listen()和accept()处理与客户端的连接和交互

问题

  • 现在,这些参考资料提到它是一个TCP连接,因此 面向连接(我从概念上理解)。请帮忙 让我明白“连接导向”到底意味着什么 实施明智吗?连接()、侦听()和 accept()API有助于实现这一点吗
  • 类似地,对于UDP对应项,建议 UDP echo客户端不使用任何connect(),UDP客户端也不使用 echo服务器使用任何listen()或accept()。这有助于实现这一目标 无连接行为。请帮我弄清楚到底是怎么回事?或 也许上面的问题1会帮助我理解这一点 还有

  • 另外,在我们的UDP echo客户端中,为什么不需要呢 绑定到插座。甚至能够向远程计算机发送数据 服务器,它是否仍然不需要套接字端点来实际发送 当服务器发回数据时,是否会接收数据?或者本质上,我想,了解bind()在内部的真正作用将有助于我理解这一点

  • 请帮助我理解面向连接的实现方式到底意味着什么

    这意味着TCP协议依赖于开放连接来工作。换句话说,必须有一个开放的连接,通过套接字发送的消息包必须通过该连接

    connect()、listen()和accept()API如何帮助实现这一点

    我从未使用过这个Python套接字库,但我认为我关于套接字的基本知识足以解释这一点。
    connect
    方法用于打开我在前面的答案中提到的相同连接。服务器使用另外两种方法来接收通过此开放连接从客户端发送的消息

    类似地,对于UDP对应项,参考资料建议UDP echo客户端不使用任何connect(),UDP echo服务器也不使用任何listen()或accept()。这有助于它实现无连接行为。请帮我弄清楚到底是怎么回事

    您可能知道UDP协议与TCP协议不同,它不依赖于开放连接来工作。这意味着消息包是“原子地”(相互独立)发送的,这将使以前的方法变得无用。正如您在问题中链接的文档中所述:

    由于没有连接,服务器本身不需要侦听和接受连接。它只需要使用bind()将其套接字与端口关联,然后等待单个消息

    这意味着使用UDP进行套接字通信的服务器所必须做的就是注册端口,它将从该端口接收套接字消息,这些消息将从客户端发送,并通过
    recvfrom
    方法接收。客户端也使用此方法从服务器接收消息

    即使能够将数据发送到远程服务器,它是否仍然不需要套接字端点来实际发送数据并在服务器发回数据时接收数据


    API可能没有公开在客户端执行此操作的方法,因为客户端动态选择端口并阻止其他程序成为该端口中的服务器,或者至少它们应该这样做。

    也许我错了,但正如我所理解的connect(),只需检查IP和端口是否正确,另一端的应用程序是否准备就绪。listen()和bind()向操作系统发送关于端口的信息-“如果某个包将到达端口xxx,请将其发送给我”。accept()向第一个应用程序发送信息,表示一切正常,我们可以互相交谈。
    此方法(而不是accept)仅通知操作系统接受或拒绝来自其他应用程序的软件包。接受通知另一个应用程序一切正常,我们可以开始说话或不说话

    谢谢,这是一个不错的回答,试图解释一些事情,但同样只能从概念抽象的角度来解释,这是我已经相当理解的。然而,如果你仔细看看我的问题,或者我本可以更好地强调它,那就是问它的内部。例如,从实现的角度来看,面向连接是如何实现的?我的意思是,是否有一些令牌等类似于会话cookie,例如web应用程序等?如果你能解释一下,我将不胜感激。