还不知道IP地址不够用是怎么被大牛们解决的?(NAT/NAPT, IPv6, DHCP)

news2024/11/24 4:41:47

文章目录

  • 前言
  • 1. DHCP网络管理协议
    • 什么是 DHCP
    • DHCP 两种分配机制
  • 2. NAT网络地址转换协议
    • 什么是 NAT
    • NAT 技术
    • 使用NAT网络设备间如何通信
      • 两个内网设备相互通信
      • 不同内网中的设备相互通信
      • NAT IP转换过程
    • NAPT 技术
    • NAT 技术的缺陷
  • 3. IPv6 协议
    • 什么是 IPv6
  • 总结


前言

在之前的文章中, 我们谈过了 IP 地址是什么. 在这里我们再简单回顾一下. 如今我们的网络中有很多的主机 / 设备, IP 地址就是用来描述设备在网络中的具体地址, 类似于家里的门牌号. 所谓的 IP 地址, 是一个32位(4字节)的整数, 采用点分十进制来表示. 形如 127.0.0.1 (把32位分为4个部分, 每个部分是8位, 每个部分的范围是0 ~ 255).

IP 地址 32 位能表示的数据量为 42亿 9千万, 听起来好像很大的一个数字, 其实在如今的网络世界中, 这个数据是非常有限的. 因为既然是地址, IP 地址原则上是不可以重复的(每个设备的 IP 得不相同). 现在全世界能上网的设备, 其实早就超出这个数字了. 一人一部手机, 一家一台电脑, 家家有很多智能家电等等(万物联网).

这样就引出了一个很大的问题, 当 IP 地址不够用了, 该怎么办?

关注收藏, 开始学习吧🧐


1. DHCP网络管理协议

什么是 DHCP

动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种网络管理协议,用于集中对用户IP地址进行动态管理和配置。
通俗来讲,DHCP可以动态分配地址,当某个设备需要上网时,就分配IP,不需要上网就不分配。

DHCP 两种分配机制

DHCP提供了两种地址分配机制,网络管理员可以根据网络需求为不同的主机选择不同的分配策略。

  • 动态分配机制:通过DHCP为主机分配一个有使用期限的IP地址。
    DHCP使用了租期的概念,或称为设备IP地址的有效期。租用时间是不定的,主要取决于用户在某地连接Internet需要多久,这种分配机制适用于主机需要临时接入网络或者空闲地址数小于网络主机总数且主机不需要永久连接网络的场景。
  • 静态分配机制:网络管理员通过DHCP为指定的主机分配固定的IP地址。
    相比手工静态配置IP地址,通过DHCP方式静态分配机制避免人工配置发生错误,方便管理员统一维护管理。

但随着网络中的设备越来越多,DHCP这种方案,也有点略显逊色了。它只能缓解IP地址不够的问题,但无法根治

2. NAT网络地址转换协议

什么是 NAT

NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT技术。

就是将IP地址分为两大类:

  1. 私有IP:我们常说的内网,不同局域网内的设备,内网IP可以重复。但同一个局域网内的设备,内网IP不能重复。
  2. 全球IP:我们常说的外网,这个IP地址是不可以重复的。

这样我们就可以在不同的局域网中,使用相同的IP地址。此时IP地址不够用的问题就得到了很大程度的改善。

NAT 技术

NAT技术是当前解决IP地址不够用的主要手段,是路由器的一个重要功能。
这种技术需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。

  • NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法。
  • 很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP。
  • 全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的。

使用NAT网络设备间如何通信

两个内网设备相互通信

如果是局域网内部中的设备之间进行通信,是没有任何影响的,因为内网中IP地址都是唯一的,内部设备要进行通信,直接访问其IP地址即可。

不同内网中的设备相互通信

当A局域网中的设备,想和B局域网中的设备通信时,该怎么办?在NAT协议中,该情况是禁止的,因为有可能这俩设备的IP地址相同。
此时要想通信,就需要有一个带有外网IP的设备(路由器)进行中转,这个过程就涉及到NAT IP的转换过程了。

NAT IP转换过程

在这里插入图片描述

  • NAT路由器将源地址从 10.0.0.10 替换成全局的IP 202.244.174.37;
  • NAT路由器收到外部的数据时,又会把目标IP从 202.244.174.37 替换回 10.0.0.10;
  • 在NAT路由器内部,有一张自动生成的,用于地址转换的表;
  • 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

NAT机制的意义就是,一个外网IP代表的不一定是一个设备了,这个IP下还有很多设备。

NAPT 技术

由于NAT实现是私有IP和NAT的公共IP之间的转换,内网中同时与外网进行通信的主机数量就受到NAT的公共IP地址数量的限制。

当一个内网中有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,
目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?

