网络技术:IP 编址

IP 地址

IP 地址是分配给 IP 网络中每台机器的数字标识符,IP 地址用于描述设备在网络中的地址。它让一个网络中的主机能够和另一个网络中的主机通信,同时它并不在乎这些主机所属的 LAN 是什么类型的。

层次型 IP 编址

IPv4 地址长 32 位 (4 组 8 位二进制),这是一种结构化(层次型)地址。如果每个 IP 地址都是散乱分布且唯一的,则因特网上的所有路由器都需要存储所有主机和路由器接口的 IP 地址,这样会使得路由器的路由表异常庞大,难以查找,从而使转发分组面临巨大开销。因此将 IP 地址分为 2 个部分,分别是网络号主机号,网络号用于唯一地标识网络,主机号用于唯一地标识主机

IP 地址 :: =

根据网络号和主机号将 IP 地址划分为若干个固定类,主机号在它前面的网络号所指明的网络范围内必须是唯一的。你可以把 IP 地址和电话号码的区号进行一个类比,通过区号电话就知道要把信号转接到哪个区域,而电话号码就能具体的转接到对应的电话上。同理网络号用于表示主机所在的网络,这样路由器就知道大概往哪转发,而主机号就能具体地表示是这个网络中的哪台主机。

通过划分子网,在 IP 地址中又增加了一个“子网号”字段,使两级的 IP 地址变成为三级的 IP 地址。从主机号借用若干个位作为子网号,而主机号也就相应减少了若干个位。

IP地址 :: =

凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号,先找到连接在本单位网络上的路由器。然后此路由器在收到 IP 数据报后,再按目的网络号和子网号找到目的子网,最后就将 IP 数据报直接交付目的主机。

特殊用途的 IP 地址

保留地址

网络号 主机号 作为 IP 分组源地址 作为 IP 分组目的地址 用途
全 0 全 0 × 本网络内表示本主机,路由表内表示默认路由
全 0 host-id × 本网络范围内表示某个特定主机
全 1 全 1 × 本网络范围内表示广播地址
net-id 全 0 × × 网络地址,表示一个网络
net-id 全 1 × 直接广播地址,对特定网络的主机进行广播
127 非全 0/1 用于本地软件的环回测试

私有地址

私有 IP 地址是一段保留的 IP 地址,只使用在局域网中,无法在 Internet 上使用。

地址类型 保留的地址空间
A 类 10.0.0.0 ~ 10.255.255.255
B 类 172.16.0.0 ~ 172.31.255.255
C 类 192.168.0.0 ~ 192.168.255.255

IP 地址十进制转二进制

计算方式

IP 地址可以用点分十进制表示,也能使用二进制来表示,我们需要熟悉这 2 种表示法的转换方式。一种比较好算的转换方式是,由于 IPv4 是 4 组 8 位二进制,则 0 ~ 256 的二进制数可以认为是 128、64、32、16、8、4、2、1 这 8 个数的和差计算。这 8 个数字的二进制与十进制的转换如下:

十进制 二进制
128 10000000
64 01000000
32 00100000
16 00010000
8 00001000
4 00000100
2 00000010
1 00000001

样例一

将 192.168.10.15 转换为二进制,结果为 11000000.10101000.00001010.00001111。

128 64 32 16 8 4 2 1 二进制
1 1 0 0 0 0 0 0 11000000
1 0 1 0 1 0 0 0 10101000
0 0 0 0 1 0 1 0 00001010
0 0 0 0 1 1 1 1 00001111

其转换关系为:

192 = 10000000 + 01000000 = 11000000
168 = 10000000 + 00100000 + 00001000 = 10101000
 10 = 00001000 + 00000010 = 00001010
 15 = 00001000 + 00000100 + 00000010 + 00000001 = 00001111

样例二

将 11000110.11010011.00111001.11010001 转换为十进制,转换结果为 198.211.57.209。

128 64 32 16 8 4 2 1 十进制
1 1 0 0 0 1 1 0 198
1 1 0 1 0 0 1 1 211
0 0 1 1 1 0 0 1 57
1 1 0 1 0 0 0 1 209

其转换关系为:

128 + 64 + 4 + 2 = 198
128 + 64 + 16 + 2 + 1 = 211
32 + 16 + 8 + 1 = 57
128 + 64 + 16 + 1 = 209

IPv4 地址类型

广播地址

广播信息是发给广播域中所有主机的信息,它使用广播地址作为目标地址。广播地址表示网络中的所有节点,广播地址的主机号都为 1。例如对于网络 172.16.0.0/16,则它的广播地址就是 172.16.255.255。

单播地址

