首页> 中国专利> 使用IGMP实现内网穿透的方法和内网穿透系统

使用IGMP实现内网穿透的方法和内网穿透系统

摘要

本发明公开一种使用IGMP实现内网穿透的方法,为解决使用SymmetricNAT的系统无法用一终端主动访问另一终端的缺陷而设计。该方法主要包括下述步骤:第一终端发送请求至服务器,两者之间保持连接;第二终端发送IGMP报文,建组播域并归入该组,本地建立UDP套接字,并在一端口上监听;第二终端将组播域值和端口值发送至服务器,提出访问请求;服务器将访问请求转发给第一终端;第一终端将数据发送至第二路由器,由其转发给第二终端。本发明还公开了一种内网穿透系统,至少包括两个终端、一个路由器和一服务器。本发明方法适用于用一终端主动访问另一终端的各种系统,尤其是使用Symmetric NAT的系统。

著录项

  • 公开/公告号CN102420774A

    专利类型发明专利

  • 公开/公告日2012-04-18

    原文格式PDF

  • 申请/专利权人 深圳市共进电子股份有限公司;

    申请/专利号CN201210002998.X

  • 发明设计人 闫瑞轩;王金桂;

    申请日2012-01-06

  • 分类号H04L12/56(20060101);H04L29/06(20060101);

  • 代理机构11325 北京中伟智信专利商标代理事务所;

  • 代理人张岱

  • 地址 518067 广东省深圳市南山区南海大道1019号南山医疗器械产业园B116、B118;A211-A213、B201-B213;A311-313;B411-413

  • 入库时间 2023-12-18 04:55:43

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-04-30

    授权

    授权

  • 2014-04-02

    著录事项变更 IPC(主分类):H04L29/12 变更前: 变更后: 申请日:20120106

    著录事项变更

  • 2012-05-30

    实质审查的生效 IPC(主分类):H04L12/56 申请日:20120106

    实质审查的生效

  • 2012-04-18

    公开

    公开

说明书

技术领域

本发明涉及一种使用IGMP实现内网穿透的方法和内网穿透系统。

背景技术

目前大部分用户上网都是通过路由器(router)拨号,用户的电脑(PC)在 路由器(router)后,电脑(PC)使用私网地址。如图1所示。

当PC需要访问外部网络时,路由器将PC的ip(网络之间互连的协议)地 址进行NAPT(Network Address Port Translation)转换为公网的地址,并为此记 录一个session,记录了数据的源地址、源端口、目的地址和目的端口等信息。 此后,当外部网络相应数据发回来时,路由器根据会话(session)记录进行匹配。 匹配成功则将数据转发到内部相应的PC上。

这样的机制下,如果外部网络想主动访问内网的PC,会被路由器丢掉。因 为此时路由器内部并没有相应的session记录,路由器内部防火墙一般会将这种 没有记录的“不请自来”的数据包丢弃,保证内部网络的安全性。外部网络需 要主动访问路由器后面的一台主机时,一般有两种方法解决。

第一种方法是在路由器上手动添加端口映射规则,将外部来的某种指定的 数据转到内网指定的PC。这种方法需要修改路由器,需要对路由器有一定的了 解才能配置。

第二种方法即通常说的“打洞”,是利用了路由器中的NAPT机制。使用这 种“打洞”的方法要求路由器使用的NAT是Cone NAT。如果路由器使用的NAT 是Symmetric NAT,这种“打洞”方法就不管用了。

发明内容

为了克服上述的缺陷,本发明提供一种可用于Symmetric NAT路由器的使 用IGMP实现内网穿透的方法。

为达到上述目的,一方面,本发明提供一种使用IGMP实现内网穿透的方 法,所述方法令第一终端能够通过外部网络主动访问内网的第二终端,所述方 法包括下述步骤:

所述第一终端发送请求至服务器,第一终端和服务器之间通过心跳机制长 期保持此连接;

所述第二终端发送IGMP报文,建组播域并归入该组;本地建立UDP套接 字,并在一端口上监听;

所述第二终端经过第二路由器发送消息至服务器,将组播域值和端口值发 送至服务器,提出访问所述第一终端的请求;

服务器将访问请求转发给第一终端;

第一终端将数据通过UDP的方式发送至第二路由器,目的地址为所述组播 域值,目的端口为所述端口值;

第二路由器将数据转发给第二终端。

另一方面,本发明提供一种内网穿透系统,至少包括依次连接的第一终端、 服务器、第二路由器和第二终端,所述系统在使用上述方法后第二终端能够通 过所述服务器主动访问第一终端。

本发明使用IGMP实现内网穿透的方法中,IGMP使用组播地址传输,且 IGMP不需要使用端口号,可以绕开Symmetric NAT转换端口号的问题。实现了 对包括Symmetric NAT路由器系统在内的多种系统的内网穿透,效果良好。

本发明内网穿透系统通过网络实现一终端访问另一终端,使用IGMP实现 了内网穿透。结构合理,使用方便,性能良好。

附图说明

图1为现有PC上网的原理示意图。

