嵌入式基础知识-IP地址与子网划分

news2025/1/10 11:59:54

本篇介绍IP地址与子网划分的一些基础知识,在嵌入式开发,使用网络功能时,需要了解网络的一些基础知识。

1 IP地址

1.1 IPv4与IPv6

对比信息IPv4IPv6
长度32位128位
地址表示形式点分十进制冒分十六进制
表示示例192.168.5.1002002:0000:0000:0000:0000:0000:c0a8:0564

1.2 IPv4地址详解

IPv4地址分4段,每段8位,共32位二进制数组成。

1.2.1 地址分类

这32位又被分为网络号主机号两部分,根据网络号占用位数的不同,又可分为以下几类:

  • A类地址:网络号占8位
  • B类地址:网络号占16位
  • C类地址:网络号占24位

对于十进制与二进制的转换,可用利用如下对照表方便手动换算:

1.2.2 IPv4数据报

IPv4报文结构如下:

IPv4报文中各字段含义:

字段长度含义
版本4IP协议版本号,固定为4
首部长度4IP报文头长度,以4字节(32 bits)为单位,即报文头实际长度 = (IHL × 4) 字节;该字段最小值为5
服务类型8指示网络中设备如何处理该报文,用于提供QoS (Quality of Service)
总长度16IPv4报文的中长度,包括报文头和数据
标识16每个报文有一个唯一的标识符
标志3占3位,但只有2位有意义;最低位记为MF(MoreFragment),第一位记为DF(Don’t Fragment)
片位移13该分片在原数据报文中的偏移量,以8字节为单位
生存时间8数据报文在网络中存在的最大跳数
协议8指示IP报文中数据部分承载的协议类型
首部校验16IPv4报文头的校验和
源地址32发送数据报文节点的IPv4地址
目的地址32接收数据报文节点的IPv4地址
可选字段可变较少使用,常用的选项有源路由选项、时间戳选项等
填充字段可变填充字段,全0
数据可变报文承载传输的数据

1.2.3 特殊含义的IP地址

一些特殊含义的IP地址:

特殊IP含义
127网段回播地址
网络号全0地址当前子网中的主机
全1地址本地子网的广播
主机号全1地址特定子网的广播
10.0.0.0/810.0.0.1至10.255.255.254
172.16.0.0/12172.16.0.1至172.31.255.254
192.168.0.0/16192.168.0.1至192.168.255.254
169.254.0.0保留地址,用于DHCP失效(Win)
0.0.0.0保留地址,用于DHCP失效(Linux)

例如:当网络连接不可用时,为测试编写的网络程序,通常使用目的IP为127.0.0.0用于测试。

1.3 IPv6地址详解

IPv6地址分由冒号分为8段,每段是4个16进制数(即每段占16位),总计128位。

相比IPv4,地址空间增加了2^96倍。

1.3.1 IPv6其它表示形式

一个IPv6地址中间如果包含很长的一段0,可以把连续的一段0压缩为“::”,但为保证地址解析的唯一性,地址中”::”只能出现一次。

例如:2002:0000:0000:0000:0000:0000:c0a8:0564 可表示为:2002::c0a8:0564

此外,为了实现IPv4与IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:“X:X:X:X:X:X:d.d.d.d”:

  • 前96b采用冒分十六进制表示
  • 后32b地址则使用IPv4的点分十进制表示

1.3.2 IPv6数据报

IPv6报文的整体结构分为IPv6报头、扩展报头和上层协议数据三部分。

  • IPv6报头:必选,长度固定为40字节,包含该报文的基本信息
  • 扩展报头:可选,可能存在0个、1个或多个, IPv6通过扩展报头实现各种丰富的功能
  • 上层协议:是IPv6报文携带的上层数据,可能是ICMPv6报文、TCP报文、UDP报文或其他可能报文

IPv6报文中各字段含义:

字段长度含义
版本4IP协议版本号,固定为6
流量类别8与IPv4中的ToS类似
流量签20标记一条流
净荷长度16IPv6基本报文头后的数据部分长度(包括扩展头的长度),以字节为单位
下一报头8指示基本报文头后的扩展报文头,如果没有扩展报文头,则指示数据部分所承载的协议
跳数限制8与IPv4的TTL相同
源IPv6地址128发送数据报文节点的IPv6地址
目标IPv6地址128128 bits,接收数据报文节点的IPv6地址
扩展报头可变可变长度,包含下一报头字段、扩展报头长度字段和扩展报头的内容
数据可变报文承载传输的数据

