怎么做网站评论,教育培训类网站开发,做ps合成的网站,沈阳做网站开发公司写的通熟易懂#xff0c;特转过来备忘#xff01;原创链接找不到了 对于初学者而已#xff0c;我们学习的网络编程(如TCP,UDP编程)#xff0c;我们通常都是在局域网内进行通信测试#xff0c;有时候我们或者会想#xff0c;我们现在写的内网网络数据和外网的网络数据有什… 写的通熟易懂特转过来备忘原创链接找不到了 对于初学者而已我们学习的网络编程(如TCP,UDP编程)我们通常都是在局域网内进行通信测试有时候我们或者会想我们现在写的内网网络数据和外网的网络数据有什么不同我们内网的数据是如何走出外网的呢? 再者我们大多人都是使用宽带上网结果发现A 和 B 的局域网 IP 都是192.168.31.11,当他们都访问百度浏览网页时百度服务器回复数据时如何区分是给 A 还是给 B 呢? 公有 IP 和私有 IP 的区别 首先我们需要了解一下什么是公有 IP 和私有 IP ? 公有地址(Public address)由 Inter NIC(Internet Network Information Center 因特网信息中心)负责。这些 IP 地址分配给注册并向Inter NIC提出申请的组织机构公有 IP 全球唯一通过它直接访问因特网(直接能上网)。 私有地址(Private address)属于非注册地址专门为组织机构内部使用说白了私有 IP 不能直接上网。 而我们平时通过运营商(电信、移动、联通宽带等)上网家里面通过路由器分出来的 IP 都是私有 IP(局域网 IP)大家可能会疑问我们可以上网啊怎么会是私有 IP 呢?租用(申请)公有 IP 是需要钱的。 运营商买了一些公有 IP然后通过这些公有 IP 分出来再分给一个一个的用户使用。这个过程有点类似于我们去安装了宽度通过路由器分出几个 IP让好几个人都能上网当然运营商通过公有 IP 分出来的过程肯定比这个复杂多了。所以我们平时上网用的 IP 是私有 IP真正拥有公有 IP 的是运营商(当然我们可以租用一个公有 IP )。所以A 家庭的局域网 IP 和 B 家庭的局域网 IP 相同很正常但是最终 A 和 B 能上网(数据走出去)还是通过运营商的公有 IP毕竟公有 IP 的资源有限这一片区域的用户使用的很有可能(实际上就是这样的)是同一个公有 IP这样的话又回到前面的问题假如 A 和 B 的局域网 IP 相同(192.168.31.11)当他们同时访问百度服务器的时候百度服务器如何区分哪个是 A哪个是 B 呢? 端口映射 接下来给大家介绍一下什么是端口映射? 端口映射是 NAT 的一种它将外网主机的 IP 地址的一个端口映射到内网中一台机器提供相应的服务。当用户访问该 IP 的这个端口时服务器自动将请求映射到对应局域网内部的机器上。 现在市场上的家庭路由器都具备 NAT 功能也可以实现端口映射。下图为小米路由器的端口映射设置图 我们平时经过路由器通过宽带最终去到运营商那边数据是从运营商出去最终数据是回到运营商那边运营商再把数据发送到用户的电脑。 路由器至少有两个端口WAN 口和 LAN 口。 WAN接外部 IP 地址用通常指的是出口转发来自内部 LAN 接口的 IP 数据包这个口的 IP 是唯一的。 LAN接内部 IP 地址用LAN 内部是交换机。 这里我们简化这个过程我们把运营商当做一个 NAT 设备。 为了方便大家理解我们把 IP 的转化方向反过来分析(准确来说公网转局域网)。 A 电脑的 IP 是局域网 IP(192.168.31.11)这个 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.2488080因为这两者已经建立好映射如上图这样我们的服务器就能收到数据。