Docker 哲学 - ip 的组成规则 与 网关介绍

在 IP 地址中,我们通常将 IP 地址分为两部分:网络部分和主机部分。网络部分用于标识网络,主机部分用于标识该网络中的特定主机。

 IP 地址的每个部分(也被称为一个八位组或一个字节)可以是从0到255的任何值。

一个 IPv4 地址总共是 32 位。这 32 位被分为四个 8 位的部分,每个部分用一个点(.)分隔,这就是我们常说的点分十进制表示法。例如,在 IP 地址 192.168.1.0 中,1921681 和 0 分别是这四个 8 位部分的十进制表示。

一个字节(Byte)是计算机中的基本数据单位,它由8位(Bit)二进制数构成。每一位二进制数只有两种可能的值:0或1。

因此,一个字节有2的8次方,也就是256种可能的组合,这些组合可以表示从0到255的整数。这是因为我们通常从0开始计数,所以256种组合包括了0(当所有8位都是0时)和255(当所有8位都是1时)。

以下是一些例子:

  • 二进制数 00000000 对应的十进制数是 0。
  • 二进制数 00000001 对应的十进制数是 1。
  • 二进制数 00000010 对应的十进制数是 2。
  • 二进制数 00000011 对应的十进制数是 3。
  • ...
  • 二进制数 11111111 对应的十进制数是 255。

所以,一个字节可以用来表示一个0到255的整数。

二进制数是由0和1组成的数。在二进制数中,每一位的值取决于它的位置,也就是它的权重。最右边的位(也被称为最低位)的权重是2的0次方,然后向左每移动一位,权重就乘以2。

例如,二进制数 00000011 可以这样计算:

  • 最低位是1,权重是2的0次方,所以它的值是1 * 2^0 = 1。
  • 第二位也是1,权重是2的1次方,所以它的值是1 * 2^1 = 2。
  • 其他位都是0,所以它们的值都是0。

将这些值加起来,我们得到 1 + 2 = 3。所以,二进制数 00000011 对应的十进制数是3。

二进制数是由0和1组成的数。在二进制数中,每一位的值取决于它的位置,也就是它的权重。最右边的位(也被称为最低位)的权重是2的0次方,然后向左每移动一位,权重就乘以2。

例如,二进制数 11111111 可以这样计算:

  • 最低位是1,权重是2的0次方,所以它的值是1 * 2^0 = 1。
  • 第二位是1,权重是2的1次方,所以它的值是1 * 2^1 = 2。
  • 第三位是1,权重是2的2次方,所以它的值是1 * 2^2 = 4。
  • 第四位是1,权重是2的3次方,所以它的值是1 * 2^3 = 8。
  • 第五位是1,权重是2的4次方,所以它的值是1 * 2^4 = 16。
  • 第六位是1,权重是2的5次方,所以它的值是1 * 2^5 = 32。
  • 第七位是1,权重是2的6次方,所以它的值是1 * 2^6 = 64。
  • 最高位(最左边)是1,权重是2的7次方,所以它的值是1 * 2^7 = 128。

将这些值加起来,我们得到 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255。所以,二进制数 11111111 对应的十进制数是255。

子网,或称为子网络,是一个逻辑上的IP网络划分。它允许一个组织内的网络被划分为多个小的网络,每个小的网络都被称为一个子网。

子网的主要目的是提高网络的效率和安全性。通过将一个大的网络划分为多个小的子网,可以减少网络流量,提高网络性能,同时也可以限制网络故障的影响范围。此外,子网还可以提供更好的安全性,因为可以控制子网之间的通信。

在IP地址中,子网掩码用于区分网络部分和主机部分。例如,IP地址 192.168.1.0/24 中,/24 是子网掩码,表示前 24 位是网络部分,后 8 位是主机部分。这个IP地址表示的是一个子网,这个子网中包含了 256 个IP地址,从 192.168.1.0 到 192.168.1.255

192.168.1.0/24 中的 /24 表示子网掩码,它决定了网络地址和主机地址的划分。在这个例子中,/24 表示前24位(即前三个八位组)是网络部分,后8位(即最后一个八位组)是主机部分。

