基于内网穿透实现本地服务器

在上一篇写道,我们已经用java swing开发出了图书管理系统,基本的功能都有了,但是我的想法是该系统可以在其他电脑上面跑,比如室友电脑上面,但他的电脑上面又没有java的运行环境,灵机一动,那就打包成exe文件吧,于是我查询了相关的资料,最后根据此文章成功打包成了可执行文件:https://www.cnblogs.com/ssh2/p/3463199.html

为了避免出现环境不兼容性问题,我特意打包了jre 32位的运行环境在里面,建议读者也用32位的,以免出现不必要的问题。因为32位的程序可以在32位或者64位的电脑上运行,但64位的程序就只能在64位的电脑上运行。

经过测试之后,在室友电脑上运行没有问题,但现在只能本地访问,我室友电脑上的图书管理系统根本就连接不了我的数据库,那能不能做到让任何一台联网的电脑都可以用这个系统?出于好奇的我,百度了一波,功夫不负有心人,找到了花生壳(花生壳既是内网穿透软件、内网映射软件,也是端口映射软件),顺带理解了一个名词:内网穿透

在理解内网穿透之前,我们需要现理解一下局域网广域网。IP地址是电脑在网络中的唯一标识,就类似于我们的家的地址,应该不出意外的话,是不可能重复的吧?而在网络中,要发送数据到某台电脑上,也只能通过IP地址找到它,才能传输数据。就这样构成了我们今天的互联网,但这样就出现了一个很明显也严重的问题:IP地址不足了!!!

IP地址的个数
私有IP地址段

  • A类:10.0.0.0到10.255.255.255 1658万个
  • B类:172.16.0.0到172.31.255.255 104万个
  • C类:192.168.0.0到192.168.255.255 6.5万个

公网IP地址段

  • A类:1.0.0.0----9.255.255.255 1.5亿个
    11.0.0.0-----126.255.255.255 19.23亿个
  • B类:128.0.0.0-----172.15.255.255 7.3亿个
    172.32.0.0-----191.255.255.255 3.3亿个
  • C类:192.0.0.0-------192.167.255.255 0.11亿个
    192.169.0.0-----223.255.255.255 5.03亿个

合计约36.47亿个可用公网IP地址、理论上是255255255*255约42.28亿个,除去私有网段、网络ID、广播ID、保留网段、本地环回127.0.0.0网段、组播224.0.0.0网段、实际可用就是36.47亿个。(转于https://www.zhihu.com/question/20168985)

然而,如果手机和电脑还有其他联网的终端设备都分配一个固定P地址的话,那肯定是不够的,光说我们国家的手机最起码也有十亿部吧,怎么算都不够。所以不得不说外国人还是多有远见之明,专门把IP地址划分为了私有IP地址和公网IP地址,而私有IP地址就是专门用来家庭、公司、学校、政府机关等内部使用的。就好比一个学校的电脑机房,里面的所有电脑都可以相互访问,但是要访问互联网时,还是要等老师插上一根网线。在这个情节中,机房就是一个局域网,里面的所有电脑都可以相互访问,IP地址也都是从同一个私有网段中分配的私有地址。私有地址因为不能直接访问互联网,所以可以重复利用。假如这个机房的某台电脑用的172.27.35.2,另外一个机房的电脑也有可能是172.27.35.2,互不干扰,这样就有效的缓解了IP地址短缺的问题。如果想访问互联网,那必须插入网线,通过一个公用的P地址访问互联网,而那一根网线就是类似于是互联网的“接口”,一个房间的大门,通向外面的世界。
局域网与广域网的关系:
在图中我们可以清晰地看到,很多个电脑构建了局域网,很多个局域网又构建了广域网

为什么要接上网线才能访问互联网?在上文中,我们已经分析了,IP地址就是电脑在互联网中的唯一标识,要想别人找到我们的电脑,那就必须有一个互联网中的“地址”,那就是一个公网IP地址。

现在我们假设这样一个情景:我们在学校的机房中,所有的电脑都是在一个局域网中,电脑之间使用的私有IP地址,我使用的电脑IP地址假如为172.27.35.2,不能直接访问互联网,但我们的学校办理了宽带,得到了一个公网IP地址110.12.134.23,现在我要访问百度。当我在地址栏中输入百度网址之后,一个回车就开始对百度进行访问,这个时候,百度服务器那边得到的访问数据肯定是110.12.134.23在访问它的服务器,而不是我电脑的IP地址。在这个过程中,110.12.134.23充当于“中间代理人”,代替我们去访问百度,最后再将访问得到的数据返回到我的电脑上面。我的电脑相当于百度服务器来说,相对封闭(只能通过110.12.134.23找到我的电脑),所以这就是为什么我室友电脑联网也无法连接我本地数据库的原因(这里说明一下,我的电脑是连接手机的热点,手机也是运营商下面的一个巨大局域网)。

现在我们已经分析出了问题所在的原因,那就不得不引出我们今天的主角——内网穿透。内网穿透就是通过端口映射,使外网可以与内网进行通信。内网穿透也叫NAT穿透,因此我们再引出NAT这个名词。

NATNetwork Address Translation即网络地址转换,NAT能将其本地地址转换成全球IP地址。简单来说就是局域网中的电脑想访问外部的其他网络,因此就通过少量的公用IP地址进行代理访问。NAT很好地解决了IP地址短缺的问题,同时也保护了内部局域网的安全。

现在我们所面临的问题就是:没有一个公用的IP地址,那我们就可以考虑用内网穿透来实现。 在局域网内部的任一PC或服务器上运行花生壳内网穿透客户端,此时域名解析到的IP地址是局域网网关出口处的公网IP地址,再在网关处做端口映射指向特定的设备即可。

通过花生壳的端口映射,最终成功实现了本地服务器,其他联网的电脑都可以直接通过公网IP地址访问到我的本地数据库
在这里插入图片描述

发布了14 篇原创文章 · 获赞 1 · 访问量 594

猜你喜欢

转载自blog.csdn.net/qq_35149975/article/details/103863791