背景
- 谁都知道 IP 地址是干嘛的,但是它出现的前因后果你真的知道吗?
- 我觉得很有必要重新复习下计算机网络基础知识,实在太太太重要了
- 本篇文章素材均来自:https://www.bilibili.com/video/BV1DD4y127r4;这个 UP 感觉还是很不错
- by the way:有时候学习一个知识点,官网的确是最准确的, 但一定不是通俗易懂的,借助大神做的一些动态图和类比场景,能更快吸收一个知识点
- 最佳学习方式:看一遍官方,看一遍别人做的学习视频,再看一遍手动记录干货,形成自己的知识体系
为什么会出现 IP 地址
假设只有一台电脑
- 所有数据就会存储在这台电脑的硬盘上,和其他电脑本身不存在任何干系
- 但一台电脑能做的事情是非常少的,很可能会出现多台电脑协同工作
假设有两台电脑
- 两台电脑协同工作,那肯定会出现数据交互的需求,那就需要用中间介质(比如 U 盘)来交换
- 这种方式既不是数据实时传输,也非常耗时耗力
线缆(网线)的出现
两台电脑之间可以通过网线来实时传输数据
但假设有很多台电脑,那每两台电脑间都需要一条网线来连接,随着设备数量上升,需要的接口数量和线材数量也会越来越多,这是十分不合理的
交换机的出现
- 电脑和电脑之间的连接不再是点对点连接了
- 而是全部都接入交换机,由交换机去分发来自不同设备的数据
交换机的类型
- 很多个接口的常规网络交换机
- 服务器
- 家里的路由器
交换机详细介绍等后面的文章吧
非点对点连接的问题
- 点对点连接时,两台电脑交互数据的是通过对应接口的,所以数据一定会传送到目标主机上
- 但是接入交换机之后,就不清楚数据发送给哪个目标主机了
- 类比:网购发货,没有填清楚收件人的地址,所以无法精准送货
数字虚拟地址
- 为了解决上述非点对点连接的问题,诞生了数字虚拟地址
- 电脑发送数据的时候,带上这个数字虚拟地址,就能知道目标主机是谁了
- 栗子:182.168.0.1 主机要发送数据给 192.168.0.3 主机,就在数据的抬头(包头)上加上 192.168.0.1,这样数据到达交换机后就能准确发送给对应目标主机了
说明
- 此处采用的交换机是三层交换机,具有 DHCP 分配 IP 的功能
- MAC 地址为物理层面设备识别
- 数据传输依赖 TCP/UDP
IP 地址来了
- 其实数字虚拟地址就是 IP 地址
- 类比:网购发货的时候,发送的物品就是数据,收件人地址可以理解为 IP 地址
局域网
每个电脑都拥有自己的 IP 以后,加上连接的交换机,就能组成一个小的可以用来交换数据的网络,这就是局域网
新加入一个局域网
需要把两个局域网的交换机连接起来,组成一个更大的局域网
随着时间的推移,可能需要连接的局域网也会越来越大,那么局域网之间又会通过一个新的交换机来连接
广域网
- 上面有说到,随着局域网越来越多,这个网络也会变得越来越大,用户只需要连接一个交互机可能就能访问世界上绝大多数的设备,这就是广域网
- 广域网就是一个设备数量超级庞大的局域网
- 想要把世界各地的设备连接起来并不容易
- 需要在多个重要城市架设骨干服务器,还要在不同区域布置分支服务器,然后让大家接入
- 这需要大量的资金成本、后期维护
- 做这种吃力不讨好活的就是 ISP(互联网服务提供商),在中国有联通、电信、移动
- 正需要资金成本和维护成本,所以你的手机流量和家用宽带都是计费的
IPV 4
- 由 32 位二进制数构成
- 理论上,可以提供 2^32 约 42.28 亿 个地址
转成十进制
为了方便记忆和输入,每 8 个二进制数划分为一组,然后转换为十进制数,变成常用的 4 个 0-255 数字
IP 地址的分类
一些地址有特殊的用途,所以被保留下来不允许被大众使用,最后可能真正可用的 IP 地址只有 36.74 亿个
全球 IPV4 地址不够用
现在全球有75亿个人,假设只有四分之一的人用互联网,那么也有 18 亿人
但每个人的设备数量可能有多个,比如手机 IPAD 电脑,如果都想要独立的 IP 地址,那么 IPV4 很明显不够用
IPV4 已经枯竭
- 2011 年底,打包分配的 IPV4 地址已经枯竭了
- 2020 年底,亚太互联网信息中心将发布不出来一个新的地址
- 除非有人返还旧的地址
NAT 网络地址转换
为了解决 IPV4 地址枯竭的问题,引入了 NAT 地址转换
上图
- 五台电脑接入一个路由器
- 路由器接入广域网的 IP 是 6.6.6.6
- 对于家用来说,路由器由于是接入广域网并执行 NAT 的,所以路由器就是网关
传输场景,引入 NAT
- 假设电脑 A 需要访问外部的 8.8.8.8 设备
- 那么就会将数据包发送给路由器
- 路由器发现这个数据包是要发送给 8.8.8.8 的,就会将 IP 映射成自己的 IP 6.6.6.6,并记录成映射表
- 最后,8.8.8.8 设备接收到的数据包的 IP 是 6.6.6.6
- 这样五台电脑发送出去的数据包,都能通过路由器转换为 6.6.6.6,以这个 IP 去传输数据
- 就能实现五台设备共用一个 IP
接收方也可以作为网关
这样它下面就会连接了很多台设备,那它们也可以共用 8.8.8.8 这个 IP
存在问题
- 左侧五台设备都是通过 6.6.6.6 来发送数据包的,但是右侧接收方并不知道发送过来的数据包应该给哪台设备接收
- 而 8.8.8.8 的下行数据发送到 6.6.6.6 之后,也不知道给五台设备中的哪一台来接收
端口映射
为了解决上面存在的问题,引入了端口映射
具体表现方式
- 其实就是在 IP 后面加端口
6.6.6.6:8080
- 网关就会以不同的端口去和外网交互,然后把这些端口映射给局域网内的各个设备
- 传输数据包的时候,除了 IP 地址需要映射为网关 IP 之外,还需要将端口映射为网关的端口
- 这样就能实现共用一个 IP 还能精准传送数据了(解决上面存在的问题),以实现 PAT 多对一映射了
其实就是因为 NAT 和端口映射的存在,才让 IPV4 即使在不够用的情况下还能坚持这么久
公有 IP 和私有 IP
- 前面有说到 A、B、C、D、E 五台设备共同连接一个路由器,那么这五个设备就是寄宿在 6.6.6.6 网关下的私有 IP
- 网关所拥有的的可以直接用来在广域网上交互数据的 6.6.6.6 就是公网IP
类比的栗子
- 比如你居住在一个名叫月亮湾的小区,具体地址是15号楼二单元101
- 假设全球只有一个小区叫这个名,那么只要别人提起月亮湾就知道是哪个月亮湾了,这种能直接通过地址访问,可以拿到大的层面上直接使用的地址就是公网 IP
- 而小区内部其实就是局域网,你只要在小区内说是15号楼二单元101的,别人就知道你在哪
- 假设隔壁小区也有15号楼二单元101,隔壁的隔壁小区也有15号楼二单元101,寄快递的时候只写15号楼二单元101不写月亮湾,那么快递肯定不知道寄去哪里
- 像这种只能在小区内(局域网内)使用的 IP 就是私有 IP,它只有连同一个局域网的其他设备才会知道
IPV 6
能支持 3.4 * 10^ 38 个 IPV6 地址,这应该是多少亿亿亿个了吧...给每个生物分配一个都够用了
数字0-9,大写字母A-F
ipv4 和 ipv6 是两个完全不同的两个协议
- 它们之间不能直接互通,必须要借助其他的设备去做转换和映射
- 导致在短时间内,IPV6 替换 IPV4 是很困难的
会持续更新知识点