第4章网络层
4.1 网络层提供的两种服务
- 虚电路Virtual Circuit,
- 电话公司,分组
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
网络层不提供服务质量承诺。
- 虚电路服务
- 数据报服务
4.2 网际协议IP
与IP配套的四个协议
- 地址解析协议
ARP
(Address Resolution Protocol
) - 逆地址解析协议
RARP
- 网际控制报文协议
ICMP(Internet Control Message Protocol)
- 网际组管理协议
IGMP(Internet Group Management Protocol)
网际层的 IP 协议及配套协议
4.2.1 虚拟互连网络
没有一种单一的网络能够适应所有用户的需求。
网络互相连接起来要使用一些中间设备
- 中间设备又称为中间系统或中继
(relay)
系统 - 物理层中继系统:转发器
(repeater)
- 数据链路层中继系统:网桥或桥接器
(bridge)
- 网络层中继系统:路由器
(router)
- 网桥和路由器的混合物:桥路器
(brouter)
- 网络层以上的中继系统:网关
(gateway)
,连接两个不兼容的系统,高层协议转换
由于历史原因,许多有关
TCP/IP
的文献曾经把网络层使用的路由器称为网关。
- 虚拟互联网络internet
- 互联起来的各种物理网络的异构性本来是客观存在的,但是利用
IP
协议”统一”
- 直接交付
- 间接交付
4.2.2 分类的IP地址
1.
IP
地址及其表示方法
IP 地址的编址方法
三个历史阶段:
1. 分类的
IP
地址—>19812. 子网的划分—>1985
3. 构建超网—>1993
- 分类 IP 地址
- 类别位
- 网络字段的最前面
1~3
位,其数值分别规定为0
,10
和110
D类地址前四位为
1110
,用于多播
点分十进制记法
2.
常见的三种类别的IP
地址
环回测试
IP地址的指派范围
网络类别 | 最大可指派的网络数 | 第一个网络号 | 最后一个网络号 | 每个网络中的主机数 | 原因 | 比例 |
---|---|---|---|---|---|---|
A | 27?2 | 1 | 126 | 224?2 | 本网络(网络号全为0)占一个,环回测试(127)占一个 | 50% |
B | 214?1 | 128.1 | 191.225 | 216?2 | 128.1.0.0 不指派,网络号不减2,但是主机号还是要减 |
25% |
C | 221?1 | 192.0.1 | 223.255.255 | 28?2 | 192.0.0.0 不指派,网络号不减2,但是主机号还是要减 |
12.5% |
一般不使用的特殊IP地址
IP地址 | 意思 |
---|---|
0.0.0.0 | 在本网络上的主机(参见DHCP协议) |
网络号全为0 | 在本网络的某个主机 |
225.255.255.255 | 只在本网络上进行广播(各路由器均不转发) |
主机号全为1 | 对该网络上的所有主机进行广播 |
127.x.x.x | 本地环回测试 |
物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址是逻辑地址是因为IP地址是用软件实现的)。
- 无编号网络/无名网络
unnumbered network/anonymous
,当两个路由器直接相连时,在连线两端的接口处,可以不分配网络地址。
4.2.3 IP地址与硬件地址
4.2.4 地址解析协议ARP
和逆地址解析协议RARP
- ARP
- 已知ip地址,找出mac地址
- RARP
- 已知mac地址,找ip地址,目前没用了,已经被包含在DHCP中了
- ARP高速缓存
- ARP cache
ARP请求分组是广播发送的,ARP响应分组是普通的单播。
应当注意的问题
ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
ARP使用的四种典型情况
- 发送方是主机,发送到本网络上的另一个主机
- 发送方是主机,发送到另一个网络上主机
- 发送方是路由器,发送到本网络上的另一个主机
- 发送方是路由器,发送到另一个网络上主机
4.2.5 IP数据报的格式
共20字节
数据格式常用4字节(32位)来描述
- 版本
- 【首部长度】4位,最大
1111=15
即60个字节,常见的首部长度是20字节 - 区分服务
- 总长度,首部和数据之和的长度,最大长度为216?1=65535字节,在
576B~1500B
之间 - 标识,并不是序号,相同标识字段的值使分片后的各数据报片能够正确的重装成为原来的数据报
- 标志
- 片偏移,以8字节为偏移单位
- TTL,跳数
- 协议,数据报内部的协议
- 首部检验和,只检验数据报的首部,不包括数据部分
- 源地址
- 目的地址
2.
IP数据报首部的可变部分
1~40
字节
4.2.6 IP层转发分组的流程
路由表 每行对应一个网络
- 每一条路由的主要信息
- (目的网络地址, 下一跳地址)
- 特定主机路由
- 为特定的目的主机指明一个路由,采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
- 默认路由
- 路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。这种转发方式在一个网络只有很少的对外连接时是很有用的。
分组转发算法
查路由表—>计算路由器MAC地址—>写入MAC帧首部
- 从数据报首部提取目的主机的IP地D,得到目的网络地址为N
- 直连N,直接交付,否则间接交付转3
- 有目的地址为D的特定主机路由,否则4
- 有到达网络N的路由,否则
- 有默认路由,否则6
- 报告转发分组出错
直接交付>特定主机路由>查表>默认路由>出错
4.3 划分子网和构造超网
4.3.1 划分子网
1.
从两级IP地址到三级IP地址
- 对外仍然表现为一个网络
- 三级IP地址
- 路由器收到IP数据报后,再按目的网络号和子网号找到目的子网
2.
子网掩码
- 子网掩码
- IP数据报的首部并不知道源主机或目的主机所连接的网络是否进行了子网的划分,这是因为32位的IP地址本身已经数据报的首部都没有包含任何有关子网划分的信息。使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。
(IP地址)AND(子网掩码)=网络地址
极力推荐子网掩码中选用连续的1
- 既然没有子网,为什么还要使用子网掩码?
- 为了更便于查找路由表
路由器在和相邻路由器交换路由信息时,必须把自己所在网络的子网掩码告知对方。
子网数要根据情况减2,除去全0和全1两种情况【子网号不能为全1或全0,但随着CIDR的广泛使用,现在全1和全0的子网号也可以使用了,但是一定要谨慎使用】
4.3.2 使用子网时分组的转发
- 路由表中必须包含以下三项内容
- 目的网络地址、子网掩码和下一跳地址
在划分子网的情况下路由器转发分组的算法
(1) 从收到的分组的首部提取目的 IP 地址 D。
(2) 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(4)。
(4) 对路由表中的每一行的子网掩码和 D 逐位相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错。
简化的路由转发算法
- 从收到的数据报首部提取目的IP地址D
- 直接交付,否则转3
- 特定路由,否则转4
- 对路由表中的每一行,用其中的子网掩码和D逐位相与,其结果为N。若N与该行的网络地址匹配,则把数据报传送给该行该行指明的下一跳路由器,否则5
1
. 网络前缀 - 默认路由,否则6
- 报告转发分组出错
4.3.3 无分类编址CIDR(构成超网)
- 变长子网掩码VLSM
Variable Length Subnet Mask
,在划分子网的网络中可同时使用几个不同的子网掩码
在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
- 无分类域间路由选择CIDR
sider
,网络前缀(简称前缀)
CIDR 最主要的特点
CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
IP 地址从三级编址(使用子网掩码)又回到了两级编址。
斜线记法
- CIDR地址块
- 网络前缀都相同的连续的IP地址块
- CIDR不使用子网
- CIDR并没有32位地址中指明若干位作为子网字段。单分配到一个CIDR地址块的组织,仍然可以在本组织内根据需要划分出一些子网,子网的网络前缀比整个组织的网络前缀要长一些
- 路由聚合
- route aggregation,一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。
网络前缀小于13后大于27的都较少使用
- 206.0.64.0/18
- 相当于64个C类网络
地址聚合
构成超网
前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。
这些 C 类地址合起来就构成了超网。
CIDR 地址块中的地址数一定是 2 的整数次幂。
网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
2.
最长前缀匹配
从匹配结果中选择具有最长网络前缀的路由
3.
使用二叉线索查找路由表
4.4 网际控制报文协议ICMP
4.4.1 ICMP报文的种类
ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
- ICMP差错报告报文
- 终点不可达
- 源点抑制
- 时间超过
- 参数问题
- 改变路由(重定向)
不应发送 ICMP 差错报告报文的几种情况
对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
对具有多播地址的数据报都不发送 ICMP 差错报告报文。
对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
- ICMP询问报文
- 请求和回送
- 时间错请求和回答
4.4.2 ICMP的应用举例
- ping
- 应用层直接使用网络层ICMP,没有使用TCP/UDP
- traceroute/tracert
- ICMP时间超过差错报文[router]/ICMP[host]终点不可达差错报文,封装的是UDP用户数据报
4.5 因特网的路由选择协议
4.5.1 有关路由选择协议的几个基本概念
1
. 理想的路由算法
- 静态路由选择策略
- 动态路由选择策略
2
. 分层次的路由选择协议
- 自治系统AS
- autonomous system,一个AS对其他AS表现出的是一个单一的和一致的路由选择策略
路由选择协议分类
- 内部网关协议IGP**Interior Gateway Protocol**:RIP/OSPF
- 外部网关协议EGP**External Gateway Protocol**:/EGP[缺点很多,不再使用]/BGP-4
- 域间路由选择
- 域内路由选择
这里要指出两点
因特网的早期 RFC 文档中未使用“路由器”而是使用“网关”这一名词。但是在新的 RFC 文档中又使用了“路由器”这一名词。应当把这两个属于当作同义词。
IGP 和 EGP 是协议类别的名称。但 RFC 在使用 EGP 这个名词时出现了一点混乱,因为最早的一个外部网关协议的协议名字正好也是 EGP。因此在遇到名词 EGP 时,应弄清它是指旧的协议 EGP 还是指外部网关协议 EGP 这个类别。
4.5.2 内部网关协议RIP
1
. 工作原理
- 路由信息协议RIP
Routing Information Protocol
,基于距离向量的路由选择协议- 距离向量
- 从它自己到一起每一个目的网络的距离
- 距离
- 也称为“跳数”(
hop count
),因为每经过一个路由器,跳数就加 1,只能包含15个路由器,直连网络的距离定义为0
RIP不能在两个网络之间同时使用多条路由,RIP选择一条具有最短路由器的路由,哪怕还存在另一条高速(低时延)但路由器较多的路由。
三个重要问题:
1. 和哪些路由器交换信息?
2. 交换什么信息?
3. 在什么时候交换信息?
RIP 协议的三个要点;
1. 仅和相邻路由器交换信息
2. 交换当前本路由器所知道的全部信息,即自己的路由表
3. 按固定的时间间隔交换信息,例如每隔30s
路由表的建立
路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。
以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
- 收敛
convergence
,自治系统中所有的结点都得到正确的路由选择信息的过程
路由表中信息
目的网络 | 距离 | 下一跳路由 |
---|---|---|
Net2 | 3 | R4 |
Net3 | 4 | R5 |
2
. 距离向量算法
对地址为X的相邻路由器发来的RIP报文,把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1
Bellman-Ford算法
地址为X的相邻路由器发来RIP报文
目的网络N不变
所有距离字段d自增1
下一跳路由修改为X
if(目的网络N不在路由表中)
添加该条路由
else if(目的网络N在路由表中)
{
// 查看下一跳路由器地址
if(下一跳路由为X)
把收到的项目替换原路由表的项目 //使用最新消息更新一切
else if(d < 路由表中信息) // 到目的网络N,但下一跳路由器不是X
更新
}
while()
{
标记相邻路由为不可达路由
距离置为16
}
RIP保证每个路由器到每个目的网络的路由都是最短的(跳数最少)
路由器之间交换信息
虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。
3
. RIP协议的报文格式
RIP协议使用UDP进行传送,端口520
当网络出现故障时,要经过较长的时间才能将此信息传送到所有的路由器
- RIP协议的特点
- 好消息传播得快,坏消息传播得慢
- 优点
- 实现简单,开销较小
4.5.3 内部网关协议OSPF
- 开放最短路径优先OSPF
Open Shortest Path First
最短路径算法SPF
分布式的链路状态协议
-
OSPF RIP 向本自治系统的所有路由器发送信息【洪泛法,水波】 向相邻的路由器发送信息 发送的信息是与所有相邻路由器的链路状态【代价】 到所有网络的距离和下一跳路由器 发生变化时才发送信息 定期交换信息 - 链路状态数据库
- link-state database,全网的拓扑结构图,全网一致【链路状态数据库的同步】
- OSPF特点
- 较快地更新,更新过程收敛更快
划分区域
划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。
- 区域area
- OSPF将自治系统再划分为若干更小的范围,每个区域路由器最好不超过200个【区域标识符】
OSPF使用层次结构的区域划分
区域标识符
: 主干区域0.0.0.0
,其他0.0.0.1
- 区域边界路由器area border router
- area border router,类似于发言人,所有与其他区域的交流信息都经过这里
- 主干路由器back router
- 主干区域内的路由器
- 自治系统边界路由器
- 其他AS
OSPF直接使用IP数据报传送,协议字段为89
2
. OSPF的五种分组
类型1,问候(Hello)分组。
类型2,数据库描述(Database Description)分组。
类型3,链路状态请求(Link State Request)分组。
类型4,链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。
类型5,链路状态确认(Link State Acknowledgment)分组。
OSPF 的其他特点
完全连接的fully adjaent
摘要信息
可靠的洪泛法
- 指定的路由器(designated router)
- 多点接入的局域网采用了指定的路由器的方法,使广播的信息量大大减少。指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。
4.5.4 外部网关协议BGP
BGP 使用的环境却不同
BGP只能是力求寻找一条能够到达目的网络且比较好的路由,而并非寻找一条最佳路由。
BGP采用了路径向量路由选择协议。
路径向量路由选择协议
距离向量协议
链路状态协议
- BGP发言人
- AS的BGP边界路由器
BGP 协议的特点
BGP协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。
每一个自治系统中BGP发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。
4.5.5 路由器的构成
4.6 IP多播
4.6.1 IP多播的基本概念
- IP多播
- 在因特网上进行多播
多播数据报的目的地址写入的是多播组的标识符,然后暑假让加入到这个多播组的主机的IP地址与多播组的标识符关联起来。
D类地址前四位为1110,用于多播
D类地址范围是224.0.0.0-239.255.255.255
多播数据报和一般的IP数据报的区别就是它使用D类地址作为目的地址【肯定不能作为源地址】,并且首部的协议字段值是2,表明使用IGMP协议。
4.6.2 在局域网上进行硬件多播
以太网硬件地址字段中的第1字节的最低位为1时即为多播地址。
P166页图4-47
4.6.3 网际组管理协议IGMP和多播路由选择协议
1
. IP多播需要两种协议
- IGMP协议
- 本地使用范围,IGMP是让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组。
多播转发必须动态地适应多播组成员的变化,网络拓扑并未发生变化
多播路由在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,还要考虑这个数据报从哪里来到哪里去。
多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络。
2
. 网际组管理协议IGMP
4.7 虚拟专用网VPN和网络地址转换NAT
4.7.1 虚拟专用网VPN
专用地址
1. 10.0.0.0~10.255.255.255
或记为10/8
24位块
2. 172.16.0.0~172.31.255.255
或记为172.16/12
20位块
3. 192.168.0.0~192.168.255.255
或记为192.168/16
16位块
- 虚拟专用网VPN
virtual private network
所有通过因特网传送的数据都必须加密
4.7.2 网络地址转换NAT
- 网络地址转换NAT
- Network Address Translation
- NAT路由器
- 连接到因特网的路由器上需要安装NAT软件
- 网络地址与端口转化NAPT
- Network Address and Port Translation