Networking 两个节点能否仅通过一个tcp连接同时交换数据?

Networking 两个节点能否仅通过一个tcp连接同时交换数据?,networking,tcp,Networking,Tcp,假设有两个节点-A和B。每个节点都保持一个状态,即内存中的一个数字。如果A以某种方式向B发送一个增量,那么B将返回1。A再次发送一个增量,B将返回2。等等B也是一样。A和B都可以原子地更新其状态 为了发送增量,假设B启动TCP服务器接受连接,a是与B建立连接的客户端。a可以通过已建立的TCP连接向B发送增量 现在,问题是:B是否也可以通过同一个连接向A发送增量,A是否可以通过该连接使用自己的状态进行响应 此外,A和B是否都可以通过相同的连接发送增量s并同时响应对方?因此,如果A和B同时向对方发送

假设有两个节点-A和B。每个节点都保持一个状态,即内存中的一个数字。如果A以某种方式向B发送一个
增量
,那么B将返回
1
。A再次发送一个
增量
,B将返回
2
。等等B也是一样。A和B都可以原子地更新其状态

为了发送
增量
,假设B启动TCP服务器接受连接,a是与B建立连接的客户端。a可以通过已建立的TCP连接向B发送
增量

现在,问题是:B是否也可以通过同一个连接向A发送
增量
,A是否可以通过该连接使用自己的状态进行响应

此外,A和B是否都可以通过相同的连接发送
增量
s并同时响应对方?因此,如果A和B同时向对方发送
增量
,它们可以用
1
进行响应


如果A和B建立2个连接,这是一个很容易的问题-一个是A作为客户端向B发送
增量
,另一个是A作为服务器从B响应
增量
。由于有2个连接,A和B可以同时发送“增量”。但我想知道A和B是否可能只通过一个TCP连接交换数据?有任何协议支持这一点吗?

是的,这是可能的。A和B都可以通过相同的连接交换数据。但是,其中一个将充当服务器,另一个充当客户端。事实上,即使A尝试在同一时间连接到B,B尝试在同一时间连接到A,TCP的设计也使得场景只产生一个连接。这种情况称为同时打开。请记住,在TCP规范中,客户机和服务器的经典概念本身并不存在(它们只是对等方),但将执行主动打开的对等方视为客户机,将执行被动打开的对等方视为服务器,这是直观且有帮助的


根据数据交换,双方可以通过相同的连接相互发送
增量
消息。查看和(TCP参考)以获取更详细的深度信息。

TCP在两个对等方之间创建连接,任何一方都可以通过连接发送和接收数据,甚至可以同时发送和接收数据,任何一方都可以随时终止连接。TCP没有服务器或客户端的概念,只有对等方。客户机/服务器概念是一个应用程序概念。您在TCP RFC中找不到任何有关客户端或服务器的信息。实际上,TCP的RFC是。@RonMaupin是的,是的。把数字打错了。我早就改了。