NAPT(Network Address Port Translation)技术就是用来解决这个问题的。使用IP+port来建立这个关联关系。
在这里插入图片描述
这种关联关系也是由NAT路由器自动维护的。例如在TCP的情况下

  • 建立连接时,就会生成这个表项;
  • 在断开连接后,就会删除这个表项。

NAPT与NAT的区别在于,NAPT不仅转换IP包中的IP地址,还对IP包中TCP和UDP的Port进行转换。这使得多台私有网主机利用1个NAT公共IP就可以同时和公共网进行通信。(NAPT多了对TCP和UDP的端口号的转换)

NAT 技术的缺陷

由于NAT依赖这个转换表,所以有诸多限制:

  • 无法从NAT外部向内部服务器建立连接,不方便直接访问外网设备
  • 转换表的生成和销毁都需要额外开销,非常繁琐且效率不高

虽然 NAT 技术相比于 DHCP 极大地提高了IP地址的“利用率”,但还是没有从根本问题上解决IP地址不够用的问题。但是其有一个最大的优点,“NAT是一个纯软件层面上实现的技术”,正是这个优点,使NAT一统天下了。

3. IPv6 协议

可能有很多读者在无意间看到过“该APP已支持IPv6技术”,IPv6就是从根本上解决 IP 地址不够用问题的一种方法。目前世界上最主流的是 IPv4 协议,IPv6 也并没有大规模去使用。

什么是 IPv6

IPv6(Internet Protocol Version 6),也被称为IPng(IP Next Generation),也就是下一代IP协议。IPv6是当前主流IP协议IPv4的升级版本。

当前IPv4协议,IP地址是4个字节(32位)来表示地址。而 IPv6 的IP地址是用16个字节(128位)来表示地址。 其总地址数量是2的128次方,理论上可以说地址数量近乎无限,足以给地球上的每粒沙子都分到1个地址。

目前我们主流使用的NAT技术其实跟IPv6是同一个时代的产物,IPv6为什么发展的不如NAT好呢?原因就是IPv4和IPv6不兼容,要想升级IPv6,就需要更换路由器设备,并且升级该设备不会提高任何网速,可以说是出力不讨好的一个活儿,而NAT是一个纯软件层面上实现的技术,只需要升级软件就可以支持。

以上我们只是聊聊解决IP地址不够用的一种方法,就不过多展开讲解 IPv6 协议了,感兴趣的读者可以自行查阅一下其资料。


总结

✨ 本文主要讲述了解决IP地址不够用的三种方法,DHCP,NAT/NAPT,IPv6。
✨ 想了解更多计算机网络的知识, 可以收藏一下本人的计算机网络学习专栏, 里面会持续更新本人的学习记录, 跟随我一起不断学习.
✨ 感谢你们的耐心阅读, 博主本人也是一名学生, 也还有需要很多学习的东西. 写这篇文章是以本人所学内容为基础, 日后也会不断更新自己的学习记录, 我们一起努力进步, 变得优秀, 小小菜鸟, 也能有大大梦想, 关注我, 一起学习.

再次感谢你们的阅读, 你们的鼓励是我创作的最大动力!!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1185805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【教3妹学编程-算法题】2915. 和为目标值的最长子序列的长度

3妹:2哥,今日都立冬了, 可是天气一点都不冷。 2哥 : 立冬了,晚上要不要一起出去吃饺子?🥟 3妹:好呀好呀,2哥请吃饺子喽 2哥 : 歪歪,我说的是一起出去吃,没说我…

[Java/力扣160]相交链表

这道题的关键是,使两个链表上的指针同时到达相交点处 方法一:分别遍历两个链表,得到其长度。然后先让较长的链表上的指针走“两链表长度之差”。然后两指针分别一步一步走,就能同时到达相交点处。 方法二:让 p1 遍历…

SHCTF-校外赛道

SHCTF-校外赛道 [WEEK1]babyRCE 1 (1)more:一页一页的显示档案内容2 (2)less:与 more 类似,但是比 more 更好的是,他可以[pg dn][pg up]翻页3 (3)head:查看头几行4 (4)tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示5 (5)tail:查看…

Android内存回收机制、GC算法及内存问题分析解决

Android内存回收机制、GC算法及内存问题分析解决 在Android开发中,Java内存回收和垃圾收集(GC)机制是确保应用程序高效运行的关键部分。针对不同对象存活率,Android平台采用了引用计数算法和可达性分析法来判定对象的可回收性&am…

命名管道原理(和匿名管道的对比),mkfifo(命令行,函数),命名管道模拟实现代码+与多个子进程通信代码

目录 命名管道 引入 原理 和匿名管道的对比 使用 -- mkfifo 命令行指令 创建 文件类型p 使用 函数 函数原型 模拟实现 头文件 客户端代码 服务端代码 运行情况 模拟实现 -- 与多个子进程 介绍 服务端代码: 运行情况 命名管道 引入 匿名管道只能用于父子进程…

