公网访问私网

536 阅读2分钟

1.公网访问私网---内网穿透

假设你在外地有【公网IP】的电脑上想访问家里面【192.168.78.1:5000】的服务,怎么办 ???

你是不是想说:浏览器输入【https://192.168.78.1:5000】这样可以吗 ?当然不行,那为什么 ?

想想,你的服务是一个私网IP,这就意味着,别人家也可以有一个【https://192.168.78.1:5000】的服务存在的,谁知道你访问哪一个 ? 况且,中间不还得经过路由器,路由器还不一定同意呢 !

既然公网访问私网进不来,得想办法让公网访问一个新的公网,再让新的公网与私网产生联系
按照这个思路,于是乎就有了下面的方案:

1.你先从外地访问一个新的公网服务器地址【这个新服务器称为穿透服务器】
2.让这个新的公网服务器里帮你带路,找到你家的私网【https://192.168.78.1:5000

image.png

这个步骤2就是使用了【内网穿透技术】

【穿透服务器】的地址唯一性就帮你回避了不知道访问哪家的 192.168.78.1:5000

【穿透服务器】还帮你带路解决了路由器同意的问题,因为它相当于帮路由器同意了

2.公网访问私网---端口映射

前提知识:

私网访问公网是数据的通信过程,所以自然也就有【建立连接】【释放连接】两个过程的。

假设建立连接:

1.【我的电脑IP:指定/自动分配的端口A】-->【路由器IP:路由器随机分配的端口B】
2.【路由器IP:随机分配的端口B】-->【百度IP:服务端口C】

那么对应的释放连接后,端口A,端口B就释放了,只有端口C依然保持监听

所以【公网IP:端口C】要访问回我的电脑,必须保证端口A,B的对应关系还在 还是那个问题:

正文

假设你在外地一台拥有【公网IP】的电脑上想要访问你家里面【192.168.78.1:5000】的服务,怎么办???

通过前提知识,访问不回去就是因为【端口A,B】的对应关系不在了

那我们只需要让这个对应关系保持住就可以了,这就是端口映射

image.png 就是说,提前告诉路由器,让它把【端口B】永远保持监听,

并且在端口映射表里面登记上:
【我的电脑IP:端口A】----【路由器IP:端口B】

这样【公网】访问【私网192.168.78.1:5000】,就直接变成访问【路由器IP:端口B】
然后依靠【端口映射】就把信息传进【私网192.168.78.1:5000】了