2 子网划分

2.1 基础概念

对于A、B、C类地址,将主机号拿出几位作为子网号,可进一步实现更小的网络划分,从而实现更加合理的网络IP分配。

经过子网划分后的IP地址组成位:网络号+子网号+主机号。

子网掩码:网络号和主机号都为1,主机号都为0,这样的地址为子网掩码

子网掩码可使用CIDR(Classless Inter-Domain Routing)法进行表示

对于子网掩码的计算,可看下面这张图:

2.2 一些题目

题目一:把网络117.15.32.0/23划分为117.15.32.0/27,求得到的子网个数以及每个子网中可用地址的个数。

分析:网络号从23变为了27,即拿出了4位作为子网号,可划分2^4=16个子网;

主机号还剩32-27=5位,子网中的可用地址为2^5-2=30个地址。

题目二:对于IP:192.168.50.10,子网掩码:255.255.192.0,求其网络号和主机号。

分析:根据子网掩码的特点(相同部分为1,不同部分为0),可以只分析第3段,如下图:

由上图分析可知,网络号为192.168.0.0,主机部分就是50.10。

题目三:某用户得到的网络地址范围为110.15.0.0至110.15.7.0,求其CIDR表示法,以及可分配的主机数。

分析:可画图分析,可知CIDR表示法为110.15.0.0/21,主机位剩余11位,可分配的主机数为2^11-2=2046个。

3 总结

本篇介绍IP地址与子网划分的基础知识,先介绍了IPv4与IPv6的的基础知识与区别,然后结束了子网划分的一些概念,并通过一些实际的例子进行讲解分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1068211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

this关键字在不同上下文中的值是如何确定的?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

最全解决docker配置kibana报错 Kibana server is not ready yet

问题复现: 在浏览器输入http://192.168.101.65:5601/ 访问kibana报错 Kibana server is not ready yet 问题报错: 首先查看kibana的日志 docker logs kibana 看到报错如下: {"type":"log","timestamp":&q…

【小笔记】复杂模型小数据可能会造成过拟合还是欠拟合?

【学而不思则罔,思而不学则殆】 10.8 问题 针对这个问题,我先问了一下文心一言 它回答了为什么会过拟合和欠拟合,但并没有回答我给的场景。 简单分析 分析模型 复杂模型就表示模型的拟合能力很强,对于数据中特征&#xff08…

如何保证 RabbitMQ 的消息可靠性?

项目开发中经常会使用消息队列来完成异步处理、应用解耦、流量控制等功能。虽然消息队列的出现解决了一些场景下的问题,但是同时也引出了一些问题,其中使用消息队列时如何保证消息的可靠性就是一个常见的问题。如果在项目中遇到需要保证消息一定被消费的…

Mybatis 拦截器(Mybatis插件原理)

Mybatis为我们提供了拦截器机制用于插件的开发,使用拦截器可以无侵入的开发Mybatis插件,Mybatis允许我们在SQL执行的过程中进行拦截,提供了以下可供拦截的接口: Executor:执行器ParameterHandler:参数处理…

深入解析PostgreSQL:命令和语法详解及使用指南

文章目录 摘要引言基本操作安装与配置连接和退出 数据库操作创建数据库删除数据库切换数据库 表操作创建表删除表插入数据查询数据更新数据删除数据 索引和约束创建索引创建约束 用户管理创建用户授权用户修改用户密码 备份和恢复备份数据库恢复数据库 高级特性结语参考文献 摘…

在win10里顺利安装了apache2.4.41和php7.4.29以及mysql8.0.33

一、安装apache和php 最近在学习网站搭建。其中有一项内容是在windows操作系统里搭建apachephp环境。几天前根据一本书的上的说明尝试了一下,在win10操作系统里安装这两个软件:apache2.4.41和php7.4.29,安装以后apche能正常启动,…

【转载】LLM-Native 产品的变与不变