一篇文章带你搞懂DNS全流程

1.DNS与CDN DNS是域名系统的缩写,它是一种将域名和IP地址相互映射的分布式数据库,能够使人更方便地访问互联网。 DNS的主要功能是将域名解析为IP地址。当你在浏览器中输入一个网址时,浏览器会向DNS服务器发送一个请求,以获取该网…

5G-A 商用加速,赋能工业互联网

2019 年 6 月,中国工业和信息化部发放 5G 商用牌照。同年 10 月,三大运营商公布 5G 商用套餐,11 月 1 日正式上线 5G 商用套餐,标志中国正式进入 5G 商用新纪元。今年是 5G 商用的第五年,在当前数字经济蓬勃发展的催化…

什么是屏蔽机房?

屏蔽机房是一种用于保护数据中心设备的安全和可靠的措施。通过屏蔽机房,可以防止电磁干扰、防止物理入侵以及提供更好的隔离和安全性。下面是一些关于屏蔽机房的常见做法: 电磁屏蔽:为了防止电磁干扰对数据中心设备的影响,可以在屏…

代码随想录算法训练营第15天|102. 二叉树的层序遍历226. 翻转二叉树101. 对称二叉树

JAVA代码编写 102. 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9…

11.8旧有报错与修改

我将uart_done(出问题的信号)的变量类型设为reg了,也就是我是reg uart_done这个信号的,这样做是错误的,哪怕你在接收模块确实定义的是reg类型,但是在顶层模块的时候,它可以视为是一条单纯的线而…

PPO算法是什么?

ppo称作近邻策略优化算法,是典型的Actor- critic算法,即以两个网络为输入,并可以同时更新两者参数;在RLHF中我们更关注actor网络的更新方式,其损失函数由三部分构成,分别是:1,新旧状…

二进制搭建及高可用 Kubernetes v1.20

目录 一、实验规划: 二、操作系统初始化配置: 1. 关闭防火墙 selinux: 2. 关闭swap分区: 3. 根据规划设置主机名: 4. 所有主机添加hosts: 5. 调整内核参数: 6. 时间同步: 三、部署 etcd 集群&#xff1a…

netty (二) netty原理详解

netty高性能架构设计 netty 写一个简单的demo 服务器端 package com.atguigu.netty.simple;import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import …

GIS开发入门,TopoJSON格式是什么?TopoJSON格式与GeoJSON格式有什么不同?

TopoJSON介绍 TopoJSON是一种几何拓扑结构的地理数据格式,它使用拓扑结构来表示地理对象,可以更有效地压缩和转移数据,从而加快数据加载速度。 TopoJSON格式构成 TopoJSON文件由三部分组成,transform、objects和arcs组成。transform描述了变换参数; objects描述地理实体…

mongodb分组查询

通过userId分组,得到结果字段为:_id和count db.my_solitaire.aggregate([{$group: {_id: "$userId", count: {$sum: 1}}}])通过userId分组得到分组字段和其他想要的字段,得到_id,userName,count userName 为…

【广州华锐互动】智能楼宇3D数字化展示,实现对建筑物的实时监控和管理

随着科技的不断发展,人们对于生活品质的要求也在不断提高。在这个信息爆炸的时代,如何将复杂的数据以直观、生动的方式呈现给用户,已经成为了一个重要的课题。智能楼宇3D数字化展示作为一种新型的建筑科技,正逐渐成为行业的新宠&a…

Spring笔记(三)(Spring整合web环境)

01、Spring整合web环境 1.1 Javaweb三大组件及环境特点 在Java语言范畴内,web层框架都是基于Javaweb基础组件完成的,所以有必要复习一下Javaweb组件的特点 组件作用特点Servlet服务端小程序,负责接收客户端请求并作出响应的单例对象&#…

Lec13 Sleep Wake up

进程切换的流程 一个进程出于某种原因想要进入休眠状态,比如说出让CPU或者等待数据,它会先获取自己的锁;之后进程将自己的状态从RUNNING设置为RUNNABLE;之后进程调用switch函数,其实是调用sched函数在sched函数中再调…

Sealos 私有云正式发布,三倍性能 1/5 成本

马斯克将推特下云后可以节省 60% 成本,不代表你可以。 但是有了 Sealos 之后,你真的可以! Sealos 私有云正式发布,详情地址:https://sealos.run/zh-Hans/self-hosting 原文链接:https://forum.laf.run/d/…

使用python操作数据库

一、背景 当前由于多个脚本涉及到账户登陆,同时账号密码存在不断修改的情况,为避免多处修改,现计划将账户信息放到数据库中,后续所有账号信息均从数据库中去读取。 二、本文主要结构 创建测试账户 库表中插入记录 三、代码 1、创建…