网络部分 192.168.1. 是固定的,主机部分可以是 0 到 255,这就是为什么这个子网可以包含的 IP 地址范围是 192.168.1.0 到 192.168.1.255

具体来说,192.168.1.0 是这个子网的网络地址,192.168.1.255 是这个子网的广播地址,而 192.168.1.1 到 192.168.1.254 是这个子网中可用的主机地址。

192.168.1.0/24 这个表示法是 CIDR(无类别域间路由)表示法,其中 192.168.1.0 是网络地址,/24 是子网掩码。

在这个例子中,/24 表示前24位(即前三个数字)是网络部分,后8位(即最后一个数字)是主机部分。因此,这个子网可以包含的 IP 地址范围是 192.168.1.0 到 192.168.1.255

然而,192.168.1.0 通常被保留作为网络地址,192.168.1.255 通常被保留作为广播地址,所以实际可用的 IP 地址范围是 192.168.1.1 到 192.168.1.254

所以,当我们说 192.168.1.0/24 的子网包含了从 192.168.1.1 到 192.168.1.254 的所有 IP 地址时,我们是在说这个子网中实际可用的 IP 地址范围。

CIDR 的全拼是 Classless Inter-Domain Routing,中文通常翻译为无类别域间路由。

在 IP 地址中,我们通常将 IP 地址分为两部分:网络部分和主机部分。网络部分用于标识网络,主机部分用于标识该网络中的特定主机。

常见的网络和主机划分有:

  • /8:网络部分占用8位,主机部分占用24位。例如,10.0.0.0/8 的网络部分是 10.,主机部分是 0.0.0 到 255.255.255
  • /16:网络部分占用16位,主机部分占用16位。例如,172.16.0.0/16 的网络部分是 172.16.,主机部分是 0.0 到 255.255
  • /24:网络部分占用24位,主机部分占用8位。例如,192.168.1.0/24 的网络部分是 192.168.1.,主机部分是 0 到 255

这些划分方式允许我们在一个大的网络中创建多个小的子网络。每个子网络都有自己的网络地址,可以包含多个主机。

172.20.0.0/16 和 172.20.0.0/24 都是使用 CIDR(无类别域间路由)表示法的网络地址。其中,172.20.0.0 是网络地址,/16 和 /24 是子网掩码。

子网掩码决定了网络地址和主机地址的划分。在 172.20.0.0/16 中,/16 表示前16位(即前两个八位组)是网络部分,后16位(即后两个八位组)是主机部分。因此,这个子网可以包含的 IP 地址范围是 172.20.0.0 到 172.20.255.255

而在 172.20.0.0/24 中,/24 表示前24位(即前三个八位组)是网络部分,后8位(即最后一个八位组)是主机部分。因此,这个子网可以包含的 IP 地址范围是 172.20.0.0 到 172.20.0.255

所以,/16 和 /24 的主要区别在于子网的大小。/16 的子网比 /24 的子网大,因为它可以包含更多的 IP 地址。

 172.16.0.0/16创建子网 有什么方案

在 172.16.0.0/16 的网络中创建子网,你可以根据你的需求进行划分。以下是一些可能的方案:

  1. /24 子网:如果你需要大量的子网,每个子网中主机数量较少,你可以选择 /24 子网。这将会创建256个子网,每个子网可以有256个IP地址(其中4个IP地址被保留,实际可用的IP地址为252个)。子网范围将会是 172.16.0.0/24 到 172.16.255.0/24

  2. /20 子网:如果你需要适中数量的子网,每个子网中主机数量适中,你可以选择 /20 子网。这将会创建16个子网,每个子网可以有4096个IP地址(其中4个IP地址被保留,实际可用的IP地址为4092个)。子网范围将会是 172.16.0.0/20 到 172.16.240.0/20

  3. /16 子网:如果你只需要一个子网,每个子网中主机数量很多,你可以选择 /16 子网。这将会创建1个子网,子网可以有65536个IP地址(其中4个IP地址被保留,实际可用的IP地址为65532个)。子网将会是 172.16.0.0/16

