内网和外网之间的通信

对于初学者而已,我们学习的网络编程(如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.248:8080,因为这两者已经建立好映射,如上图,这样,我们的服务器就能收到数据。

时间: 2024-11-08 17:32:15

内网和外网之间的通信的相关文章

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

首先解释一下"内网"与"外网"的概念: 内网:即所说的局域网,比如学校的局域网,局域网内每台计算机的IP地址在本局域网内具有互异性,是不可重复的.但两个局域网内的内网IP可以有相同的. 外网:即互联网,局域网通过一台服务器或是一个路由器对外连接的网络,这个IP地址是惟一的.也就是说内网里所有的计算机都是连接到这一个外网IP上,通过这一个外网IP对外进行交换数据的.也就是说,一个局域网里所有电脑的内网IP是互不相同的,但共用一个外网IP.(用ipconfig/all查

防火墙网络性能测试-(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

关于内网和外网的理解

公司内分内网和外网.内网不能联上互联网,外网可以. 内外网其实都是通过猫进行相互间的通信的,内网外网在一个公司都可以看成是一个局域网,只是在交换机内用语句进行了不同配置, 从而导致部分区域只能上小的网(即是小的局域网),另外一部分区域能上外网. 为了便于寻址和层次化的构造网络,IP地址被分为A.B.C.D.E五类, 商业应用中只用到A.B.C三类. A类网络的IP地址范围为1.0.0.1-127.255.255.254:不难算出,A类地址允许有126个网段,每个网络大约允许有1670万台主机,通

如何快速判断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地址

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)"的属性界面中,点击"高级

树莓派实战1:查询自己内网,外网ip

这4个实战合起来的完成效果就是:让树莓派每小时把自己ip地址通过邮件自动地发送到自己邮箱 实战2 :http://blog.csdn.net/make_app/article/details/47305179 实战3 :http://blog.csdn.net/make_app/article/details/47305337 实战4:http://blog.csdn.net/make_app/article/details/47305387 0.系统环境 树莓派a+,系统wheezy 输入un

Hyper-V 配置虚拟机内网及外网环境

一.为Hyper-V虚拟机准备内外网环境 1.内网环境——虚拟机与虚拟机及主机可以互通 内网环境的虚拟交换机使用仅内部网络,之后在本地配置内网的IP段即可 对vEthernet (localSwitch)设置IP 至此,所有连接到此交换机上的虚拟机,只要改好对应的IP地址就可以互通了 2.外网环境——使虚拟机也可以连到互联网上 外网环境的虚拟交换机使用外部网络,并选择可以正常上网的物理网卡,我这里是PC,对于无线网卡没有测试,应用后查看本地网络 表示vEthernet (internetSwit

路由表配置及多网卡同时使用内网和外网

CMD命令:route 子命令1:route print 查看路由表 子命令2:route add 添加静态路由 子命令3:route delete 删除静态路由 查看 使用子命令1结果如下图 (注:红框为动态路由[由系统管理,无需要人工管理],绿框为静态路由[可由人工自由增删]) 可以看出路由表由以下几部分组成:网络地址.网络掩码.网关地址.跃点数,这里我们主要关心网络地址和网关地址,是指本机访问的目标IP时使用的网关(也就是网卡),因此我们需要配置XXX地址使用XXX网关即可达到我们的目的.

如何理解内网和外网

回答一: 关于内网和外网 网上经常看到有人问内网和外网的区别,其实外网和内网的概念很模糊,全看你怎么理解.希望这篇文章能帮助大家明确一些概念. 简单的说,自己的单位或者家庭.小区内部有局域网:单位.家庭之外有覆盖范围极大的网络,比如internet,这个大网络延伸到了我们的单位.家庭(通过光纤.网线.电话线等).我们把自己的局域网连接到internet上,那么我们的访问范围就从局域网扩展到了整个internet.这时候,就说局域网是内网,internet是外网. 同理,如果你们单位的局域网很庞大

解决内网、外网同时上的问题

状况:平时大家经常遇到上内网的同时也需要上外网,这个时候我们经常会用两个网卡分别上内网,或一个网卡同时上内.外网. 问题:但是会遇到一种麻烦的情况就是内网和外网不能同时上(例如:腾讯通和QQ不能同时在线).怎么办呢? come on,让我们来着手解决问题吧! 在MS-DOS下我们输入route 这个命令会有相应的提示.输入route print 则是打印路由表.输入route -f 则是清空路由. 下面我们来看下路由表中都写了些什么吧. =============================