当前位置: 首页 > news >正文

javaEE 初阶 — 关于 IPv4、IPv6 协议、NAT(网络地址转换)、动态分配 IP 地址 的介绍

文章目录

  • 1. IPv4
  • 2. IPv6
  • 3. NAT
  • 4. 动态分配 IP 地址

1. IPv4


在互联网的世界中只有 0 和1 ,所以每个人都有一个由 0 和 1 组成的地址来让别人找到你。
这段由 0 和 1 组成的地址叫 IP 地址,这是互联网的基础资源,可以简单的理解为互联网的土地。

IP 地址是由一串 32 位的二进制数构成,每台设备都需要独立的 IP 地址才能进入互联网。



为了方便阅读和记忆,IP 地址在我们的设备上通常显示为点分十进制。那就是

点分十进制就是使用三个 . 把 32 位 4 字节的数字给分割开,也就是分成 4 个部分,每个部分分别使用 0~255 十进制整数表示。

比如上述的一串二进制数就变成了,192.168.1.255

IPv4 使用简单、可靠。大家互信,但是它有一个致命的缺点:

那就是 数量 是有限的。


IPv4 地址是一个 32 位的二进制数,意味着 IP 地址在逻辑上的最大总数为 2^32-1 个,也就是 4294967295 个。
在互联网发展之初,这是一个天文分数字,但是随着互联网的发展速度越来越快,比如智能手机、计算机、路由器…
互联网发展的速度超乎了所有人的想象,IP 地址被迅速地消耗。

全球有 70 亿人口,但是 IP 地址只有 43 亿个。一旦这些 IP 地址用完,后来者将无法进入互联网。

为了防止 IP 地址耗光,出现了 IPv6。

2. IPv6


IPV6 从根本上解决了 IP 不够用的问题,是使用 16 字节来表示的。

和 IPV4 不同,IPV6 的地址长度扩张到了 128 位,是前者的 4 倍。



上述图片就是一串 IPV6 的地址。

长度增加后原有的点分十进制也不够用了,于是 IPV6 改用十六进制表示。



上述图片就是改用的十六进制表示的。

IPv4 有 43 亿的地址,IPv6 的长度是它的 4 倍,是不是意味着 IPv6 的地址个数也是它的 4 倍,也就是 172 个地址?

答案是不是,IPv6 的地址空间是 2^128-1,IP地址 总数为 3402823… 总之是很多的。
多到可以给地球上的每粒沙子都分配一个 IP 地址。


IPV6 虽然地址个数足够使用,但是当前世界上仍然是 NAT + IPV4 + 动态分配 来进行网络组建的,
真正使用 IPV6 的地方非常少。


这主要是因为 IPV6 不是 IPV4 协议的升级,而是一个全新的协议。
两个协议之间无法兼容,如果要使用 IPV6 ,那全世界的互联网设备都要同步更换硬件设备,更换硬件设备需要花更多的资金。

3. NAT


这个方案的本质是使用一个 IP 代表一批设备,也是可以提高 IP 地址的利用率,只不过要使用端口号来区分不同的设备。


在 NAT 背景下,就把所有的 IP 地址分为两个大类:

1、内网 IP(私有 IP) :以 10.* 、172.16.* ~ 172.31.* 、192.168.* 开头的都是属于私网

例如:我的笔记本的 IPV4 地址是 192.168.21.1,这就是一个私网 IP。



2、外网 IP (公网 IP):除了私网剩下的都是公网。

NAT 要求公网 IP 必须是唯一的,而私网 IP 可以在不同的局域网中重复出现。

如果某个私网里的设备想要访问公网的设备,就需要对应的 NAT 设备(路由器),把 IP 地址进行映射,从而完成网络访问。
反之,公网的设备无法直接访问私网的设备,不同的局域网的私网设备无法直接访问相互访问。


举个例子


每个人相当于是一个独立的 IP 地址,快递员必须要知道这个人的 IP 地址,才能找到这个人。


NAT 技术就是把每个 IP 地址变成一个小区,快递员只需要把包裹交给门卫(相当于是 NAT),
门卫再将包裹交给住户。小区之内就是私网,小区之外就是公网


打开自己电脑的 cmd 键入 ipconfig,就可以看到自己电脑的 IP 地址,而且这个 IP 地址基本上都是私有 IP。

内网 IP 只要在局域网内部不重复即可,而不同局域网中则是允许重复的。




