全双工套接字与使用两个套接字(一个用于读取,另一个用于写入)的区别

5
我在想,
第一个问题:使用一个套接字(全双工)与使用两个套接字(简单x模式)每个对等方的优缺点是什么?特别是在性能和资源利用方面。
第二个问题:如果我选择每个对等体使用多个套接字,在所有套接字上都进行读写。那么这会帮助我扩展处理的消息数量吗?
第三个问题:应该如何确定每个对等方的套接字数量?网络带宽?输入和输出的消息数量?
所有问题都不同,没有任何相互关系。

那个套接字用于什么类型的应用程序?如果您需要并行使用不同类型的通信,则必须像FTP一样使用两个套接字。 - Fumu 7
1
一些专有协议通过TCP套接字发送和接收消息。 - Abhishek Jain
2
使用两个套接字的一个缺点是增加了复杂性。单个套接字要么连接,要么未连接。使用两个套接字时,现在您必须找出如何处理其中一个套接字连接已断开(或未能连接),而另一个仍然连接的情况。这是额外的麻烦,没有明显的好处。 - Jeremy Friesner
2个回答

5
使用一个套接字(全双工)与使用两个套接字(一个用于读取,另一个用于写入)相比,其优缺点是什么?特别是在性能和资源利用方面。 单一套接字的优点是资源利用率高,缺点则为无。性能上除了只使用一个套接字可以节省连接和关闭握手之外,与使用两个套接字相同。
如果我选择采用两个套接字的方法,那么如果两个套接字都采用全双工方式,则有助于我在数据流入和流出方面进行扩展吗? 现在你正在比较苹果和橙子。不能将一个全双工套接字与两个全双工套接字进行比较。我不知道你为什么认为你可能需要两个入站和两个出站流量,但你不需要。我所能想到的每种协议都只使用一个。
网络带宽对它有什么影响? 没有。
或者它对网络利用率有何影响? 除了连接和关闭握手之外,没有,但它会浪费两端的资源。

抱歉,我无法很好地书写问题。第二个问题与第一个不同,它们之间没有关联。我想在第二个问题中了解的是,如果我选择每个目标使用两个套接字,在两个套接字上都进行读写操作。那么它可以帮助我扩展处理消息的数量。第三个问题是,选择每个目标的套接字数量,应该取决于可用带宽吗? - Abhishek Jain
第二个问题的答案取决于您的功能要求。我不明白它如何帮助扩展任何东西。第三个问题的答案是否定的。 - user207421
@EJP 只是为了扮演恶魔的代言人(因为我也认为两个套接字就够了)...那么如果有一个TCP数据包被丢弃怎么办?在单套接字情况下,你在那个方向上的整个数据流将会暂停(短暂),直到检测到丢失的数据包并重新发送。而有了两个套接字,在此期间你可以继续从另一个套接字接收数据,因为TCP流B不会受到从TCP流A中丢失的数据包的影响。 - Jeremy Friesner
当然,如果您的功能要求如此指示。但大多数情况并非如此。大多数情况下,它们要求您按顺序执行客户端操作而不是并行执行。 - user207421
这些应用程序是在本地网络中运行的对等应用程序。两个应用程序都可以作为消费者和提供者,即两者都可以相互请求并且可能或可能不需要响应。请求不必序列化。 - Abhishek Jain
显示剩余2条评论

2
我们已经在iperf 2.0.14中添加了--full-duplex,它将测试全双工套接字。可以通过-d或--dualtest选项将其与两个套接字进行比较。我们发现“实际情况可能有所不同”,并且没有普遍回答是否具有相等的性能。理论上,它们应该是相等的,但是在实践中可能不是这样。
   -d, --dualtest
          Do a bidirectional test simultanous test using two unidirectional sockets

       --fq-rate n[kmgKMG]
          Set a rate to be used with fair-queueing based socket-level pacing, in bytes or bits per second. Only available on  platforms  supporting  the  SO_MAX_PACING_RATE  socket  option.
          (Note: Here the suffixes indicate bytes/sec or bits/sec per use of uppercase or lowercase, respectively)

       --full-duplex
          run a full duplex test, i.e. traffic in both transmit and receive directions using the same socket

鲍勃


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接