如果你只需要一个子网,每个子网中主机数量很多,你可以选择 /16 子网。这将会创建1个子网,子网可以有65536个IP地址(其中4个IP地址被保留,实际可用的IP地址为65532个)。子网将会是 172.16.0.0/16。 那四个被占用。为什么不是 256 * 252 而是 256 * 256 - 4 

在一个 /16 的子网中,你有 256 * 256 = 65536 个 IP 地址。然而,并非所有的 IP 地址都可以分配给主机。有四个地址被保留用于特殊目的:

  1. 网络地址:这是子网的第一个地址,例如在 172.16.0.0/16 中,网络地址是 172.16.0.0。网络地址用于标识整个网络,不能分配给主机。

  2. 广播地址:这是子网的最后一个地址,例如在 172.16.0.0/16 中,广播地址是 172.16.255.255。广播地址用于在网络中发送广播消息,不能分配给主机。

  3. 子网的默认网关:通常,子网的第一个可用 IP 地址会被分配给子网的默认网关。例如,在 172.16.0.0/16 中,第一个可用的 IP 地址是 172.16.0.1

  4. 子网的网络服务地址:通常,子网的第二个可用 IP 地址会被分配给网络服务,例如 DHCP 或 DNS 服务器。例如,在 172.16.0.0/16 中,第二个可用的 IP 地址是 172.16.0.2

因此,虽然一个 /16 的子网有 65536 个 IP 地址,但实际可用的 IP 地址只有 65536 - 4 = 65532 个。

 如果你需要大量的子网,每个子网中主机数量较少,你可以选择 /24 子网。这将会创建256个子网,每个子网可以有256个IP地址(其中4个IP地址被保留,实际可用的IP地址为252个)。子网范围将会是 172.16.0.0/24 到 172.16.255.0/24。 那四个被占用

在一个 /24 的子网中,你有 256 个 IP 地址。然而,并非所有的 IP 地址都可以分配给主机。有四个地址被保留用于特殊目的:

  1. 网络地址:这是子网的第一个地址,例如在 172.16.0.0/24 中,网络地址是 172.16.0.0。网络地址用于标识整个网络,不能分配给主机。

  2. 广播地址:这是子网的最后一个地址,例如在 172.16.0.0/24 中,广播地址是 172.16.0.255。广播地址用于在网络中发送广播消息,不能分配给主机。

  3. 子网的默认网关:通常,子网的第一个可用 IP 地址会被分配给子网的默认网关。例如,在 172.16.0.0/24 中,第一个可用的 IP 地址是 172.16.0.1

  4. 子网的网络服务地址:通常,子网的第二个可用 IP 地址会被分配给网络服务,例如 DHCP 或 DNS 服务器。例如,在 172.16.0.0/24 中,第二个可用的 IP 地址是 172.16.0.2

因此,虽然一个 /24 的子网有 256 个 IP 地址,但实际可用的 IP 地址只有 256 - 4 = 252 个。

​​​​​​​

主机地址数量就是可用的IP地址数量。在一个子网中,主机地址是可以分配给设备(如计算机、打印机、路由器等)的IP地址。这些地址是子网中可用的IP地址,可以用于网络通信。 

解释 :172.16.0.0/20 

在 172.16.16.0/20 的子网中,/20 表示前20位是网络部分,后12位是主机部分。这意味着网络部分的最后一个八位组(也就是第三个八位组)只有前4位用于网络,后4位用于主机。

在 172.16.0.0/16 的网络中,我们可以创建16个 /20 子网。每个子网的大小是 16,所以子网的起始地址会每次增加 16。以下是这16个子网的列表,以及对应的第三个八位组的二进制表示:

  1. 172.16.0.0/20 - 0000 0000
  2. 172.16.16.0/20 - 0001 0000
  3. 172.16.32.0/20 - 0010 0000
  4. 172.16.48.0/20 - 0011 0000
  5. 172.16.64.0/20 - 0100 0000
  6. 172.16.80.0/20 - 0101 0000
  7. 172.16.96.0/20 - 0110 0000
  8. 172.16.112.0/20 - 0111 0000
  9. 172.16.128.0/20 - 1000 0000
  10. 172.16.144.0/20 - 1001 0000
  11. 172.16.160.0/20 - 1010 0000
  12. 172.16.176.0/20 - 1011 0000
  13. 172.16.192.0/20 - 1100 0000
  14. 172.16.208.0/20 - 1101 0000
  15. 172.16.224.0/20 - 1110 0000
  16. 172.16.240.0/20 - 1111 0000