源 IP 地址就是 192.168.21.2目的 IP 就是 1.2.3.4
我的 IP 数据报经过 NAT(运营商路由器)设备之后,此时就会把我的 源 IP 给改了。

此时源 IP 就是 NAT 设备的 IP,61.185.187.142,而目的 IP 还是 1.2.3.4。
站在服务器的视角,看到的我的电脑的 IP 地址就是这个运营商路由器的地址。

当有其他的电脑接入运营商路由器的时候,去访问外部服务器都会被路由器替换成路由器自己的 外网 IP。


因此服务器只能拿到路由器的 IP ,不能拿到我的电脑的内网 IP 。
如果我的电脑不主动和服务器联系,服务器也就不知道我的端口,从而就无法主动找到我的电脑。


只要电脑是经过运营商路由器转发给服务器的,服务器看到的源 IP 就都一样。

如果是多个电脑同时访问同一个服务器,服务器的响应就会先发给路由器,路由器根据这些电脑不同的端口号来区分,决定先发给哪个设备。

NAT 机制能够有效地解决 IP 地址不够用的问题,但是带来的副作用就是网络环境更加的复杂了。

4. 动态分配 IP 地址


动态分配 IP 地址,就是在网络设备使用的时候再分配 IP 地址,不使用的时候就不分配。
这样不仅提高了 IP 地址的利用率,还可以节约有限的资源。

但是这个方案没有从根本上增加 IP 地址,只是提高了利用率,属于治标不治本。

相关文章:

javaEE 初阶 — 关于 IPv4、IPv6 协议、NAT(网络地址转换)、动态分配 IP 地址 的介绍

文章目录1. IPv42. IPv63. NAT4. 动态分配 IP 地址1. IPv4 在互联网的世界中只有 0 和1 ,所以每个人都有一个由 0 和 1 组成的地址来让别人找到你。 这段由 0 和 1 组成的地址叫 IP 地址,这是互联网的基础资源,可以简单的理解为互联网的土地。…...

《Qt 6 C++开发指南》简介

我们编写的新书《Qt 6 C开发指南》在2月份终于正式发行销售了,这本书是对2018年5月出版的《Qt 5.9 C开发指南》的重磅升级。以下是本书前言的部分内容,算是对《Qt 6 C开发指南》的一个简介。1.编写本书的目的《Qt 5.9C开发指南》是我写的第一…...

CleanMyMac是什么清理软件?及使用教程

你知道CleanMyMac是什么吗?它的字面意思为“清理我的Mac”,作为软件,那就是一款Mac清理工具,Mac OS X 系统下知名系统清理软件,是数以万计的Mac用户的选择。它可以流畅地与系统性能相结合,只需简单的步骤就…...

Linux小黑板(9):共享内存

"My poor lost soul"上章花了不少的篇幅讲了讲基于管道((匿名、命名))技术实现的进程间通信。进程为什么需要通信?目的是为了完成进程间的"协同",提高处理数据的能力、优化业务逻辑的实现等等,在linux中我们已经谈过了一个通信的大类…...

Detr源码解读(mmdetection)

Detr源码解读(mmdetection) 1、原理简要介绍 整体流程: 在给定一张输入图像后,1)特征向量提取: 首先经过ResNet提取图像的最后一层特征图F。注意此处仅仅用了一层特征图,是因为后续计算复杂度原因,另外&am…...

一个.Net Core开发的,撑起月6亿PV开源监控解决方案

更多开源项目请查看:一个专注推荐.Net开源项目的榜单 项目发布后,对于我们程序员来说,项目还不是真正的结束,保证项目的稳定运行也是非常重要的,而对于服务器的监控,就是保证稳定运行的手段之一。对数据库、…...

C语言数据结构初阶(2)----顺序表

目录 1. 顺序表的概念及结构 2. 动态顺序表的接口实现 2.1 SLInit(SL* ps) 的实现 2.2 SLDestory(SL* ps) 的实现 2.3 SLPrint(SL* ps) 的实现 2.4 SLCheckCapacity(SL* ps) 的实现 2.5 SLPushBack(SL* ps, SLDataType x) 的实现 2.6 SLPopBack(SL* ps) 的实现 2.7 SLP…...

K8S常用命令速查手册

