1、引言

搞网络通信应用开发的程序员,可能会经常听到外网IP(即互联网IP地址)和内网IP(即局域网IP地址),但他们的区别是什么?又有什么关系呢?另外,内行都知道,提到外网IP和内网IP就不得不提NAT路由转换这种东西,那这双是什么鬼?本文就来简单讲讲这些到底都是怎么回事。


1、每台电脑都必须要一个公网IP吗?

答案:不是。

我们都知道,IPv4中的IP地址的数量是有限的(所以现在都在搞IPv6嘛),每次把一部分地址分配出去,那么就意味着能够用来分配的IP地址就更少了,而且随着现在手机,电脑等的快速发展,如果每个手机或者电脑都要求一个IP地址,那么显然IP地址是不够用的。

为了解决这个问题,我们可以采取这样的策略:例如对于一个公司来说,每个公司都会有一个属于自己公司的内网(也可以称之为局域网)。

内网(学名应叫局域网(Local Area Network,LAN))是在一个局部的地理范围内,一般可以是是几米内(比如家庭内网),也可以是方圆几千米以内(比如一个大学内网),将各种计算机、外部设备和数据库等互相联接起来组成的计算机通信网。


内网主要作用有:

1)共享传输信道:简单地理解就是不需要每台电脑一个外网IP地址;

2)传输速率高:内网之间的电脑因为没有外网网络拓扑的复杂性,所以互相通信的网络可以很快,比如从一个台电脑向另一台电脑复制一个几G的文件可能只需要数十秒时间。

3)误码率低:因为通信距离很近,所以误码率很低,换句话说就是网络很稳定(老一点的程序员都知道,读大学的时候同一个宿舍内网联网玩C/S游戏,几乎不会遇到断网或卡顿的事情,除非有人下毛片或者把网络给拔了,哈哈)。

2、公司的内网是如何实现内网IP地址分配和管理的?

假如我们给这个公司A分配了一个IP=192.168.1.1。我们把这个IP作为这个公司内网的网关吧。

在公司A的内网里面有3台电脑,如果这三台电脑要上网的话,我们需要给他分配一个IP,那么就像上一节提到的:我们一定需要去申请3个IP地址来使用吗?

答否。我们不一定需要去申请3个IP的,在我们这个内网里,我们可以指定自己的规则,例如,我们可以给这三台电脑随便分配三个IP(请注意,这三个IP不是去申请的,而且我自己随意给它分配的)。分别分配电脑A = 192.168.1.2 电脑B = 192.168.1.3 电脑C = 192.168.1.4。

而这个规则可以由我们的内网网关来管理,就像下面这样:

5、NAT技术:实现内网电脑访问外网的能力

假如电脑A想要访问百度,百度的IP我们假设为:172.168.30.3:

我们都知道,电脑A的IP是我们虚构的,实际上可能并不存在这样一个IP,如果用电脑A的IP去访问百度,那肯定行不通。

我们也知道,由于百度和电脑A不在一个局域网内,所以A要访问百度,那么必须得经过网关。而网关的这个IP地址,是真实存在的,是可以访问百度的。

为了让 A 可以访问百度,那么我们可以采取这样的方法:让网关去帮助 A 访问,然后百度把结果传递给网关,而网关再把结果传递给 A,这样不就可以解决了?

不过电脑A、B、C都可能拜托网关去帮忙访问百度,而百度返回的结果 的目的IP都是网关的IP=192.168.1.1。那么网关该如何进行区分这结果是A的、B的还是C的呢?

我们去访问百度的时候,不是需要指定一个端口吗?只要我们把 A的IP + 端口 映射成 网关的IP+端口,不就可以唯一确定身份了?

例如A用端口60去访问百度,网关把 A的IP+端口60 映射成 网关的IP+端口80 不就可以了?

百度把结果返回给网关的80端口之后,网关再通过映射表,就可以把结果返回给 A的60端口 了。

如果B也是用60端口去访问百度的话,也是一样,可以把它映射到90端口。

这种方法地址的映射转换,我们也称之为网络地址转换,英文为 Network Address Translation,简称NAT。

而像A、B、C这样的IP地址我们也称之为内网IP,即内网IP;而像网关,百度这样的IP我们称之为外网IP(即互联网公网IP)。

所以,一个典型的内网访问公网的原理,就像下图这样就可以实现了:

现在知道外网IP和内网IP了吧?

6、本文小结

为了解决IP地址短缺,技术专家们发明了内网技术,而内网技术的理论支撑就是NAT技术,所以搞网络通信的程序员非常有必要对NAT技术有一个深入的理解。

转载:https://www.jianshu.com/p/4cd76e25b894

