sea*_*and 13 sockets networking tcp
与UDP相比,我想知道创建新连接的一般成本.我知道TCP需要初始交换数据包(3次握手).什么是其他费用?例如,在设置缓冲区等内核中是否存在某种神奇的东西?
我问的原因是我可以保持现有连接打开并根据需要重用它.但是,如果重新连接的开销很小,则会降低复杂性.
Mar*_*c B 11
一旦UDP数据包被转储到线路上,UDP协议栈就可以完全忘记了它.使用TCP,至少有连接细节(源/目标端口和源/目标IP),序列号,连接的窗口大小等......这不是一个庞大的数据量,但在繁忙的服务器有很多连接.
然后还有3次握手.一些脑卒(和/或恶意系统)可以滥用该过程(查找"同步泛滥"),或者只是将连接断开,让您的系统等待响应或关闭通知永远不会发生.好的一面是,通过TCP,系统将尽最大努力确保数据包到达必要的位置.使用UDP,根本没有任何保证.
选项1:创建TCP连接的一般成本是:
步骤1:需要交换数据包,因此延迟了网络延迟加上目标服务器的服务时间.两个盒子都没有显着的CPU使用率.
第2步:取决于邮件的大小.
步骤3:IIRC,只发送一个'立即关闭'数据包,无需等待目标确认,因此不涉及延迟.
方案2:UDP的成本:*
第1步:需要最少的设置,没有延迟担忧,非常快.
步骤2:小心小,UDP中没有重传,因为它不关心数据包是否被任何人接收.我听说消息越大,数据被接收损坏的可能性就越大,而且经验法则是你会丢失超过20 MB的一定比例的消息.
第3步:最少的工作,最短的时间.
选项3:使用ZeroMQ代替
您将TCP与UDP进行比较,目标是减少重新连接时间.有一个很好的妥协:ZeroMQ套接字.
ZMQ允许您设置一个发布套接字,您不关心是否有人在监听(如UDP),并且在该套接字上有多个侦听器.这不是UDP套接字 - 它是这两种协议的替代品.
有关详细信息,请参阅: ZeroMQ.org.
它具有极高的速度和容错能力,并且出于这些原因在金融行业中的使用越来越多.
| 归档时间: |
|
| 查看次数: |
9563 次 |
| 最近记录: |