对于初学者来说,我们在学习网络编程(如TCP、UDP编程)时,一般都是在局域网内进行通信测试。有时候我们可能会想,内网的网络数据和外网的网络数据有什么区别?我们
对于初学者来说,我们在学习网络编程(如TCP、UDP编程)时,一般都是在局域网内进行通信测试。有时候我们可能会想,内网的网络数据和外网的网络数据有什么区别?我们内网的数据是怎么出外网的?
此外,我们大多数人使用宽带上网。结果发现A和B的局域网IP都是192.168.31.11。都是访问百度浏览网页的时候,百度服务器回复数据的时候,怎么分辨是给A的还是给B的?
公共知识产权和私有知识产权的区别
首先我们要知道什么是公有IP,什么是私有IP?
公开地址:Internic(互联网网络信息中心)负责。这些IP地址被分配给注册并申请Inter NIC的组织,公网IP是全球唯一的,通过它们可以直接访问互联网(direct access to Internet)。
私有地址:为非注册地址,仅供机构内部使用。说白了,私有IP不能直接上网。
但是我们一般都是通过运营商(电信、移动、联通宽带等)上网。),并且家中的所有IP都是私有IP(局域网IP)。你可能会疑惑,我们可以上网,怎么会是私有IP呢?
租用(申请)公共IP是要花钱的。运营商买了一些公共IP,然后通过这些公共IP分出去,再一个一个分发给用户。这个过程有点类似。我们装了带宽,通过路由器把几个IP分开,让几个人都可以上网。当然,运营商通过公有IP分离的过程肯定比这复杂得多。所以我们平时上网用的IP是私有IP,运营商真正拥有的是公有IP(当然我们也可以租用公有IP)。所以A家的局域网IP和B家的是一样的,这很正常,但是,最后A和B是可以通过运营商的公共IP上网(数据出去)的。毕竟公网IP的资源是有限的,很有可能这个地区的用户都在用同一个公网IP(其实就是这样)。在这种情况下,回到上一个问题,如果A和B的局域网IP相同(192.168.31.11),当它们同时访问百度服务器时,百度服务器如何分辨哪个是A,哪个是B?
端口映射
接下来,什么是端口映射?
端口映射是NAT的一种,将外部主机的IP地址的一个端口映射到内部网络中的一台机器上,提供相应的服务。当用户访问IP的这个端口时,服务器自动将请求映射到相应局域网内的机器。
现在市面上的家用路由器都有NAT功能,也可以实现端口映射。下图是小米路由器的端口映射设置图:
通常我们通过路由器,通过宽带,最后到运营商这边。数据从运营商出去,最终数据回到运营商这边,运营商把数据送到用户的电脑上。
路由器至少有两个端口:广域网端口和局域网端口。
WAN:用于连接外部IP地址,通常指出口,并转发来自内部LAN接口的IP数据包。此端口的IP是唯一的。
局域网:用于连接内部IP地址,交换机在局域网内部。
在这里,我们简化了这个过程,我们将运营商视为NAT设备。
为了方便我们理解,我们倒过来分析一下IP转换的方向(准确的说是公网到局域网)。
计算机A的IP是lan IP(192.168.31.11),它是从路由器的lan端口分配的。
我们去百度的时候,通过路由器的wan口,做相应的IP和端口转换:192 . 168 . 31 . 11:80-->:10.221.0.24:8080,那么,wan出口的地址就是:10 . 221 . 0 . 24:8080。
最后通过运营商,运营商会做相应的端口映射(而且是动态端口映射),将子网IP(10.221.0.24:8080)转换成公网IP (128.0.0.1:8888),通过公网IP可以访问百度服务器。
同理,B的过程也是一样的。通过这种逐层端口映射,最终保证了地址(IP+端口)的唯一性。a和B访问百度服务器,虽然他们的局域网IP是一样的,但是最后他们对百度的访问地址(IP+端口)是唯一的。所以百度服务器回复的时候,可以告诉原路由返回的时候给谁回电话。
外网如何访问自己编写的网络程序(服务器)?
首先我们需要向运营商申请(租用)一个公共IP(长城宽带一年大概2000元)。假设这个公共IP是128.0.0.123。
假设我们如下编写服务器:
然后,找到一个NAT设备来映射相应的端口。家用路由器就有这个功能。这里以小米路由器为例:
映射关系如下:
最后,别人写客户端程序(电脑可以访问外网)时,只需要指定目的IP地址128.0.0.123和端口8888即可。通过这个地址,他们可以找到192.168.31.248: 8080,因为他们之间的映射已经建立,如上图所示,这样我们的服务器就可以接收数据了。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。
作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/137863.html