序言
在这篇文章中我们将介绍 IP协议,经过这篇文章的学习,我们就会了解运营商到底是如何为我们提供服务的以及平时我们所说的内网,公网到底又是什么,区别是什么?
IP 地址的基本概念
1. IP 地址的定义
每一个设备接入互联网时,都会被分配一个或多个唯一的 IP 地址,用于在网络上设别和定位该设备。这句话放在学习本章内容之前肯定是没问题的,但是在认识了 NAT 技术之后就要打个问号了。
IP 地址(IPv4 地址)由 32
位二进制数(8
个字节)来表示:
但是这种表示方式非常不便于我们阅读比较,于是将每一个字节以十进制数表示:
现在看起来舒服多了,为了避免数字混淆在一起,最后加上 .
来分割:
这就变成了我们熟悉的表达方式了,便于我们查看以便于我们和其他的 IP 比较。
2. IP 地址的分类
为了更好地适应不同网络规模、主机数量以及特殊应用需求,国际网络组织将 IP 分成了五类,分别是:
💡知识补充:网络号就像你的班级号,主机号就像你在你班级里面的序号一样。
D,E 类主机,前者多用于多播通信(比如直播,视频通信,在线游戏等场景),后者为将来使用保留的地址,两者都不属于今天的讨论范畴之内。
不同类的网络所能容纳的主机数目也是大相径庭的,如下图:
类别 | 所能容纳最大主机数 |
---|---|
A | 16,777,214 |
B | 65,534 |
C | 254 |
是怎么计算的呢?我们所计算的结果是一个类型的网络在同一个网络下(网段相同)所能容纳最大主机数:2 ^ (主机号) - 2
。咦,你在这里为什么要减 2 呀?
就拿 C 类网络举例吧,现在一个 C 类网络的网络号是:
他能表示的主机号的范围是:
但是请记住,这里存在两个十分特殊的主机号,主机号全为 1 和 全为 0 地址。
- 主机号全为
1
指定某个网络下的所有主机,用于广播 - 主机号全为
0
指定某个网络
这样的分配在当初看来是没有什么大问题的,但是现在弊端慢慢显现出来了。为什么呢?特别是 A 这种划分方式在小型网络中显得过于浪费,因为即使一个网络只有几十台主机,也需要分配一个 A 类地址,导致大量的IP地址资源被闲置。现在本来就 IP 短缺
CIDR 技术
为了解决 IP 分类中存在的利用率不高的问题,提出了 无分类地址 CIDR 的技术。但是请记住,这个技术只是 提高了 IP 的利用率,本质是 IP 还是存在缺乏的问题。
这个技术的亮点我认为是将 定长的网络号 变得灵活起来,他引入了 子网掩码(subnet mask)
来区分网络号和主机号,具体的表示方式为:
-
将子网掩码和 IP 地址按位计算 AND,就可得到网络号,比如:
网络号 =10.201.111.197 & 255.255.0.0
=10.201.0.0
-
还有一种表达方式为:
a.b.c.d/x
。在这里的a.b.c.d
代表 IP,x
代表前x
位是网络号
这样的网络号更灵活,我们可以在现有的 A,B
类网上进行更加精细的划分子网,使 IP 得到充分地使用。
私有 IP 地址和公网 IP 地址
通常遇到不会的问题,我们一般都可以通过三联问:这是什么?为什么?怎么样?来解决问题。在这里我们也采取这样的方式。
1. 这是什么
私有 IP 地址是指在私有网络中使用的 IP 地址,这些地址仅在私有网络内部使用,不能在公共网络(如互联网)上路由。
使用私有 IP 地址可以节省并优化公共 IP 地址的分配和使用。不同的私有网络下 私有 IP 是可以重复的
。
如果一个组织内部组建局域网,IP 地址只用于局域网内的通信,而不直接连到 Internet 上, 并且规定了用于组建局域网的私有 IP 地址:
• 10.
*,前 8 位是网络号,共 16,777,216 个地址
• 172.16.
*到 172.31.*
,前 12 位是网络号,共 1,048,576 个地址
• 192.168.*
,前 16 位是网络号,共 65,536 个地址
包含在这个范围中的, 都成为私有 IP, 其余的则称为全局 IP(或公网 IP)。
2. 为什么需要私有 IP
为什么需要私有 IP ,很显然是 IP 不够用了。我们简单计算一下,IPV4 所能最大容纳的 IP 数量是 42亿左右,但是大家可以通过下述的数据可以看到:
早就不够用了,CIDR 方式只是提高使用率,治标不治本。
3. 怎么样工作的
现在知道了他产生的原因,现在我们需要知道他为什么可以做到?
这是一个很简单的网络结构图,我们的家庭路由器直接就连上了运营商服务器。但是实际情况要复杂的多,比如你家的路由器会先接上小区的路由区,再连上区里的,市里的,省里的…最后再到运营商的服务器。
你需要上网,也就是你需要一个 IP 地址,这才能向你发送数据。但是我们并没有去手动的配置一个呀。没关系,当你连上你家的路由器时,他自动的给你分配一个 IP 地址。路由器会对每个连上他的设备都执行该操作,这叫构建子网。这种技术叫做:DHCP,能够自动的给子网内新增主机节点分配 IP 地址,避免了手动管理IP的不便。
一般家用的路由器都是采用第三种私有 IP,因为你家连接数很少嘛。好的,现在,你家有网,我家也有网,请问我们的网络号会相同吗?答案是我们都是家用的路由器,最终构建的子网网络号是一样的,甚至我们的 IP 都可能完全一样。因为家里使用的人很少,所以我们相同的概率就大了。
好的,现在我的问题又来了,既然我们的 IP 都可能是一样的,并且 IP 不是在网络上唯一的标识符吗,那么我们的身份不会混淆出错吗?所以我们规定 私网 IP 不能出现在公网上就是这个原因,那我们怎么上网的呢?答案是:NAT(Network Address Translation,网络地址转换)
是一种将私有网络地址(如局域网内部地址)转换成公共网络地址(如互联网地址)的技术。
总结来说,就是你家的路由器会自动构建子网,不同私网下的 IP 是可以重复的,这节省了公共 IP 资源。最终通过 NAT 技术来保证你可以正常接发数据。
NAT 技术
1. NAT 技术原理
NAT 技术通过将私网 IP 转化为公网 IP 的方式,缓解了 IP 耗尽的问题,但是大家仔细想一下,会发现这有一个漏洞:
在这里假如主机 A 想要访问公网,当他的报文经过路由器时,会将他的源地址(内网地址)转化为一个公网 IP,并且记录在 NAT 表中(该表用于记录地址转换的映射关系)。当外部想要给内网中的设备发送消息时,就会根据该表的转换拿到目的内网中的设备。
但是如果我这里有三个设备想要访问外网呢,也转化为三个外网地址吗?这也没节省公共 IP 地址呀。以这样的方式确实不能解决问题,肯定不能这样。大家想一下,我们一般都是采取 IP + 端口
的方式来进行通信,所以我们将该子网下的所有设备通用一个公共 IP,并且使用端口来区别每一次不同的通信:
2. NAT 技术的缺陷
无法从外到内
,很多的联网服务都是需要大家先登录才能正常使用,因为你登陆的过程也是你向该服务器发送数据的过程,才构建了一条从你的内网到外网的路径。- 通信过程中,
如果 **NAT** 路由器重启了,所有的 **TCP** 连接都将被重置
。为什么没有 UDP 呢,它不受影响吗?这是因为 UDP 是面向无连接的协议不依赖于连接状态。
网段划分
1. 什么是网段划分
网段划分,简单来说,就是将一个大的 IP 地址空间分割成多个小的、独立的地址段。这通常通过子网划分(Subnetting)来实现,即利用子网掩码将 IP 地址分为网络部分和主机部分。 让我们网路细粒度更高,更好的被利用,避免出现闲置的情况。
2. 为什么需要网段划分
除了提高 IP 的利用率之外,更重要的更好的进行管理,举个例子吧:大家在学校肯定都有学号吧,学号可不是随机生成的一串数字,他的每一个字段都包含着自己的含义。比如,哪个年级的,哪个学院的,哪个专业的,哪个班的,第几号。现在你在操场是捡到一个钱包,里面就有失主的学号信息,如果学号没有意义的,我们只能遍历整个学校的学生。但是该学号有着详细的信息,帮助我们快速的找到失主。
IP 不是也是如此吗,当发出信息时,计算机会首先检查目标 IP 地址是否在当前网段内。如果目标IP地址与本地网络地址在同一子网内,则数据包将直接在本地网络中传输。然而,如果目标 IP 地址不在当前网段内,计算机会将数据包发送到默认网关(通常是路由器)。路由器会查看其路由表,以确定如何将数据包转发到目标网络。路由表包含了不同网络之间的路径信息,路由器会根据这些信息将数据包发送到下一个路由器,直到数据包到达目标网络。
总结
这篇文章快结束了,请问大家一个问题,运营商怎样给我们提供服务的:
- 首先最基本的通信设备,没有光纤,路由器,服务器等基础设施,没有这些设备就没有最基本的通信环境
- 数据传输,我们每天网络上传输的数据都是在人家的线路上传输
所以总结就是,此山是我开,此树是我栽,要想过此路,留下过路财😂。