什么是公网IP和内网IP?相关推荐

  1. 什么是公网IP、内网IP和NAT转换?

    搞网络通信应用开发的程序员,可能会经常听到外网IP(即互联网IP地址)和内网IP(即局域网IP地址),但他们的区别是什么? 1.引言 搞网络通信应用开发的程序员,可能会经常听到外网IP(即互联网IP地 ...

  2. 【转载】什么是公网IP、内网IP和NAT转换?

    原文链接 https://www.cnblogs.com/linuxprobe-sarah/p/10307286.html 搞网络通信应用开发的程序员,可能会经常听到外网IP(即互联网IP地址)和内网 ...

  3. 公网IP和内网IP的区别

    最近在学习shell反弹这块的时候,在向源主机发送报文的时候,由于不了解公网IP和内网IP的区别,导致在监听端口这块一直没有捕获到信息,后来才知道是因为我用的公司的局域网是192开头的,属于内网,因此 ...

  4. 公网ip和内网ip是什么?有什么区别?

    凡是使用互联网上网的人一定会接触ip地址,然而ip地址又分内网(私有)ip和公网(外网)ip地址,那么你知道什么是公网ip和内网ip呢?公网ip和内网ip又有什么区别呢? 1.什么是公网ip和内网ip ...

  5. 什么是公网IP?公网IP和内网IP的区别

    什么是IP地址 IP地址,全称(Internet Protocol Address)翻译成中文就是指互联网协议地址,所有的计算机分配一个统一格式的.唯一的虚拟地址编号.就像每个人都有一个身份证一样,I ...

  6. Android 获取本地外网IP、内网IP、计算机名等信息

    一.获取本地外网IP public static String GetNetIp() { URL infoUrl = null; InputStream inStream = null; try { ...

  7. 穿透内网,连接动态ip,内网ip打洞-----p2p实现原理(转)

    源: 穿透内网,连接动态ip,内网ip打洞-----p2p实现原理 转载于:https://www.cnblogs.com/LittleTiger/p/10107849.html

  8. CentOS 6.9下的iptables在本机用DNAT转发指定IP到内网IP无效的问题解决(127.0.0.1)

    CentOS 6.9下的iptables在本机用DNAT转发指定IP到内网IP无效的问题解决(127.0.0.1) 参考文章: (1)CentOS 6.9下的iptables在本机用DNAT转发指定I ...

  9. JAVA 获取本机IP(包括 内网IP 和 公网IP)

    Spring 获取客户端请求 IP,详见:https://blog.csdn.net/NRlovestudy/article/details/90900925 本文获取的是 项目所在系统的IP(本地I ...

  10. web网络知识(一)公网IP、内网IP

    一.公网和内网的区别 1.什么是出口ip? 就是你上网时候暴露在公网的ip. 2.内网ip和实际的出口ip有什么不同? 通过系统查看的ip是在局域网内的ip,也就是内网ip,但是需要上网的话会通过NA ...

最新文章

  1. 你和PPT高手之间,就只差一个iSlide
  2. 学习决心书-linux oldboy
  3. java mp3播放器 ×××面
  4. 从基础设施到云原生应用,全方位解读阿里云原生新锐开源项目
  5. 数据分析案例(贷款风险预测)
  6. SpringBoot与quartz框架实现分布式定时任务
  7. 分析 C# 2.0 新特性 -- 空类型(Nullable Types)
  8. C#LeetCode刷题之#14-最长公共前缀​​​​​​​(Longest Common Prefix)
  9. 前端:JS/27/HTML DOM简介和新特性,HTML DOM访问HTML元素的方法,元素对象的属性(标准属性),noscroll事件,实例:书讯快递
  10. vs2013 也能重构(refactor )变量名了
  11. android gallery滑动监听,利用RecyclerView和ViewPager实现GalleryView可无限左滑右滑
  12. Kettle使用教程(一)—— 在MacOS系统中安装 Kettle
  13. 昆仑万维上半年营收22.5亿同比降2%:净利6.4亿 同比降35.6%
  14. 女人,百花千红你最美
  15. netcore读取json文件_.Net Core读取Json配置文件
  16. Halcon显示正常比列长宽比的方法
  17. 量化金融模型ARCH模型官方例程(中文翻译版)
  18. PTA---航空公司VIP客户查询 (25分)---Stl-Map容器简单使用
  19. python小助手_如何用python写个人专属群聊提醒小助手?
  20. 机器学习入门基础(一)

热门文章

  1. UPC6615: Snuke Festival
  2. SpringBoot整合Memcached
  3. win10自带sftp服务器_win10搭建sftp服务器搭建
  4. seo优化之怎样降低网站跳出率
  5. 网站跳出率高是什么原因引起的?如何优化?
  6. 仿真树叶飘落效果的实现(精灵旋转…
  7. 为什么使用用友盟的摇一摇截屏功能,截出来的地图图片是黑屏的,渴求大师解答,感激不尽
  8. React Native常用三方组件库大全
  9. css拖动音乐进度条,利用CSSclip实现音频播放圆环进度条教程实例
  10. 德保罗大学计算机专业,德保罗大学计算机金融申请要求及专业介绍