一些 IoT 工程师应该了解的网络知识
IP地址分类(IPV4)IP是可以分类的你知道了吗首先从IP地址说起IP地址其实是一个32比特的整数把这个32比特分为4段每段8比特长8比特正好是一个字节把这个字节转换成十进制用点隔开。这样4个数字三个点的表示方法就是我们现在大家熟悉的IP地址如192.168.1.1其实把这个IP地址写成二进制是这样的0d192 0b110000000d168 0b101010000d1 0b000000010d1 0b00000001合起来 192.168.1.1 0b11000000 10101000 00000001 00000001 0d3232235777那这个IP地址真正的值就是整数3232235777以上例程中0d开头的表示十进制数0b开头的表示二进制数。http://192.168.1.1 http://3232235777你不访可以在浏览器的地址栏里试下输入 http://3232235777 这种IP地址的表示方法我这里是 OK 的那你呢了解了IP地址的构成那接下来言归正传讲讲IP地址的分类吧。IP 地址分为 5 类分别是 A 类B 类C 类D 类和 E 类。为什么前面先讲 IP 地址的构成呢因为分类用的到把 IP 地址转成二进制第一个比特为 0 的IP地址也就是二进制以 0 开头的 IP 地址为 A 类地址10 开头的为 B 类地址110 开头的为 C 类地址1110 开头的为 D 类地址1111开头的为 E 类地址。我们常用的是 A、B、C 类地址D 类 IP 地址段是多播地址E 类是保留段。我们 IoT 工程师最常用的就是 A、B、C 类地址段再把这三个段的具体范围用点分十进制表示出来。A 类 0 ~ 127B 类 128 ~ 191C 类 192 ~ 223那这三类地址有什么区别呢我们的路由器 IP 地址为什么通常都以 192.168 开头呢下面我们分别聊一下这两点。区别A 类地址一个网段可容纳 16777214 台主机B 类地址一个网段可容纳 65534 台主机而 C 类地址一个网段可容纳 254 台主机。为什么这样下面会讲到。特殊 IP 地址段A 类地址中的特殊地址段有广播地址段以 0 开头的地址段广播地址段内网地址段以 10 开头的地址段为内网地址段 (RFC 1918)运营商私有地址段以 100 开头的为运营商私有的地址段如果你是移动宽带用户理论上你从运营商这里得到的 IP 地址就应该是这个地址段这也是所谓的移动宽带多个用户是共享一个公网 IP。回环地址段以 127 开头的地址段为回环地址B 类地址中的特殊地址段有 (RFC 1918)无法获取 DHCP 时分配的 IP 地址段如果你的设备获取 DHCP 失败则会随机分配到一个以 169.254 开头的 IP 地址。内网地址段以 172.16 ~ 172.31 开头的地址段为内网地址段C 类地址中的特殊地址段有内网地址段以 192.168 开头的地址段为内网地址段 (RFC 1918)特殊地址段以 192.0.0 开头的地址段为特殊地址段 (RFC 5736)测试地址段以 192.0.2 开头的地址段为测试地址段 (RFC 5737)测试地址段以 192.18 ~ 192.19 开头的地址段为测试地址段测试地址段以 192.51.100 开头的地址段为测试地址段 (RFC 5737)测试地址段以 203.0.113 开头的地址段为测试地址段 (RFC 5737)说了那么多IP 地址分了类有什么用呢请往下看。无类域间路由无类域间路由 (Classless Inter-Domain Routing —CIDR)这里的类就是上面 A、B、C 类无类就是打破这个类的规则上面说到的 A、B、C 类 IP 地址段容纳的主机数是怎么回事呢往下看。先介绍下子网掩码子网掩码这个词我相信大家都不陌生了吧很多时候将电脑的 IP 地址设置成 192.168.x.x上面说过了这是 C 类的内网地址一般掩码会填 255.255.255.0这是什么意思呢255.255.255.0 是 C 类地址的默认掩码同样把 255.255.255.0 转换为二进制为 0b11111111 11111111 11111111 00000000很容易看出这个掩码的前面有连续的 24 个 1后面是连续的 8 个 0把它和 IP 地址放在一起就拿 192.168.1.1 来举例192.168.1.1 0b11000000 10101000 00000001 00000001255.255.255.0 0b11111111 11111111 11111111 00000000排一起11000000 10101000 00000001 0000000111111111 11111111 11111111 00000000这样IP 地址和掩码对齐后掩码的 1 和 0分 IP 地址分为了两个部分 0b11000000 10101000 00000001和 0b00000001即 192.168.1 和 1和掩码 1 对应的部分称为网络段和掩码 0 对应的部分称为主机地址。再来两个概念网络地址和主机地址。把上述 IP 地址的网络段部分保持不变把主机地址变为全 0则为上述 IP 地址所在的网段的网络地址即 192.168.1.0把上述 IP 地址的网络段部分保持不变把主机地址变为全 1则为上述 IP 地址所在的网段的广播地址即 192.168.1.255掩码的二进制都是全 1 到全 0不然就是非法的比如255.255.254.0 是合法的掩码而 255.255.253 就是不合法的掩码如果不明白为什么那转换成二进制一看就明白了这里不多讲了。所以有以上 IP 地址和掩码可以简写成 192.168.1.1/24/24 就是掩码表示有 24 个连续的 1 开头的 32 比特整数实质上也就是 255.255.255.0。A 类地址的默认掩码是255.0.0.0B 类地址的默认掩码是255.255.0.0C 类地址的默认掩码是255.255.255.0所以A 类地址一共有 2 ^ (8 - 1) 个网段去掉上述 0 外实际可用的为 127 个网段这是包括内网等特殊网段的而每个网段可容纳的主机数是 2 ^ 24 – 2则为 16777214 台主机8 是掩码全 1 部分有 8 个 124 是掩码全 0 部分有 24 个 0减去 2 是一个全 0 的网络地址和一个全 1 的广播地址。同理 B 类地址一共有 2 ^ (16 - 2) 个网段即 16384 个网段这是包括内网等特殊网段的而每个网段可容纳的主机数是 2 ^ 16 – 2则为 65534 台主机再同理 C 类地址一共有 2 ^ (24 - 3) 个网段即 2097152 个网段这是包括内网等特殊网段的而每个网段可容纳的主机数是 2 ^ 8 – 2则为 254 台主机好了终于到了 CIDR 登场的时候了。也许大家有时也会看到过这样的 IP 地址和掩码吧10.0.0.1 255.255.254.0不是说 10 开头的是 A 类地址吗A 类地址的掩码不就应该是 255.0.0.0 吗这个组合合法吗答案是肯定的这个是合法的这就是无类域间路由 — CIDR。就是为了根据实际需求超越 A、B、C 类地地址的限制对调整网段和主机数进行更合理的安排和划分。就拿上面的举例吧10.0.0.1/23 (不知道这个写法的往前翻翻这个文档前面有提到) 可容纳的主机数是 2 ^ 9 – 2即 510 台主机。那问题又来了IP 地址分网络段和主机段有什么用呢网络地址和广播地址有什么用呢往下看。交换机和路由器的区别前面都是铺垫纯理论知识有了上面的理论现在可以和实际结合了交换机和路由器有什么区别呢还是要先从以太网讲起。以太网传输最终的识别信息是网卡的 MAC 地址首先我大概描述一下同网段之间的传输注意我只是用白话文方式描述原理如果想了解具体细节的请阅读相关文档。网络拓普主机 AIP192.168.1.100/24 MAC00:12:34:56:78:9A主机 BIP192.168.1.101/24 MAC00:12:34:56:2C:AB场景主机 A 发起通讯请求欲与主机 B 交互数据主机 A 比对自己的 IP 和 目标 IP在同一网段主机 A 发起 ARP 广播内容为目标 IP 为 192.168.1.101本机 MAC 为 00:12:34:56:78:9A只要在同网络且网段下在线的主机均能收到该广播除主机 B 外其它主机收到广播后比对主机 A 的目标 IP 不是本机则忽略广播主机 B 收到广播后经比对自己的 IP 和主机 A 广播的目标 IP 吻合则把自己的 MAC 通过 ARP 广播应答主机 A双方通过 MAC 建立通讯当然这时交换机还做了很多事比如维护 ARP list 等这里就不展开了感兴趣的可以去关心下集线器(HUB)网桥(Bridge)交换机(Switch) 的区别及以太网的冲突域(CSMA/CD)内容太多了讲下去没完没了了。那不同网段呢网络拓普主机 AIP192.168.1.100/24 MAC00:12:34:56:78:9A主机 BIP192.168.1.101/24 MAC00:12:34:56:2C:AB主机 CIP192.168.10.102/24 MAC00:12:34:56:54:71路由器A Port AIP192.168.1.1/24 MAC00:12:34:56:D1:BB路由器A Port BIP192.168.10.1/24 MAC00:12:34:56:D1:BC场景主机 A 发起通讯请求欲与主机 C 交互数据主机 A 比对自己的 IP 和 目标 IP不在同一网段主机 A 发起 ARP 广播内容为目标 IP 为192.168.10.102本机 MAC 为 00:12:34:56:78:9A广播的目标 IP 则为网关路由器 A即 192.168.0.1只要在同网络且网段下在线的主机均能收到该广播除路由器 A 外其它主机收到广播后比对主机 A 的目标 IP 不是本机则忽略广播路由器 A 收到广播后经比对自己的 IP 和主机 A 广播的目标 IP 吻合则把自己的 MAC 通过 ARP 广播应答主机 A路由器 A 把主机 A 的目标 IP 与 其它端口的 IP 网段比对如果在同一网段则重复上述 ARP 广播的过程如果不在同一网段则再把请求发到自己的网关(上级路由器)上路由器A 在端口 B 上发出 ARP 广播内容为目标 IP 为 192.168.10.102本机 MAC 为 00:12:34:56:D1:BC主机 C 收到广播后经比对自己的 IP 和路由器 A 广播的目标 IP 吻合则把自己的 MAC 通过 ARP 广播应答路由器 A路由器 A 再通过端口 A 把应答转给 主机 A双方通过路由器 A 建立通讯好了总结一下集线器组成一个冲突域网桥切断冲突交换机其实相当于每个端口都是一个网桥它组成的是一个广播域路由器切断了广播承载着不同网段数据的交互最后值得一提的是我们常用的宽带路由器是在普通路由器里固定设置了 NAT 转发功能因为它的一端是可能是公网地址而另一段肯定是内网地址这样它其实需要的是单向传输有设置过端口转发经验的朋友应该注意到了只有通过这样的设置才能从公网反连到内网上的某台主机这个我计划后面会另写一篇相关技术的文档这里不再展开了也正因为这个原因有些地区把这种宽带路由器称为 IP 地址分享器。欢迎来我的TT家园参观或发邮件给我。

