《TCP/IP 详解 卷1:协议》第2章:Internet 地址结构
基本的IP地址结构
分类寻址
早期Internet采用分类地址(Classful Addressing),将IPv4地址划分为五类:
A类和B类网络号通常浪费太多主机号,而C类网络号不能为很多站点提供足够的主机号。
子网寻址
子网(Subnet) 是在一个IP网络中划分出的更小的逻辑网络。通过借用主机位作为子网位,可以实现更灵活的网络划分,有助于减小广播域并提高地址利用率。
在这个例子中,8位被选定为子网号,剩下8位为主机号。这个特殊配置允许站点支持256个子网,每个子网最多可包含254台主机(当前每个子网的第一个和最后一个地址无效,即从整个分配范围中除去第一个和最后一个地址)。注意,只有划分子网的网络中的主机和路由器知道子网结构。
边界路由器必须能区分和分离目的地址为128.32.1.x和目的地址128.32.2.x.的流量。这些地址分别表示子网号1和2,它们都采用128.32的B类网络号。而这一步通过子网掩码实现。
子网掩码
子网掩码(Subnet Mask) 用于划分IP地址中的网络部分和主机部分。其本质是一个32位的二进制数,与IP地址进行按位与操作可提取出网络地址。子网掩码在每个网络中是固定的,意味着所有子网的划分都是基于相同的位数。
掩码由路由器和主机使用,以确定一个IP地址的网络/子网部分的结束和主机部分的开始。子网掩码中的一位设为1表示一个IP地址的对应位与一个地址的网络/子网部分的对应位相结合,并将结果作为转发数据报的基础。相反,子网掩码中的一位设为0,表示一个IP地址的对应位作为主机ID的一部分。
可变长子网掩码
可变长子网掩码(VLSM, Variable Length Subnet Mask) 是一种支持对不同子网使用不同长度子网掩码的技术,提升了地址空间的利用率。VLSM允许网络根据实际需求分配IP空间,通常结合CIDR使用。
三个不同的子网掩码被用于站点中的子网128.32.0.0/16:/24、/25和/26。这样,每个子网可提供不同数量的主机。主机数受IP地址中没有被网络 / 子网号使用的剩余位限制。对于IPv4和/24前缀,允许有32-24=8位(256台主机);
对于/25,有1/2数量(128台主机);对于/26,有1/4数量(64台主机)。注主机和路由器的每个接口都需要用IP地址和子网掩码来描述,但掩码决定了网络拓扑的不同。基于路由器中运行的动态路由协议(例如OSPF、IS-IS、RIPv2),流量能正确地在同一站点中的主机之间流动,以及通过Internet前往或来自外部站点。
广播地址
在IPv4中,每个子网都保留有一个广播地址,用于向该子网中所有主机发送信息。广播地址的构造方法是:将子网掩码按位取反后,与该子网中任意一个IP地址进行按位或运算。
这样生成的地址,其网络部分保持不变,而主机部分的所有位都为1。
这种类型的广播称为定向广播。从理论上说,数据报可以跨越路由器到达目标子网,并在该子网上作为广播数据报分发给所有主机。然而,出于安全和网络负载的考虑,大多数现代路由器默认禁止转发定向广播。因此,这种广播方式主要用于本地网络范围内,不需要路由器转发,通常由链路层的广播机制支持。
IPv6完全取消了广播机制,取而代之的是组播(Multicast)方式,用于实现类似功能。
IPv6地址和接口标识符
IPv6地址长度为128位,是IPv4的四倍,支持更大的地址空间。IPv6使用地址前缀来区分不同的作用范围,包括节点本地、链路本地和全球性三种常见范围。节点通常会在同一接口上拥有多个IPv6地址,这种方式在IPv6中很普遍。
链路本地地址和一些全球地址会使用接口标识符(IID)来形成完整的单播地址。IID通常占IPv6地址的低64位,在大多数情况下是基于网络接口的MAC地址生成的。最常见的生成方式是使用修改的EUI-64格式,它通过将一个48位的MAC地址扩展为64位地址实现。
EUI-64由24位的组织唯一标识符(OUI)和由组织分配的40位扩展标识符组成。在从EUI-48生成EUI-64时,会在中间插入FF:FE
,并将u位取反。
若接口没有标准的MAC地址,例如隧道或串行链路,可以使用其他接口的地址、节点相关标识符或手动方式生成接口标识符。IPv6还支持使用随机生成的IID以提供更好的隐私保护。
CIDR和聚合
前缀
CIDR(无类别域间路由,Classless Inter-Domain Routing)取消了传统的A/B/C类地址分类方式,转而使用前缀长度表示网络部分的位数。前缀通常写作“地址/长度”的形式,如 192.0.2.0/24
表示前24位是网络号,后8位用于主机号。这种方式提供了更灵活的地址划分机制,使地址分配更有效,并减缓了IPv4地址枯竭。
CIDR前缀不仅用于地址分配,还广泛用于路由表匹配。在转发数据包时,路由器会选择与目的地址最长前缀匹配(Longest Prefix Match)的路由项。
聚合
CIDR还引入了地址聚合的概念,也称为“超网(supernetting)”。多个连续的IP地址块可以被合并为一个更短的前缀,从而减少路由表项数量。
特殊用途地址
IPv4和IPv6地址转换
IPv4 和 IPv6 协议栈之间的互操作需要使用地址映射机制。最常见的一种是使用 IPv4映射地址(IPv4-mapped IPv6 address),这种地址常用于双协议栈主机,以便可以通过IPv6接口访问IPv4服务。
组播地址
组播地址用于将数据发送给一组接收者,而不是单一主机(单播)或所有主机(广播)。组播是一种一对多的通信方式,支持高效资源利用,常用于视频传输、路由协议(如OSPF、RIPng)等。
IPv4 和 IPv6 都支持组播,但机制和地址空间不同。组播地址只能作为目的地址,不能用于源地址。
IPv4组播地址
IPv4组播地址范围是 224.0.0.0/4
,即从 224.0.0.0
到 239.255.255.255
。其中:
224.0.0.0/24
保留为本地链路多播,不能被路由。例如224.0.0.1
表示本地子网上的所有主机,224.0.0.9
用于RIPv2。- 其他地址可用于Internet范围内的多播应用,但需要特定的配置支持。
IPv4组播使用 IGMP(Internet Group Management Protocol)进行组成员管理,主机通过 IGMP 加入或离开某个组。
IPv6组播地址
IPv6 取消了广播,因此组播是IPv6中唯一的“多目标”通信机制。IPv6组播地址以 FF00::/8
开头,后跟4位作用域字段和112位组ID。作用域(Scope)标识组播地址的作用范围,如:
FF01::1
节点本地所有进程FF02::1
链路本地所有节点FF05::2
站点本地所有路由器
IPv6 使用 MLD(Multicast Listener Discovery)协议代替 IGMP,用于组成员管理。每个IPv6节点必须监听特定的组播地址,例如所有节点都监听 FF02::1
。
任播地址
任播(Anycast)地址是一种特殊的单播地址,它可以被分配给多个接口,但数据包只会路由到“最近”的一个节点,根据路由协议定义的距离或开销来决定。它不像组播会复制数据,而是“单点选择传送”。
任播最常见的用途是在基础设施中部署服务副本,如DNS根服务器使用多个节点共享一个任播地址。这样,客户端可以自动选择延迟最低或路由最近的服务器。
相关文章:

