前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >嵌入式基础知识-IP地址与子网划分

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

作者头像
xxpcb
发布2023-10-07 11:31:36
3120
发布2023-10-07 11:31:36
举报

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

1 IP地址

1.1 IPv4与IPv6

对比信息

IPv4

IPv6

长度

32位

128位

地址表示形式

点分十进制

冒分十六进制

表示示例

192.168.5.100

2002: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报文中各字段含义:

字段

长度

含义

版本

4

IP协议版本号,固定为4

首部长度

4

IP报文头长度,以4字节(32 bits)为单位,即报文头实际长度 = (IHL × 4) 字节;该字段最小值为5

服务类型

8

指示网络中设备如何处理该报文,用于提供QoS (Quality of Service)

总长度

16

IPv4报文的中长度,包括报文头和数据

标识

16

每个报文有一个唯一的标识符

标志

3

占3位,但只有2位有意义;最低位记为MF(MoreFragment),第一位记为DF(Don’t Fragment)

片位移

13

该分片在原数据报文中的偏移量,以8字节为单位

生存时间

8

数据报文在网络中存在的最大跳数

协议

8

指示IP报文中数据部分承载的协议类型

首部校验

16

IPv4报文头的校验和

源地址

32

发送数据报文节点的IPv4地址

目的地址

32

接收数据报文节点的IPv4地址

可选字段

可变

较少使用,常用的选项有源路由选项、时间戳选项等

填充字段

可变

填充字段,全0

数据

可变

报文承载传输的数据

1.2.3 特殊含义的IP地址

一些特殊含义的IP地址:

特殊IP

含义

127网段

回播地址

网络号全0地址

当前子网中的主机

全1地址

本地子网的广播

主机号全1地址

特定子网的广播

10.0.0.0/8

10.0.0.1至10.255.255.254

172.16.0.0/12

172.16.0.1至172.31.255.254

192.168.0.0/16

192.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报文中各字段含义:

字段

长度

含义

版本

4

IP协议版本号,固定为6

流量类别

8

与IPv4中的ToS类似

流量签

20

标记一条流

净荷长度

16

IPv6基本报文头后的数据部分长度(包括扩展头的长度),以字节为单位

下一报头

8

指示基本报文头后的扩展报文头,如果没有扩展报文头,则指示数据部分所承载的协议

跳数限制

8

与IPv4的TTL相同

源IPv6地址

128

发送数据报文节点的IPv6地址

目标IPv6地址

128

128 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的的基础知识与区别,然后结束了子网划分的一些概念,并通过一些实际的例子进行讲解分析。

文章推荐

从IIC实测波形入手,搞懂IIC通信

i.MX6ULL嵌入式Linux开发1——uboot移植初探

STM32移植U8g2图形库——玩转OLED显示

JSON Schema基础入门

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-07 08:32,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农爱学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 IP地址
    • 1.1 IPv4与IPv6
      • 1.2 IPv4地址详解
        • 1.2.1 地址分类
        • 1.2.2 IPv4数据报
        • 1.2.3 特殊含义的IP地址
      • 1.3 IPv6地址详解
        • 1.3.1 IPv6其它表示形式
        • 1.3.2 IPv6数据报
    • 2 子网划分
      • 2.1 基础概念
        • 2.2 一些题目
        • 3 总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档