[发明专利]一种传输控制协议的通信方法及服务器有效
申请号: | 201010515928.5 | 申请日: | 2010-10-19 |
公开(公告)号: | CN102457537A | 公开(公告)日: | 2012-05-16 |
发明(设计)人: | 胡建强;肖阳升;唐珂;史峰;任卿;黄利;董昊;纪东方;赵明华;李广学 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L29/06 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 郭润湘 |
地址: | 英属开曼群岛大开曼*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 传输 控制 协议 通信 方法 服务器 | ||
技术领域
本申请涉及网络通信领域,尤其涉及一种传输控制协议TCP的通信方法及服务器。
背景技术
通信的双方如果需要通过传输控制协议(TCP,Transmission Control Protocol)进行通信,需要在通信双方例如客户端(client)应用程序与服务器(server)应用程序之间建立一个TCP连接,然后在这个连接上相互发送数据。TCP协议中,使用IP地址和端口标识一个通信方,端口标识是一个16位的无符号整数,取值在1~65535之间。
以服务器应用程序和客户端应用程序之间建立TCP连接的流程为例,在建立连接前,服务器应用程序首先打开一个端口,并在该端口监听(Listen);然后客户端应用程序也打开一个端口,并在该端口上向服务器应用程序监听的端口发起一个连接(Connect),在服务器应用程序与客户端应用程序之间建立TCP连接的过程至少需要三次握手。
要实现两台服务器的应用程序(例如客户端应用程序和服务器应用程序)之间的TCP通信,通常的做法会在两个服务器的应用程序之间一一建立TCP连接,如图1所示,服务器1上的每个应用程序(A~D)分别与服务器2上各应用程序(E~H)分别建立TCP连接。
只要两个服务器的应用程序之间需要进行通信,它们之间就会建立起一个TCP连接,直到不需要这个连接为止。假设每台服务器上各有100个应用程序,就两台服务器而言,它们之间的应用程序如果都需要建立彼此之间的TCP连接,就会建立100*100个TCP连接,即1万个TCP连接,对于操作系统和协议栈来说,维护如此多的TCP连接,需要消耗大量的系统资源。为了避免同时存在大量的TCP连接占用系统资源的问题,一种解决的方案是,在应用程序用完TCP连接后,尽可能地快速关闭连接,但如果下次再次需要建立连接,那么需要重新打开端口重新建立连接。重新建立连接需要三次握手的过程,显然也会使得应用程序受到延时的影响。
尤其对于建立大规模的集群来说,如果该集群有5000台服务器,平均一台服务器上有100个应用程序,那么最多需要建立50万个TCP连接,一方面维护这么多的TCP连接状态需要耗费大量的系统资源,另一方面即使不同时维护如此多的TCP连接,如此数量众多的TCP连接需要频繁地被打开或关闭,应用程序的处理也会受到频繁延时的影响。
发明内容
本申请实施例提供一种传输控制协议的通信方法及服务器,用以解决现有传输控制协议中,通信双方数量较多的应用程序之间需要进行网络通信时,维护大量的TCP连接所带来的系统资源耗费以及应用程序延时的问题。
本申请实施例提供的传输控制协议的通信方法之一,包括:
第一服务器的第一通信代理接收所述第一服务器的第一应用程序发送的数据包;
所述第一通信代理解析所述数据包中的目的地址,确定所述目的地址指示的接收所述数据包的第二应用程序所在的第二服务器;
所述第一通信代理将所述数据包放入到第一通信代理和所述第二服务器的第二通信代理之间、与接收所述数据包的第二应用程序对应第一队列中,并通过第一通信代理与第二通信代理之间预先建立的数据链路的常连接,将所述数据包发送至所述第二通信代理。
本申请实施例提供的传输控制协议的通信方法之二,包括:
第一服务器的第一通信代理通过所述第一通信代理与第二服务器的第二通信代理之间预先建立的数据链路的常连接,接收由所述第二通信代理转发的所述第二服务器的第二应用程序发送的数据包;
所述第一通信代理解析所述数据包中的目的地址,确定所述目的地址指示的接收所述数据包的第一服务器的第一应用程序;
所述第一通信代理将接收的所述数据包放入到第一通信代理与所述第一应用程序之间的第二队列中,并通过第一通信代理与第一应用程序之间预先建立的进程间通信连接发送至所述第一应用程序。
本申请实施例提供的服务器之一,包括:
接收单元,用于接收所述服务器的第一应用程序发送的数据包;
地址解析单元,用于解析所述数据包中的目的地址,确定所述目的地址指示的接收所述数据包的第二应用程序所在的第二服务器;
发送单元,用于将所述数据包放入到所述服务器的第一通信代理和所述第二服务器的第二通信代理之间、与接收所述数据包的第二应用程序对应第一队列中,并通过第一通信代理与第二通信代理之间预先建立的数据链路的常连接,将所述数据包发送至所述第二通信代理。
本申请实施例提供的服务器之二,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010515928.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:介电绝缘介质
- 下一篇:一种基于无线传感器网络传输数据的方法、装置及系统