谈谈NAT:什么?全球IP和私有IP是什么鬼?

本文字数:1460字

阅读本文大概需要:4分钟

可能你们会经常听到全球 IP(外网)和私有 IP(内网),他们的区别是什么呢?今天这篇文章来简单讲讲这到底是怎么回事。

我们都知道,IPv4中的IP地址的数量是有限的,每次把一部分地址分配出去,那么就意味着能够用来分配的IP地址就更少了,而且随着现在手机,电脑等的快速发展,如果每个手机或者电脑都要求一个IP地址,那么显然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

假如电脑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了吧?

几点需要注意的地方

1、对于全球IP,显然每个IP都是唯一的,而对于私有IP,同一个局域网内,也得是唯一的,但在两个不同的局域网中,是可以有相同的私有IP的。

2、局域网内主机之间的通信,是不需要进行地址转换的,而如果需要访问外网,才需要进行地址转换。

实际上,我们也可以把这种地址转换称之为一种代理。网关就相当于一个代理,把局域网内的主机的一些信息都给隐藏了起来。百度并不知道是主机A访问它,他只知道是网关访问了它。

讲到这里,也差不多结束了。有收获的小伙伴加个鸡腿犒劳一下?(点底部广告 or 转发分享)。这篇文章具体细节没展开,算是大概讲解了NAT。

- End -

原文发布于微信公众号 - 苦逼的码农(di201805)

原文发表时间:2018-11-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python爬虫与算法进阶

学习Git(一)起步

什么是Git 在Git官网上找到这样一段描述 Git is a free and open source distributed version control...

35060
来自专栏Python中文社区

突破反爬虫的利器——开源IP代理池

专栏作者简介 七 夜 信息安全研究人员,比较擅长网络安全、逆向工程、Python爬虫开发、Python Web开发。 博客园:http://cnblogs.co...

1.2K90
来自专栏小巫技术博客

Android技巧2:登录注册解决方案

22520
来自专栏python学习之旅

loadrunner笔记(三):设置、运行场景和生成测试报告

18540
来自专栏林德熙的博客

win10 sdk 是否向下兼容

向下兼容(downward compatibility),又称向后兼容(backward compatibility)、回溯兼容,在计算机中指在一个程序、库或硬...

16420
来自专栏SAP最佳业务实践

SAP最佳业务实践:ETO–报价处理(232)-10创建项目版本

image.png CN72创建项目版本 项目包含询价阶段潜在客户的重要信息。该信息在技术销售部门和客户之间的每次联系过程中会经常更新。最终产品的总成本在此信...

29530
来自专栏张善友的专栏

系统进程管理工具Process Explorer

系统进程往往是不少读者操作的“禁区”,其实借助一些功能强大的工具即可消除对该禁区的恐惧。Process Explorer就是一款系统进程管理工具,它不仅能方便地...

27470
来自专栏微信公众号:Java团长

分布式之数据库和缓存双写一致性方案解析

首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。

14120
来自专栏码神联盟

nginx+tomcat负载均衡配置

前几天,我们讲过了【互联网常见架构模式 之 nginx负载均衡】(忘记的童鞋,点击上面链接或者输入关键词:nginx\负载均衡,即可重新阅读),...

48380
来自专栏散尽浮华

crontab日常使用梳理

在日常的运维工作中,对crontab定时任务的制定是再寻常不过的了。根据以往的使用经验梳理如下: 基本格式 : *  *  *  *  *  command 分...

43680

扫码关注云+社区

领取腾讯云代金券