[发明专利]SSL非阻塞通信方法及用于SSL非阻塞通信的服务器有效
申请号: | 201110144979.6 | 申请日: | 2011-05-31 |
公开(公告)号: | CN102811201A | 公开(公告)日: | 2012-12-05 |
发明(设计)人: | 彭渊 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L12/56 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 苏培华;赵娟 |
地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | ssl 阻塞 通信 方法 用于 服务器 | ||
技术领域
本申请涉及网络通信的技术领域,特别是涉及一种SSL非阻塞通信的方法,以及一种用于SSL非阻塞通信的服务器。
背景技术
SSL(Secure Sockets Layer安全套接层)是为网络通信提供安全及数据完整性的一种安全协议,用以保障在Internet上数据传输之安全,其利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不易被截取及窃听。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:
第一层:SSL记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
第二层:SSL握手协议(SSL Handshake Protocol),它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
SSL协议提供的服务主要有:1)认证用户和服务器,确保数据发送到正确的客户机和服务器;2)加密数据以防止数据中途被窃取;3)维护数据的完整性,确保数据在传输过程中不被改变。
目前,基于SSL协议的通信方式主要包括阻塞通信方式和非阻塞通信方式:
JDK(Java Development Kit)中的SSLServerSocket和SSLSocket就提供了SSL协议通讯的面向字节流的阻塞实现。对于用SSLServerSocket及SSLSocket编写的服务器程序和客户程序,他们在运行过程中常常会阻塞。例如,当一个线程执行SSLServerSocket的accept()方法时,假如没有客户连接,该线程就会一直等到有客户连接才从accept()方法返回;再例如,当线程执行SSLSocket的read()方法时,如果输入流中没有数据,该线程就会一直等到读入足够的数据才从read()方法返回。假如服务器程序需要同时与多个客户通信,就必须分配多个工作线程,让他们分别负责与一个客户通信,当然每个工作线程都有可能经常处于长时间的阻塞状态。
对于SSL阻塞通信的方式而言,通常需要较大的系统开销,并且工作线程的许多时间都浪费在阻塞I/O操作上,从而导致性能较慢,通信效率较低。再者,JDK的SSLServerSocket隐藏了SSL协议的握手交互过程,将SSL协议的握手交互过程做了高度的封装,从而导致相关技术人员无法查看具体的握手交互过程,无法获取到握手交互过程中的相关报文。然而,在诸多面向SSL协议的应用中,都需要通过获知具体的握手交互过程及相关报文,来处理基于SSL协议的握手交互。例如,对电子商务平台中使用的秒杀器产生的https请求分析,或者,对其他爬虫软件模拟的https请求分析,或者,建立支持SSL协议的服务器等。
SSL非阻塞通信的方式在JDK的1.4版被引入Java语言,采用这种方式,服务器程序接收客户连接,客户程序建立与服务器的连接,以及服务器程序和客户程序收发数据的操作都可以按非阻塞的方式进行。并且,服务器程序只需要创建一个线程,就能完成同时与多个客户通信的任务。尽管SSL非阻塞通信的方式解决了SSL阻塞通信方式所存在的系统开销大、性能较慢、通信效率较低的问题,但是在安全上不支持SSL协议的握手交互。具体而言,由于JDK的1.4版中通过新的I/O库(JavaNIO)实现非阻塞通信,NIO库包含了文件、管道以及客户机和服务器套接字的非阻塞功能,然而,库中缺少的一个特性是安全的非阻塞套接字连接。在Java NIO库中没有建立安全的非阻塞通道类,故不能使用安全的非阻塞通信。
因此,目前需要本领域技术人员迫切解决的一个技术问题就是:提出一种可以支持SSL协议握手交互的非阻塞通信机制,既能保证进行SSL协议非阻塞的高性能通讯,又能控制整个SSL协议的握手交互过程,并易于获取握手交互过程中的相关报文。
发明内容
本申请所要解决的技术问题是提供一种SSL非阻塞通信的方法,用以保证进行SSL协议非阻塞的高性能通讯,又能控制整个SSL协议的握手交互过程,并易于获取握手交互过程中的相关报文。
本申请还提供了一种用于SSL非阻塞通信的服务器,用以保证上述方法在实际中的应用及实现。
为了解决上述问题,本申请公开了一种SSL非阻塞通信的方法,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110144979.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:无线终端装置用的天线
- 下一篇:一种高速图像采集方法