单播地址是特定的网络接口卡的地址,用于将分组发送给单个目标的主机。使用单播地址,可以将分组传输到特定的主机上。

组播地址

组播能让多个接收方接收消息,并且不会将消息传递给广播中的所有主机。组播地址用于将分组传输到不同网络中的众多设备,是一种一对多的地址。

CIDR 策略

现在在全球因特网中,地址分配策略采用的是无类别域间路由选择 (CIDR)策略。CIDR 消除了传统 A、B、C 类地址和子网划分的概念,将子网寻址的概念一般化了。网络前缀可以是任意长度,融合子网地址和子网掩码可以更为方便地进行子网划分。当子网寻址时,32 bit 的 IP 地址的形式是 a.b.c.d/x,其中 x 指示了地址第一部分的比特数,构成了网络前缀。

IP 地址 ::=

网络前缀用于指明主机或路由器所连接到的网络,网络前缀在互联网中必须是唯一的。主机号用于标志主机或路由器,主机号在其所在的网络中是唯一的。CIDR 策略使得路由器转发分组时,可以往网络前缀相同的 IP 地址的区域发送,也就是缩小了发送链路的选择范围。因此采用 CIDR 策略提高了 IPv4 地址空间的分配效率,同时也提高了路有效率。
使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成,在查找路由表时可能会得到不止一个匹配结果。应当从匹配结果中选择具有最长网络前缀的路由,也就是最长前缀匹配。网络前缀越长,其地址块就越小,因而路由就越具体。

IPv4 数据报

字段 说明
版本 4 bit,IPv4 字段的值是 4
首部长度 4 bit,说明首部有多少 32 位字
服务类型 6 bit,使不同类型的 IP 数据报能相互区分
显式拥塞通告 允许在不丢弃报文的同时通知对方网络拥塞的发生
数据报长度 16 位,定义了报文总长
标识、标志、片位移 和 IP 分片有关
存活时间 占 8 位,避免报文在互联网中永远存在。
上层协议 占 8 位,指示数据部分应该交付给哪个指定的运输层协议
首部检验和 占 16 位,检验和字段只对首部查错
源地址、目的地址 报文的发送端、报文的接收端
选项 附加其他信息
数据 有效载荷

IPv6

在 2011 年 2 月,IANA 向一个区域注册机构分配完了未分配的 IPv4 地址的最后剩余地址池。这些注册机构可用的 IPv4 地址一旦用完,IPv4 地址就会耗尽,因此IPv6 技术就被开始进行研发部署。

IPv6 数据报

字段 作用
版本(version) 占 4 位,表示协议版本
流量类型(traffic class) 占 8 位,与 IPv4 的服务类型类似,区分不同的数据报
流标签(flow label) 占 20 位,用来标识一段数据报的流,能够对一个流中的某些数据报给出优先权
有效载荷长度(payload length) 占 16 位,给出了 IPv6 数据报出基本首部以外的字节数
下一个首部(next header) 占 8 位,当 IPv6 数据报没有拓展首部时,指明数据应当交付给哪一个上层协议;当出现拓展首部时,标识后面第一个拓展首部的类型
跳数限制(hop limit) 占 8 位,该字段类似于 IPv4 中的 TTL,每次转发跳数减 1,该字段达到0 时包将会被丢弃
源地址、目的地址(Address) 各占 128 位,标识该报文的来源和目的地

对比 IPv4

IPv6 数据报相对于 IPv4 数据报有很多删减的地方,首先是 IPv6 数据报不允许在路由器上分片。这个操作只能在源和目的执行,如果中间遇到链路的 MTU 较小,路由器就直接丢包并向发送方发一个“分组太大”的 ICMP 报文。然后源就根据这个报文,把数据报分成更小的几个再重传。
首部校验和的问题,这个字段在 IPv6 中已经没了,因为在传输层、数据链路层协议中有很多协议都有具备错误检测的功能。而首部校验和因为有 TTL 等参数变化,计算的开销很大。因此把这个字段去除之后,也可以提升 IP 数据报转发的速度。
选项这个字段在 IPv6 中也没了,不过它的功能被归并到下一个首部字段中了。这种改动可以使得 IP 数据报的首部长度为定长,也就是 40 字节。

参考资料

《CCNA 学习指南(第 7 版)》,[美] Todd Lammle 著,袁国忠 徐宏 译,人民邮电出版社
《计算机网络(第七版)》 谢希仁 著,电子工业出版社
《计算机网络 自顶向下方法》 [美] James F.Kurose,Keith W.Ross 著,陈鸣 译,机械工业出版社

posted @ 2020-10-07 01:07  乌漆WhiteMoon  阅读(1209)  评论(0编辑  收藏  举报