CN109088799A - 一种客户端接入方法、装置、终端以及存储介质 - Google Patents
一种客户端接入方法、装置、终端以及存储介质 Download PDFInfo
- Publication number
- CN109088799A CN109088799A CN201811156294.1A CN201811156294A CN109088799A CN 109088799 A CN109088799 A CN 109088799A CN 201811156294 A CN201811156294 A CN 201811156294A CN 109088799 A CN109088799 A CN 109088799A
- Authority
- CN
- China
- Prior art keywords
- server
- connection
- client
- request
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/10—Connection setup
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Mobile Radio Communication Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出一种客户端接入方法、装置、终端及存储介质,所述方法包括如下步骤:建立与服务器之间的连接;发起与服务器的握手请求;在所述握手请求成功之后,发送业务数据请求,并定时发出心跳包,与服务器保持多路复用方式的长连接。基于本说明书技术方案提供的客户端接入方法,客户端能够更快速稳定安全的接入后端服务器,提升了连接成功率及网络传输速度,减少了流量消耗,减少了卡顿现象,提升了用户体验。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种客户端接入方法、装置、终端以及存储介质。
背景技术
随着移动互联网的发展,开发者开发出越来越多的移动终端应用(APP),大部分手机应用都是基于网络支持的,即需要通过网络接入后端服务器,根据后端服务器的响应才能提供服务。
然而,通过移动互联网接入的后端服务困扰有很多,包括:
由于APP设置导致的APP请求失败率高、响应速度慢、弱网络。
由于网络原因导致的网络切换频繁、流量费用高。
由于安全设置原因导致的数据包泄露风险,DNS被劫持等等。
由于APP数据优化导致的数据包臃肿,流量耗费大。
上述问题在互联网应用中普遍存在,成为影响用户使用和用户体验的重要问题。
发明内容
为了解决现有技术中存在的技术问题,本发明实施例提供了一种客户端接入方法、装置、终端与存储介质。所述技术方案如下:
一方面,提供一种客户端接入方法,包括:建立与服务器之间的连接;发起与服务器的握手请求;在所述握手请求成功之后,发送业务数据请求,并定时发出心跳包,与服务器保持多路复用方式的长连接。
一方面,提供一种客户端接入装置,包括:连接建立模块,用于建立与服务器之间的连接;握手模块,用于发起与服务器的握手请求;多路复用方式长连接保持模块,用于在所述握手请求成功之后,发送业务数据请求,并定时发出心跳包,与服务器保持多路复用方式的长连接。
另一方面,提供一种终端,所述终端包含前述的装置。
另一方面,提供一种存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现前述的用户接入方法。
本发明实施例提供的技术方案带来的有益效果包括:基于说明书实施例提供的用户接入方法,客户端能够更快速稳定安全的接入后端服务器。提升了连接成功率,提升了网络传输速度,减少了流量消耗,减少卡顿现象,提升用户体验。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的实施场景示意图;
图2是本发明实施例提供的客户端与服务器之间的通讯过程示意图;
图3是本发明实施例提供的客户端与服务器之间的通讯流程框图;
图4是本发明实施例提供的客户端接入方法流程框图;
图5是本发明实施例提供的客户端通过判断网络环境采用就近接入策略对DNS进行解析流程框图;
图6是本发明实施例提供的就近接入策略原理框图;
图7是本发明实施例提供的多接入点就近接入策略原理框图;
图8是本发明实施例提供的多路复用方式的长连接应答交互流程图;
图9是本发明实施例提供的服务器与客户端之间的信令交互操作示意图;
图10是本发明实施例提供的加密方法原理示意图;
图11是本发明实施例提供的一种客户端接入装置原理框图;
图12是本发明实施例提供的连接建立模块所包含的子模块原理框图;
图13是本发明实施例提供的多路复用方式长连接保持模块原理框图;
图14是本发明实施例提供的选择连接子模块所包含的子模块原理框图;
图15是本发明实施例提供的长连接保持子模块原理框图;
图16是本发明实施例提供的压缩模块原理框图;
图17是本发明实施例提供的加密模块原理框图;
图18是本发明实施例提供的终端结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在本发明的一个实施例中,如图1所示,提出一种客户端接入方法所处的场景。搭载有客户端(Client)的移动终端可以为手机、掌上电脑、PDA设备等等,用户可以通过移动终端的客户端与后台服务器建立联系。其中客户端采用短链接访问后端服务,APP客户端获取后端接入IP以及端口后采用域名系统解析(DNS,Domain Name System),各个业务接口请求采用串行方式,即收到前一个业务返回的请求包后,再发下一个业务请求包。传输协议采用超文本传输协议(HTTP,HyperText Transfer Protocol),对数据包编码后再传输,后端服务的部署一般是单点。
在本发明的一个实施例中,如图2所示,描述了客户端与服务器之间的通讯过程。该过程可应用于图1所示的场景中,主要包括图3所述的如下步骤:
步骤S310,客户端依据点域名进行DNS解析,获取具体接入点的网络地址和端口,然后向服务器发送连接请求。服务器返回连接请求的确认。
步骤S320,客户端(Client)连接后端服务之后,填充请求包,进行编码,使用超文本传输协议(HTTP,HyperText Transfer Protocol)串行发送请求包。后台服务器在接收到请求包之后,向客户端返回应答。该步骤中,每次发出业务请求包需建立与后端服务的连接。
步骤S330,客户端在获得服务器的响应包之后断开连接,并向服务器发送断开连接请求。服务器在接收客户端请求之后,将连接断开,并返回客户端。
上述步骤S310-S330是一个单次循环的过程,实际过程中,需要重复上述三个步骤,直至业务请求结束。
在上述步骤中存在一些不利的因素,例如:
HTTP协议各个请求包中有较多的重复数据,请求及响应包体较大。
HTTP协议报文头较大,而实际上客户端传送的数据包本身较HTTP协议报文头小得多,即大的报文头只携带很小的数据流量,从而造成流量浪费。
串行响应采用应答机制,客户端应用(APP)发出的HTTP请求及后端服务返回的响应串行进行,会影响传输速度,造成用户体验卡顿。
每次请求建立连接之前都需要DNS解析,而DNS解析耗时较长。
业务数据无加密处理,数据传输的安全性差。
在一个实施例中,如图4所示,出于进一步提高用户接入质量的目的,对接入流程进行优化,包括:
步骤S410,建立与服务器之间的连接。
在一个可选的实施例中,客户端根据当前网络环境选择连接方式,接收接口列表,并选择接口列表中的接口进行连接。
步骤S4101,客户端根据当前网络环境选择连接方式。
在一个可选的实施例中,如图5所示,步骤S4101客户端通过判断网络环境采用就近接入策略对DNS进行解析。
步骤S4102,客户端接收服务器发送的接口列表。
步骤S4103,客户端选择接口列表中的接口与服务器进行连接。
如图6所示,就近接入策略包括:
步骤S41011,客户端判断当前网络环境。
步骤S41012,若当前网络环境为移动互联网络,则客户端使用直连方式连接服务器。
步骤S41013,若当前网络环境为接入网,则客户端进行DNS解析,并连接服务器。
步骤S41014,服务器会接收客户端的请求,然后根据上报的网络类型以及网络地址下发与客户端最接近的IP及接口列表。与客户端最接近的IP可以理解为,根据上报的网络类型以及网络地址生成的,按照与上报的网络地址的连接时延进行排序的列表。
在上述步骤中,步骤S41012和步骤S41013是对于步骤S41011的处理结果,其顺序不影响其实施。
如图7所示,对于三个接入点:接入点A、接入点B和接入点C,服务器优先保持传输控制协议(TCP)长连接,同时超文本传输协议(HTTP)的短连接方式备用,客户端向服务器上报所处的网络环境和网络地址(IP),服务器则根据客户端上报的网络环境和网络地址(IP)向客户端下发接入点的网络地址列表(IP LIST)。在该过程中,客户端同时发起端口结合协议组合对接入点进行并发探测,这样对客户端顺序遍历,总能找到一个可用的IP地址和网络端口,可以加快建立连接的速度。
在一个可选的实施例中,客户端对于接入的网络地址采用策略优化,首次安装后采用域名及预埋的网络地址列表。之后的使用顺序为:
最近使用IP地址>最优ip>域名>备份ip。
在一个可选的实施例中,客户端采用测速机制,客户端在空闲时段对备选的后端服务接入点发起测速,并上报测速结果,以供服务器优化客户端的接入点。
步骤S420,客户端与服务器建立连接后,发起握手请求。
在移动网络下,会出现客户端与服务器之间的连接可以建立,但是实际却不可用的情况。本步骤中利用握手机制可以验证连接建立的可用性。在本说明书中,握手机制还可用于防止域名劫持,只有真实的后端服务可以响应握手机制。还可以使用握手机制实现就近接入,引导app重定向等功能。
步骤S430,握手成功后,发送业务数据请求,并定时发出心跳包,与服务器保持多路复用方式的长连接。
客户端与服务器之间优先采用基于TCP/IP协议的单条长连接,建立客户端与服务器之间的通信链路。该长连接采用多路复用的方式,即客户端与后端服务的请求响应采用多发多收的方式进行,提升请求响应速度。此外,复用方式可以防止串行通信过程中产生的死锁。
长连接包括,客户端向服务器发起连接,服务器接受客户端连接,双方建立连接;完成一次读写之后,客户端与服务器之间的连接并不会主动关闭,后续的读写操作继续使用这个连接。
如图8所示,多路复用方式的长连接包括,客户端与服务器之间的长连接是以多路复用的方式进行的,多路复用方式包括客户端与服务器之间的请求采用多发多收的方式。
在一个可选的实施例中,在长连接的过程中,服务器应用希望知道客户主机是否崩溃,从而可以代表客户使用资源。如果客户已经消失,使得服务器上保留一个半开放的连接,而服务器又在等待来自客户端的数据,则服务器将永远等待客户端的数据,在进行长连接时就试图在服务器端检测到这种半开放的连接。如果一个给定的连接在两小时内没有任何的动作,则服务器就向客户端发送一个探测报文段,客户主机必须处于以下四种状态之一:
第一种状态:客户主机依然正常运行,并且服务器可达。客户端的TCP响应正常,而服务器也知道对方是正常的,服务器在第一时间(例如两小时)后将定时器复位。
第二种状态:客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户端的TCP都没有响应。服务器将不能收到对探测的响应,并在第一时间阈值(例如75秒)后超时。服务器总共发送N个这样的探测,每个间隔第一时间阈值。如果服务器没有收到一个响应,它就认为客户主机已经关闭并终止连接。
第三种状态:客户主机崩溃并已经重新启动。服务器将收到一个对其存活探测的响应,这个响应是一个复位,使得服务器终止这个连接。
第四种状态:客户主机正常运行,但是服务器不可达,这种情况与第二种状态类似,TCP能发现的就是没有收到探查的响应。
从上面可以看出,上述状态的设置主要是为探测长连接的存活状况,不过这里存在问题,存活功能的探测周期太长,还有就是它只是探测TCP连接的存活。而且,上述功能无法解决恶意连接的问题。
在长连接的应用场景下,客户端一般不会主动关闭与服务器之间的连接,客户端与服务器之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,服务器会由于负载而过负荷,因此需要在服务器端采取一些策略。如关闭一些长时间没有读写事件发生的连接,这样可以避免一些恶意连接导致服务器端服务受损;作为优选的实施例,还可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免由于客户端的超量连接导致后端服务拥塞或者崩溃。
在一个可选的实施例中,如图9所示,客户端与服务器之间建立连接之后,进行握手操作,并在握手完成之后由客户端向服务器发起业务请求,服务器还会将业务请求转发送至业务服务器,并转发业务服务器的应答,在完成一次业务操作之后,客户端与服务器之间保持心跳连接。在上述过程中,客户端与服务器之间的通信,实质上是主机上运行的应用进程之间的通信。例如,基于APP页面的浏览,实质上是所访问的服务器进程与客户端浏览器进程在进行通信。而在网页浏览的同时,往往还存在其它客户端与服务器之间的通信,例如IM类即时通信软件,FTP文件等等,此时,就会存在两个以上的进程与主机上的进程进行通信。为了将接收到的数据定位到指定的进程中,即系统将从FTP数据服务器发送的数据交付到与之对应FTP客户端,而不是将其错误的发送到IM客户端,需要采用多路分解与多路复用。多路分解与多路复用与操作系统的构架有关,以Linux对文件和设备的管理和使用方式为例。为了方便资源的使用,提高硬件设备的性能、利用率和稳定性等等原因,我们使用操作系统层(Operating System,OS)来进行资源管理,当程序要使用一个资源的时候,可以向操作系统申请,再由操作系统为程序分配和管理资源。当需要访问一个内核设备或文件时,程序可以调用系统函数,系统就会打开设备或文件,然后返回一个文件描述符FD(或称为ID,是一个整数),要访问该设备或文件,只能通过该文件描述符。可以认为该编号对应着打开的文件或设备。而当程序要使用网络时,要使用到对应的操作系统内核的操作和网卡设备,向操作系统申请,系统会创建一个套接字(Socket),并返回这个Socket的ID,以后的程序要使用网络资源,只要向这个Socket的编号ID操作即可。而每一个网络通信的进程至少对应着一个Socket。向Socket的ID中写数据,相当于向网络发送数据,向Socket中读数据,相当于接收数据。而且这些套接字都有唯一标识符——端口号。每个运输层的报文段中设置了几个字段,包括源端口号和目的端口号等。多路分解就是,在接收端,运输层检查这些字段并标识出接收套接字,然后将该报文定向到该套接字。其工作方式包括,主机上的每个套接字被分配一个端口号,当报文到达主机时,运输层检查报文段中的目的端口号,并将其定向到相应的套接字。多路复用就是从源主机的不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层中去。
进一步地,在一个可选的实施例中,因为网络上主机间的进程间通信,实质上是通过套接字来实现的。在运输层中面向连接的网络传输多使用TCP,而TCP套接字和UDP套接字之间有一个细微的差别,就是,TCP套接字是由一个四元组(源IP地址、源端口号,目的IP地址,目的端口号)来标识的。这样,当一个TCP报文段从网络到达一台主机时,主机会使用全部四个值来将报文段定向,即多路分解到相应的套接字。与UDP不同的是,两个具有不同源IP或源端口号的到达的TCP报文段将被重定向到两个不同的套接字。尽管如此,而TCP的多路利用和多路分解的工作原理与无连接的UDP的多路复用和多路分解的原理还是大致一样的。因为TCP和UDP对待接收到的数据的处理方式不同,以服务器上的TCP套接字和UDP套接字为例,假定服务器接收客户端的数据,并把数据发送回客户端。当一个UDP服务器接收到一个UDP报文段时,它会根据收到的UDP报文段的源IP和源端口号,把数据发送回客户端,它并不需要创建一个新的套接字来处理该报文段;而对于一个TCP服务器,当它接受一个连接时,它会产生一个新的套接字,然后通过新的套接字来与客户端通信,也就是通过新的套接字来把数据发送回给客户端。由于每一个连接都会产生一个新的套接字,所以具有不同的源IP或源端口号的连接就是一个不同的连接,对应着产生的新的不同的套接字。如果TCP套接字也是使用像UDP那样的只用源端口号和目的端口号来完全标识一个套接字,那么当客户机A有一个Http连接时,该TCP报文的目的端口号为80,目的IP地址为TCP服务的IP地址。TCP服务器产生一个新的套接字来处理该请求,此时,客户机B又有一个Http连接,TCP报文的目的端口号也为80,目的IP地址也为TCP服务的IP地址。而TCP套接字也是使用像UDP那样,两个具有不同的源IP或源端口号但具有相同目的IP和目的端口的报文段定位到同一个套接字中,那么这个客户机B的TCP报文段则会多路分解到客户机A的套接字上,而该套接字并不应该被客户机B的Http连接使用。
在一个可选的实施例中,多路复用方式的长连接中的数据包不按照请求响应的顺序返回。一个完整的请求或响应均可能会分成非连续多次发送,在请求过程中,每一个完整的请求或响应都有一个独一无二的编号,并且可能会分成非连续的多次发送。数据包发送的时候,都必须标记所述的数据流ID,来区分它属于哪个数据流。在一个优选的实施例中,将客户端发出的数据流ID设定为奇数,服务器应答的数据流为偶数。当数据流发送到一半的时候,客户端和服务器都可以发送信号来取消当前发送的数据流。客户端可以通过预置数据流的优先级来获得服务器对数据流处理的不同优先级。
在一个可选的实施例中,客户端与服务器之间的多路复用长连接通信可以结合线程池的方式来实现。在长连接的过程中,客户端创建进程,并将创建的进程放到线程池中供随时使用。与服务器保持长连接的客户端当需要向服务器发起业务请求时,并不需要采用串行通信的方式,而是根据需要发起的业务数量,从线程池中取出对应数量的线程,采用多发多收的方式向服务器端发起请求,其中每个线程对应一个请求。在接收到服务器的应答后,客户端可以将线程回收到线程池以供随时使用。利用线程池能够解决资源反复利用和回收的问题。
在一个可选的实施例中,客户端在与服务器建立连接之后,服务器保存该连接的协议头公共数据,以减少请求的响应包体积大小,加快响应速度。该过程包括如下步骤:
当服务器接收到用户端的第一次访问时,为客户端创建一个独立的会话控制区,用于保存本次访问的协议头公共数据。
在创建会话控制区的同时创建一个会话控制ID,会话控制ID在响应客户端请求的时候会被加载到服务器端的数据缓存中。
当客户端再一次访问服务器时,如果访问请求中携带了与缓存中相同的会话控制ID,服务器会根据会话控制ID查看是否存在对应的会话控制对象,如果存在则会取出对应的数据;如果不存在,则创建一个新的会话控制ID。
在一个可选的实施例中,客户端与服务器之间的通讯采用可序列化的二进制编码协议。可序列化的二进制进制编码的数据包相较于HTTP协议的数据包,大大压缩了体积。进一步地,使用可序列化二进制编码进行压缩的方式如下:
遍历文件,并判断文件中是否存在相同的第一区块和第二区块。
若不存在与第一区块相同的第二区块,更换第一区块的内容。
若存在,使用已知位置和长度的第一区块来来确定第二区块;包括,使用第一区块和第二区块之间的距离以及相同内容的长度来替换后一区块;由于区块之间的距离和长度小于被替换内容的大小,所以文件的内容得到了压缩。
继续遍历文件,直到不存在与第一区块相同的第二区块。
在所述遍历过程中,使用一个预设长度的“窗口”,逐个字节滑动以寻找与第一区块相同的第二区块。
作为优选的,在实施上述压缩和解压过程中,还可以将文件中一定位长的值看作是符号,比如把8位长的256种值,也就是字节的256种值看作是符号。根据这些符号在文件中出现的频率,对这些符号重新编码。对于出现次数非常多的,用较少的位来表示,对于出现次数非常少的,我们用较多的位来表示。这样一来,文件的一些部分位数变少了,一些部分位数变多了,由于变小的部分比变大的部分多,所以整个文件的大小还是会减小,所以文件得到了压缩。
综上所述,可序列化的二进制编码协议与HTTP协议相比能够大大减少数据包的体积。同时,可序列化的二进制编码还可以通过压缩算法进行进一步地压缩,从而进一步减少传输过程的带宽耗费。
为了保证数据的安全性,可以使用非对称加密、RSA加密等加密算法。
在一个可选的实施例中,使用如下算法对数据进行加密:
将明文分为多组等长度组;
使用加密函数每次对每一组明文进行N-1轮加密,每轮加密包括:字节代换、行位移、列混合和轮密钥加;
执行第N轮加密,第N轮加密包括:字节代换、行位移和轮密钥加;
其中N≥10。
如图9所示,加密过程具体包括:把分组密码(明文)分成多组,每组长度相等,每次加密一组数据,直到加密完整个明文。分组长度是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,加密轮数不同。以加密轮数为10轮为例,加密公式为C=E(K,P),在加密函数E中,会执行一个轮函数,并且执行10次这个轮函数,这个轮函数的前9次执行的操作是一样的,只有第10次有所不同。也就是说,一个明文分组会被加密10轮。加密的核心就是实现一轮中的所有操作。加密处理单位是字节,128位的输入明文分组P和输入密钥K都被分成16个字节,分别记为P=P0P1…P15和K=K0K1…K15。如,明文分组为P=abcdefghijklmnop,其中的字符a对应P0,p对应P15。一般地,明文分组用字节为单位的正方形矩阵描述,称为状态矩阵。在算法的每一轮中,状态矩阵的内容不断发生变化,最后的结果作为密文输出。该矩阵中字节的排列顺序为从上到下、从左至右依次排列。类似地,128位密钥也是用字节为单位的矩阵表示,矩阵的每一列被称为1个32位比特字。通过密钥编排函数该密钥矩阵被扩展成一个44个字组成的序列W[0],W[1],…,W[43],该序列的前4个元素W[0],W[1],W[2],W[3]是原始密钥,用于加密运算中的初始密钥加(下面介绍);后面40个字分为10组,每组4个字(128比特)分别用于10轮加密运算中的轮密钥加。在加密过程中,W[0,3]是指W[0]、W[1]、W[2]和W[3]串联组成的128位密钥。加密的第1轮到第9轮的轮函数一样,包括4个操作:字节代换、行位移、列混合和轮密钥加。最后一轮迭代不执行列混合。另外,在第一轮迭代之前,先将明文和原始密钥进行一次异或加密操作。解密过程仍为10轮,每一轮的操作是加密操作的逆操作。由于4个轮操作都是可逆的,因此,解密操作的一轮就是顺序执行逆行移位、逆字节代换、轮密钥加和逆列混合。同加密操作类似,最后一轮不执行逆列混合,在第1轮解密之前,要执行1次密钥加操作。
综上所述,基于本实施例,客户端能够更快速稳定安全的接入后端服务器。能够突破网关及防火墙限制,提升了连接成功率,提升了网络传输速度,减少了流量消耗,减少卡断现象,提升用户体验。利用多路复用方式的长连接协议模式能够大幅度减少开发成本。
在一个可选的实施例中,如图11所示,提供一种用户接入装置,所述装置包括:连接建立模块,用于建立与服务器之间的连接;握手模块,用于发起与服务器的握手请求;多路复用方式长连接保持模块,用于在所述握手请求成功之后,发送业务数据请求,并定时发出心跳包,与服务器保持多路复用方式的长连接。
在一个可选的实施例中,如图12所示,提供了连接建立模块所包含的子模块,包括:选择连接子模块,用于根据当前网络环境选择连接方式;接口列表接收子模块,用于接收服务器发送的接口列表;选择连接子模块,用于选择接口列表中的接口与服务器进行连接。
在一个可选的实施例中,所述握手模块用于验证连接建立的可用性。
在一个可选的实施例中,如图13所示,提供了多路复用方式长连接保持模块所包含的子模块:连接建立子模块,用于客户端向服务器发起连接,服务器接受客户端连接,双方建立连接;长连接保持子模块,用于在完成一次读写之后,客户端与服务器之间的连接并不会主动关闭,后续的读写操作采用多发多收的方式使用这个连接。
在一个可选的实施例中,如图14所示,提供了选择连接子模块所包含的子模块,包括:网络环境判断子模块,用于判断当前网络环境;直连子模块,用于当前网络环境为运营商网络时,使用直连方式连接服务器;用于当前网络环境为接入网时,进行DNS解析,并连接服务器。
在一个可选的实施例中,所述接口列表接收子模块中,所述接口列表为根据上报的网络类型以及网络地址生成的,与上报的网络地址最接近的网络地址接口列表。
在一个可选的实施例中,如图15所示,长连接保持子模块,包括:连接建立子模块,用于客户端向服务器发起连接,服务器接受客户端连接,双方建立连接;长连接保持子模块,用于在完成一次读写之后,客户端与服务器之间的连接并不会主动关闭,后续的读写操作采用多发多收的方式使用这个连接。
在一个可选的实施例中,所述用户接入装置,使用可序列化的二进制编码进行传输。
在一个可选的实施例中,如图16所示,所述用户接入装置包括压缩模块,用于对所述可序列化的二进制编码进行压缩,包括:区块遍历模块,用于遍历文件,判断文件中是否存在相同的第一区块和第二区块;区块更换子模块,用于当不存在于第一区块相同的第二区块,更换第一区块的内容;压缩子模块,用于当存在于第一区块相同的第二区块时,使用第一区块和第二区块之间的距离以及相同内容的长度来替换后一区块;继续遍历子模块,用于遍历文件,直到不存在于第一区块相同的第二区块。
在一个可选的实施例中,如图17所示,所述装置还包括加密模块,所述加密步骤包括:明文分组子模块,用于将明文分为多组等长度组;第一加密子模块,用于使用加密函数对每组明文进行N-1轮加密,每轮加密包括:字节代换、行位移、列混合和轮密钥加;第二加密子模块,用于使用加密函数对每组明文执行第N轮加密,第N轮加密包括:字节代换、行位移和轮密钥加;其中N≥10。
请参考图18,其示出了本发明一个实施例提供的测试终端的结构示意图。该终端包含前述实施例提供的模块,也可以实施前述实施例提供的用户接入方法。具体来讲:
终端1000可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、视频传感器150、音频电路160、WiFi(wireless fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图8中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端1000的使用所创建的数据(比如视频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括图像输入设备131以及其他输入设备132。图像输入设备131可以是摄像头,也可以是光电扫描设备。除了图像输入设备131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及终端1000的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,15有机发光二极管)等形式来配置显示面板141。
终端1000可包括至少一种视频传感器150,视频传感器用于获取用户的视频信息。终端1000还可以包括其它传感器(未示出),比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在终端1000移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端1000还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
视频电路160、扬声器161,传声器162可提供用户与终端1000之间的视频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路11以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与终端1000的通信。
WiFi属于短距离无线传输技术,终端1000通过WiFi模块70可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了WiFi模块170,但是可以理解的是,其并不属于终端1000的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是终端1000的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端1000的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。
可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
终端1000还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端1000还可以包括蓝牙模块等,在此不再赘述。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种客户端接入方法,其特征在于,所述方法包括:
建立与服务器之间的连接;
在与服务器建立连接之后,发起与服务器的握手请求;
在所述握手请求成功之后,向所述服务器发送业务数据请求,并定时向所述服务器发出心跳包,与所述服务器保持多路复用方式的长连接。
2.根据权利要求1所述的方法,其特征在于,所述建立与服务器之间的连接包括:
根据当前网络环境选择连接方式;接收所述服务器发送的网络地址以及端口列表;
选择端口列表中的接口与所述服务器进行连接。
3.根据权利要求2所述的方法,其特征在于,所述根据当前网络环境选择连接方式包括:
判断当前网络环境;
若当前网络环境为移动互联网,则使用直连方式连接所述服务器;
若当前网络环境为无线局域网,则进行域名系统(DNS)解析,并根据所述域名系统(DNS)解析结果连接所述服务器。
4.根据权利要求2所述的方法,其特征在于,所述服务器发送的网络地址以及端口列表,是根据上报的网络类型以及网络地址生成的,所述端口列表按照与上报的网络地址的连接时延进行排序。
5.根据权利要求1所述的方法,其特征在于,所述握手请求用于验证与所述服务器的所述连接是否可以进行数据交换。
6.根据权利要求1所述的方法,其特征在于,所述与服务器保持多路复用方式的长连接包括:
向服务器发起连接请求,服务器接受所述连接请求,并建立连接;
使用多信道收发的方式与所述服务器进行数据交换;
在数据交换完成之后,保持所述连接,以在下一次数据交换时使用。
7.根据权利要求1所述的方法,其特征在于,所述向所述服务器发送业务数据请求包括:
使用可序列化的二进制编码发送所述业务数据请求。
8.根据权利要求7所述的方法,其特征在于,所述可序列化的二进制编码是通过压缩步骤获得,所述压缩步骤包括:
遍历文件,判断文件中是否存在相同的第一区块和第二区块;
若不存在与第一区块相同的第二区块,更换第一区块的内容;
若存在,使用第一区块和第二区块之间的距离以及用所述第一区块的长度来替换所述第二区块;
继续遍历文件,直到不存在与第一区块相同的第二区块。
9.根据权利要求1所述的方法,其特征在于,所述建立与服务器之间的连接步骤,还包括加密步骤,所述加密步骤包括:
将明文分为多组等长度组;
使用加密函数每次对每一组明文进行N-1轮加密,每轮加密包括:字节代换、行位移、列混合和轮密钥加;
执行第N轮加密,第N轮加密包括:字节代换、行位移和轮密钥加;
其中N≥10。
10.一种用户接入装置,其特征在于,所述装置包括:
连接建立模块,用于建立与服务器之间的连接;
握手模块,用于在与服务器建立连接之后,发起与服务器的握手请求;
多路复用方式长连接保持模块,用于在所述握手请求成功之后,向所述服务器发送业务数据请求,并定时向所述服务器发出心跳包,与所述服务器保持多路复用方式的长连接。
11.根据权利要求10所述的装置,其特征在于,所述连接建立模块包括:
选择连接子模块,用于根据当前网络环境选择连接方式;
接口列表接收子模块,用于接收服务器发送的网络地址以及端口列表;
选择连接子模块,用于选择接口列表中的接口与服务器进行连接。
12.根据权利要求10所述的装置,其特征在于,所述握手请求用于验证与所述服务器的所述连接是否可以进行数据交换。
13.根据权利要求10所述的装置,其特征在于,所述多路复用方式长连接保持模块包括:
连接建立子模块,用于客户端向服务器发起连接,服务器接受客户端连接,双方建立连接;
长连接保持子模块,用于在完成一次读写之后,客户端与服务器之间的连接并不会主动关闭,后续的读写操作采用多发多收的方式使用这个连接。
14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至9任一所述的方法。
15.一种终端,包括存储器、处理器,其特征在于,
所述存储器中存储有指令;
所述处理器执行所述指令以实现权利要求1至9之一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811156294.1A CN109088799B (zh) | 2018-09-28 | 2018-09-28 | 一种客户端接入方法、装置、终端以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811156294.1A CN109088799B (zh) | 2018-09-28 | 2018-09-28 | 一种客户端接入方法、装置、终端以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109088799A true CN109088799A (zh) | 2018-12-25 |
CN109088799B CN109088799B (zh) | 2021-09-14 |
Family
ID=64843173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811156294.1A Active CN109088799B (zh) | 2018-09-28 | 2018-09-28 | 一种客户端接入方法、装置、终端以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109088799B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110213298A (zh) * | 2019-06-28 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 联机房间的提供方法、装置、设备及介质 |
CN110275443A (zh) * | 2019-05-09 | 2019-09-24 | 深圳慧安康科技有限公司 | 主动的智能控制方法、系统及智能装置 |
CN110428509A (zh) * | 2019-08-07 | 2019-11-08 | 李小虎 | 一种智能停车场的自动收费系统及其优化方法 |
CN111698275A (zh) * | 2019-03-15 | 2020-09-22 | 华为技术有限公司 | 数据处理方法、装置及设备 |
WO2020223967A1 (zh) * | 2019-05-09 | 2020-11-12 | 李修球 | 主动的智能控制方法、系统及智能装置 |
CN112291181A (zh) * | 2019-07-23 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 一种基于多网卡的数据传输方法以及相关装置 |
CN113612972A (zh) * | 2021-08-09 | 2021-11-05 | 深圳市猿人创新科技有限公司 | 一种终端监控设备通信方法、装置、电子设备及存储介质 |
CN113613348A (zh) * | 2021-08-11 | 2021-11-05 | 北京达佳互联信息技术有限公司 | 连接建立方法、装置、电子设备、存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102025474A (zh) * | 2010-12-30 | 2011-04-20 | 北京佳讯飞鸿电气股份有限公司 | 一种网络数据传输方法 |
CN103581192A (zh) * | 2013-11-08 | 2014-02-12 | 冯丽娟 | 网络通信主体确认方法及系统 |
CN104796387A (zh) * | 2014-01-21 | 2015-07-22 | 腾讯科技(深圳)有限公司 | 一种网络长连接的通信方法及装置 |
CN105516221A (zh) * | 2014-09-24 | 2016-04-20 | 阿里巴巴集团控股有限公司 | 信息推送系统及方法 |
CN105681385A (zh) * | 2015-05-22 | 2016-06-15 | 深圳Tcl数字技术有限公司 | 信息推送方法及装置 |
CN106961364A (zh) * | 2017-04-24 | 2017-07-18 | 努比亚技术有限公司 | 心跳检测方法及应用服务器 |
CN108134875A (zh) * | 2017-12-20 | 2018-06-08 | 腾讯音乐娱乐科技(深圳)有限公司 | 音频播放的控制方法、装置、存储介质以及设备 |
-
2018
- 2018-09-28 CN CN201811156294.1A patent/CN109088799B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102025474A (zh) * | 2010-12-30 | 2011-04-20 | 北京佳讯飞鸿电气股份有限公司 | 一种网络数据传输方法 |
CN103581192A (zh) * | 2013-11-08 | 2014-02-12 | 冯丽娟 | 网络通信主体确认方法及系统 |
CN104796387A (zh) * | 2014-01-21 | 2015-07-22 | 腾讯科技(深圳)有限公司 | 一种网络长连接的通信方法及装置 |
CN105516221A (zh) * | 2014-09-24 | 2016-04-20 | 阿里巴巴集团控股有限公司 | 信息推送系统及方法 |
CN105681385A (zh) * | 2015-05-22 | 2016-06-15 | 深圳Tcl数字技术有限公司 | 信息推送方法及装置 |
CN106961364A (zh) * | 2017-04-24 | 2017-07-18 | 努比亚技术有限公司 | 心跳检测方法及应用服务器 |
CN108134875A (zh) * | 2017-12-20 | 2018-06-08 | 腾讯音乐娱乐科技(深圳)有限公司 | 音频播放的控制方法、装置、存储介质以及设备 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11647104B2 (en) | 2019-03-15 | 2023-05-09 | Huawei Technologies Co., Ltd. | Data processing method and apparatus, and device |
CN111698275A (zh) * | 2019-03-15 | 2020-09-22 | 华为技术有限公司 | 数据处理方法、装置及设备 |
WO2020187186A1 (zh) * | 2019-03-15 | 2020-09-24 | 华为技术有限公司 | 数据处理方法、装置及设备 |
CN110275443A (zh) * | 2019-05-09 | 2019-09-24 | 深圳慧安康科技有限公司 | 主动的智能控制方法、系统及智能装置 |
WO2020223967A1 (zh) * | 2019-05-09 | 2020-11-12 | 李修球 | 主动的智能控制方法、系统及智能装置 |
CN110213298B (zh) * | 2019-06-28 | 2021-04-09 | 腾讯科技(深圳)有限公司 | 联机房间的提供方法、装置、设备及介质 |
CN110213298A (zh) * | 2019-06-28 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 联机房间的提供方法、装置、设备及介质 |
CN112291181A (zh) * | 2019-07-23 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 一种基于多网卡的数据传输方法以及相关装置 |
CN112291181B (zh) * | 2019-07-23 | 2023-03-10 | 腾讯科技(深圳)有限公司 | 一种基于多网卡的数据传输方法以及相关装置 |
CN110428509A (zh) * | 2019-08-07 | 2019-11-08 | 李小虎 | 一种智能停车场的自动收费系统及其优化方法 |
CN113612972A (zh) * | 2021-08-09 | 2021-11-05 | 深圳市猿人创新科技有限公司 | 一种终端监控设备通信方法、装置、电子设备及存储介质 |
CN113612972B (zh) * | 2021-08-09 | 2023-12-05 | 深圳市猿人创新科技有限公司 | 一种终端监控设备通信方法、装置、电子设备及存储介质 |
CN113613348A (zh) * | 2021-08-11 | 2021-11-05 | 北京达佳互联信息技术有限公司 | 连接建立方法、装置、电子设备、存储介质 |
CN113613348B (zh) * | 2021-08-11 | 2023-08-29 | 北京达佳互联信息技术有限公司 | 连接建立方法、装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109088799B (zh) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109088799A (zh) | 一种客户端接入方法、装置、终端以及存储介质 | |
US10959124B2 (en) | Uplink data transmission method, terminal, network side device and system | |
CN106712932B (zh) | 密钥管理方法、装置及系统 | |
CN104580167B (zh) | 一种传输数据的方法、装置和系统 | |
US20120322368A1 (en) | Simple peer-to-peer network formation | |
KR20130126630A (ko) | 파일 시스템 세션 내 다중채널 연결 | |
EP3179693B1 (en) | Method, apparatus, storage medium and computer program product for establishing a data connection | |
CN107070934B (zh) | 一种透明代理实现方法、装置、客户端以及终端 | |
CN112291181B (zh) | 一种基于多网卡的数据传输方法以及相关装置 | |
CN113691589B (zh) | 报文传输方法、装置及系统 | |
US20230147131A1 (en) | Data transmission method, apparatus, and system | |
CN109088844A (zh) | 信息拦截方法、终端、服务器及系统 | |
US20100291913A1 (en) | Remote control method between mobile phones | |
CN106685948A (zh) | 一种数据处理方法、终端、通信设备及数据处理系统 | |
CN108540552A (zh) | 设备互连方法、装置、系统、设备和存储介质 | |
CN109951560B (zh) | 提高应用服务并发量及应用速度的方法、终端及存储介质 | |
CN104391629A (zh) | 定向发送消息的方法、显示消息的方法、服务器及终端 | |
CN107786423B (zh) | 一种即时通讯的方法和系统 | |
US9965341B2 (en) | Method and device for exchanging data between processes | |
CN111078233B (zh) | 一种应用推广的实现方法、装置、设备及存储介质 | |
KR101516508B1 (ko) | 무선 핸드헬드 컴퓨팅 디바이스의 메모리 리소스(들)를 관리하기 위한 시스템 및 방법 | |
CN105681370A (zh) | 文件同步方法、服务器及客户端 | |
WO2017166093A1 (zh) | 前置系统 | |
CN104378339B (zh) | 一种使用代理协议的通信方法和装置 | |
CN106537962A (zh) | 无线网络配置、接入和访问方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |