1. 创建mosquitto.conf vim /data/docker/mosquitto/config/mosquitto.conf 添加以下配置 12345678listener 1883 0.0.0.0persistence truepersistence_location /mosquitto/datalog_dest file /mosquitto/log/mosquitto.log# 不允许匿名访问allow_anonymous false#指定密码文件password_file /mosquitto/config/pwfile.conf 以上的路径代表的是容器中的路径非宿主机 2. 创建pwfile.conf文件 touch /data/docker/mosquitto/config/pwfile.conf,先空白后续再容器中配置用户账号、密码 3. 修改目录权限 这个步骤没有验证过是否一定要配置~ 12chmod -R 755 /data/docker/mosquittochmod -R 777 /data/docker/mosquitto/lo ...
网络和子网是一个东西吗? 网络和子网的区别与联系 网络和子网密切相关但有重要区别,可以用“省“和“市“的关系来类比理解: 核心区别 概念 说明 类比 网络(Network) 由同一网络地址标识的一组设备(如一个公司/学校的整个网络) 相当于“省“ 子网(Subnet) 在大网络中划分出的更小逻辑单元(如不同部门/楼层的网络) 相当于“市“ 详细解释 1. 原始IP设计(无子网) 只有两级结构:网络地址 + 主机地址 例如B类地址:前16位网络,后16位主机 问题:一个网络内可能有6万台主机,广播流量太大 2. 引入子网后 三级结构:网络地址 + 子网地址 + 主机地址 从主机位借位创建子网。例如B类地址:前16位网络,中间8位子网,最后8位主机 → 可划分256个子网 关键特点 子网是网络的细分:就像城市是省份的细分 对外表现:外部互联网只看到“网络地址“,不知道内部子网划分 对内管理:内部路由器需要知道子网结构才能正确转发数据 实际例子 公司网络(网络地址:1 ...
IPv4报文格式(分为20字节的固定部分,表示每个ip数据包必须包含的部分,和40字节的可变长部分) Pv4 头部 = 固定部分(20 字节) + 可选部分(Options,0~40 字节) 版本号(4bit): 协议的版本号。不同版本的协议格式或语义可能不同,现在常用的是IPv4,表示为0100(十进制是4),正在逐渐过渡到IPv6。 首部长度(4): IP头长度,以32位字计数(单位为4字节),最小为5,即20字节,最大为15,即60字节(首部固定部分20字节,单位4字节,所以最小为5)。 服务类型(8): 用于区分不同的可靠性、优先级、延迟和吞吐率的参数。 总长度(16): 包含IP头在内的数据单元的总长度(字节数,头+数据),最长为 65535 字节。 标识符(16): 唯一标识数据报的标识符。该字段用于表示IP数据包的标识符。当IP对上层数据进行分片时,它将给所有的分片数据分配一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误地重组。标识符字段用于标志一个数据包,以便接收节点可以重组被分片的数据包。 标志(3): 包括3个标志,一个 ...
IP协议属于网络层协议,所有的TCP, UDP, ICMP, IGMP数据都通过IP数据报传输。IP提供了一种不可靠,无连接的数据包交付服务。依赖其他层的协议进行差错控制。 不可靠: IP数据报不保证能成功的到达目的地,如果出现错误则选择丢弃该数据,然后发送ICMP消息报给信源端 无连接: IP不提供任何后续数据报的状态信息,每个数据报处理都是独立的。如果一个信源发送了连续的两个数据报,每个数据报选择独立的路由,两个数据可能不同时到达。IP通信双方都不长久地维持对方的任何信息。这样上层协议每次发送数据的时候,都必须明确指定对方的IP地址。 TCP 是通过 IP 数据报传输 TCP 是传输层协议,IP 是网络层(或称网际层)协议。虽然它们处于不同层,但 TCP 的数据是封装在 IP 数据报中进行传输的,这就是为什么说“TCP 是通过 IP 数据报传输”的原因。 协议封装关系 IP数据报如同一个标准化的“信封“,其首部中的“协议类型“字段(8位)用于标识载荷数据的类型: 6 = TCP 17 = UDP 1 = ICMP 2 = IGM ...
TCP报文 TCP三次握手流程 步骤 方向 数据包内容 作用 第一次握手(SYN) 客户端 → 服务器 SYN=1, seq=x(客户端随机生成初始序列号x 客户端请求建立连接,并发送自己的初始序列号。 序号字段seq被设置了一个初始值x作为TCP客户进程所选择的初始序号。 第二次握手(SYN+ACK) 服务器 → 客户端 SYN=1, ACK=1, seq=y, ack=x+1(服务器随机生成初始序列号y,确认客户端的x) 服务器确认客户端的连接请求,并发送自己的初始序列号及对客户端的确认号。 序号字段seq被设置了一个初始值y,作为TCP服务器进程所选择的初始序号。确认号字段ack的值被设置成了x+1,这是对TCP客户进程所选择的初始序号seq的确认。 第三次握手(ACK) 客户端 → 服务器 ACK=1, seq=x+1, ack=y+1(客户端确认服务器的y) 客户端确认服务器的连接请求,连接正式建立。 序号字段seq 被设置为x+1,这 ...
超网(Supernetting)是什么? 超网(Supernetting)是 子网划分(Subnetting)的逆向操作,它的核心目的是将多个连续的小网络合并成一个更大的网络,从而减少路由表条目,提高网络效率。 1. 为什么需要超网? 子网划分:把一个大的IP网络(如 192.168.0.0/16)划分成多个小网络(如 192.168.1.0/24、192.168.2.0/24)。 超网:把多个连续的小网络(如 192.168.0.0/24 和 192.168.1.0/24)合并成一个更大的网络(如 192.168.0.0/23),减少路由器的负担。 2. 超网的核心原理 (1)CIDR(无类别域间路由) 超网依赖 CIDR(Classless Inter-Domain Routing),允许打破传统的A/B/C类IP限制,通过 可变长度子网掩码(VLSM) 灵活合并网络。 (2)关键规则 连续的网络:要合并的多个子网必须是连续的(如 192.168.0.0/24 和 192.168.1.0/24)。 掩码左移:超网的子网掩码比原子网更短(即网络位减少,主 ...
计算机网络
未读传统的IPv4分类(A/B/C类)已经规定了默认的网络位长度(A类8位、B类16位、C类24位),而子网掩码最初就是基于这些分类设计的。但现代网络中,子网掩码的作用已经远远超出了分类的局限,主要通过子网划分 和 无类域间路由(CIDR) 实现了更灵活的地址分配。以下是详细解释: 1. 传统分类的局限性 在早期的IPv4设计中,地址被严格分为A/B/C/D/E类,每类有固定的网络位长度: A类: 8位 网络位(如 10.0.0.0/8),支持大型网络。 B类: 16位 网络位(如 172.16.0.0/16),支持中型网络。 C类: 24位 网络位(如 192.168.1.0/24),支持小型网络。 问题: 地址浪费: 例如,一个公司需要500个IP,B类(6.5万主机)太大,C类(254主机)太小,只能分配B类,造成浪费。 缺乏灵活性: 无法根据实际需求调整网络位长度。 2. IPv4地址的结构 IPv4地址由32位二进制数组成,通常表示为4个十进制数(如 192.168.1.1)。其结构分为两部分: 网络部分(Network ID) ...
二进制、十进制、十六进制转换 1. 二进制 ↔︎ 十进制 二进制 → 十进制 方法:按权展开相加法 每位二进制数(0或1)乘以2的位次幂(从右到左,最低位为0)。 公式: D = dₙ₋₁×2ⁿ⁻¹ + ... + d₁×2¹ + d₀×2⁰ 示例: 1011₂ → 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 0 + 2 + 1 = 11₁₀ 十进制 → 二进制 方法:除2取余法(逆序排列)。 不断将十进制数除以2,记录余数,直到商为0。 示例: 13₁₀ → 13 ÷ 2 = 6 余 1 6 ÷ 2 = 3 余 0 3 ÷ 2 = 1 余 1 1 ÷ 2 = 0 余 1 → 1101₂ 补0是往左补:000001101 2. 十六进制 ↔︎ 十进制 十六进制 → 十进制 方法:按权展开相加。 每位十六进制数乘以16的位次幂(从右到左,最低位为0)。 字母A-F对应10-15。 示例: A2F₁₆ → 10×16² + 2×16¹ + 15×16⁰ = 2560 + 32 + 15 = 2607₁₀ 十进制 → 十六 ...
Hexo
未读Hexo 数学公式渲染方案:hexo-renderer-pandoc + hexo-filter-mathjax 1. 安装hexo-renderer-pandoc插件和pandoc 卸载默认的hexo渲染器,安装hexo-renderer-pandoc插件 123# 先卸载原渲染器npm uninstall hexo-renderer-marked --save npm install hexo-renderer-pandoc --save 然后,进入pandoc下载页面,点击Download the latest installer,然后下载安装即可(pandoc支持Windows、mac、linux系统)。Debian系统执行apt install pandoc安装即可。 配置hexo根目录的配置文件_config.yml: 123456789pandoc: args: - '-f' - 'commonmark_x' - '-t' - 'html' ...
CIDR 的全称是 Classless Inter-Domain Routing,中文翻译为 无类别域间路由。 要计算 123.21.1.12/27 的主机范围,需要按照以下步骤进行: 1. 理解 CIDR 表示法 123.21.1.12/27 表示: IP 地址:123.21.1.12 子网掩码:/27,即前 27 位是网络部分,剩下的 5 位是主机部分。 2. 计算子网掩码 /27 对应的子网掩码是: 111111111.11111111.11111111.11100000 转换为十进制: 1255.255.255.224 子网掩码也是一个32位二进制数,与IP地址一一对应: 1:表示对应IP位属于网络部分。 0:表示对应IP位属于主机部分。 3. 确定网络地址 网络地址 = IP地址 & 子网掩码(网络地址是 IP 地址与子网掩码按位与运算的结果。) IP 地址:123.21.1.12 → 二进制: 101111011.00010101.00000001.00001100 ...