K8S常用命令速查手册一. K8S日常维护常用命令1.1 查看kubectl版本1.2 启动kubelet1.3 master节点执行查看所有的work-node节点列表1.4 查看所有的pod1.5 检查kubelet运行状态排查问题1.6 诊断某pod故障1.7 诊断kubelet故障方式一1.8 诊断kubelet故障方式二二. 端口策略相关2.1 …...

Linux系统下命令行安装MySQL5.6+详细步骤

1、因为想在腾讯云的服务器上创建自己的数据库,所以我在这里是通过使用Xshell 7来连接腾讯云的远程服务器; 2、Xshell 7与服务器连接好之后,就可以开始进行数据库的安装了(如果服务器曾经安装过数据库,得将之前安装的…...

13.STM32超声波模块讲解与实战

目录 1.超声波模块讲解 2.超声波时序图 3.超声波测距步骤 4.项目实战 1.超声波模块讲解 超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收。电路板上有4个引脚:VCC GND Trig(触发)&#xff…...

逆向之Windows PE结构

写在前面 对于Windows PE文件结构,个人认为还是非常有必要掌握和了解的,不管是在做逆向分析、免杀、病毒分析,脱壳加壳都是有着非常重要的技能。但是PE文件的学习又是一个非常枯燥过程,希望本文可以帮你有一个了解。 PE文件结构…...

ACL是什么

目录 一、ACL是什么 二、ACL的使用:setacl与getacl 1)针对特定使用者的方式: 1. 创建acl_test1后设置其权限 2. 读取acl_test1的权限 2)针对特定群组的方式: 3)针对有效权限 mask 的设置方式&#xf…...

操作系统核心知识点整理--内存篇

操作系统核心知识点整理--内存篇按段对内存进行管理内存分区内存分页为什么需要多级页表TLB解决了多级页表什么样的缺陷?TLB缓存命中率高的原理是什么?段页结合: 为什么需要虚拟内存?虚拟地址到物理地址的转换过程段页式管理下程序如何载入内存?页面置…...

从零开始学习iftop流量监控(找出服务器耗费流量最多的ip和端口)

一、iftop是什么iftop是类似于top的实时流量监控工具。作用&#xff1a;监控网卡的实时流量&#xff08;可以指定网段&#xff09;、反向解析IP、显示端口信息等官网&#xff1a;http://www.ex-parrot.com/~pdw/iftop/二、界面说明>代表发送数据&#xff0c;< 代表接收数…...

第一篇博客------自我介绍篇

目录&#x1f506;自我介绍&#x1f506;学习目标&#x1f506;如何学习单片机Part 1 基础理论知识学习Part 2 单片机实践Part 3 单片机硬件设计&#x1f506;希望进入的公司&#x1f506;结束语&#x1f506;自我介绍 Hello!!!我是一名即已经步入大二的计算机小白。 --------…...

