美文网首页
移动端IM协议的选型 TCP or UDP?

移动端IM协议的选型 TCP or UDP?

作者: Amor瑾年v | 来源:发表于2019-11-08 11:03 被阅读0次

1.服务端承载能力

上百万TCP连接的网络服务,其编程难度和程序复杂度,调试难度,服务器维护成本,网络成本等都远远高于UDP。而UDP编程与上百万个终端通讯的难度与成本则很低,如果提供的网络服务不是基于流的服务,也允许一定的失败几率(例如P2P),则UDP往往是更好的选择。

2.高级应用网络通讯要求

移动端IM系统一方面提供终端在线服务,另一方面也需要考虑内容信息的完整性和安全性。毕竟信息的丢失和被窃听都是难以接受的。而TCP不管是在网络层的可靠性控制,还是在应用层的安全支持(例如HTTPS),都为应用提供无法替代的强大功能和便利。

总结:

现在移动端IM、推送系统,既面对移动互联网的不确定性,又要面对智能终端频繁的系统休眠、网络切换,还要考虑服务端的承载成本,对于在线服务而言,UDP是比TCP更合适的方式,但是由于数据完整性、安全性的需要,又不应该完全放弃TCP的可靠与安全。
所以个人认为,更恰当的方式应该是两种通信协议同时使用,各有侧重。UDP用于保持大量终端的在线与控制,应用于业务则通过TCP去实现。这个和FTP服务控制与数据分离,采取不同的连接,有异曲同工之处。
事实上这个也是QQ所采用的方式,早期的QQ主要还是使用TCP协议,而后来转向了采用UDP的方式来保持在线,TCP的方式来上传和下载数据。现在,UDP是QQ的默认工作方式,表现良好,相信这个也被沿用到了微信上。
简单的考证:登录PC版QQ,关闭多余的QQ窗口只留下主窗口,并将其最小化。几分钟过后,查看系统网络连接,会发现QQ进程已不保有任何TCP连接,但有UDP网络活动。这时在发送聊天信息,或者打开其他窗口和功能,将发现QQ进程会启用TCP连接。
小公司技术不成熟的公司建议用TCP,用UDP的话需要做的事情太多。当然QQ就是用的UDP协议,当然不仅仅是UDP,腾讯还用了自己的私有协议,来保证了传输的可靠性,杜绝了UDP下各种数据丢包,乱序等等一系列问题。总之一句话,如果你觉得团队技术很成熟,那么你用UDP也行,否则还是用TCP为好。

相关文章

  • 移动端IM协议的选型 TCP or UDP?

    1.服务端承载能力 上百万TCP连接的网络服务,其编程难度和程序复杂度,调试难度,服务器维护成本,网络成本等都远远...

  • 移动端IM系统的协议选型:UDP还是TCP?

    1、前言 对于有过网络编程经验的开发者来说,使用何种数据传输层协议来实现数据的通信,是个非常基础的问题,它涉及到你...

  • 计算机网络02 - 传输层

    目录 TCP协议和UDP协议TCP首部TCP连接管理UDP首部 1. TCP协议和UDP协议 TCP协议:面向连接...

  • kerberos 配置解决常见问题

    关于kdc 支持TCP/UDP协议的问题 kdc原生支持tcp/udp协议,客户端访问kdc服务时,默认先使用ud...

  • TCP和UDP的区别

    TCP和UDP的区别: TCP协议和UDP协议特性区别总结: TCP协议可靠;UDP协议不可靠 TCP协议是面向连...

  • iOS 网络相关面试题

    问题:TCP、UDP TCP/UDP 传输层协议 ||—— UDP:用户数据报协议 TCP与UDP的区别: 问题...

  • Socket-TcpClient,TcpListener,Udp

    这些方法是对socket的一些封装,用法基本和原本用法一样。 Tcp服务端 Tcp客户端 UDP服务端(udp协议...

  • TCP和UDP

    TCP协议为TCP/IP协议;UDP为UDP/IP协议。TCP和UDP都是对应网络七层协议上的传输层。IP属于网络...

  • 2018-09-12网络基础

    网络基础 OSI模型 协议 数据解封 数据封装 TCP与UDP协议 URL资源定位符 01-socket编程 im...

  • 1.2基于tcp/udp的socket运用_BIO

    基于tcp/ip协议_BIO: 客户端: 服务端: 基于udp/ip协议_BIO: 客户端: 服务端: 组播 客户...

网友评论

      本文标题:移动端IM协议的选型 TCP or UDP?

      本文链接:https://www.haomeiwen.com/subject/sdeibctx.html