图2为Cone NAT的工作原理示意图。

图3“打洞”的工作原理示意图。

图4图3所示“打洞”的步骤示意图。

图5本发明使用IGMP实现内网穿透的方法的步骤示意图。

具体实施方式

下面结合说明书附图和实施例对本发明做详细描述。

当客户端(例如PC)向互连网上一台服务器A发送请求时,路由器(router) 为其分配一个session,并分配一个端口号。路由器记录下本次session的源IP、 源端口、目的IP和目的端口。如果此时客户端向另外一台服务器B发送一个同 样的请求,路由器会为其再分配一个session。如果分配的端口号不变,此类型 的NAT叫Cone NAT,如图2所示。如果路由器为其分配了另外一个端口,此 类型的NAT叫Symmetric NAT。

在Cone NAT路由器的情况下可以通过“打洞”来实现一个客户端通过外网 主动访问另一个客户端。这种“打洞”操作需要一个具有固定互连网IP地址的 主机作为服务器,即作为连接建立的中转站。

如图3和图4所示,“打洞”方法主要包括下述步骤:

1.PC A先发一个请求到服务器(server);经过router A转换后,源地址和端 口改为50.50.50.50:3000;server收到后将此信息保存下来,PC A和server之间 通过心跳机制长期保持此连接,用来传输命令。

2.PC B向服务器A发请求,查询router A对外开放的端口。

3.server记录下PC B对外的IP地址和端口号40.40.40.40:2000。同时向PC A 发送请求,要求PC A使用原来的socket向40.40.40.40的2000端口发送请求。

4.server向PC B发送PC A的IP地址和端口号50.50.50.50:3000。

5.PC A向PC B发送请求,目的端口为2000。在router A中生成一个session, 源IP、源端口、目的ip和目的端口分别为50.50.50.50:3000、40.40.40.40:2000。 对于Router B来讲,此数据报没有相应的session匹配,将其丢弃。

6.PC B向PC A的3000端口发起数据请求。

7.PC B的请求到达routerA后,routerA查找session,发现可以匹配,将数 据转发到内网PC A上,这样一条数据链路就建立起来了。

如果路由器使用的NAT是Symmetric NAT,“打洞”方法就不管用了,因为 Router做NAPT后端口是不固定的。虽然一般情况下是递增的,但仅仅是一般 情况,不能保证100%正确。这一特点令应用“打洞”方法易出现错误。

本发明使用IGMP实现内网穿透的方法可以解决这一问题。IGMP使用组播 地址传输。相比UDP,IGMP不需要使用端口号,可以绕开Symmetric NAT转 换端口号的问题。其原理和UDP的打洞技术类似,只是借用了组播地址。

该方法令第二终端能够通过外部网络主动访问内网的第一终端,无需满足 端口固定的要求。该方法包括下述步骤:

第一终端发送请求至服务器,第一终端和服务器之间通过心跳机制期保持 此连接;

第二终端发送IGMP报文,建组播域并归入该组;本地建立UDP套接字, 并在一端口上监听;

第二终端经过第二路由器发送消息至服务器,将组播域值和端口值发送至 服务器,提出访问第一终端的请求;

服务器将访问请求转发给第一终端;

第一终端将数据通过UDP的方式发送至第二路由器,目的地址为所述组播 域值,目的端口为所述端口值;

第二路由器将数据转发给第二终端。

通过上述步骤,本发明使用IGMP实现内网穿透的方法成功地实现了一终 端通过外部网络主动访问内网的另一终端。而且不限于使用的为何种NAT,Cone NAT和Symmetric NAT均可。适用性更广,性能更好。

优选实施例:如图5所示,使用IGMP实现内网穿透的方法的步骤为:

1.PC A首先先发一个请求到服务器(server),PC A和server之间通过心跳 机制长期保持此连接,用来传输命令。

2.PC B发送一个IGMP report报文,加入一个组:234.5.6.7。

3.PC B本地建立udp socket在1234端口上监听,然后发送消息到server, 通知server自己加入组播域234.5.6.7,并希望访问PCA的数据,自己使用1234 端口接收。

4.server将消息转发给PC A。

5.PC A将数据通过UDP的方式发送,目的地址为234.5.6.7,目的端口为 1234。

如果PC B也在路由器后,当PC B发送IGMP report报文时,路由器会建立 一个规则允许目的IP为234.5.6.7的包进入,并转发给PC B。这样PC B就可以 接收到PC A的数据了。

此方法中UDP端口可以随机产生,每次传完数据后释放端口,下次再请求 数据时另外申请组播域和UDP端口,避免和公网上的其他组播服务冲突。

本发明内网穿透系统至少包括依次连接的第一终端、服务器、第二路由器 和第二终端,该系统在使用上述方法后第二终端能够通过所述服务器主动访问 第一终端。

上述使用IGMP实现内网穿透的方法可以令本发明内网穿透系统实现一终 端通过外部网络主动访问内网的另一终端,解决了使用Symmetric NAT的系统 无法主动访问的问题。

以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此,任 何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化 或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以 权利要求所界定的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号