长连接
概念:多用于操作频繁,点对点的通讯,而且连接数不能太多情况。指在一个连接上可以连续发送多个数据包(心跳包,防止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在后台通常是不能接收到信息的(除非加入了平台商的白名单)。