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线程是单线程。...
LFM2.5-1.2B-Thinking-GGUF部署教程:Ubuntu/CentOS/Debian三平台通用安装步骤
LFM2.5-1.2B-Thinking-GGUF部署教程:Ubuntu/CentOS/Debian三平台通用安装步骤 1. 平台简介 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,特别适合在资源有限的环境中快速部署。该镜像内置了GGUF模型文件和llama.cpp运行时ÿ…...
智能车调参手记:我用Kp=200, Ki=60, Kd=40让小车稳如老狗
智能车调参手记:我用Kp200, Ki60, Kd40让小车稳如老狗 凌晨三点的实验室里,咖啡杯已经见底,眼前的智能车在测试跑道上又一次冲出了弯道。这已经是本周第七次熬夜调试,上坡时的速度波动问题始终困扰着我们。就在准备放弃的时候&…...
30天小白进阶AI大神:收藏这份路线图,免费工具玩转大模型!
本文为AI学习新手提供了30天的系统学习路线图,涵盖了AI技术栈的三个层次:应用层、模型层和基础设施层。文章建议从应用层入手,逐步向下理解,并推荐了主流AI工具的对比及免费工具的入门使用。此外,还提供了给初学者的五…...
Python与OPC UA实战:高效读写PLC数据
1. 为什么选择Python操作OPC UA? 在工业自动化领域,PLC(可编程逻辑控制器)就像工厂的"大脑",而OPC UA则是让这个大脑与其他系统对话的"普通话"。作为Python开发者,我们经常需要从PLC读…...
ArchLinux新手必看:用Fcitx5搞定中文输入,从安装到美化皮肤保姆级教程
ArchLinux新手必看:用Fcitx5搞定中文输入,从安装到美化皮肤保姆级教程 刚接触ArchLinux的新手们,面对命令行界面时总会有些手足无措。特别是当需要输入中文时,如何配置一个既美观又实用的输入法成了许多人的第一个挑战。Fcitx5作…...
从make clean到build.prop:揭秘Android系统属性生成的完整链条
从make clean到build.prop:揭秘Android系统属性生成的完整链条 当你通过adb shell getprop ro.build.display.id查看设备版本号时,是否好奇过这个字符串背后的生成逻辑?在Android编译系统中,从Makefile执行到最终生成build.prop文…...
DanKoe 视频笔记:深度工作:改变生活的常规 [特殊字符]
在本教程中,我们将学习一套能极大提升专注力与生产力的深度工作常规。这套方法的核心在于理解并管理你的注意力,将其视为最宝贵的资源,并像管理计算机内存一样去优化它。我们将从核心概念开始,逐步拆解具体步骤,帮助你…...
SDXL 1.0电影级绘图工坊惊艳案例:电影质感风景图动态范围实测
SDXL 1.0电影级绘图工坊惊艳案例:电影质感风景图动态范围实测 1. 项目简介 SDXL 1.0电影级绘图工坊是基于Stable Diffusion XL Base 1.0模型深度优化的AI绘图工具,专门为RTX 4090显卡的24G大显存进行了极致性能调优。与常规部署方式不同,这…...
告别繁琐配置:用Docker一键搞定RKNN模型转换环境(Windows/Linux/Mac通用)
跨平台RKNN模型转换实战:Docker化环境搭建与高效部署指南 当AI开发者需要在不同设备上部署模型时,环境配置往往成为最耗时的环节。特别是在使用Rockchip NPU进行边缘计算时,传统的虚拟机配置、交叉编译等方法既繁琐又容易出错。本文将介绍如何…...
大多数人用AI还是“一次性聊天” Claude Cowork却让你把重复工作彻底扔上自动驾驶
花大价钱开了Claude Pro,每天扔进去一句“帮我写文案”“帮我优化内容”,结果用完就关窗口,下次还是从零开始?重复任务永远在偷走你的注意力,脑子里永远挂着“待办事项”这个隐形标签,效率看起来提升了&…...