No suitable device found for this connection (device lo not available(网络突然出问题)

当执行 ifup ens33 出现错误&#xff1a;[rootlocalhost ~]# ifup ens33Error: Connection activation failed: No suitable device found for this connection (device lo not available because device is strictly unmanaged).1解决办法&#xff1a;[rootlocalhost ~]# chkc…...

【算法设计技巧】分治算法

分治算法 用于设计算法的另一种常用技巧为分治算法(divide and conquer)。分治算法由两部分组成&#xff1a; 分(divide)&#xff1a;递归解决较小的问题(当然&#xff0c;基准情况除外)治(conquer)&#xff1a;然后&#xff0c;从子问题的解构建原问题的解。 传统上&#x…...

已解决kettle新建作业,点击保存抛出异常Invalid state, the Connection object is closed.

已解决kettle新建作业&#xff0c;点击保存进资源数据库抛出异常Invalid state, the Connection object is closed.的解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 文章目录报错问题报错翻译报错原因解决方法联系博主免费帮忙解决报错报错问题 一个小伙伴…...

【设计模式】 工厂模式介绍及C代码实现

【设计模式】 工厂模式介绍及C代码实现 背景 在软件系统中&#xff0c;经常面临着创建对象的工作&#xff1b;由于需求的变化&#xff0c;需要创建的对象的具体类型经常变化。 如何应对这种变化&#xff1f;如何绕过常规的对象创建方法(new)&#xff0c;提供一种“封装机制”来…...

深入浅出PaddlePaddle函数——paddle.arange

分类目录&#xff1a;《深入浅出PaddlePaddle函数》总目录 相关文章&#xff1a; 深入浅出TensorFlow2函数——tf.range 深入浅出Pytorch函数——torch.arange 深入浅出PaddlePaddle函数——paddle.arange 语法 paddle.arange(start0, endNone, step1, dtypeNone, nameNone…...

X86 ATT常用寄存器及其操作指令

X86 AT&T常用寄存器及其操作指令 常用寄存器 esp寄存器&#xff1a;当我们需要访问堆栈帧中的变量时&#xff0c;可以使用esp寄存器来获取堆栈帧的基址&#xff0c;以便能够正确地访问堆栈帧中的变量。ebp寄存器&#xff1a;当我们需要调用一个函数时&#xff0c;可以使用…...

Kotlin 高端玩法之DSL

如何在 kotlin 优雅的封装匿名内部类&#xff08;DSL、高阶函数&#xff09;匿名内部类在 Java 中是经常用到的一个特性&#xff0c;例如在 Android 开发中的各种 Listener&#xff0c;使用时也很简单&#xff0c;比如&#xff1a;//lambda button.setOnClickListener(v -> …...

理光M2701复印机载体初始化方法

理光M2701基本参数&#xff1a; 产品类型&#xff1a;数码复合机 颜色类型&#xff1a;黑白 复印速度&#xff1a;单面&#xff1a;27cpm 双面&#xff1a;16cpm 涵盖功能&#xff1a;复印、打印、扫描 网络功能&#xff1a;支持无线、有线网络打印 接口类型&#xff1a;USB2.0…...

2.25Maven的安装与配置

一.Mavenmaven是一个Java世界中,非常知名的"工程管理工具"/构建工具"核心功能:1.管理依赖在进行一个A 操作之前,要先进行一个B操作.依赖有的时候是很复杂的,而且是嵌套的2.构建/编译(也是在调用jdk)3. 打包把java代码给构建成jar或者warjar就是一个特殊的压缩包…...

《英雄编程体验课》第 12 课 | 递归

文章目录 零、写在前面一、搜索算法的原理二、深度优先搜索三、基于DFS的记忆化搜索四、基于DFS的剪枝五、基于DFS的A*(迭代加深,IDA*)零、写在前面 该章节节选自 《夜深人静写算法》,主要讲解最基础的搜索算法,其中用到的思想就是递归,当然,如果已经对本套体验课了如指…...

35测试不如狗?是你自己技术不够的怨怼罢了

一、做软件测试怎么样&#xff1f; 引用著名软件测试专家、清华大学郑人杰教授的说法&#xff1a;软件测试工程师是一个越老越吃香的职业。 其中就表达了软件测试工作相对稳定、对年龄没有限制、而且随着项目经验的不断增长和对行业背景的深入了解&#xff0c;会越老越吃香。…...

【代码训练营】day42 | 1049. 最后一块石头的重量 II 494. 目标和 474.一和零

所用代码 java 最后一块石头的重量II LeetCode 1049 题目链接&#xff1a;最后一块石头的重量II LeetCode 1049 - 中等 思路 无。 把石头分成重量总和近似两堆&#xff0c;然后两堆石头相撞&#xff0c;剩下的就是最小的石头。每个石头只能用一次&#xff0c;01背包&#xf…...

Golang协程常见面试题

协程面试题交替打印奇数和偶数N个协程打印1到maxVal交替打印字符和数字交替打印字符串三个协程打印ABCChannel练习交替打印奇数和偶数 下面让我们一起来看看golang当中常见的算法面试题 使用两个goroutine交替打印1-100之间的奇数和偶数, 输出时按照从小到大输出. 方法一&…...

种群多样性:智能优化算法求解基准测试函数F1-F23种群动态变化图(视频)

智能优化算法求解基准测试函数F1种群动态变化图智能优化算法求解基准测试函数F2种群动态变化图智能优化算法求解基准测试函数F3种群动态变化图智能优化算法求解基准测试函数F4种群动态变化图智能优化算法求解基准测试函数F5种群动态变化图智能优化算法求解基准测试函数F6种群动…...

Qt 中的XML

XML的基本介绍&#xff1a; 在前端开发中&#xff1a;HTML是用来显示数据&#xff0c;而XML是用来传输和存储数据的 XML 指可扩展标记语言&#xff08;EXtensible Markup Language&#xff09;XML 是一种标记语言&#xff0c;很类似 HTMLXML 的设计宗旨是传输数据&#xff0c;而…...