1. 分类 IP 地址
IP 地址 ::= { <网络号> , <主机号>}
对于IPv4,IP地址长度为32位
IP地址按照层次结构划分成 5
类,每一类地址都由两个固定长度的字段(网络号net-id
和主机号 host-id
)组成
类别 | 网络号 | 主机号 | 地址个数 | 可容纳主机数 | 地址范围 |
---|---|---|---|---|---|
A | 8位(首位2进制数是0 ) | 24位 | 126个( 27–2 2 7 – 2 ,全0本网络,全1保留地址不分配) | 16,777,214 ( 224–2 2 24 – 2 ,全0网络地址,全1网络所有主机) | 0.0.0.0~126.255.255.255,(01111111)127.0.0.1为回路测试地址 |
B | 16位(前2位二进制数是10 ) | 16位 | 16384个( 214 2 14 ,不存在全0或全1地址) | 65534 ( 216–2 2 16 – 2 ,全0网络地址,全1网络所有主机) | 128.x.y.z~191.x.y.z |
C | 24位(前3位二进制数是110 ) | 8位 | 2,097,152个( 221 2 21 不存在全0或全1地址) | 254( 28 2 8 –2,全0网络地址,全1网络所有主机) | 192.x.y.z~223.x.y.z |
D | 0位 | 多播地址(前4位二进制数是1110 ) | |||
E | 0位 | 保留为今后使用(前4位二进制数是1111 ) |
特点:
- 分等级
- 方便管理:IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配
- 减小了路由表所占的存储空间:路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号)
- IP 地址是标志一个主机(或路由器)和一条链路的接口
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为
多归属主机
(multihomed host) - 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个
路由器至少应当有两个不同的 IP 地址
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为
- 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些
局域网都具有同样的网络号 net-id
- 所有分配到网络号 net-id 的网络,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是
平等
的
2. IP地址与硬件地址的区别
类别 | 长度 | 寻址协议层 | 是否可变 | 分配依据 | 作用 |
---|---|---|---|---|---|
IP地址 | 32位 | 网络层 | 可变 | 基于网络拓扑 | 给予逻辑域的划分,不受硬件限制 |
MAC地址 | 48位 | 数据链路层 | 不可变 | 基于制造商 | 在一定程度上与硬件一致,基于物理,能够标识具体的链路通信对象 |
3. IP数据包分片问题
一个 IP 数据报由首部
和数据
两部分组成。
- 固定首部长度:首部的前一部分是固定长度,共
20 字节
- IP首部的标志位(flag)有3位,最高位无意义,中间位为
DF
(Don’t Fragment) ,最低位为MF
(More Fragment),只有当 DF=0 D F = 0 时才允许分片, MF=1 M F = 1 表示后面“还有分片”。 MF=0 M F = 0 表示最后一个分片 - 片偏移(12 位)
指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以8 个字节
为偏移单位。(第一段分片的偏移地址为0) - 注意
每一个IP数据包都要带首部,故分片会使数据包数量增加,总传输量增多 - 例题:
- 一个3200位的TCP报文传到IP层,加上160位的首部后成为数据报.但接下来的局域网所能传送的最长数据帧中的数据部分只有1200位.问接下来的局域网向上层要传送多少比特的数据?
1200−160=1040,3200/1040>3,故至少分4片,3200+160∗4=3840bit 1200 − 160 = 1040 , 3200 / 1040 > 3 , 故 至 少 分 4 片 , 3200 + 160 ∗ 4 = 3840 b i t - 一个采用固定首部长度的数据报长度为4000字节,网络能传送的最大数据长度为1500字节,则?
1500−20=1480,(4000−20)/1480>2,故至少分3片,3980−1480∗2=1020,1480/8=185 1500 − 20 = 1480 , ( 4000 − 20 ) / 1480 > 2 , 故 至 少 分 3 片 , 3980 − 1480 ∗ 2 = 1020 , 1480 / 8 = 185
故需分3片,数据字段长度分别为1480,1480,1020字节,MF字段值分别为1,1,0,片偏移字段的值分别为0,185,370
- 一个3200位的TCP报文传到IP层,加上160位的首部后成为数据报.但接下来的局域网所能传送的最长数据帧中的数据部分只有1200位.问接下来的局域网向上层要传送多少比特的数据?
4. 划分子网(子网掩码)
划分子网
IP地址 ::= {<网络号>, <子网号>, <主机号>}
主机号-->子网号+主机号
:
子网不是把IP地址看成由单纯的一个网络号和一个主机号组成,而是把主机号进一步划分为一个子网号和一个主机号- 原因:
A类和B类IP地址为主机号分配了太多的空间,可分别容纳的主机数为224-2和216-2(全0和全1地址除外) - 作用:
两级的 IP 地址变成为三级
的 IP 地址 - 注意:
- 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络
- 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位
- 工作流程
- 找到目的网络(net-id):
凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号net-id
,先找到连接在本单位网络上的路由器 - 找到目的子网(net-id,subnet-id)
此路由器在收到 IP 数据报后,再按目的网络号net-id
和子网号subnet-id
找到目的子网 - 交付目的主机(host-id)
将 IP 数据报直接交付目的主机
- 找到目的网络(net-id):
子网掩码
- 作用:
分离网络号和主机号,识别不同的子网 - 格式:
32比特,网络号(包括子网号)部分全为“1”,主机号部分全为“0” - 注意:
- 借用主机地址时至少要留两位主机位
- 子网号为全“0”全“1”不能使用
- 路由器的路由表中的每一个项目除了目的网络地址外,还必须同时给出该网络的子网掩码,交换路由信息时要把子网掩码告诉相邻的路由器
- 例题:
- 子网掩码255.255.255.0代表的含义:
255.255.255.0是C类地址对应的子网掩码默认值.但也可以是A类或B类地址的掩码
主机号由最后8位决定,而路由寻找网络由前24位决定 - 子网掩码为255.255.255.248的网络能够连接的主机数:6
- A类网络的subnet-id为16个1,B类网络的subnet-id为8个1,则这两个网络的不同之处:
子网掩码相同,都是255.255.255.0,但子网数目不同(A类的为 216−2 2 16 − 2 ,B类的为 28−2 2 8 − 2 ),子网的主机数相同 - 已知B类地址的子网掩码是255.255.240.0,则子网的主机数为: 212−2=4094 2 12 − 2 = 4094
- A类的子网掩码为255.255.0.255,是否有效:有效但不推荐
- 16进制表示的IP地址 C2.2F.14.81转成点分十进制的形式为:194.4720.129,属C类
- C类网络使用子网掩码的实际意义:对于小网络还可进一步改进路由表
- 试找出可产生A类子网数目为2的子网掩码(采用连续掩码): 2+2=4<=22 2 + 2 = 4 <= 2 2 ,11000000为192,子网掩码为:255.192.0.0
- 子网掩码255.255.255.0代表的含义:
划分子网下路由器转发分组的算法
思路:直连(匹配直连网络子网掩码)>特定主机路由>路由(匹配路由表子域掩码)>默认路由>出错
- 从收到的分组的首部提取目的 IP 地址 D。
- 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网
络地址匹配。
- 若匹配:将分组直接交付。
- 否则:间接交付 执行 (3)。
- 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给
指明的下一跳路由器;否则,执行 (4)。 - 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)。
- 若路由表中有一个默认路由,则将分组传送给路由表中所指明
的默认路由器;否则,执行 (6)。 - 报告转发分组出错。
5. 构造超网(无分类域间路由选择CIDR)
IP地址 ::= {<网络前缀> , <主机号>}
- 特点:
- 消除了分类子网以及划分子网的概念,可以更加有效地分配IP地址空间
- 使用
网络前缀
来代替网络号和子网号 - 使用斜线记法:斜线“/”,然后写上网络前缀所占的位数(如 /16 / 16 )
- 使用
- 将网络前缀都相同的连续的IP地址组成
CIDR地址块
,一个CIDR地址块是由地址块的起始(即地址块中地址数值最小
的一个)和地址块中的地址数
来定义的
- 消除了分类子网以及划分子网的概念,可以更加有效地分配IP地址空间
- 路由聚合(构成超网)
- 定义:
用一个CIDR地址块来表示多个地址 - 例子:
前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。
这些 C 类地址合起来就构成了超网 - 注意:
计算CIDR包含的地址数和分类的网络数时不用-2 - 例题:
- 对如下的4个地址块进行最大可能的聚合
212.56.132.0/24,212.56.133.0/24,212.56.134.0/24,212.56.135.0/24
找出最长共同前缀是22位,则聚合的CIDR地址块是212.56.132.0/22 - 已知地址块中的一个地址是 140.120.84.24/20
则这个地址块中的最小地址是140.120.80.0/20,最大地址是140.120.95.255/20
地址掩码是255.255.240.0
共有 212=4096 2 12 = 4096 个地址,相当于 24=16 2 4 = 16 个C类地址
- 对如下的4个地址块进行最大可能的聚合
- 定义:
- 最长前缀匹配
查找路由表(路由表中的每个项目由 {网络前缀,下一跳地址} 组成)时可能会得到不止一个匹配结果
应当从匹配结果中选择具有最长网络前缀的路由
网络前缀越长,其地址块就越小,因而路由就越具体
6. 因特网的路由选择协议
- 分类:
- 内部网关协议IGP: RIP 和 OSPF
- 外部网关协议EGP:BGP
RIP(路由信息协议,RIP(Routing Information Protocol)
- 定位:
一种分布式的基于距离向量
的路由选择协议,是因特网的标准协议
- 距离(跳数)的含义:
直连距离为1,每经过一个路由器跳数加1,距离最大值为16,即最多经过15个路由器
- 距离(跳数)的含义:
- 优点:
实现简单,开销较小 - 缺点:
只适用于小型互联网
不能在两个网络之间同时使用多条路由
仅依靠路由数做判断,而忽视其他因素(如时延)
当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器 - 特点:
- 按
固定时间间隔
和相邻路由器
交换当前本路由器所知道的全部信息
- 按
- 距离向量算法:
路由器收到地址为X的相邻路由器的一个RIP报文(三个关键数据{到目的网络是N
,距离是D
,下一跳路由器是X
}
)后:
- 先修改此 RIP 报文中的所有项目:把
“下一跳”字段中的地址都改为 X
,并把所有的“距离”字段的值加 1
- 对修改后的 RIP 报文中的每一个项目,重复以下步骤
- 如目的网络不在路由表中,则
添加
通知的项目 - 否则,判断通知的项目的下一跳字段和路由表的项目的下一跳字段是否相同
- 是:
更新
:将路由表中的项目替换为通知的项目 - 否:判断通知的项目的跳数是否小于路由表的项目的跳数
- 是,小于:
替换
- 否:不做改变
- 是,小于:
- 是:
- 先修改此 RIP 报文中的所有项目:把
OSPF(内部网关协议 ,Open Shortest Path First)
- 定位:
分布式的链路状态协议
- 特点:
洪泛法
向本自治系统中所有路由器发送信息- 只传递
部分信息
发送的信息就是与本路由器相邻的所有路由器的链路状态
,但这只是路由器所知道的部分信息 - 只在链路状态发生
变化时才使用洪泛法发送消息
OSPF 直接用 IP 数据报传送
- 可实现多路径间的负载均衡
- 定时刷新链路状态
- 没有“坏消息传播得慢”的问题
BGP(外部网关协议 )
- 作用:
解决两个自治系统之间路由器交换寻址信息的问题 - 特点:
- 只能是力求寻找一条
能够到达目的网络
且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由
。 - 通过
BGP发言人
(通常是边界路由器)与其他自治系统中的 BGP 发言人要交换路由信息 - 在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表,而后只更新有变化的部分
- 只能是力求寻找一条