TCP与UDP的选择

什么时候选择TCP?什么时候选择UDP?

1)    如果数据要求完整,不允许任何错误发生

    应用层协议开放模式 [例如http ftp],建议选择tcp,几乎是唯一选择.

    应用曾协议封闭模式 [例如游戏]

2)    大量连接

a)    长连接 

少量数据传输:优先考虑可靠udp传输 , tcp建议在20000连接以下使用.

     大流量数据传输:只有在10000连接以下可以考虑tcp , 其他情况优先使用udp可靠传输  

b)    短连接

少量数据传输:建议使用udp标准模式, 加入序列号, 如果连接上限不超2万,可以考虑tcp

大流量数据传输:10000连接以下考虑tcp ,其他情况使用udp可靠传输

     在遇到海量连接的情况下,建议优先考虑udp可靠传输,使用tcp,由于tcp/ip栈的链表实现的影响,连接越多,性能下降越快,而udp可以实现队列,是一条平滑的直线,几乎没有性能影响。

3)    有限连接 [通常小于2000 , 一般每服务器为几百到1000左右]

a)    长连接 :除非有数据的实时性要求,优先考虑tcp,否则使用udp可靠传输。     

b)    短连接:优先考虑tcp。

在有限连接的情况下,使用tcp可以减少代码的复杂性,增加广泛的移植性,并且不需要考虑性能问题.

4)    允许丢包,甚至可以乱序

对实时性要求比较高,例如voip , 那么udp是最优选择。

部分数据允许丢包,部分数据要求完整,部分有实时性要求,通常这样的需求是出现在游戏里, 这时候,基于udp协议改造的udp多路可靠传输[同时支持不可靠模式],基本是唯一能满足的,当然也可以使用tcp来传输要求完整的数据,但是通常不建议,因为同时使用tcp和udp传输数据,会导致代码臃肿复杂度增加,udp可靠传输完全可以替代tcp。

部分数据优先传输,部分可丢弃数据在规定时效内传输, 这通常是实时视频流, 在有限连接模式下,可以考虑tcp+udp, 但是通常, 可靠udp传输是最好的选择。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值