CN106713437A - 一种用于nat网络中服务器向客户端发送消息的方法 - Google Patents
一种用于nat网络中服务器向客户端发送消息的方法 Download PDFInfo
- Publication number
- CN106713437A CN106713437A CN201611164543.2A CN201611164543A CN106713437A CN 106713437 A CN106713437 A CN 106713437A CN 201611164543 A CN201611164543 A CN 201611164543A CN 106713437 A CN106713437 A CN 106713437A
- Authority
- CN
- China
- Prior art keywords
- client
- server
- udp
- address
- intranet
- 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.)
- Pending
Links
Classifications
-
- 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/50—Network services
- H04L67/55—Push-based network services
-
- 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/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种用于NAT网络中服务器向客户端发送消息的方法,包括:在服务器中开通UDP‑S服务以与客户端通信、客户端通过向服务器的UDP‑S服务发送UDP数据包以建立服务器缓存信息表、服务器根据UDP数据包判断客户端是否位于NAT网关限定的内网中并返回客户端标识、客户端响应所述客户端标识以完成所述服务器和所述客户端之间的UDP通信通道的建立、服务器根据服务器缓存信息表的信息调用UDP‑S服务通过UDP通信通道向客户端发送消息。本发明具有节约服务器端带宽、通信通道建立简单的优点。
Description
技术领域
本发明涉及计算机网络通信领域,并且更具体地涉及一种用于NAT网络中服务器向客户端发送消息的方法。
背景技术
客户端与服务器之间的通信是基于HTTP(超文本传输协议)的通信,而HTTP是无状态的通信协议,每一次请求-响应都是基于一个新建立的HTTP连接,这就使得服务器主动通知客户端成为一个难点。
目前,主流的解决方式有以下两种:一是客户端轮询技术,即客户端周期性地主动访问服务器的公网IP地址,以获取服务器数据状态的变化,此种方式的问题是:如果服务器的业务数据在两次连续的轮询的请求过程中没有变化,后一次请求的做工实际为负数——浪费了服务器端的带宽,而且没有获得有效负载;而且,客户端轮询过程中的定时器间隔时间参数也是一个难把握的问题,由于需要及时获取服务器端的业务数据状态,这个定时间隔参数设置不宜过长,但是过短又会频发第一个问题。
另一种方式是:客户端与服务器之间提供一个双向的、在一条TCP通道中的全双工的通信,即客户端与服务器之间建立长连接,此种方式的问题是:需要客户端与服务器之间通过Ping-Pong进行双向的心跳机制,来保证链路的可靠性,实现复杂,同样也造成了服务器端的带宽浪费。
发明内容
针对上述现有技术中存在的问题,本发明的目的在于提供一种用于NAT网络中服务器向客户端推送消息的方法,其通过在服务器和位于NAT网关后的客户端之间建立UDP通信通道来实现服务器实时向客户端推送数据的功能。
为了实现上述目的,本发明采用的技术方案如下:
一种用于NAT网络中服务器向客户端发送消息的方法,其步骤包括:
在服务器中开通UDP-S服务以与客户端通信;
客户端通过向服务器的UDP-S服务发送UDP数据包以建立本地缓存信息表;
服务器根据UDP数据包判断客户端是否位于NAT网关限定的内网中,并返回客户端标识;
客户端响应客户端标识以完成服务器和客户端之间的UDP通信通道的建立;
服务器根据本地缓存信息表的信息调用UDP-S服务通过UDP通信通道向客户端发送消息。
根据本发明的一个实施例,方法进一步包括:客户端通过服务器的TCP-S服务将客户端的ID号、内网IP地址和内网UDP监听端口发送给服务器并保存在服务器的数据库中。
根据本发明的一个实施例,方法进一步包括:在客户端的ID号、内网IP地址和内网UDP监听端口中的任一项发生改变时,客户端通过服务器的TCP-S服务将客户端的ID号、内网IP地址和内网UDP监听端口发送给服务器以更新服务器的数据库。
根据本发明的一个实施例,方法进一步包括:在客户端的ID号、内网IP地址和内网UDP监听端口中的任一项发生改变时,客户端通过服务器的UDP-S服务将客户端的ID号、内网IP地址和内网UDP监听端口发送给服务器以更新服务器缓存信息表
根据本发明的一个实施例,UDP数据包包含客户端的ID号、内网IP地址和内网UDP监听端口。
根据本发明的一个实施例,本地缓存信息表包含客户端的ID号、内网IP地址、内网UDP监听端口、公网IP地址以及公网端口。
根据本发明的一个实施例,所述方法进一步包括:服务器从UDP数据包中获取客户端的ID号、内网IP地址和内网UDP监听端口,并根据ID号在服务器缓存信息表中找到客户端的公网IP地址和公网端口,如果内网IP地址和公网IP地址一样并且内网UDP监听端口和公网端口一样,则客户端标识为0,反之,客户端标识为1。
根据本发明的一个实施例,如果客户端标识为0,客户端停止向服务器发送UDP数据包;如果客户端标识为1,客户端每隔一定时间间隔通过向服务器的UDP-S服务发送UDP数据包。
根据本发明的一个实施例,ID号是通过计算客户端的主板序列号和/或硬盘序列号而得到。
根据本发明的一个实施例,ID是在不能获得客户端的主板序列号和/或硬盘序列号的情况下通过计算客户端的MAC地址而得到。
本发明具有以下有益效果:服务器端通过使用UDP-S服务推送机制解决了轮询方式低效地消耗服务器的网络带宽和系统负载的问题。同时,由于服务器主动向客户端发送消息,因此有很好的低延迟性。进一步,服务器端通过UDP-S服务维持与客户端的UDP通信通道实现了通用的客户端与服务器之间基于HTTP的通信,服务器向客户端推送的任何数据都可以使用该UDP通信通道,而且UDP通信通道的建立更简单。
附图说明
图1为本发明的一种用于NAT网络中服务器向客户端发送消息的方法的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,示出了本发明的一种用于NAT网络中服务器向客户端发送消息的方法的流程示意图。为了能够与客户端进行通信,服务器端首先要开通UDP-S和TCP-S服务,应当理解的是,服务器和客户端之间的其他任何服务也可以直接访问UDP-S服务。接着,客户端通过UDP-S服务向服务器发送UDP数据包,UDP数据包包含了客户端的唯一ID号、内网IP地址和内网UDP监听端口。与此同时,客户端通过HTTP的请求方式将其唯一ID号、内网IP地址、内网UDP监听端口等信息上报服务器,并连同服务器通过学习而获得的客户端的对应的公网IP地址和公网端口等信息保存在服务器的数据库中,同时,将客户端的ID号、内网IP地址、内网UDP监听端口及对应的公网IP地址和公网端口等信息保存在服务器缓存信息表中。需要说明的是,客户端的唯一ID号是用于辨识客户端的唯一标识,其计算方法如下:
如果当前客户端的主板序列号和硬盘序列号都能获得时,将以主板序列号和硬盘序列号为计算因子进行计算以得到一个32位的字符作为该客户端的唯一ID号;
如果当前客户端的主板序列号和硬盘序列号只能获得其中一项时,将以可以获得的主板序列号和硬盘序列号中的其中一个为计算因子进行计算以得到一个32位的字符作为该客户端的唯一ID号;
如果当前客户端的主板序列号和硬盘序列号都不能获得时,则获取该客户端的MAC地址并以所获得的MAC地址为计算因子进行计算以得到一个32位的字符作为该客户端的唯一ID号。
接着,在接收到客户端发来的UDP数据包后,服务器从UDP数据包中获得客户端的ID号、内网IP地址和内网UDP监听端口,并通过ID号从服务器缓存信息表中获取客户端的对应的公网IP地址和公网端口,如果内网IP地址和公网IP地址一样并且内网UDP监听端口和公网端口一样,则判定客户端不在NAT网关限定的内网中并将客户端标识设置为0返回至客户端,如果内网IP地址和公网IP地址不一样并且内网UDP监听端口和公网端口也不一样,则判断客户端位于NAT网关限定的内网中并将客户端标识设置为1返回至客户端,
接着,客户端通过服务器的UDP-S服务接收到客户端标识之后,在客户端标识为0时,客户端将停止向服务器发送UDP数据包到,在客户端标识为1时,客户端需要每隔一定时间间隔(比如20秒)将其ID号、内网IP地址和内网UDP监听端口以UDP数据包的形式发送到服务器以使得服务器能够学习到客户端的目标地址(即公网IP地址)和端口(即公网端口)以作为发消息的目标地址。进一步,当客户端网络环境改变,即当客户端的ID号、内网IP地址和内网UDP监听端口中的任一项发生改变时,客户端需要将其ID号、内网IP地址和内网UDP监听端口通过UDP-S服务和TCP-S服务即时上报服务器以保持服务器缓存信息表和服务器的数据库中的信息始终是最新的状态。
至此,服务器和客户端之间的UDP通信通道建立,当服务器端有需要发送到客户端的消息时,服务器将可以根据本地缓存信息表中的内网和公网地址对应信息通过调用UDP-S服务利用建立好的UDP通信通道直接将消息发送到客户端。
以上实施例仅表达了本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种用于NAT网络中服务器向客户端发送消息的方法,其特征在于,所述方法包括:
在所述服务器中开通UDP-S服务以与所述客户端通信;
所述客户端通过所述服务器的所述UDP-S服务向所述服务器发送UDP数据包以建立服务器缓存信息表;
所述服务器根据所述UDP数据包判断所述客户端是否位于NAT网关限定的内网中,并返回客户端标识;
所述客户端响应所述客户端标识以完成所述服务器和所述客户端之间的UDP通信通道的建立;
所述服务器根据所述本地缓存信息表的信息调用所述UDP-S服务通过所述UDP通信通道向所述客户端发送消息。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:所述客户端通过所述服务器的TCP-S服务将所述客户端的ID号、内网IP地址和内网UDP监听端口发送给所述服务器并保存在所述服务器的数据库中。
3.根据权利要求2所述的方法,其特征在于,所述方法进一步包括:在所述客户端的所述ID号、所述内网IP地址、所述内网UDP监听端口中的任一项发生改变时,所述客户端通过所述服务器的所述TCP-S服务即时将所述客户端的所述ID号、所述内网IP地址和所述内网UDP监听端口发送给所述服务器以更新所述服务器的所述数据库。
4.根据权利要求2所述的方法,其特征在于,所述方法进一步包括:在所述客户端的所述ID号、所述内网IP地址、所述内网UDP监听端口中的任一项发生改变时,所述客户端通过所述服务器的所述UDP-S服务即时将所述客户端的所述ID号、所述内网IP地址和所述内网UDP监听端口发送给所述服务器以更新所述服务器的所述服务器缓存信息表。
5.根据权利要求1所述的方法,其特征在于,所述UDP数据包包含所述客户端的ID号、内网IP地址和内网UDP监听端口。
6.根据权利要求5所述的方法,其特征在于,所述服务器缓存信息表包含所述客户端的所述ID号、所述内网IP地址、所述内网UDP监听端口、公网IP地址以及公网端口。
7.根据权利要求6所述的方法,其特征在于,所述方法进一步包括:所述服务器从所述UDP数据包中获取所述客户端的所述ID号、所述内网IP地址和所述内网UDP监听端口,并根据所述ID号在所述服务器缓存信息表中找到所述客户端的公网IP地址和公网端口,如果所述内网IP地址和所述公网IP地址一样并且所述内网UDP监听端口和公网端口一样,则所述客户端标识为0,反之,所述客户端标识为1。
8.根据权利要求7所述的方法,其特征在于,如果所述客户端标识为0,所述客户端停止向所述服务器发送所述UDP数据包;如果所述客户端标识为1,所述客户端每隔一定时间间隔通过所述服务器的所述UDP-S服务向所述服务器发送所述UDP数据包。
9.根据权利要求2所述的方法,其特征在于,所述ID号是通过计算所述客户端的主板序列号和/或硬盘序列号而得到。
10.根据权利要求2所述的方法,其特征在于,所述ID是在不能获得所述客户端的主板序列号和/或硬盘序列号的情况下通过计算所述客户端的MAC地址而得到。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611164543.2A CN106713437A (zh) | 2016-12-16 | 2016-12-16 | 一种用于nat网络中服务器向客户端发送消息的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611164543.2A CN106713437A (zh) | 2016-12-16 | 2016-12-16 | 一种用于nat网络中服务器向客户端发送消息的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106713437A true CN106713437A (zh) | 2017-05-24 |
Family
ID=58937894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611164543.2A Pending CN106713437A (zh) | 2016-12-16 | 2016-12-16 | 一种用于nat网络中服务器向客户端发送消息的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106713437A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108540343A (zh) * | 2018-03-27 | 2018-09-14 | 新华三技术有限公司 | 路径的检测方法及装置 |
CN112565059A (zh) * | 2020-12-03 | 2021-03-26 | 城云科技(中国)有限公司 | 基于即时通讯私有云架构的消息传输方法和系统 |
CN112637364A (zh) * | 2021-01-06 | 2021-04-09 | 上海哔哩哔哩科技有限公司 | 建立p2p连接的方法、客户端及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1694430A (zh) * | 2005-05-25 | 2005-11-09 | 复旦大学 | 基于nat的udp流媒体服务器的网关穿透方法 |
CN101442492A (zh) * | 2008-12-26 | 2009-05-27 | 中国科学院计算技术研究所 | 一种p2p网络中实现nat穿越的方法和系统 |
US20140006481A1 (en) * | 2012-06-29 | 2014-01-02 | Clifford A. Frey | Methods for exchanging network management messages using udp over http protocol |
CN104735106A (zh) * | 2013-12-20 | 2015-06-24 | 乐视网信息技术(北京)股份有限公司 | 一种节点发送方法及装置 |
CN105262836A (zh) * | 2015-10-30 | 2016-01-20 | 惠州高盛达科技有限公司 | 服务器推送信息的方法及客户端接收推送信息的方法 |
-
2016
- 2016-12-16 CN CN201611164543.2A patent/CN106713437A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1694430A (zh) * | 2005-05-25 | 2005-11-09 | 复旦大学 | 基于nat的udp流媒体服务器的网关穿透方法 |
CN101442492A (zh) * | 2008-12-26 | 2009-05-27 | 中国科学院计算技术研究所 | 一种p2p网络中实现nat穿越的方法和系统 |
US20140006481A1 (en) * | 2012-06-29 | 2014-01-02 | Clifford A. Frey | Methods for exchanging network management messages using udp over http protocol |
CN104735106A (zh) * | 2013-12-20 | 2015-06-24 | 乐视网信息技术(北京)股份有限公司 | 一种节点发送方法及装置 |
CN105262836A (zh) * | 2015-10-30 | 2016-01-20 | 惠州高盛达科技有限公司 | 服务器推送信息的方法及客户端接收推送信息的方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108540343A (zh) * | 2018-03-27 | 2018-09-14 | 新华三技术有限公司 | 路径的检测方法及装置 |
CN112565059A (zh) * | 2020-12-03 | 2021-03-26 | 城云科技(中国)有限公司 | 基于即时通讯私有云架构的消息传输方法和系统 |
CN112637364A (zh) * | 2021-01-06 | 2021-04-09 | 上海哔哩哔哩科技有限公司 | 建立p2p连接的方法、客户端及系统 |
CN112637364B (zh) * | 2021-01-06 | 2023-01-10 | 上海哔哩哔哩科技有限公司 | 建立p2p连接的方法、客户端及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100550763C (zh) | 网络设备的管理方法及网络管理系统 | |
CN107948076B (zh) | 一种转发报文的方法及装置 | |
CN102571749B (zh) | 使用中继服务器的数据传输系统和方法 | |
CN105120495B (zh) | 一种智能移动终端的消息推送方法及系统 | |
CN108512885A (zh) | 对被识别为消息队列遥测传输包的网络包执行特定动作 | |
CN102138313A (zh) | 针对rfc 3313的带内dpi媒体预留修改 | |
CN104967613B (zh) | 一种移动网络环境下数据传输的系统和方法 | |
CN110247848A (zh) | 发送报文的方法、网络设备及计算机可读存储介质 | |
US9948500B2 (en) | Method and apparatus of performing simultaneous multi-agent access for command execution through a single client | |
CN103297324A (zh) | 一种网络数据即时传输中的局域网定位方法 | |
US20200084156A1 (en) | A Method Of Determining Passive Round Trip Time, RTT, Delay In A Telecommunications System | |
CN106713437A (zh) | 一种用于nat网络中服务器向客户端发送消息的方法 | |
CN103718509B (zh) | 采用自适应的传输队列长度来降低数据分组损失的系统和方法 | |
CN105991442B (zh) | 报文转发方法及装置 | |
US9699139B2 (en) | Communications system | |
CN109413120A (zh) | 一种通信方法及装置、电子设备及服务器 | |
CN103916489B (zh) | 一种单域名多ip的域名解析方法及系统 | |
CN107343285B (zh) | 一种管理设备及设备管理方法 | |
RU2007119383A (ru) | Способ регистрации мобильного оконечного устройства связи в локальной сети | |
CN107124482A (zh) | 一种dns数据包转发方法、系统及路由器 | |
US20160006690A1 (en) | Method of effective retaining of nat channel service | |
CN106804033A (zh) | 会话绑定方法和系统及能力开放网关 | |
US7903672B1 (en) | Signaling protocol registration load reduction | |
US20070243859A1 (en) | Method and Apparatus for Efficiently Transferring Data within a Telecommunications Network | |
CN112039988A (zh) | 一种基于IPv6网络的智慧校园平台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170524 |
|
RJ01 | Rejection of invention patent application after publication |