首页 技术 正文
技术 2022年11月14日
0 收藏 535 点赞 3,557 浏览 2779 个字

背景

  • 谁都知道 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

  1. 假设电脑 A 需要访问外部的 8.8.8.8 设备
  2. 那么就会将数据包发送给路由器
  3. 路由器发现这个数据包是要发送给 8.8.8.8 的,就会将 IP 映射成自己的 IP 6.6.6.6,并记录成映射表
  4. 最后,8.8.8.8 设备接收到的数据包的 IP 是 6.6.6.6
  5. 这样五台电脑发送出去的数据包,都能通过路由器转换为 6.6.6.6,以这个 IP 去传输数据
  6. 就能实现五台设备共用一个 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

类比的栗子

  1. 比如你居住在一个名叫月亮湾的小区,具体地址是15号楼二单元101
  2. 假设全球只有一个小区叫这个名,那么只要别人提起月亮湾就知道是哪个月亮湾了,这种能直接通过地址访问,可以拿到大的层面上直接使用的地址就是公网 IP

  1. 而小区内部其实就是局域网,你只要在小区内说是15号楼二单元101的,别人就知道你在哪
  2. 假设隔壁小区也有15号楼二单元101,隔壁的隔壁小区也有15号楼二单元101,寄快递的时候只写15号楼二单元101不写月亮湾,那么快递肯定不知道寄去哪里
  3. 像这种只能在小区内(局域网内)使用的 IP 就是私有 IP,它只有连同一个局域网的其他设备才会知道

IPV 6

能支持 3.4 * 10^ 38 个 IPV6 地址,这应该是多少亿亿亿个了吧…给每个生物分配一个都够用了

数字0-9,大写字母A-F

ipv4 和 ipv6 是两个完全不同的两个协议

  • 它们之间不能直接互通,必须要借助其他的设备去做转换和映射
  • 导致在短时间内,IPV6 替换 IPV4 是很困难的

会持续更新知识点

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,951
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,477
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,290
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,107
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,739
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,773