当前位置: 首页 > article >正文

IP地址查询的背后②:IP地址(IPv4)的构成、类型以及子网划分

自从各大平台将IP地址显示之后,相信广大网友对于IP地址相当不陌生了。而我们见到的IP地址往往只会显示在某市,更仔细的会看到有一段段字节所显示的字符串,而IP地址看似由很简单的1-255之间的数字所组成的四个部分,但其实质上则是二进制最后的体现形式。

其中每一个字节都代表着一个“八位字节”(其实就是8位的序列)。

IP地址存在 主机地址 网络地址 广播地址 不同种类

IP地址有很多种类,单个主机地址(eg: 192.168.57.25),就明确指向网络中的某一种特定主机。网络地址(eg: 192.168.0.0/16)则具有其特定的网络标识意义(感兴趣下次可以单独写,之前也有写过,可以翻之前的文章)。而广播地址(eg: 192.168.255.255)则会用于向特定的网络中的所有主机发送信息。
IP地址查询的背后②:IP地址(IPv4)的构成、类型以及子网划分
网络地址转换为二进制时需要进行特别处理

我们可以借助计算器八位字节对四个字段进行分别处理,进行网络地址和二进制之间的转换

Eg

192.168.57.2511000000.10101000.00111001.00011001;

192.168.0.0/1611000000.10101000.00000000.00000000;

192.168.255.25511000000.10101000.11111111.11111111。

而网络地址的最后若干位则全部为“0”,网络位数以“/X”表示给出

Eg

192.168.0.0/16:网络位数“16”,这意味着该IP地址前16位为网络标识,其余位为“0”。
【资料来源: https://www.ipdatacloud.com/?utm-source=LMN&utm-keyword=?2092】

而广播地址则是与网络位相同,区别为其余位为“1”而非0。
IP地址查询的背后②:IP地址(IPv4)的构成、类型以及子网划分
但某些情况则会使IP地址的表示变得复杂

有些IP地址会将网络IP地址表示为192.168.0.0网络掩码255.255.0.0。

其实这里的“网络掩码”就是所有网络位都设为1的网络地址。

当子网与八位字节边界(/8、/16、/24)不匹配时,广播地址的计算就会变得棘手。

根据子网划分。IP地址是每个信息包的地址,当数据包到达路由器时,路由器会将数据包主机地址自身网络的网络地址作比较。就是将IP 地址的初始位各网络的位进行匹配(最多匹配到网络地址末尾“/x”所给出的网络位数)。

Eg

某路由器拥有192.168.0.0/16网络,收到主机192.168.57.25的数据包。

该路由器还有其他网络,假设分别为192.160.0.0(/12)、192.168.0.0(/16)、192.168.0.0(/24)。

以二进制形式比较时,主机地址为11000000.10101000.00111001.00011001,网络1为11000000.1010(/12),网络2为11000000.10101000(/16),网络3为11000011.10101000.11100000(/24)。

路由器会将主机地址的前12位与网络1比较,前16位与网络2比较,前24位与网络3比较。

在此例中,前两个比较匹配,最终会依据最具体的网络,即网络2来路由数据包。
【资料来源: https://www.ipdatacloud.com/?utm-source=LMN&utm-keyword=?2092】
从十进制表示看,网络1为192.160.0.0(/12),网络2为192.168.0.0(/16),不容易看出来但二进制形式下可清晰看出网络2是网络1的子网。

这一系列关于IP地址的知识,能够对网络技术的学习或者进行相关互联网工作都是基础的知识点。
IP地址查询的背后②:IP地址(IPv4)的构成、类型以及子网划分


http://www.kler.cn/a/447266.html

相关文章:

  • go mod tidy 命令
  • 嵌入式C语言,函数指针参数的用法详解!!!
  • 【NLP 18、新词发现和TF·IDF】
  • Loki 微服务模式组件介绍
  • VS Code Copilot 与 Cursor 对比
  • flask before_request 请求拦截器返回无值则放行,有值则拦截
  • vscode的keil assistant 中搜索不到全局变量
  • RTOS之邮箱
  • JAVA学习-练习试用Java实现“使用Arrays.sort方法对整数数组进行排序”
  • SQL进阶技巧:如何计算商品需求与到货队列表进出计划?
  • 深度学习之超分辨率算法——SRGAN
  • 【ETCD】【源码阅读】深入分析 applierV3backend.Apply`方法源码
  • 设计模式之桥接模式:抽象与实现之间的分离艺术
  • C语言 排序
  • sqlite基础
  • 安卓native层抓trace
  • ASP.NET Core - 依赖注入 自动批量注入
  • gesp(三级)(8)洛谷:B3926:[GESP202312 三级] 单位转换
  • HarmonyOS(71) 自定义事件分发之TouchTestStrategy使用说明
  • 电脑提示ntdll.d缺失是什么原因?不处理的话会怎么样?ntdll.dll文件缺失快速解决方案来啦!
  • 数据云平台的可观测性
  • 【Leecode】Leecode刷题之路第87天之扰乱字符串
  • SKETCHPAD——允许语言模型生成中间草图,在几何、函数、图算法和游戏策略等所有数学任务中持续提高基础模型的性能
  • ip_output函数
  • 音视频学习(二十六):http-flv
  • Docker搭建kafka环境