(端口映射原理)内网和外网之间的通信

首先解释一下“内网”与“外网”的概念:
  内网:即所说的局域网,比如学校的局域网,局域网内每台计算机的IP地址在本局域网内具有互异性,是不可重复的。但两个局域网内的内网IP可以有相同的。
  外网:即互联网,局域网通过一台服务器或是一个路由器对外连接的网络,这个IP地址是惟一的。也就是说内网里所有的计算机都是连接到这一个外网IP上,通过这一个外网IP对外进行交换数据的。也就是说,一个局域网里所有电脑的内网IP是互不相同的,但共用一个外网IP。(用ipconfig/all查到的IP是你本机的内网IP;在www.iis7.com上看到的是你连接互联网所使用的IP,即外网)。
  在局域网中,每台电脑都可以自己分配自己的IP,这个IP只在局域网中有效。而如果你将电脑连接到互联网,你的网络提供商(ISP)的服务器会为你分配一个IP地址,这个IP地址才是你在外网的IP。两个IP同时存在,一个对内,一个对外。
  当你家里买了两台电脑,你想组建一个局域网,你除了要用网线和路由器等设备将两台电脑相连,你还要将两台电脑设置固定IP,比如电脑A设为192.168.1.2,电脑B设为192.168.1.3,这样你就可以用这两个IP地址互相访问两台电脑,但这两个IP地址只在这两台电脑间有效,对外网无效。所以局域网中分配的IP与广域网中的IP完全没有对应关系。
  你在内网的机子在上网时,都是在向网关发出请求,再由网关(一般为路由器)用外网IP转到INT网上,接受数据后,再分发到你的内网IP上。
  再者,我们大多人都是使用宽带上网,结果发现,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.248:8080,因为这两者已经建立好映射,如上图,这样,我们的服务器就能收到数据。

原文地址:https://blog.51cto.com/14479189/2427714

时间: 2024-10-25 20:29:55

(端口映射原理)内网和外网之间的通信的相关文章

花生壳端口映射——花生壳+visiualSVN实现外网访问局域网内的SVN(一)

最近一段时间,在做一个系统的后期维护.这是一个不大不小的系统,我们采取的方法是,在我们局域网内的服务器上,有一个和用户服务器一摸一样的数据库,程序也是一摸一样的.这样修改之后,我们在把修改后生成的系统,拷贝到用户服务器上,重新发布.有点不太方便,也不能实现用户服务器和我们服务器修改的同步. 出现这个问题之后,经提醒,我决定研究一下把局域网的SVN服务器部署到外网上,这样,在用户端可以直接load我们SVN上的代码,直接发布.需求出来了,具体要怎么做呢? 方法有很多,最简单的,就是你有一个外网服务

linux 外网ssh通过端口映射访问内网linxu

1,外网ssh通过端口映射访问内网linxu服务器

如何快速判断IP是内网还是外网(转)

TCP/IP协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8:10.0.0.0-10.255.255.255 172.16.0.0/12:172.16.0.0-172.31.255.255 192.168.0.0/16:192.168.0.0-192.168.255.255 使用保留地址的网络只能在内部进行通信,而不能与其他网络互连.如果要与外部通信,那么必须通过网关与外部通信,这里使用了NAT, NAPT技术就是用来保证通信的代理机制. 提示:上述IP地址

内网和外网之间的通信

对于初学者而已,我们学习的网络编程(如TCP,UDP编程),我们通常都是在局域网内进行通信测试,有时候我们或者会想,我们现在写的内网网络数据和外网的网络数据有什么不同,我们内网的数据是如何走出外网的呢? 再者,我们大多人都是使用宽带上网,结果发现,A 和 B 的局域网 IP 都是192.168.31.11,当他们都访问百度浏览网页时,百度服务器回复数据时,如何区分是给 A 还是给 B 呢? 公有 IP 和私有 IP 的区别 首先,我们需要了解一下什么是公有 IP 和私有 IP ? 公有地址(Pu

防火墙网络性能测试-(3)内网与外网之间的网络性能测试

飞塔防火墙内网接口与外网接口配置 通常飞塔防火墙的外网Wan口用来接宽带,因为需要测试外网口的数据读取,所以Wan口连接了笔记本B,Wan口IP地址设为10.0.8.1,笔记本B的IP地址设置为10.0.8.38,笔记本A连接到内网Intelnal任一接口,这样比较有代表性,内网Intelnal的IP是10.0.1.1,笔记本A的IP地址设置为10.0.1.38. ① 防火墙的外网口,设置为静态IP地址: ② 内网internal的IP地址为10.0.1.1,外网wan1的IP地址为10.0.8

H3C SecPath U200-S 如何在内网使用外网IP地址访问内网服务器

H3C SecPath U200-S 如何在内网使用外网IP地址访问内网服务器 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 这个问题很经典的,防火墙上显然配置了NAT的方式进行了转换,但是内部用户在访问的

NAT静态路由内网访问外网(华为)

1,实验名称:NAT静态路由内网访问外网(华为)2,实验目的:将私有地址转换为合法的IP地址,并解决IP地址不足的问题,而且还能有效的避免来自网络外的攻击.让内网可以访问外网,而外网不可以访问内网,起到内网安全保护数据的作用:3,实验拓扑: ,配置环境:① 先准备环境 2台PC机 1台交换机4台路由器② 先将PC机配置IP地址及子网掩码和网关(网关配置在路由器R1与交换机端口)③ 在路由器R1->R2端口配置不同网段IP:R1->R2->R3共两个不同网段④ 在R1->PC上的不同

单网卡、双网卡如何实现同时上内网和外网

大家在日常办公生活中经常会遇到一个问题就是,办公室同时连接了内网和外网,如何能够同时上内网和外网呢?最近给一家单位调试网络,他们有自己的内部网络,同时还有外网.现在的要求是一台电脑要同时上内外网,也就是说用户在不做任何设置的情况下能自由的进行内网和外网的切换. 这样的情况里在企业里遇到的很多,对于专门搞网络的技术人员来说是小菜一碟,可是对于一般的企业网管却是个头疼的问题. 在教大家怎么设置同时上内外网之前,首先要搞清楚你们公司网络的具体情况.为了更直观的说明问题,我们分别举两个典型的实例来说明问

BAT&VBS脚本:Windows连接VPN后同时登陆内网和外网

今天连公司的VPN,发现连上去之后就登陆不了外网了,上网查了下,再加上与同事的交流,发现连接VPN后同时登陆外网需要下面几个步骤: (我的环境:Windows 7 旗舰版 Service Pack 1) 1)建立好VPN,连接VPN 2)进入到VPN属性页面 3)找到网络选项卡,选中"Internet版本协议4(TCP/IPv4)",点击下方的"属性"按钮 4)在"Internet版本协议4(TCP/IPv4)"的属性界面中,点击"高级