0.XMPP和环信
1.什么是Socket。(套接字、两个程序的连接、internet上多个服务软件、举例房间)
2.网络通讯的要素。(4点)
3.TCP与UDP。
4.Socket通信流程图
5.Socket和Socket层上的协议、TCP/UDP、TCP/IP(名字、分开的单独的作用、TCP/UDP在IP上的例子)、HTTP、XMPP 之间的区别。
6.长连接/短连接
http://www.jianshu.com/p/3167802eb1e5
?:长连接/短连接
?:怎么与即时通信、环信结合在一起讲?
TCP/IP:中译名为传输控制协议/因特网互联协议,又名网络通讯协议。[通俗]而言:TCP负责发现[传输的问题,一有问题就发出信号,要求重新传输,直到所有[数据安全]正确地传输到目的地。而IP是给[因特网]的每一台联网设备规定一个地址。
6.长连接/短连接
短连接 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。
长连接 连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。 长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。
什么时候用长连接,短连接
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。
TCP****短连接
我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊的情况。从上面的描述看,短连接一般只会在client/server间传递一次读写操作
短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段
TCP****长连接
接下来我们再模拟一下长连接的情况,client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。
在长连接的应用场景下,client端一般不会主动关闭它们之间的连接,Client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,如关闭一些长时间没有读写事件发生的连接,这样可以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免某个蛋疼的客户端连累后端服务。
7.XMPP 与 环信:
XMPP:
1.是一个即时通讯的协议,规范了用于即时通信在网络上的传输格式,比如登录,获取好友列表等的格式。基于的网络形式是客户端通过TCP/IP链接到服务器,通过Socket建立链接,然后在之上传输XML流。
2.客户端是使用一个XMPPFramework框架实现,服务器是使用Openfire,一个开源的服务器。客户端获取到服务器发送过来的好友消息,客户端需要对XML进行解析,使用解析框架KissXML框架。
3.类似于HTTP协议的一种数据传输协议,其过程就如同“解包装”----->包装的过程。只需要理解其接受的类型以及返回的类型,便可以很好的利用XMPP来进行数据通讯。
环信:
1.环信使用的是XMPP协议,它是在XMPP基础上进行二次开发,对服务器Openfire和客户端进行功能模型的添加和客户端SDK的封装,环信的本质还是使用XMPP,基于Socket的网络通信。
2.环信内部实现了数据缓存,会把聊天记录添加到数据库,把附件(音频文件,图片文件)下载到本地,使程序员更多时间是滑到用户即时通讯的体验上。其内部已经实现了视频,音频,图片和其他附件发送功能。
3.好处:不需要公司内部搭建服务器,节约成本,日活30万以下永远免费;客户端的开发,使用环信SDK比使用XMPPFramework更简洁方便。