学了网络之后,我们知道了公网和私网。私网是不能在公网传输和通信的。我们一个学校,一个小区,都是在自己单独的私网里面。通过这个私网内部的路由器(NAPT方式)和外界通信。
那么问题来了,假如我要和其他学校的小伙伴通信,那怎么办呢?我和小伙伴都是在单独的私网里面,而私网的地址是不能通信的,那么我怎么才能和他通信呢?内网穿透
这就要说到内网穿透了!
如下图,有这么一个环境。小明和小王分别是清华和北大的学生。他们都各自处在自己学校的内网中,他们的ip地址可以是一样的,都是192.168.10.2。清华大学的小明想约北京大学的小王晚上吃饭。于是小明想给小王发一个消息,约她晚上一起吃饭。那么,小明该如何给小王发消息才能让小王收到消息呢?小明只知道小王的ip地址和自己的一样,都是192.168.10.2。很显然,如果小明给192.168.10.2这个ip地址发消息,小王是肯定不能收到消息的。
那么我们就会想,平时我们使用QQ、微信和其他地方、其他学校的小伙伴进行通信,消息是怎么发送的呢?
原因在于QQ和微信在公网有服务器。我们和小伙伴通信是先将消息发送给公网的服务器,公网服务器再将消息发送给位于私网内部的其他小伙伴。数据在我们和小伙伴之间并不是直接传送的。
那么问题又来了?
我们发消息给公网服务器这个可以理解,我们知道他们的公网ip,数据可以到达。但是,公网服务器是如何将我们发送给他的消息发送给位于其他私网内部的小伙伴的呢? 公网服务器并不知道位于私网内部的小伙伴的ip地址。
就算他知道了小伙伴私网边界的路由器的公网ip地址,发消息给路由器的公网ip,路由器收到消息也不会发送给小伙伴,因为在路由器里面并没有一条记录说收到qq或者微信服务器发来的消息然后转发给小王。
就算路由器知道从qq或者微信服务器发来的这条消息是转发给小王的,小王收到这条信息之后也不会接受。因为出于安全起见,除非是主机主动

本文介绍了内网穿透的原理,通过举例说明了如何在私网环境中实现与其他私网用户的通信,解释了QQ、微信等应用如何通过公网服务器传递消息。内网穿透工具如NAT APP可以通过将内网IP和端口映射到公网,实现内网服务的对外访问。

1万+

被折叠的 条评论
为什么被折叠?



