Docker 哲学 - ip 的组成规则 与 网关介绍
在 IP 地址中,我们通常将 IP 地址分为两部分:网络部分和主机部分。网络部分用于标识网络,主机部分用于标识该网络中的特定主机。
IP 地址的每个部分(也被称为一个八位组或一个字节)可以是从0到255的任何值。
一个 IPv4 地址总共是 32 位。这 32 位被分为四个 8 位的部分,每个部分用一个点(.)分隔,这就是我们常说的点分十进制表示法。例如,在 IP 地址
192.168.1.0中,192、168、1和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的网络中创建子网,你可以根据你的需求进行划分。以下是一些可能的方案:
/24子网:如果你需要大量的子网,每个子网中主机数量较少,你可以选择/24子网。这将会创建256个子网,每个子网可以有256个IP地址(其中4个IP地址被保留,实际可用的IP地址为252个)。子网范围将会是172.16.0.0/24到172.16.255.0/24。
/20子网:如果你需要适中数量的子网,每个子网中主机数量适中,你可以选择/20子网。这将会创建16个子网,每个子网可以有4096个IP地址(其中4个IP地址被保留,实际可用的IP地址为4092个)。子网范围将会是172.16.0.0/20到172.16.240.0/20。
/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 地址都可以分配给主机。有四个地址被保留用于特殊目的:
网络地址:这是子网的第一个地址,例如在
172.16.0.0/16中,网络地址是172.16.0.0。网络地址用于标识整个网络,不能分配给主机。广播地址:这是子网的最后一个地址,例如在
172.16.0.0/16中,广播地址是172.16.255.255。广播地址用于在网络中发送广播消息,不能分配给主机。子网的默认网关:通常,子网的第一个可用 IP 地址会被分配给子网的默认网关。例如,在
172.16.0.0/16中,第一个可用的 IP 地址是172.16.0.1。子网的网络服务地址:通常,子网的第二个可用 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 地址都可以分配给主机。有四个地址被保留用于特殊目的:
网络地址:这是子网的第一个地址,例如在
172.16.0.0/24中,网络地址是172.16.0.0。网络地址用于标识整个网络,不能分配给主机。广播地址:这是子网的最后一个地址,例如在
172.16.0.0/24中,广播地址是172.16.0.255。广播地址用于在网络中发送广播消息,不能分配给主机。子网的默认网关:通常,子网的第一个可用 IP 地址会被分配给子网的默认网关。例如,在
172.16.0.0/24中,第一个可用的 IP 地址是172.16.0.1。子网的网络服务地址:通常,子网的第二个可用 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个子网的列表,以及对应的第三个八位组的二进制表示:
172.16.0.0/20-0000 0000172.16.16.0/20-0001 0000172.16.32.0/20-0010 0000172.16.48.0/20-0011 0000172.16.64.0/20-0100 0000172.16.80.0/20-0101 0000172.16.96.0/20-0110 0000172.16.112.0/20-0111 0000172.16.128.0/20-1000 0000172.16.144.0/20-1001 0000172.16.160.0/20-1010 0000172.16.176.0/20-1011 0000172.16.192.0/20-1100 0000172.16.208.0/20-1101 0000172.16.224.0/20-1110 0000172.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子网内的主机)通信时,它会将数据包发送到其网关。然后,网关会将这些数据包转发到目标网络。因此,网关的主要作用是:
- 路由数据包:网关知道如何将数据包从源网络路由到目标网络。
- 协议转换:如果源网络和目标网络使用不同的网络协议,网关可以在这两种协议之间进行转换。
- 安全:网关可以提供防火墙和其他安全功能,以保护网络不受外部威胁。
总的来说,网关使得不同网络之间的通信成为可能。
相关文章:
Docker 哲学 - ip 的组成规则 与 网关介绍
在 IP 地址中,我们通常将 IP 地址分为两部分:网络部分和主机部分。网络部分用于标识网络,主机部分用于标识该网络中的特定主机。 IP 地址的每个部分(也被称为一个八位组或一个字节)可以是从0到255的任何值。 一个 IPv4…...
数学建模竞赛真的是模型解题一般,但是论文出彩而获奖的吗?
最近,数乐君发现有同学会有这样的问题:在数学建模国赛中,会因为参赛团队的模型解题一般,但论文写得非常精彩而获奖吗? 是的,确实会存在这样的情况。 我们都知道数学建模竞赛最终都是以提交成品论文的形式…...
深度学习常见的三种模型
深度学习模型实际上是一个包含多个隐藏层的神经网络,目前主要有卷积神经网络(CNN)、深度置信网络(DBN)、循环神经网络(RNN)。 1) 卷积神经网络 在机器学习领域,卷积神经网络属于前…...
接口自动化测试分层设计与实践总结
🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,涨薪更快 接口测试三要素: 参数构造 发起请求&#x…...
集合(下)Map集合的使用
文章目录 前言一、Map接口二、Map接口的实现类 1.HashMap类2.TreeMap类总结 前言 Map集合没有继承Collection接口,不能像List集合和Set集合那样直接使用Collection接口的方法。Map集合其自身通过以key到value的映射关系实现的集合,也有相应的许多方法。类…...
AAPT: error: resource android:attr/dialogCornerRadius not found.
ERROR:D:\android.gradle\caches\transforms-3\b3b98118f65da38d0ad9da84cfc70a72\transformed\appcompat-1.0.0\res\values-v28\values-v28.xml:5:5-8:13: AAPT: error: resource android:attr/dialogCornerRadius not found. 请帮我看看这个错误是什么意思。我改如何做。 这个…...
数字功放VS模拟功放,选择适合你的音频解决方案
数字功放和模拟功放是音频系统中常用的两种功放技术,适用于不同的音频应用,都具有各自的优势和特点。本文将为您详细介绍数字功放和模拟功放的差异,并帮助您找到适合自己的音频解决方案。 1、数字功放是一种利用数字信号处理技术的功放。它将…...
5.88 BCC工具之tcpsynbl.py解读
一,工具简介 tcpsynbl工具以直方图的形式显示SYN到达时的TCP SYN积压大小。这可以让我们了解应用程序距离达到积压限制并丢弃SYN(导致SYN重传产生性能问题)还有多远。 TCP SYN 数据包则通常用于启动 TCP 三次握手过程的第一次握手。 二,代码示例 #!/usr/bin/env python…...
GVRP实现vlan的自动创建和注册
拓扑图 资源已上传 流程 第一、每台交换机的全局及端口下使能GVRP功能 第二、配置交换机的二层连通性,交换机某些端口配置Trunk端口,并允许相应的vlan通过 第三、在交换机4和5配置静态vlan100,然后查看1和3交换机是否有vlan100的定义&…...
Oracle VM VirtualBox修改磁盘大小
一、 修改虚拟机磁盘大小 先把虚拟机停掉。再增加磁盘大小。 路径中有空格的用""包起来。 D:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "D:\Program Files\VirtualBox VMs\mycentos\mycentos.vdi" --resize 30000 0%...10%...20%...3…...
【嵌入式硬件】步进电机
1.步进电机简介 1.1步进电机基本原理 步进电机的英文是stepping motor。step的中文意思是行走、迈步。所以仅从字面上我们就可以得知,步进电机就是一步一步移动的电动机。说的官方一点儿,步进电机是一种将电脉冲信号转换成相应角位移或者线位移的电动机(直线电机)。下图为…...
FlyControls 是 THREE.js 中用于实现飞行控制的类,它用于控制摄像机在三维空间中的飞行。
demo演示地址 FlyControls 是 THREE.js 中用于实现飞行控制的类,它用于控制摄像机在三维空间中的飞行。 入参: object:摄像机对象,即要控制的摄像机。domElement:用于接收用户输入事件的 HTML 元素,通常…...
【Java程序设计】【C00366】基于(JavaWeb)Springboot的纹理生产图片系统(有论文)
TOC 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,博客中有上百套程序可供参考,欢迎共同交流学习。 项目简介 项目获取 🍅文末点击卡片…...
编译原理Lab. 1 初代编译器实验说明和要求
目录 Lab. 1 初代编译器实验说明和要求一、初代编译器功能描述二、初代编译器文法要求三、初代编译器测试样例四、初代编译器提交要求五、初代编译器实验测试框架说明 代码与思路 Lab. 1 初代编译器实验说明和要求 一、初代编译器功能描述 初代编译器将 C 语言顺序语句序列翻…...
python判断工作日,节假日
一、概述 需要判断一个日期是否为工作日,节假日。 找到一个现成的插件,蛮好用的。 插件介绍 https://pypi.org/project/chinesecalendar/ 判断某年某月某一天是不是工作日/节假日。 支持 2004年 至 2020年,包括 2020年 的春节延长。 兼容…...
练习4-权重衰减(李沐函数简要解析)
环境:练习1的环境 代码详解 0.导入库 import torch from torch import nn from d2l import torch as d2l1.初始化数据 这里初始化出train_iter test_iter 可以查一下之前的获取Fashion数据集后的数据格式与此对应 n_train, n_test, num_inputs, batch_size 20, 100, 200, …...
websocket 中 request-line 中的URI编码问题
首先,request-line组成如下: Request-Line Method SP Request-URI SP HTTP-Version CRLF 在 rfc6455 规范的 5.1.2 Request-URI 中,有这样的描述: The Request-URI is transmitted in the format specified in section 3.2.1. …...
为何ChatGPT日耗电超50万度?
看新闻说,ChatGPT每天的耗电量是50万度,国内每个家庭日均的耗电量不到10度,ChatGPT耗电相当于国内5万个家庭用量。 网上流传,英伟达创始人黄仁勋说:“AI的尽头是光伏和储能”,大佬的眼光就是毒辣ÿ…...
__init__.py 的作用
在 Python 中,包含一个名为 __ init __.py 的文件的目录被称为一个包(package)。 __ init __.py 文件的作用有以下几点: 指示包含该文件的目录是一个 Python 包:当 Python 导入一个包时,会查找该包所在目录…...
Redis到底是多线程还是单线程?
Redis6.0之前:是单线程模式。 Redis6.0之后:Redis的IO线程是多线程,worker线程是单线程。 Redis6.0之前:单线程 Redis6.0之后:Redis的IO线程是多线程,worker线程是单线程。...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