相关新闻

CSS代码格式化

CSS代码格式化

本文目录1. 背景2. 为什么要进行代码格式化3. 如何进行代码格式化4. 如何快捷的进行格式化5. 小结1. 背景 为什么单独拿出一章来讲代码格式化的问题,是因为我发现初学者,不理解为什么要进行代码格式化,以及如何进行代码格式化。 本篇就来说…

2026/10/9 1:15:52 阅读更多 →
docker私有仓库 harbor私仓 harbor daemon.json配置 docker配置 含 mtr https

docker私有仓库 harbor私仓 harbor daemon.json配置 docker配置 含 mtr https

# harbor https部署 (815条消息) harbor安装并配置https_freesharer的博客-CSDN博客_harbor配置https 第一个报错: JG证书报错: 关于nginx配置ssl https请求访问,出现下面错误 SSL_CTX_use_PrivateKey_file("/system/nginx/ssl/test.k…

2026/10/9 1:15:52 阅读更多 →
JSP+SQL Server社区居民信息管理系统毕设源码:九大模块完整交付

JSP+SQL Server社区居民信息管理系统毕设源码:九大模块完整交付

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 1:14:52 阅读更多 →

最新新闻

Linux eBPF Security Tracer 架构深度解析:从内核 tracepoint 到用户空间检测引擎的完整设计