每个子网都有 4096 个 IP 地址,其中 4 个 IP 地址被保留,所以实际可用的 IP 地址是 4092 个。 

4092 = 2^12 -  4 (172.16.0.0 、172.16.15.255   、 172.16.0.1、172.16.0.2 )

256 = 2^8

15 = 0000 1111 主机后四位最大是 15 

关于网关的 科学知识:

如果 172.20.0.3 和 172.20.0.4 都在同一个子网内(例如 172.20.0.0/24),那么它们之间的通信不需要通过网关。它们可以直接在本地网络内进行通信。

网关主要用于在不同的网络之间进行通信。例如,如果一个主机在 172.20.0.0/24 子网内,另一个主机在 172.21.0.0/24 子网内,那么它们之间的通信就需要通过网关。

网关在网络中起着桥梁的作用,它允许不同网络之间的通信。在计算机网络中,网关是一个硬件设备或者是一个软件程序,它在网络的边缘处工作,作为不同网络的连接点。

当一个网络中的设备(例如,一个在 172.20.0.0/24 子网内的主机)需要与另一个网络中的设备(例如,一个在 172.21.0.0/24 子网内的主机)通信时,它会将数据包发送到其网关。然后,网关会将这些数据包转发到目标网络。

因此,网关的主要作用是:

  1. 路由数据包:网关知道如何将数据包从源网络路由到目标网络。
  2. 协议转换:如果源网络和目标网络使用不同的网络协议,网关可以在这两种协议之间进行转换。
  3. 安全:网关可以提供防火墙和其他安全功能,以保护网络不受外部威胁。

总的来说,网关使得不同网络之间的通信成为可能。

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

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

相关文章

[隐私计算实训营学习笔记] 第1讲 数据要素流通

信任四基石 数据的分级分类 技术信任:全链路审计、闭环完成的数据可信流通体系 技术信任:开启数据密态时代 数据可流通的基础设施:密态天空计算

LeetCode 面试经典150题 罗马数字转整数

题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M …

ZnO非线性电阻片功率损耗的频率特性

对不同频率正弦交流电压作用下直流氧化锌阀片的功率损耗进行了测量。图3.16(a)和(b)分别为试品类型A和试品类型B两种直流ZnO阀片在不同频率电压作用下的功率损耗随荷电率变化的特性。两种阀片的功率损耗都随频率和荷电率的增加而增加。当频率达到1kHz或以上时,阀片的功率损耗增…

Django项目不显示图片,路径找不到

1.问题 创建Django项目简单写一个网页,文字能显示,图片却无法加载,路径错误,找不到图片。 2.背景 我的项目结构 C:. ├─.idea │ └─inspectionProfiles ├─app01 │ ├─migrations │ ├─templates │ │ ├─app0…

JVM垃圾收集器你会选择吗?

目录 一、Serial收集器 二、ParNew收集器 三、Paralle Scavenge 四、Serial Old 五、Parallel Old 六、CMS收集器 6.1 CMS对处理器资源非常敏感 6.2 CMS容易出现浮动垃圾 6.3 产生内存碎片 七、G1 收集器 八、如何选择合适的垃圾收集器 JVM 垃圾收集器是Java虚…

玩转C语言——C语言中内存存储

一、 整数在内存中的存储 我们知道:整数的2进制表⽰⽅法有三种,即 原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分,符号位都是⽤0表⽰“正”,⽤1表⽰“负”,⽽数值位最 ⾼位的⼀位是被当做符号位,…

【K8s】Kubernetes网络完全指南和CNI讲解

【K8s】Kubernetes网络完全指南和CNI讲解 目录 【K8s】Kubernetes网络完全指南和CNI讲解Kubernetes网络模型Kubernetes网络实现Kubernetes服务Kubernetes DNS出站NAT双栈CNI使用 Kubernetes 部署 CNI 的方法推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课

【Java】使用 Java 语言实现一个冒泡排序

大家好,我是全栈小5,欢迎阅读小5的系列文章。 这是《Java》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识…

