即时通信软件实现原理

现在即时通讯软件非常的常用,像QQ、微信等等通讯工具基本上是人人必备,但是即时通讯软件的原理是什么呢在这里就简单的谈一谈即时通讯软件的原理。

乌托邦的意思就是在绝对的理想条件下,服务器与所有的客户端都建立一个连接,它需要满足3个条件:

  • 服务器资源无限, 络带宽无限。
  • 络链路稳定,路由不会宕机,客户端不具有移动性。
  • 前面两种方法都只用到了TCP,而接下来的两种方法就使用了UDP。如图所示,假如A有消息要发送给C,A首先与服务器建立一个TCP连接,服务器收到消息后回复,然后立即断开与A之间的连接。同时服务器会在全 段广播:“C,有你的消息!”,然后等待C的回复。这个时候ABCD都收到了广播消息,ABD发现这不是找自己的,然后丢弃掉消息,只有C发起一个TCP连接到服务器,然后服务器就将消息发给C;如果超时无回复,则存入数据库。这个方法其实是非常优秀的。首先它对服务器,对客户端的要求是很低的,有消息才发,没有消息的时侯只需要监听端口(没什么资源消耗),不会造成它们的沉重负担。它也有一个瑕疵,广播使用的是范洪算法,因此每广播一次都会对 络造成沉重的负担,因此广播被限制只能在局域 中使用,因此,如果你的服务器是公 的IP地址,那么对不起,无法使用该方法,就只能使用最后一种方法了。广播的方法适用于局域 ,如果你要在公司里或家里搭一个即时通讯系统的话,可以使用这种方法。如果每一个用户都是一个服务器的话,那就成了一个P2P的即时通讯 络。它很像ARP地址解析协议,A有消息要发给C,A就大喊一声:“C!我叫你一声你敢答应吗,BD听到表示吃瓜,C听到后回答:“爷爷在此!”。然后它们两个就开始深入交流。苹果产品的 “隔空投送” 也是基于这个原理。我曾经小学期的一个局域 即时通讯软件就使用的是这个方法。

    于是,即时通讯服务便可以使用组播实现。每当用户登陆的时侯,或者当 络状态、环境改变的时侯,都会递归向上注册QQ的即时通讯服务。这时,如果A要向E发送一个消息,首先会把消息发给服务器,然后服务器进行组播,E收到组播之后自发向服务器发起一个连接,然后服务器就通过该连接将消息发给E。这也是目前大多数的即时通讯系统的实现原理。

    现在对需求做一下变化,现在A想不通过服务器与E进行通讯,而它们又不在同一个局域 ,这种P2P的即时通讯需求虽然没什么前景,但是的确可以通过代理实现NAT穿透。

    即时通信软件实现原理
    即时通讯的原理就讲完了。而实现的方式各个软件都有所不同,就比如《计算机 络第五版》所说,为了节约成本,某些即时通讯软件使用UDP单播的方式发送消息,虽然它消息不可靠,看各自的需求。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年5月2日
下一篇 2019年5月2日

相关推荐