1. LLM-Native:AGI 的另一种路径 《银河系漫游指南》的作者——道格拉斯亚当斯曾经对「技术」一词做出这样一种解释: 「技术」是描述某种尚未发挥作用的东西的词汇。 这是一个充满实用主义的定义,这句话可以被更直观地表述为:当…

机器学习7:pytorch的逻辑回归

一、说明 逻辑回归模型是处理分类问题的最常见机器学习模型之一。二项式逻辑回归只是逻辑回归模型的一种类型。它指的是两个变量的分类,其中概率用于确定二元结果,因此“二项式”中的“bi”。结果为真或假 — 0 或 1。 二项式逻辑回归的一个例子是预测人…

安卓玩机----解锁system分区 可读写系统分区 magisk面具模块

玩机教程----安卓机型解锁system分区 任意修改删除系统文件 system分区可读写 参考上个博文可以了解到解锁system分区的有关常识。但目前很多机型都在安卓12 13 基础上。其实最简单的方法就在于刷写一个解锁system分区的第三方补丁包。在面具更新不能解锁系统分区的前提下。…

8.2 JUC - 5.CountdownLatch

目录 一、是什么?二、demo演示三、应用之同步等待多线程准备完毕四、 应用之同步等待多个远程调用结束五、CountDownLatch 原理 一、是什么? CountdownLatch 用来进行线程同步协作,等待所有线程完成倒计时。 其中构造参数用来初始化等待计数…

C#,数值计算——数据建模Fitab的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Fitting Data to a Straight Line /// </summary> public class Fitab { private int ndata { get; set; } private double a { get; set; } …

RabbitMQ之Fanout(扇形) Exchange解读

目录 基本介绍 适用场景 springboot代码演示 演示架构 工程概述 RabbitConfig配置类&#xff1a;创建队列及交换机并进行绑定 MessageService业务类&#xff1a;发送消息及接收消息 主启动类RabbitMq01Application&#xff1a;实现ApplicationRunner接口 基本介绍 Fa…

跨域请求方案整理实践

项目场景&#xff1a; 调用接口进行手机验证提示,项目需要调用其它域名的接口,导致前端提示跨域问题 问题描述 前端调用其他域名接口时报错提示: index.html#/StatisticalAnalysisOfVacancy:1 Access to XMLHttpRequest at http://xxxxx/CustomerService/template/examineMes…

openGauss学习笔记-92 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用MOT SQL覆盖和限制

文章目录 openGauss学习笔记-92 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用MOT SQL覆盖和限制92.1 不支持的特性92.2 MOT限制92.3 不支持的DDL操作92.4 不支持的数据类型92.5 不支持的索引DDL和索引92.6 不支持的DML92.7 不支持的JIT功能&#xff08;…

ThingsBoard如何自定义tcp-transport

1、概述 很久没有更新了,一直忙于其他的事情,最近去搞了一个在ThingsBoard中自定义一个tcp-transport,用于连接使用tcp长连接的设备,目前使用tcp和mqtt协议连接服务端的设备还是很多,ThingsBoard的PE版提供了Integration是可以实现tcp的接入,但是CE版是没有提供接入tcp长…

前端性能优化之防抖节流

前端性能优化之防抖&节流 1.什么是防抖和节流2.代码实现2.1 实现防抖2.2 实现节流 3.应用场景3.1 防抖的应用3.2 节流的应用 1.什么是防抖和节流 防抖和节流是前端开发中常用的两种性能优化技术。 为什么需要防抖和节流呢&#xff1f; 两者目的都是为了防止某个时间段内…

配置文件生成器-秒杀SSM的xml整合

配置文件生成器-秒杀SSM的xml整合 思路&#xff1a; 通过简单的配置&#xff0c;直接生成对应配置文件。 maven坐标 <dependencies><!-- 配置文件生成 --><dependency><groupId>org.freemarker</groupId><artifactId>freemarker<…

MyBatis中的ResultMap有什么作用

MyBatis是一款广泛使用的Java持久层框架&#xff0c;它简化了数据库访问和数据映射的工作。在MyBatis中&#xff0c;ResultMap是一个强大的工具&#xff0c;用于将数据库查询结果映射到Java对象上。本文将深入探讨MyBatis中的ResultMap&#xff0c;解释它的作用以及如何使用它来…