如果一个应用程序打开了2个TCP套接字,是否在这两个套接字之间都保持有序属性?



如果我有一个Javascript应用程序并行打开2个websockets,其中两个都是在同一端口上的同一主机:

var socket1 = io.connect(host);
var socket2 = io.connect(host);

然后我将它们中的每个数据发送到应用程序中的相同函数:

socket1.on("data", function(e) {doStuff(e);});
socket2.on("data", function(e) {doStuff(e);});

每个套接字是否只对自己强制执行in-order属性,还是对整个应用程序强制执行?例如,如果发送到socket1的数据包丢失,socket2是否仍然能够接收和处理未来的TCP数据包,而不必等待数据包重新传输到socket1?

两个套接字将完全独立。在一个连接上发送的数据将不会对另一个连接产生影响,无论丢失和重传。具体来说,TCP用于数据完整性的序列号空间特定于(addr1, port1, addr2, port2)的四元组。

相关内容

  • 没有找到相关文章

最新更新