Linux eBPF Security Tracer 架构深度解析:从内核 tracepoint 到用户空间检测引擎的完整设计

【免费下载链接】Cybersecurity-Projects Building 70 Projects ranging from beginner to advanced so anyone can — learn from, build upon, use as a reference, or even copy directly. Gamified Cybersecurity learning 👇 项目地址: https://git…

2026/10/9 2:15:27 阅读更多 →
Sapling 测试体系全指南:从 .t 测试到 Rust/Python 测试的编写规范

Sapling 测试体系全指南:从 .t 测试到 Rust/Python 测试的编写规范

开发工具CLI后端 【免费下载链接】sapling A Scalable, User-Friendly Source Control System. 项目地址: https://gitcode.com/gh_mirrors/sa/sapling 点击查看 免费下载 本篇技术指南围绕 Sapling(开源的可扩展、易用的源码控制系统)的测试…

2026/10/9 2:15:27 阅读更多 →
为 models.dev 设计安全的自动化 PR 审查 Agent:pr-reviewer 的职责、判定规则与实现剖析

为 models.dev 设计安全的自动化 PR 审查 Agent:pr-reviewer 的职责、判定规则与实现剖析

人工智能大模型后端前端 【免费下载链接】models.dev An open-source database of AI models. 项目地址: https://gitcode.com/gh_mirrors/mo/models.dev 点击查看 免费下载 models.dev 是一个开源的 AI 模型数据库,仓库以 AGENTS.md 作为权威的模型/Pr…