《TCP/IP 详解 卷1:协议》第2章:Internet 地址结构
基本的IP地址结构 分类寻址 早期Internet采用分类地址(Classful Addressing),将IPv4地址划分为五类: A类和B类网络号通常浪费太多主机号,而C类网络号不能为很多站点提供足够的主机号。 子网寻址 子网(Su…...
Python学习(5) ----- Python的JSON处理
下面是关于 Python 中如何全面处理 JSON 的详细说明,包括模块介绍、数据类型映射、常用函数、文件操作、异常处理、进阶技巧等。 🧩 一、什么是 JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式&a…...

如何通过一次需求评审,让项目效率提升50%?
想象一下,你的团队启动了一个新项目,但需求模糊不清,开发到一半才发现方向错了,返工、加班、客户投诉接踵而至……听起来像噩梦?一次完美的需求评审就能避免这一切!它就像项目的“导航仪”,确保…...

再见Notepad++,你好Notepad--
Notepad-- 是一款国产开源的轻量级、跨平台文本编辑器,支持 Window、Linux、macOS 以及国产 UOS、麒麟等操作系统。 除了具有常用编辑器的功能之外,Notepad-- 还内置了专业级的代码对比功能,支持文件、文件夹、二进制文件的比对,支…...

element-plus bug整理
1.el-table嵌入el-image标签预览时,显示错乱 解决:添加preview-teleported属性 <el-table-column label"等级图标" align"center" prop"icon" min-width"80"><template #default"scope"&g…...

技术-工程-管用养修保-智能硬件-智能软件五维黄金序位模型
融智学工程技术体系:五维协同架构 基于邹晓辉教授的框架,工程技术体系重构为:技术-工程-管用养修保-智能硬件-智能软件五维黄金序位模型: math \mathbb{E}_{\text{技}} \underbrace{\prod_{\text{Dis}} \text{TechnoCore}}_{\…...

LangChain-自定义Tool和Agent结合DeepSeek应用实例
除了调用LangChain内置工具外,也可以自定义工具 实例1: 自定义多个工具 from langchain.agents import initialize_agent, AgentType from langchain_community.agent_toolkits.load_tools import load_tools from langchain_core.tools import tool, …...

用 3D 可视化颠覆你的 JSON 数据体验
大家好,这里是架构资源栈!点击上方关注,添加“星标”,一起学习大厂前沿架构! 复杂的 JSON 数据结构常常让人头疼:层层嵌套的对象、错综复杂的数组关系,用传统的树状视图或表格一览千头万绪&…...
联想小新笔记本电脑静电问题导致无法开机/充电的解决方案
一、问题背景 近期部分用户反馈联想小新系列笔记本电脑在特定环境下(如秋冬干燥季节)出现无法开机或充电的问题。经分析,此类现象多由静电积累触发主板保护机制导致,少数情况可能与电源适配器、电池老化或环境因素相关。本文将从技…...

MVCC(多版本并发控制)机制
1. MVCC(多版本并发控制)机制 MVCC 的核心就是 Undo Log Read View,“MV”就是通过 Undo Log 来保存数据的历史版本,实现多版本的管理,“CC”是通过 Read View 来实现管理,通过 Read View 原则来决定数据是…...

Mac M1 安装 ffmpeg
1.前言 官网那货没有准备m系列的静态包,然后我呢,不知道怎么想的就从maven项目中的 javacv-platform,且版本为1.5.11依赖里面将这个静态包把了出来,亲测能用,感觉比那些网上说的用什么wget编译安装、brew安装快多了。…...

Spring框架学习day3--Spring数据访问层管理(IOC)
开发步骤 Spring 是个一站式框架:Spring 自身也提供了web层的 SpringWeb 和 持 久层的 SpringJdbcTemplate。 开发步骤 1.导入jar包 pom.xml <!-- spring-jdbc--> <dependency><groupId>org.springframework</groupId><artifactId>…...
什么是集群(Cluster)?如何保证集群的高可用性?
一、什么是Elasticsearch集群(Cluster)? 集群是指由一个或多个节点(Node)组成的集合,这些节点共同存储数据、处理请求,并协调工作以提供统一的搜索服务。一个集群有唯一的集群名称(默认名为elasticsearch),节点通过名称加入对应的集群。集群的核心目标是: 扩展存储…...
React从基础入门到高级实战:React 核心技术 - 动画与过渡效果:提升 UI 交互体验
React 动画与过渡效果:提升 UI 交互体验 在现代 Web 开发中,动画和过渡效果不仅仅是视觉上的点缀,它们在提升用户体验、引导用户注意力以及增强交互性方面扮演着重要角色。作为一款广受欢迎的前端框架,React 提供了多种实现动画的…...

重读《人件》Peopleware -(13)Ⅱ 办公环境 Ⅵ 电话
当你开始收集有关工作时间质量的数据时,你的注意力自然会集中在主要的干扰源之一——打进来的电话。一天内接15个电话并不罕见。虽然这看似平常,但由于重新沉浸所需的时间,它可能会耗尽你几乎一整天的时间。当一天结束时,你会纳闷…...
Free2AI:企业智能化转型的加速器
随着数字化与智能化的深度交融,企业的竞争舞台已悄然转变为数据处理能力和智能服务水平的竞技场。Free2AI以其三大核心功能——智能数据采集、多格式文档解析、智能FAQ构建,为企业铺设了一条从数据洞察到智能服务的全链路升级之路,成为推动企…...

Python训练营打卡Day40
DAY 40 训练和测试的规范写法 知识点回顾: 1.彩色和灰度图片测试和训练的规范写法:封装在函数中 2.展平操作:除第一个维度batchsize外全部展平 3.dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout 作…...

制作一款打飞机游戏63:自动保存
1.编辑器的自动保存实现 目标:将自动保存功能扩展到所有编辑器,包括脑编辑器、模式编辑器、敌人编辑器和动画/精灵编辑器。实现方式: 代码复制:将关卡编辑器中的自动保存代码复制到其他编辑器中。标记数据变更&a…...
使用animation.css库快速实现CSS3旋转动画效果
CSS3旋转动画效果实现(使用Animate.css) 下面我将展示如何使用Animate.css库快速实现各种CSS3旋转动画效果,同时提供一个直观的演示界面。 思路分析 引入Animate.css库创建不同旋转动画的展示区域添加控制面板自定义动画效果实现实时预览功…...
基于NetWork的类FNAF游戏DEMO框架
脑洞大开 想做个fnaf1并加入自己的设计.. 开干!!!! #include <stdio.h> #include <iostream> #include <random> #include <ctime>bool leftdoor true, rightdoor true, camddoor true; float power 900,fanusepower 0;typedef struct movement…...
湖北理元理律师事务所:债务优化中的生活保障实践
在债务压力与生活质量失衡的普遍困境中,法律服务的价值不仅在于解决债务问题,更在于帮助债务人重建生活秩序。湖北理元理律师事务所通过其债务优化服务,探索出一条“法律生活”的双轨路径。 债务规划的核心矛盾:还款能力与生存需…...

golang连接sm3认证加密(app)
文章目录 环境文档用途详细信息 环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.5 文档用途 golang连接安全版sm3认证加密数据库,驱动程序详见附件。 详细信息 1.下载Linux golang安装包 go1.17.3.linux-amd64.tar.gz 1.1. 解压安…...

【Zephyr 系列 2】用 Zephyr 玩转 Arduino UNO / MEGA,实现串口通信与 CLI 命令交互
🎯 本篇目标 在 Ubuntu 下将 Zephyr 运行在 Arduino UNO / MEGA 上 打通串口通信,实现通过串口发送命令与反馈 使用 Zephyr Shell 模块,实现 CLI 命令处理 🪧 为什么 Arduino + Zephyr? 虽然 Arduino 开发板通常用于简单的 C/C++ 开发,但 Zephyr 的支持范围远超 STM32…...
AIS常见问题解答(AIS知识补充)
AIS常见问题解答 什么是 AIS? AIS 是“自动识别系统”的缩写。AIS 是一种基于甚高频 (VHF) 的导航和防撞工具,可以实现船舶之间的信息交换。这些信息(AIS 数据)还会被丹麦海事局运营的岸基 AIS 系统收集。因此,在提及 …...
基于Matlab实现指纹识别系统
【指纹识别系统基础概念】 指纹识别技术是一种生物特征识别技术,它利用人的指纹独一无二的特性进行个人身份的验证。指纹的细节特征,如脊、谷、分岔等,构成了指纹的唯一性,使得指纹识别在安全性、可靠性和便捷性上具有显著优势。…...

Windows10下搭建sftp服务器(附:详细搭建过程、CMD连接测试、连接失败问题分析解决等)
最终连接sftp效果 搭建sftp服务器 1、这里附上作者已找好的 freeSSHd安装包 ,使用它进行搭建sftp服务器。 2、打开freeSSHd安装包,进行安装 (1)、选择完全安装 (2)、安装完成后,对提示窗口选择关闭 (3)、安装完成后,提示是否安装私有密钥。我们选择"是" (4)、安…...
Vue3中Element-Plus中el-input及el-select 边框样式
如果不需要显示下边框,纯无边框直接将 【border-bottom: 1px solid #C0C4CC; 】注掉或去掉即可。 正常引用组件使用即可,无须自定义样式,最终效果CSS样式。 <style scoped> /* 输入框的样式 */ :deep(.el-input__wrapper) { box-sha…...
vue + ant-design + xlsx 实现Excel自定义模板导入功能
Vue Ant Design 扩展:实现Excel自定义模板导入功能 引言 在企业级应用场景中,除了数据导出,模板化导入是另一个核心需求。本文将深入讲解如何基于Vue3 Ant Design Vue xlsx技术栈,实现以下高级导入功能: 自定义模…...
SAP saml2 元数据 HTTP 错误
使⽤事务 SAML2 或 SAML2_IDP 在 ABAP 系统中配置 SAML 2.0 时, Web 页⾯返回 403 已禁⽌、 404 未找到 或 500 服务器内部错误。 在事务 SAML2 中下载元数据时, ⽹页返回 403 已禁⽌、 404 未找到或 500 服务器内部错误。 在事务 SAML2_IDP 中下载…...

知识课堂|sCMOS相机可编程快门模式解析
sCMOS相机凭借高灵敏度、高动态、低读出噪声特性,成为生命科学成像领域的核心设备。在光片荧光显微镜LSFM成像应用中,传统卷帘快门的时序限制可能引发运动伪影或光片照明不均匀问题。可编程快门模式通过精确控制传感器曝光时序,实现与激光扫描…...