zoukankan      html  css  js  c++  java
  • push推送机制与IM即时通信的长链接机制两者的异同

    长连接

    概念:多用于操作频繁,点对点的通讯,而且连接数不能太多情况。指在一个连接上可以连续发送多个数据包(心跳包,防止NAT超

    时,及探测连接是否断开),在连接保持期间,如果没有数据包发送,需要双方发链路检测包。

    作用:多用于操作频繁,点对点的通讯,而且连接数不能太多情况。

    要求:服务器的开销、稳定性和要求很大。


    短连接

    概念:指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。

    示例:像WEB网站的http服务一般都用短链接;或手机端APP的网络请求。


    PUSH推送机制

    通过建立一条手机与服务器的连接链路(长连接),当有消息需要发送到手机时,通过此链路发送即可。 类似于iOS的APNS相似,

    必须要注意的是iOS客户端、自建服务器与服务器之间需要推送证书进行链接。

    实现步骤如下:

    1、首先是应用程序注册消息推送。

    2、iOS跟APNS Server要deviceToken。应用程序接受deviceToken。

    3、应用程序将deviceToken发送给PUSH服务端程序。

    4、服务端程序向APNS服务发送消息。

    5、APNS服务将消息发送给iPhone应用程序。


    IM即时通信机制

    即时通讯(Instant Messenger,简称IM)是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通

    讯传输协议。前 者是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严

    格保证数据正确性的文件传输协议。而后者是以数据报的形式,对拆分后的数据的先后到达顺序不做要求的文件传输协议。

    UDP:User Datagram Protocol用户数据报协议。一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。面向无连接

    的、不可靠的连接(其可靠性由应用层负责)。

    TCP/IP:Transmission Control Protocol传输控制协议,又名网络通讯协议。负责发现传输的问题,一有问题就发出信号,要求重新

    传输,直到所有数据安全正确地传输到目的地。面向连接的、可靠的(数据无丢失、无失序、无错误、无重复)、基于字节流的连

    接。

    三次握手建立连接:

    1、报文发送状态:客户端发送SYN(SYN=x)报文给服务器端,进入SYN_SEND状态。

    2、报文接收状态:服务器端收到SYN报文,回应一个SYN(SYN=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。

    3、建立连接状态:客户端收到服务器商的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

    四次挥手断开连接:

    1、客户端关闭自己的socket,同时内核协议栈向服务器发送一个FIN置位包,请求断开连接。

    2、服务器接收到客户端的FIN断开请求后,内核协议栈发送一个ACK包给客户端,表示已经收到客户端的请求。

    3、服务器运行一段时间后,关闭自己的socket,同时内核协议栈向客户端发送一个FIN置位包,请求断开连接。

    4、客户端收到服务器的FIN断开请求后,发送一个ACK做出应答,表示已经收到服务器的请求。


    Internet Protocol因特网互联协议,是给因特网的每一台联网设备规定一个地址,即相当于指定一条源地址和目的地址之间的直接路

    径。

    TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一

    层所提供的协议来完成自己的需求。

    IPv4是互联网协议(Internet Protocol,IP)的第四版,它的最大问题是网络地址资源有限(IPv4中规定IP地址长度为32,即有2^32-

    1个地址)。

    IPv6是(Internet Protocol Version 6)互联网协议的第六代。用于替代现行版本IP协议(IPv4)的下一代IP协议。具有更大的地址空

    间(IPv6中IP地址的长度为128,即有2^128-1个地址)、使用更小的路由表、增加了增强的组播支持以及对流的控制、加入了对自

    动配置的支持、具有更高的安全性。



    4层层级架构:

    网络接口层:也叫链路层,指出主机必须使用某种协议与网络相连。

    网络层:相邻计算机之间的通信。包括处理传输层的请求、处理输入数据报、处理路径/流控/拥塞等。

    传输层:也叫运输层(UDP、TCP),应用程序之间的通信,即传源端和目的端机器上的对等实体可以进行会话。包括格式化信息

    流、可靠传输。

    应用层:使用软件,即向用户提供一组常用的应用程序。如:远程登录、邮件、文件传输。



    UDP与TCP的异同

    1、数据报发送时,UDP不能保证数据的完整性(可能会出现丢失)。TCP协议中包含了专门的传递保证机制,当数据接收方收到发

    送方传来的消息时会自动向发送方确认消息,发送方只有在接收到确认消息后才继续发送其他信息。UDP协议没有包含专门的传递

    保证机制,发送方到接收方的传递过程中出现数据报的丢失,协议本身不做任何检测。

    2、多个数据报同时发送时,UDP不能保证数据的发送和接收顺序。

    3、TCP因协议中的安全保障功能,会占用大量系统开销,严重影响速度。

    4、UDP无安全保证机制,减少了执行时间保证了速度。



    推送与IM的异同

    相同点:

    1、程序在前台时,push推送能收到信息,IM也能收到信息。

    2、push推送和IM都是使用长连接的技术实现;push推送是IM技术的简化版。

    3、push依托系统的常驻进程,独立于应用之外。即相当于只有手机开机了就建立了设备与服务器之间的长连接。

    4、IM依托实际的某个应用,在应用之内。即当应用启用且在前台运行前登录状态时,就建立了应用与服务器之间的长连接。

    不同点:

    1、push推送不管程序在前台还是后台运行都能接收到信息;而IM在后台通常是不能接收到信息的(除非加入了平台商的白名单)。

  • 相关阅读:
    【原創】字符首字母大寫格式化函數
    [ZT]如何使SQLServer的日志文件不会增大
    乘除法運算時的異常
    【ZT】delegate 与 多线程
    String.IsNullOrEmpty 方法
    专家指“IP地址告急”系炒作 人均IP可达百万
    如何將程序的Access数据库嵌入到资源中发布
    [ZT]JavaScript+div实现模态对话框[修正版]
    android button背景随心搭配
    图片上传,包括从相册选取与拍照上传
  • 原文地址:https://www.cnblogs.com/songjy2116/p/7657404.html
Copyright © 2011-2022 走看看