2026/10/9 2:15:27 阅读更多 →
批量域名解析提速实战:massdns + aiodns 组合拳

批量域名解析提速实战:massdns + aiodns 组合拳

前几天晚上我盯着一份三千多行的域名列表发呆,任务是把它全部解析到IP,再按网段和用途归类。刚开始天真地以为写个脚本循环调解析接口就完事了,结果跑完一等就是四十多分钟,还动不动卡住,某个域名解析超时就能让整个脚…

2026/10/9 2:15:27 阅读更多 →
Xtreme Toolkit Pro v15.3.1 在 VS2017 下 MFC 界面换肤全攻略

Xtreme Toolkit Pro v15.3.1 在 VS2017 下 MFC 界面换肤全攻略

简介:Codejock.Xtreme.Toolkit.Pro.v15.3.1完整源码包,专为VS2017开发环境重新配置,面向需要开发专业MFC界面的C开发者。包内.sln工程属性已统一修改为32位与64位VS2017工程属性,打开即可直接编译,免去手动升级工程和调…

2026/10/9 2:15:27 阅读更多 →
刷穿 LeetCode 20:有效的括号——栈 + 哈希表与栈 + ASCII 差值的双解法全解析

刷穿 LeetCode 20:有效的括号——栈 + 哈希表与栈 + ASCII 差值的双解法全解析

教程文档 【免费下载链接】LogicStack-LeetCode 公众号「宫水三叶的刷题日记」刷穿 LeetCode 系列文章源码 项目地址: https://gitcode.com/gh_mirrors/lo/LogicStack-LeetCode 点击查看 免费下载 本文是「宫水三叶的刷题日记」系列(LogicStack-LeetCod…

2026/10/9 2:14:27 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →