IPv4地址的相关知识(编址方法、应用规划、NAT、私有公有地址、保留地址、发展历程等)


IP的介绍

网际协议——Internet protocol,简称IP,在TCP/IP体系中是属于第二层网络层,也称网际层,是TCP/IP模型的核心协议。

与IP协议有关的协议,例如 ICMP、IGMP(以七层模型为例由下往上,其在三层,该报文包含在IP数据报中的数据部分中);RARP(已淘汰)、ARP(七层模型为例由下往上,其在二层,该协议不依赖于IP)等。顺便我们再回顾一下,在TCP/IP模型中,从上至下分别是,应用层、传输层、网际层(网络层)、网络接口层。在ISO/OSI模型中,从上至下分别是,应用层、表达层、会话层、传输层、网络层、数据链路层、物理层。

目前主要使用的两个版本 :IPv4 、IPv6。

IPv4地址的相关知识

IPv4地址的概述

IPv4地址是给网络上的每一个主机(或路由器)的每一个接口分配的一个32比特的标识符。在网络中的通信IP地址是必不可少的,相当于“一张身份名片”、“电话号码”。

在定义之初IPv4地址本来是全球唯一的,但由于互联网时代发展过快,发现IPv4地址不够用,所有之后就有IPv4编址的优化,像私有、公有地址的定义以及NAT协议的应用等。到后来逐渐向IPv6地址的运用和推广,可能在几十年后IPv4以及被IPv6逐渐替代了,甚至可能被淘汰了。

在2011年2月3日,因特网号码分配管理局(InternetAssigned Numbers Authority,IANA)(由ICANN行使职能)宣布,IPv4地址已经分配完毕;且我国在2014至2015年也逐步停止了向新用户和应用分配IPv4地址,同时全面开展商用部署IPv6。

IP数据包、分组格式(概念性,可先跳过后续再理解)

格式说明

1. 版本(Version)

占4b,用于标识IP协议的版本(例如:IPv4的版本号为-4,IPv6为-6),确保接收方能够正确解析数据包格式。

2. 首部长度(Internet Header Length, IHL)

占4b,表示IP首部的长度(单位为 4B),20B是固定首部,即最小值为-5(20字节),最大值为-15(60字节)。

3. 区分服务(Differentiated Services, DS)

占8b,定义数据包的优先级和服务类型,用于QoS(服务质量)控制,早期用于优先级(Precedence),如网络控制、语音,服务类型(延迟、吞吐量、可靠性、成本)等;现代网络中,此字段更多用于区分服务代码点(DSCP,6位的DSCP值实现流量分类和服务质量(QoS)优先级控制)以及显式拥塞通知(ECN,占用DS字段的后2位,用于网络拥塞预警)。

4. 总长度(Total Length)

占16b,表示整个IP数据包的总长度(首部 + 数据部分),单位为字节,最大值为 65535 字节,但实际受数据链路层最大传输单元MTU限制(如以太网MTU为1500B)。

5. 标识(Identification)

占16b,唯一标识一个数据包。若数据包被分片,所有分片共享同一标识,接收方通过此字段重组分片后的数据包。

6. 标志(Flags)

占3b,控制分片行为;第1位:保留(必须为0);第2位(DF, Don't Fragment):0-允许分片,1-禁止分片(若需分片则丢弃包并返回ICMP错误);第3位(MF, More Fragments):0-最后一个分片,1-后续还有分片。

7. 片偏移(Fragment Offset)

占13b,指分片后的数据在原数据包中的偏移量以8B为单位,偏移值为100表示该分片起始于原数据包、分组的800B处。用于接收方按顺序重组数据包。

8. 生存时间(Time to Live, TTL)

占8b,防止数据包无限循环,每经过一个路由器,TTL值减1,当TTL=0时,数据包被丢弃,并发送ICMP超时消息。初始值通常由操作系统设置(如Windows默认128,Linux默认64)。

9. 协议(Protocol)

占8b,标识上层协议类型。常见:1-ICMP,6-TCP,17-UDP

10. 首部检验和(Header Checksum)

占16b,校验IP首部的完整性(不校验数据部分),仅校验首部完整性,若出错则丢弃数据报。

11. 源IP地址(Source Address)、目的IP地址(Destination Address)

占32b,作为发/收方的IPv4地址。

12. 选项(Options)

可变(0~40字节),现代网络中较少使用(IPv6已移除选项字段)。填充(Padding),确保首部长度是4字节的倍数(用0填充)。

抓包举例

由图所示,蓝色亮底部分为IP数据包首部部分,下面红色线条区域为数据部分,观察该IP数据包可以知道,比例说版本是4即IPv4,首部长度为20B,整个IP数据包长为92B,且上层协议类型标识为1即ICMP协议等相关信息 

IPv4地址的表示方法

由于IPv4地址由32比特的二进制数标识所构成,不方便阅读、记录以及输入等,因此优化了书写表达,即IPv4地址采用点分十进制表示方法。

举例:某个32比特IPv4

11000000000011111000000100000011

将这串二进制分为4组,即8位一组,再计算出每组的十进制数,然后再将每组10进制数用点隔开

8位无符号二进制转为十进制,各位置的系数×其权重的和

以第一组举例:11000000

1*2^7+1*2^6+0*2^5+0*2^4+0*2^3+0*2^2+0*2^1+0*2^0=128+64+0+0+0+0+0+0=192

其余三组同理可得,该IPv4的点分十进制数为:192.15.129.3

也可以以10进制为例推导:

例如:有3246=3×1000+2×100+4×10+6×1=3×10³+2×10²+4×10¹+6×10⁰

各位置的权重右往左即从低到高:10⁰ 、10¹、10² 、10³  ···,不就对应 个、十、百、千、····

而在二进制中各位置权重从低到高有,第一位、第二位、······、等n位,分别对应 2⁰ 、2¹、·······、2ⁿ⁻¹

练习_1(IPv4的表示形式转换,结果在文末

2-->10

11000000101010000000101000001100

结果在文末

10-->2

10.15.40.252

IPv4地址编址方法历程

IPv4地址的编址方法经历了三个历史阶段:

1、是基础 ; 2、是1的改进 ;3、是目前我们使用的无分类编址,消除分类编址和划分子网的概念

前两种已经被淘汰了。但我们还是要了解,以便我们的学习。

IPv4地址的分类编址方法

将IP地址分为了网络号主机号两个部分

网络号:也叫做网络地址,用于标识所在网络。主机号:也叫做主机地址,用于标识当前网络中的具体设备,例如主机或者路由器接口。

将整个IPv4地址分为了五类,总地址表示数量为2^³²,即从32位全0到32位全1:

类别

地址分类编址方法

地址数量的占比

A

0        8位作为网络号,且首位固定为0

24位作为主机号

1/2=2^³¹/2^³²

B

10     16位作为网络号,且首位固定为10

16位主机号

1/4

C

110   24位作为网络号,且首位固定为110

8位主机号

1/8

D

1110 多播地址

1/16

E

1111 保留地址

1/16

A类、B类和C类地址都是单播地址,只有单播地址可以分配给网络中的主机(或路由器)的各接口。

主机号为“全0”的地址是网络地址,“全1”是广播地址,不能分配给主机(或路由器)的各接口。

A类地址细节

前8位作为网络号使用,且第一位固定为0,后24位作为主机号使用,则有整个A类的地址范围:

00000000000000000000000000000000

对应点分十进制为

0.0.0.0

01111111111111111111111111111111

127.255.255.255

其他细节:

最小网络号为0,即前8位为全0,表示本网络,不能指派,只能作为源地址使用,表示“在本网络的本主机”;例如,0.0.0.0表示未分配地址的主机或者说默认路由使用。

最大网络号127,作为本地环回测试地址,也不能指派;最小的本地环回测试地址为127.0.0.1;最大的本地环回测试地址为127.255.255.254。

所以可指派的A类地址网络号为0000 0001~0111 1110,也就是1~126,总共126个;最小可指派的网络号为1,网络地址为1.0.0.0;最大可指派的网络号为126,网络地址为126.0.0.0;一个网络可分配主机数2^²⁴-2,去掉的两个地址是主机号为全0的网络地址以及全1的广播地址。

IPv4地址分类总览图表

类别

定义地址范围

保留地址

可指派网络范围

网络数量

一个网络最大可分配主机数

头部固定位

A

0.0.0.0-127.255.255.255

0.0.0.0/8

127.0.0.0/8

1-126

2^⁸⁻¹-2=126

2^²⁴-2

(0XXXXXXX)₂

B

128.0.0.0-191.255.255.255

128.0-191.255

2^¹⁶⁻²

2^¹⁶-2

(10XXXXXX)₂

C

192.0.0.0-223.255.255.255

192.0.0-223.255.255

2^²⁴⁻³

2^⁸-2

(110XXXXX)₂

类别

作用

定义地址范围

头部固定位

地址数量

D

多播地址

224.0.0.0-239.255.255.255

(1110XXXX)₂

2^²⁸

E

保留

240.0.0.0-255.255.255.255

(1111XXXX)₂

2^²⁸

练习_2(结果在文末

1、既可以作为源地址的又可以作为目的地址的有:

A:0.0.0.0 B:111.222.192.12 C:127.0.1.1 D:255.255.255.255

2、

IPv4地址

类别

是否可分配给主机使用

0.1.2.3

1.2.3.4

120.255.255.255

127.0.10.4

128.0.255.255

168.168.166.255

180.180.255.255

191.255.255.254

192.1.10.255

199.1.2.3

222.222.222.222

基于分类编址的划子网方法(定长子网掩码)

IPv4分类编址方法不够灵活、容易造成大量IPv4地址资源浪费

例如:

①、一企业主机数有500 ,则按照分类编址就只能申请一个B类网络,但是一个B类网络可容纳2^¹⁶-2=65534个主机,会导致大量的地址资源浪费,剩余大量地址只能由该单位的同一个网络使用,而其他单位的网络不能使用。

②、假设,该企业又想分部门划分网络,则按照分类编址就只能再申请其他新的网络地址了,从而导致要多开销、ip资源浪费等问题。

所以有了划子网编址方法,引入了子网掩码,从IPv4地址的主机号部分借用一些比特作为子网号来区分不同的子网,就可以利用原有网络中剩余的大量IPv4地址,而不用申请新的网络地址了。

子网掩码可以表明分类IPv4地址的主机号部分被借用了几个比特作为子网号;用左起多个连续的比特1为网络号和子网号;之后的多个连续的比特0为主机号。

举例:

已知某个网络的地址为 210.65.48.0 使用子网掩码255.255.255.128对其进行子网划分,IP地址与子网掩码做逻辑”与“运算即可得到其子网号、主机号位数,子网数等信息。即

网络号 /24b

主机号 8b

子网 /1b

主机号 /7b

       显然,一个子网可以容纳的最大主机数为:2^7-2=126,由于借用了一位主机号作为子网号,则子网号可取值为0或1。
当取0时,其对应的子网为210.65.48.0,子网掩码为255.255.255.128,可分配的地址范围为210.65.48.1-210.65.48.126;当取1时,其对应的子网为210.65.48.128,子网掩码为255.255.255.128,可分配的地址范围为210.65.48.129-210.65.48.254。

注意:早期标准中子网号全0全1也不可用,例如全0子网的网络地址与主网络地址相同(如192.168.0.0/26与192.168.0.0/24重叠),全1子网的广播地址与主网络广播地址冲突(如192.168.0.255可能属于主网络或子网),导致路由二义性。早期路由协议(如RIP-1)不支持携带子网掩码,需依赖IP地址类推断掩码,因此必须排除全0/全1子网,所以有些考试记得注意下可能是早期版本。现阶段技术全0和全1的子网都是可用的。

练习_3

        某主机的IP地址为180.80.77.55,子网掩码255.255.252.0,若该主机向其所在子网发送广播分组,则目的地址是()。

       解析:255.255.252.0 ----> 255=(11111111)₂ ; 252=255-3=(11111100)₂ ---->即连续的22个1,表明前22位为网络号+子网号,后10位是主机号,再通过IP地址与子网掩码的逻辑“与”运算可得到其网络地址,最后将主机号置为全1即可得到其广播地址。

广播地址:

网络号 /16b

子网号 /6b

主机 /10b

10110100

01010000

010011

11

11111111

180

80

79

255

IPv4地址的无分类编址方法(CIDR,不定长)

无分类域间路由选择(CIDR)概念

无分类域间路由选择(Classless Inter-Domain Routing, ClDR )

CIDR消除了传统A类、B类和C类地址以及划分子网的概念,CIDR可以更加有效地分配IPv4地址资源,并且可以在IPv6使用之前允许因特网的规模继续增长

两级结构:网络前缀+主机号;网络前缀不定长,由地址掩码确定

地址掩码与划分子网的子网掩码类似,由32比特构成。用左起多个连续的比特1对应IPv4地址中的网络前缀;之后的多个连续的比特0对应主机号。

假设给定的无分类编址的IPv4地址为144.15.67.5,配套给定的地址掩码为255.255.240.0,能得到什么信息呢?

10010000

00001111

01000011

00000101

11111111

11111111

11110000

00000000

可知--->网络前缀长:20b 主机号长:12b ;逻辑”与“得到网络地址为144.15.64.0等信息。

为了简便起见,而是在无分类编址的IPv4地址后面加上斜线"/"在斜线之后写上网络前缀长度。

使用斜线表示法,即可以写成:144.15.67.5/20, IP地址/地址掩码前缀长度

CIDR细节

实际上,CIDR是将网络前缀都相同的、连续的多个无分类IPv4地址,组成一个CIDR地址块,只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的以下全部细节:

地址块中的最小地址、地址块中的最大地址、地址块中的地址数量、地址块中聚合某类网络(A类、B类、C类)的数量,地址数量/该类网的地址数量=聚合该类网的数量

使用CIDR的一个好处是,可以根据客户的需要分配适当大小的CIDR地址块,因此可以更加有效地分配IPv4的地址空间。
使用CIDR的另一个好处是路由聚合(超网),是为了解决路由表的内容冗余问题,使用路由聚合能够缩小路由表的规模,减少路由表的内存。路由器查表转发分组时发现有多条路由条目匹配,则选择网络前缀最长的那条路由条目,前缀匹配,因为网络前缀越长,地址块越小,路由越具体。

练习_4(结果在文末

1、现将一个IP网络划分为3个子网,若其中一个子网是,192.168.10.128/26,其余子网不可能是:

A、192.16.10.192/26 B、192.16.10.0/25 C、192.16.64/26 D、192.16.10.224/27
所有结果为:
网络192.16.10.128/25下划分的:192.168.10.128/26、 192.16.10.192/27、 192.16.10.224/27
网络192.16.10.0/24下划分的: 192.16.10.0/25、 192.168.10.128/26、 192.16.10.192/26

2、有四个网络128.16.4.0/25 、 128.16.4.128/25 、128.16.7.0/24 、128.16.3.0/24可聚合为?

3、有一目的地址为192.168.1.47,则网络192.168.1.32/28,能够收到该地址的主机最多有几台?

4、假设有一企业有500台主机,请给出最少可以给他分配的CIDR地址快大小:

IPv4地址的应用规划

IPv4地址的应用规划是指将给定的IPv4地址块(或分类网络)划分成若干个更小的地址块(或子网),并将这些地址块(或子网)分配给互联网中的不同网络,进而可以给各网络中的主机和路由器的接口分配IPv4地址。

定长的子网掩码

所划分出的每一个子网都使用同一个子网掩码;每个子网所分配的IP地址数量相同,容易造成地址资源的浪费。

变长的子网掩码

所划分出的每一个子网可以使用不同的子网掩码;每个子网所分配的IP地址数量可以不同,尽可能减少对地址资源的浪费。

举例:定长

假设申请到的C类网络为218.75.230.0/24,使用定长的子网掩码给下图所示的小型互联网中的各设备分配IPv4地址

net1:6+2+1 =9 -----> 解析:6台+全0网络地址+全1广播地址+R1在net1的端口IP,即net1中总共需要的地址数量是9个。

net2:25+2+1=28

net3:10+2+1=13

net4:12+2+1=15

R1与R2之间: 2+2=4

则最大为 16<28 <32 即主机位为5即可,因此借了3位作为子网号 C类网络号共24位 ,子网掩码为:255.255.255.224

子网号分别为:000 001 010 011 100 101 110 111

因此所有子网地址为:任意选五个子网即可

218.75.230.0/27

218.75.230.32/27

218.75.230.64/27

218.75.230.96/27

218.75.230.128/27

218.75.230.160/27

218.75.230.192/27

218.75.230.224/27

举例:变长

同上诉案例,共需要9+28+13+15+4=69<128 即主机位7b;即可从网络218.75.230.0/25 再分为5个子网

按照从大到小分配

则有

net1:218.75.230.48/28

net2:218.75.230.0/27

net3:218.75.230.64/28

net4:218.75.230.32/28

R1与R2: 218.75.230.80/30

剩余218.75.230.84-255 未分配

专用地址(Private Address)

专用网所在机构可以自行分配的IP地址,这类IP地址仅在机构内部有效,不需要向因特网的管理机构申请。

类别

专用(私有)地址范围

CIDR地址块

A

10.0.0.0~10.255.255.255

10/8

10.0.0.0/8

B

172.16.0.0~172.31.255.255

172.16/12

172.16.0.0/12

C

192.168.0.0~192.168.255.255

192.168/16

192.168.0.0/16

地址转换

NAT

网络地址转换(Network Address Translation,NAT)技术于1994年被提出,用来缓解IPv4地址空间即将耗尽的问题。NAT能使大量使用内部专用地址的网络用户共享少量全球地址(公有地址)去访问因特网上的主机和资源。

这种方法需要在专用网络连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器称为NAT路由器,它至少要有一个有效的公有IP从而实现内部私有地址的主机能访问因特网通,都必须要在NAT路由器上将其内部专用地址转换成公有IP。尽管因特网采用了无分类编址方法来减缓IPv4地址空间耗尽的速度,但由于因特网用户数量的急剧增长特别是大量小型办公室和家庭网络接入因特网的需求不断增加,IPv4地址空间即将耗尽的危险仍然没有解除(实际上,因特网号码分配管理局IANN于2011年2月3日宣布,IPv4地址已经分配完毕)。

NAT转换表-例子:

内网

外网

IP_A

IP_R1

缺点:

如果NAT路由器拥有n(n比较小)个全球IP地址,那么专用网内最多可以同时有n台主机接入因特网。若专用网内的主机数量大于n,则需要轮流使用NAT路由器中的全球IP地址。

NAPT——网络地址端口转换(Network Address Port Translation)

由于目前绝大多数基于TCP/IP协议栈的网络应用,都使用运输层的传输控制协议TCP或用户数据报协议UDP,为了更加有效地利用NAT路由器中的全球IP地址,现在常将NAT转换和运输层端口号结合使用。这样就可以使内部专用网中的主机,共用NAT路由器上的1个全球IP地址,因而可以同时与因特网中的不同主机进行通信。

将NAT和运输层端口号结合使用,称为网络地址与端口号转换(NetworkAddressand Port Translation,NAPT)

NAT转换表-例子:

内网

外网

192.168.0.1:1234

110.110.1.10:45454

192.168.0.2:1234

110.110.1.10:45455

保留地址和特殊地址(常见)

1、0.0.0.0:

  • 表示无地址或未配置地址: 在网络协议中,0.0.0.0 用于表示“无地址”或“未配置地址”。例如,当一个设备尚未获得有效的IP地址时,可能会使用 0.0.0.0 来进行 DHCP 请求。
  • 路由表中的默认路由: 在路由表中,0.0.0.0 表示默认路由,用于匹配所有未明确指定的目的地地址。

2、0.x.y.z即0.0.0.0/8:

       是IPv4保留地址,主要用于协议初始化、默认路由标识和占位用途;仅用于特定协议逻辑或本地网络初始化。

3、127.0.0.0/8:

  • 本地回环地址(Loopback),用于本机网络通信测试
  • 本地环回测试地址;最小的本地环回测试地址为127.0.0.1;最大的本地环回测试地址为127.255.255.254

4、169.254.0.0/16:

      当通过DHCP获取地址不成功时所分配的临时地址。DHCP失效时自动分配,仅限本地链路通信。

5、224.0.0.0/4: 是保留的多播地址范围,专用于网络多播通信 。

6、240.0.0.0/4: 保留的地址范围,供未来使用或特殊协议使用。

7、广播地址

   a. 255.255.255.255

  • 作用:限制广播地址。
  • 功能:仅在本网络内广播,数据包不通过路由器转发(如DHCP发现阶段)。

  b. 网络位固定 + 主机位全1(如192.168.1.255)

  • 功能作用:向特定网络内所有设备发送广播。

8、 私有地址:仅局域网内部使用

  • A类:10.0.0.0/8
  • B类:172.16.0.0/12
  • C类:192.168.0.0/16

参考:

1、高军-深入浅出计算机网络

2、湖科大教书匠-深入浅出计算机网络


文中练习题目答案解析:

练习_1

2-->10

11000000101010000000101000001100

192.168.10.12

10-->2

10.15.40.252

00001010000011110011000011111100

10.15.40.252:   

以10为例子 10=8+2;即2^3+2^1=(00001010)₂

像252这种可以这样算,252=255-3; 255=(11111111)₂  与 3=(00000011)₂ 相减可得(11111100)₂

练习_2(分类编址题目)

1、B C

全0只能作为源地址,全1只能作为广播地址

2、

IPv4地址

类别

是否可分配给主机使用

0.1.2.3

A

不可,保留,本网络

1.2.3.4

A

120.255.255.255

A

不可,广播

127.0.10.4

A

不可,回环地址

128.0.255.255

B

不可,广播

168.168.166.255

B

180.180.255.255

B

不可,广播

191.255.255.254

B

192.1.10.255

C

不可,广播

199.1.2.3

C

可        

222.222.222.222

C

练习_4(CIDR题目)

1,  C、192.16.64/26 

所有结果为:

网络192.16.10.128/25下划分的:192.168.10.128/26、 192.16.10.192/27、 192.16.10.224/27

网络192.16.10.0/24下划分的: 192.16.10.0/25、 192.168.10.128/26、 192.16.10.192/26

子网划分结果可能如下所示:使用二分法

网络0

192.16.10.0/24

最后一组IP为,加粗为掩码部分:

(00000000)₂

网络0_1

192.16.10.0/25

00000000

网络0_1_1

192.16.10.0/26

00000000

192.16.10.0/27

00000000

192.16.10.32/27

00100000

网络0_1_2

192.16.10.64/26

01000000

192.16.10.64/27

01000000

192.16.10.96/27

01100000

网络_2

192.16.10.128/25

10000000

网络0_2_1

192.16.10.128/26

10000000

192.16.10.128/27

10000000

192.16.10.160/27

10100000

网络0_2_2

192.16.10.192/26

11000000

192.16.10.192/27

11000000

192.16.10.224/27

11100000

2、128.16.4.0/25 、 128.16.4.128/25 、128.16.7.0/24 、128.16.3.0/24

可聚合为:寻找共同最长的网络前缀

10000000

00010000

00000100

00000000

即共同前缀为:前21b

10000000

00010000

00000100

10000000

10000000

00010000

00000111

00000000

可聚合为:128.16.0.0/21

10000000

00010000

00000011

10000000

上表可知其格式为:10000000 00010000 00000XXX XXXXXXXX  ,即最长共同前缀为10000000 00010000 00000   ;后面补上0转为点分十进制表示,前缀长为21,所以可得超网为128.16.0.0/21

3、192.168.1.32/28

则有题目可知网络前缀长为28,即前三组外加第四组的前4b固定表示所在的网络;

主机号则为4b,即最后一组后四位为主机号,最多2⁴-2=14台主机;

分析地址192.168.1.47;最后一组47=32+8+4+2+1=(00101111)₂  可得,后四位为全1即为广播地址;

所以在网络192.168.1.32/28能够接收到目的地址192.168.1.47的最大主机数为14台。

4、由题可知 256<500<512=2⁹     所以主机号至少要9位才能满足500台主机,则网络前缀为32-9=23  ,即最小CIDR地址块为 : 地址/23  ,网络前缀为23的地址块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值