【动态三维重建】Deformable 3D Gaussians 可变形3D GS用于单目动态场景重建(CVPR 2024)

主页:https://ingra14m.github.io/Deformable-Gaussians/ 代码:https://github.com/ingra14m/Deformable-3D-Gaussians 论文:https://arxiv.org/abs/2309.13101 文章目录 摘要一、前言二、相关工作2.1 动态场景的神经渲染2.2 神经渲染加速 三…

【Web应用技术基础】HTML(3)——表格

目录 题目1:原始表格 题目2:width、height 题目3: cellpadding 题目4:cellspacing、cellpadding 题目5:caption 题目6:rowspan 题目7:colspan 题目8:汇总题 题目1&#xff1…

从零到一构建短链接系统(八)

1.git上传远程仓库(现在才想起来) git init git add . git commit -m "first commit" git remote add origin OLiyscxm/shortlink git push -u origin "master" 2.开发全局异常拦截器之后就可以简化UserController 拦截器可以…

彻底讲透:如何写sql能够有效的使用到复合索引?

在MySQL中,有效的使用复合索引需要确保查询条件按照索引定义的列顺序进行。以下是一个具体的例子: 假设我们有一个sales表,它有四个字段:customer_id、product_category、sale_date和amount。为了优化包含这些字段查询的性能&…

Maxwell监听mysql的binlog日志变化写入kafka消费者

一. 环境: maxwell:v1.29.2 (从1.30开始maxwell停止了对java8的使用,改为为11) maxwell1.29.2这个版本对mysql8.0以后的缺少utf8mb3字符的解码问题,需要对原码中加上一个部分内容 :具体也给大家做了总结 : 关于v1.…

【Godot4.2】随机数入门指南

概述 计算机程序是精确的艺术,现实生活却充满了随机性。如果你的游戏缺乏了随机性,也就缺乏了最基础的乐趣。 我们在很多场景下需要使用随机数,来为已经非常刻意和规整的设计带来一些变化和趣味。 比如打怪、打完Boss或开宝箱后随机掉落不…

在MongoDB建模1对N关系的基本方法

“我在 SQL 和规范化数据库方面拥有丰富的经验,但我只是 MongoDB 的初学者。如何建立一对 N 关系模型?” 这是我从参加 MongoDB 分享日活动的用户那里得到的最常见问题之一。 我对这个问题没有简短的答案,因为方法不只有一种,还有…

软件系统开发设计的基本流程

一、前言 经过年的工程实践软件系统开发的流程演变有很多种,但是最基本的还是瀑布模型。但是由于近几年演变了很多种模型,现在很多公司的研发流程并不遵循瀑布模型。主要原因是无法满足市场竞争的需求。比如在哪某个节日需要敏捷上线活动等这样的场景。没…

ASP .Net Core 配置集合 IConfiguration 的使用

🐳简介 IConfiguration 是 ASP.NET Core 中的一个接口,用于表示配置集合。以下是关于 IConfiguration 的详细介绍: 作用:IConfiguration 允许开发人员从各种来源(如文件、环境变量、命令行参数等)读取应用…

ASP.NET中的GridView和DataList控件:功能、应用与比较

目录 一、引言 二、GridView控件 三、DataList控件 四、GridView与DataList的比较 五、结论 一、引言 ASP.NET是微软公司开发的一款强大的Web应用程序开发框架,它提供了丰富的控件库,使得开发人员能够更快速、更高效地构建功能强大的Web应用程序。…

【工具类】vscode 常用功能

1. vscode 常用功能 1. vscode 常用功能 1.1. 关闭右侧预览功能1.2. 快捷键(右键或者菜单栏多看看就记住了)1.3. 常用插件 1.1. 关闭右侧预览功能 点击文件-首选项-设置,搜索 “editor.minimap.enabled” ,默认值为打钩,我们只需要把钩去掉即可; 1.2. 快捷键(右…

上传日志到aws日志服务

安装包 <dependency><groupId>software.amazon.awssdk</groupId><artifactId>cloudwatchlogs</artifactId><version>2.16.60</version></dependency>使用 HashMap<String, Object> map new HashMap<>();map.put(…