# 网络层的重要协议
# 虚电路服务
# 网络层提供的服务
# 数据包在互联网中的传送
# 数据包如何路由
# 介绍计算机 A 和计算机 B 的通信过程
- 交换机基于数据帧的 MAC 地址转发数据帧,路由器基于数据包的 IP 地址转发数据包
- 数据包在传输过程不变,过网络设备数据帧要用新的物理层地址重新封装
- MAC 地址决定了数据帧下一跳哪个设备接收,而 IP 地址决定了数据包的起点和终点
# 网络协议 IP
# 常见网络协议
- 网络协议 IP 是 TCP/IP 体系中两个最重要的协议之一,与 IP 协议配套使用的还有四个协议
- 地址解析协议 ARP (Address Resolution Protocol)
- 逆地址解析协议 RARP (Reverse Address Resolution Protocol)
- 网络控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)
# 网际层的 IP 协议及配套协议
# 虚拟互联网络
# 互联在一起的网络要进行通信,会遇许多问题需要解决
- 不同的寻址方案
- 不同的最大分组长度
- 不同的网络接入机制
- 不同的超时控制
- 不同的差错恢复方法
- 不同的状态报告方法
- 不同的路由器选择技术
- 不同的用户接入控制
- 不同的服务(面向连接和无连接服务)
- 不同的管理与控制方式
# 网络互相连接起来 要使用一些中间设备
中间设备又称为中间系统或中继(relay)系统,物理层中继系统:转发器(repeator)
# 网络互联使用路由器
- 当中继系统是转发器或网桥,一般并不称之为网络互连,因为这仅仅是把一个网络扩大,而这仍然是一个网络
- 网关由于复杂,目前使用的较少
# 互联网络和虚拟互联网络
# 虚拟互联网络的意义
- 所谓虚拟互联网就是逻辑互联网络,它的意思就是互联起来的各种物理网络的异构性本来就是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络
- 使用 IP 协议的虚拟互联网络可简称为 IP 网
- 使用虚拟网络的好处是:互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节
# 分类的 IP
# IP 地址及其表示方法
- 我们把整个因特网堪称一个单一的,抽象的网络,IP 地址就是给每个连接的因特网上的主机(路由器)分配一个在全世界范围是唯一的 32 位标识符
- IP 地址现在由因特网名字与号码指派公司 ICNN(Internet Corporation for Assigned Names and Number)进行分配
# IP 地址编址方法
# 分类的 IP 地址
这是最基本的编址方法,在 1981 年就通过了相应的标准协议
# 子网的划分
这是对最基本的编址方法的改进,其标准【RFC 950】在 1985 年通过
# 构造超网
这是比较新的无分类的编址方法,1993 年提出后很快就得到了推广应用
# 分类的 IP
- 每一个地址都是由两个固定长度的字段组成,其中一个字段是网络号 net-id ,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id ,它标志该主机(或路由器)
- 两级 IP 地址可以记为:
# IP 地址中的网络号字段和主机号字段
# 字段分类
# A 类地址的网络字段和主机号字段
# B 类号字段的网络字段和主机号字段
# C 类字段的网络字段和主机号字段
# D 类字段
# E 类字段
# 点分十进制记法
# 常用的三种类型的 IP 地址
网络列别 | 最大网络数 | 第一个可用的网络号 | 最后一个可用的网络号 | 每个网络中最大的主机数字 |
---|---|---|---|---|
A | 126(2 的 7 次方 - 2) | 1 | 126 | 16,777,214 |
B | 16,383(2 的 14 次方 - 1) | 128.1 | 191.255 | 65,534 |
C | 2,097,151(2 的 21 次方 - 1) | 192.0.1 | 223.255.255 | 254 |
# IP 地址的一些重要特点
# IP 是一种分等级的地址结构,分两个等级的好处
- 第一,IP 地址管理机构在分配 IP 地址时,只能分配网络号,而剩下的主机号则由得到该网络号的单位自行分配,这样就方便了 IP 地址的管
- 第二,路由器仅根据目的主机所连接的网络号来转发分组(而不是考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间
# 实际上 IP 地址就是标志了一个主机(或路由器)和一条链路的接口
- 当一个主机同时连接到两个网络上时,该主机就必须同时具备两个相应的 IP 地址,为网络号 net - id 必须是不同的,这种主机称为多归属主机(multihomed host)
- 由于一个路由器至少连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少有两个不同的 IP 地址
# 用转发器或网桥连接起来的若干各局域网仍为一个网络,因此这些局域网都具有同样的网络号 net - id
# 所有分配到网络号 net - id 的网路,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的
# ARP & RAPP
# ARP 与 RAPP 图解
# ARP 简介
- 不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址
- 每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表
- 当主机 A 项本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的地址,如有,就可查看出其对应的硬件地址,在将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件的地址
# 发送过程图解
# ARP 高速缓存的作用
- 为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组
- 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 告诉缓存中,这时主机 B 以后向主机 A 发送数据报就更方便了
# 注意的问题
- ARP 是解决同一个局域网上的主机或者路由器的 IP 地址和硬件地址的映射问题
- 如果所要找到的主机和源主机不再用一个局域网上,那么需要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做
- 从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的
- 只要主机或路由器要和网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动将该 IP 地址解析为链路层所需要的硬件地址
# 使用 ARP 的四种典型情况
- 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机,这时用 ARP 找到目的的主机的硬件地址
- 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机,这时用 ARP 找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器来完成
- 发送方是路由器,要把 IP 数据报抓好你发给本网络上的一个主机,这时用 ARP 找到目的主机的硬件地址
- 发送方是路由器,要把 IP 数据报转发到另一个网路上的一个主机,这时用 ARP 找到本网路上的一个路由器硬件地址,剩下的工作由这个路由器来完成
# 逆地址解析协议 RARP
逆地址解析协议 RARP 使只知道自己硬件地址的主机能够指导其 IP 地址
# IP 数据包格式
# IP 数据包
一个 IP 数据包由首部和数据两部分组成
- 首部的前一部分是固定长度,20 字节,是所有 IP 数据报必须具有的
- 在首部的固定部分的后面是一些可选字段,其长度是可变的
# IP 数据包图解
# IP 数据报首部的固定部分中各字段
标志(flag)占 3 位,目前只有前两位有意义,标志字段的最低位是 MF(More Fragment)MF = 1 标识后面还有分片,MF= 0 标识最后一个分片,标志字段中间的一位是 DF(Don‘t Fragment),只有当 DF= 0 时才允许分片
# 以太网 V2 的 MAC 帧格式
# IP 数据报分片举例
# IP 数据报首部的固定部分中各字段的 IP
# 首部校验和
- 首部检验和(16 位)字段只检验数据报的首部,补检验数据部分
- 这里不采用 CRC 检验码而采用简单的计算方法
# 校验过程
# IP 数据报
源地址和目的地址都各占 4 字节
# IP 数据报首部的可变部分
- IP 首部的可变部分是一个选项字段,用来支持排错,测量以及安全等措施,内容很丰富
- 选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目
- 增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度称为可变的,这是增加了每一个路由器处理数据报的开销
- 实际上这些选项很少被使用
# 三级的 IP 地址
- 从 1985 年起在 IP 地址中又增加了一个 "子网号字段",使两级的 IP 地址编程为三级的 IP 地址
- 这种做法叫做划分子网(subnetting),划分子网也称为因特网的正式标准协议
# 划分子网的基本思路
- 划分子网纯属一个单位内部的事情,单位对外仍然表现位没有划分子网的网络
- 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应的减少了若干个位
- IP 地址 ::={<网络号>,< 子网号 >,< 主机号 >}
- 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位上的路由器
- 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的的子网
- 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接再本单位网络上的路由器
- 然后此路由器再收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网
- 最后将 IP 数据报直接交付目的主机
# 一个未划分子网的 B 类网络 145.13.0.0
# 划分为三个子网后对外仍是一个网络
# 划分子网后变成了三级结构
- 当没有划分子网时,IP 地址是两级结构
- 划分子网后 IP 地址就变成了三级结构
- 划分子网这是吧 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id
# 子网掩码
# 子网掩码介绍
- 从一个数据报的首部并无法判断源主机目的主机所连接的网络是否进行了子网划分
- 使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分
# IP 地址的各字段和子网掩码
# (IP 地址)AND(子网掩码)= 网络地址
# 默认子网掩码
# 子网掩码是一个重要属性
- 子网掩码是一个网络或一个子网的重要属性
- 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器
- 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码
- 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码
# 例子
# ICMP 简介
- 为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP(Internet Control Message Protocol)
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告
- ICMP 不是高层协议,而是 IP 层协议
- ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去
# ping 命令诊断网络故障
- PING,因特网包探索器,用于测试网络连接量的程序,Ping 发送了一个 ICMP 回声请求消息给目的地并报告是否收到所希望的 ICMP 回声应答
- ping 指的是端对端连通,通常用来作为可用性的检查,但是某些病毒木马会强行大量执行 ping 命令抢占网络资源,导致系统变慢,网速很慢,严禁 ping 入侵作为大多防火墙的一个基本功能提供给用户进行选择
- 如果你打开 IE 浏览器访问网站失败,你可以通过 ping 命令测试到 Internet 的网络连通,可以为你排除网络故障提供线索,下面展示 ping 命令返回的信息以及分析其原因
- 使用 ping 能够判断网络通还是不通,比如请求超时,你就不能判断什么位置出现的网络故障造成的请求超时,使用 pathping 命令能够追踪数据包的路径,能够查出故障点,并且能够计算路由器转发丢包率和链路丢包率以及延迟,据此能够判断出网络拥塞情况
# 路由
# 路由概述
# 路由将一个接口接收到的数据包,转发到另一个接口的过程
# 路由器完成两个主要功能
# 选径
选择目标地址和路由表内容,进行路径选择
# 转发
根据选择的路径,将接收到的数据包,转发到另一个接口(纯接口)
# 常见的网络设备 - Rourter
- Router 是一种非常重要的网络设备
- Router 最少实现到了网络层的功能
- Router 能够识别数据包内的 IP 地址信息,选择一条到达不同网段的最佳路径,转发数据包
- Router 主要用于连接不同类型的网络
# 路由信息
路由信息源,可到达路径,最佳路径
# 路由算法
- 路径长度
- 可靠性
- 延迟
- 带宽
- 负载
- 通信代价
# 路由协议
- 直接路由
- 静态路由
- 动态路由
# 路由分类
- 路由分类有两种:静态路由和动态路由
- 静态路由是在路由器中设置固定路由表,除非网络管理员干预,否则静态路由不发生变化
- 动态路由时路由器之间相互通信,传递路由信息,利用收到的路由信息,更新自己路由表的过程,能实时使用网络结构的变化
# 最佳路由
- 不存在一种绝对的路由算法
- 所谓最佳只能是相对于某一种特定要求下得出的较为合理的选择而已
- 实际路由器选择算法,应尽可能接近于理想的算法
- 路由选择是个非常复杂的问题
- 它是网络中的所有节点共同协调工作的结果
- 路由选择的环境往往是不断变化的,而这种变化有时无法事先知道
# 分层次路由选择协议
- 因特网采用分层次的路由选择协议
- 因特网的规模非常大,如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间,而所有这些路由器之间交换路由信息所需的带宽就会使因特网的通信链路饱和
- 许多单位不愿意外界了解自己单位网络的布局细节和部门所采用的路由选择协议(这属于本部分内部的事情),但同时还希望连接到因特网上
# 自治系统(Autonomous System)
- 自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS 之间的路由
- 现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略
# 因特网有两大类路由选择协议
# 内部网关协议 IGP
(Interior Gateway Protocol)即在一个自治系统内部使用的路由选择协议,目前这类路由选择协议使用最多,如 RIP 和 OSPF
# 外部网关协议 EGP
(External Gateway Protocol)若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中,这样的协议就是外部网关协议 EGP,在外部网关协议中目前用的最多的是 BGP-4
# 分层次路由选择协议
- 自治系统之间的路由选择也叫做:域间路由选择(Interdomain routing)
- 在自治系统内部的路由选择叫做:域内路由选择(Intradomain routing)
# 内部网关协议 RIP
# 工作原理
RIP 是一种分布式的基于距离向量的路由选择协议
# RIP 协议三个要点
- 仅和相邻路由器交换信息
- 交换的信息是当前路由器所知道的全部信息,即自己的路由表
- 按固定的时间间隔交换路由信息
# 路由表的建立
- 路由器在刚刚开始工作时,只知道直接连接的网络的距离
- 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息
- 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址
- RIP 协议的收敛过程较快,即在自治系统中所有的节点都得正确的路由选择信息的过程
# RIP2 协议报文格式
# RIP 协议优缺点
- RIP 存在一个问题就是当网络出现故障时,要经过比较长的时间才能将此信息传达到所有的路由器
- RIP 协议最大的优点就是实现简单,开销较小
- RIP 限制了网络的规模,并能使用的最大距离为 15(16 表示不可达)
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增大
# 内部网关协议 OSPF(Open Shortest Path First)
# OSPF 协议的基本特点
- 开发表明 OSPF 协议不是受某一厂家控制,而是公开发表的
- 最短路径优先 是因为使用了 Dijkstra 提出的最短路径算法 SPF
- OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是最短路径优先
- 是分布式的链路状态协议
# 三个要点
-
向本自治系统中所有的路由器发送消息,这里使用的方法是洪泛法
-
发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息
- 链路状态就是说明本路由器都和哪些路由器相邻,以及该链路的度量
-
只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息
# 链路状态数据库(link-state-database)
- 由于各路由器之间频繁地交换链路状态信息,因此所有路由器最终都能建立一个链路状态
- 这个数据库实际上就是全网拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)
- OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表,OSPF 的更新过程收敛得快是其重要优点
# OSPF 的区域(area)
- 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域
- 每一个区域都有一个 32 位的区域标识符(用点分十进制标识)
- 区域也不能太大,在一个区域内的路由器最好不超过 200 个
# OSPF 划分为两种不同的区域
# 划分区域
- 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个自治系统,这就减少了整个网络上的通信量
- 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑情况
- OSPF 使用层次结构的区域划分,在上层的区域叫作主干区域(backbone area),主干区域的标识符定位 0.0.0.0,主干区域的作用是用来连通其他在下层的区域
# OSPF 直接用 IP 数据报传送
- OSPF 不用 UDP 而是直接用 IP 数据报传送
- OSPF 构成的结构报很短,这样做可减少路由信息的通信量
- 数据报很短的另一个好处是可以不必将长的数据报分片传送,分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传
# OSPF 的其它特点
- OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价,因此,OSPF 对于不同类型的业务可计算出不同的路由
- 如果到同一个目的网络有多条相同的路径,那么可以将通信量分配给这几条路径,这叫作多路径间的负载平衡
- 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能
- 支持可变长度的子网划分和无分类编址 CIDR
- 每一个链路状态都带上一个 32 位符号,序号越大,状态就越新
- OSPF 还规定了每隔一段时间,要刷新一次数据库中的链路状态
- 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而整个互联网的规模并无直接关系,因此当互联网规模很大时,OSPF 协议要距离向量协议 RIP 好得多
- OSPF 没有坏消息传得慢的问题,据统计,其相应网络变化的时间小于 100ms
# OSPF 基本操作
# 外部网关协议 BGP
# BGP 概述
- BGP 是不同自治系统的路由器之间交换路由信息的协议
- BGP 较新的版本是 2006 年 1 月发表的 BGP-4,即 RFC 4271~4278
- BGP-4 简写为 BGP
# BGP 使用的环境却不同
- 因特网的规模太大,使得自治系统之间的路由选择非常困难,对于自治系统之间的路由选择,要寻找最佳路径是很不现实的
- 当一条路径通过几个不同的 AS 时,要想对这样的路径计算出有意义的代价是不太可能的
- 比较合理的做法是在 AS 之间交换可达性信息
- 自治系统之间的路由选择必须考虑有关策略
# BGP 发言人
- 每一个自治系统的管理员至少一个路由器作为该自治系统的 BGP 发言人
- 一般来说,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往是 BGP 边界路由器,但也可以不是 BGP 边界路由器
# BGP 交换路由信息
- 一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文建立 BGP 会话,利用 BGP 会话交换路由信息
- 使用 TCP 连接可以提供可靠服务,也简化了路由选择协议
- 使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为了对方的邻站或对等站
# BGP 发言人交换路径向量
# BGP 协议的特点
- BGP 协议交换路由信息的节点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多
- 每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少的,这样就使得自治系统之间的路由选择不敢过分复杂
- BGP 支持 CIDR,因此 BGP 的路由表就应当包括目的网络前缀,下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
- 在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表,但以为只需要在发生变化时更新有变化的部分,这样做对节省网络宽带和减少路由器的处理开销方面都有好处