Tcp 因特网上的通信

Tcp 因特网上的通信,tcp,communication,Tcp,Communication,如果以前有人问过这个问题,我很抱歉,但是这个想法很难确定。我能理解两台计算机如何通过监听开放端口和直接向IP地址发送信息来直接交互。然而,我想知道像LogMeIn或聊天应用程序这样的应用程序是如何通信的(我猜是通过端口80,因为它总是打开的,但不允许您收听),甚至是游戏(如果它们没有打开端口的话)。如果我猜的话,我会认为他们使用了第三方web服务器,该服务器带有一个数据库,通过“获取”和“发布”请求来调解计算机之间的信息传输。这可能会使通信异步 只要我能得到答案,我不在乎这个问题的评分是否不好,

如果以前有人问过这个问题,我很抱歉,但是这个想法很难确定。我能理解两台计算机如何通过监听开放端口和直接向IP地址发送信息来直接交互。然而,我想知道像LogMeIn或聊天应用程序这样的应用程序是如何通信的(我猜是通过端口80,因为它总是打开的,但不允许您收听),甚至是游戏(如果它们没有打开端口的话)。如果我猜的话,我会认为他们使用了第三方web服务器,该服务器带有一个数据库,通过“获取”和“发布”请求来调解计算机之间的信息传输。这可能会使通信异步


只要我能得到答案,我不在乎这个问题的评分是否不好,即使它只是一个链接,指向其他有答案的地方。另外,我主要从事C++工作,熟悉TCP和HTTP协议。

< P>是的,一般有多个客户端连接的“服务器”。服务器接受来自一个客户端的消息并将其转发给一个或多个其他客户端。这几乎总是“异步”的,但这可能意味着一些事情(无论是在客户端还是服务器上这样做,服务器是“事件驱动”还是多线程的,等等)。服务器可以是web服务器,但也存在其他类型的服务器(例如Jabber服务器,它使用XMPP,通常[或经常]在端口5222上)

一些信使通过HTTP(通常是端口80,通常是开放的)工作,即使协议通常使用不同的端口,也可以编写“web网关”通过端口80和HTTP进行通信,以避免其他端口被阻塞的问题,并且它可以转发到“标准服务器”或完全重新实现。特别是在公司环境中,internet访问可以由HTTP代理服务器进行调解,因此使用网关或本机HTTP消息传递应用程序/协议是唯一的选择


我想在这些讨论中正确定义“服务器”很重要。该术语通常用于描述坐在数据中心或其他地方的实际计算机。但是,当我们谈论“web服务器”或“jabber服务器”时,我们通常指的是一个软件守护进程,它是一个软件,其工作是侦听客户端连接并对接收到的消息进行操作。

您是对的,在客户端之间传递信息的服务器很常见。IRC就是这样工作的,大多数在线游戏也是如此。有些应用程序使用HTTP只是为了避免防火墙问题


Internet上的所有通信本质上都是异步的:调用函数写入套接字后,程序将继续运行,而数据包将传输到其目的地。

另一种选择是对等网络,其中中央服务器将协商两个客户端之间的直接连接,并主要用作客户端及其关联直接链路状态的仲裁器,而不是在客户端之间转发消息的代理或中间人。因此,客户机将向中央服务器发送请求,请求连接到另一个客户机,服务器将从寻找其他对等机连接的客户机池中找到其他客户机,并将每台机器的信息发送回对方客户机,在这一点上,客户机本身将彼此建立直接连接。一旦两个客户机之间建立了对等连接,服务器就可以在客户机及其相关连接上保持“状态”(即,有X台机器从某台客户机上拔出)。

我总是说,我需要的只是一个名称,“Jabber”这个名称让我获得了一些好信息。我想这正是我想要的。最困难的部分是开始。