网络层功能
网络层目的:在任意结点进行不可靠的数据报传输
异构网络互联
网络异构:数据链路层、物理层异构传输介质、数据编码、链路控制协议、数据单元格式、转发机制
将多个计算机网络用通信设备相互连接局域网物理层、数据链路层、网络层可以不同,以上高层必须相同
中间设备
- 物理层:中继器、集线器
- 数据链路层:网桥、交换机
- 网络层:路由器
- 网络层以上:网关
数据报与虚电路
网络层提供面向连接的服务(数据报)和无连接的服务(虚电路)
虚电路服务
- 必须先建立网络层连接——虚电路VC,双方沿着已建立的虚电路发送分组
- 虚电路只是逻辑上的连接,分组沿该逻辑连接传送,而非真正物理连接电路交换是先建立真正的连接
- 目的主机地址仅在建立连接时使用,之后分组首部只携带虚电路编号
- 使用可靠传输的协议不出错、不丢失、不重复、不失序、在规定时间内到达
数据报服务
- 不建立网络层连接,每个分组可走不同路径,分组首部必须携带完整地址
- 不提供端到端的可靠传输分组可能出错、丢失、重复和失序,路由器简单,价格低廉
- 将复杂的网络处理置于网络边缘运输层,而将简单的尽最大努力分组交付置于核心
虚电路与数据报服务的对比
对比的方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
- 从占用通信子网资源方面:虚电路服务将占用结点交换机的存储空间,而数据报服务对每个分组都有其完整的目标地址独立选径,如果传送大量短的分组,数据头部分远大于数据部分,则会浪费带宽;
- 从时间开销方面:虚电路服务有创建连接的时间开销,对传送小量的短分组,显得很浪费;而数据报服务决定分组的去向过程很复杂,对每个分组都有分析时间的开销;
- 从拥塞避免方面:虚电路服务因连接起来的资源可以预留下来,一旦分组到达,所需的带宽和结点交换机的容量便已具有,因此有一些避免拥塞的优势,而数据报服务则很困难;
- 从健壮性方面:通信线路的故障对虚电路服务是致命的因素,但对数据报服务则容易通过调整路由得到补偿,因此虚电路服务更脆弱。
- 虚电路服务适用于具有交互作用的信息,不仅及时、传输较为可靠,而且网络开销小;数据报服务适用于传输单个分组构成的、不具交互作用的信息以及对传输要求不高的场合
路由与转发
路由器功能
- 路由选择:确定路径
- 分组转发:分组到达时操作
拥塞控制
拥塞:随着子网负载增加,吞吐量降低
拥塞控制方法
- 开环控制:静态
- 闭环控制:动态
网际协议IP
全球唯一表示某个主机或路由器接口的编码
分类的IP地址
IP地址可以记为: ${<网络号>,<主机号>}$
网络类别 | 最大可指派网络数 | 首个可指派网络号 | 最后可指派的网络号 | 每个网络中的最大主机数 |
---|---|---|---|---|
$A$ | $126(2^7-2)$ | 1 | 126 | 16777214$(2^{24}-2)$ |
$B$ | $16383(2^{14-1})$ | 128.0 | 191.255 | 65534$(2^{16}-2)$ |
$C$ | $2097151(2^{21}-1)$ | 192.0.0 | 223.255.255 | 254$(2^8-2)$ |
- 全$0$的主机号代表网络地址
- 全$1$的主机号代表该网络所有主机
特殊的IP地址
网络号 | 主机号 | 源地址使用 | 目的地址使用 | 含义 |
---|---|---|---|---|
$0$ | $0$ | 可以 | 不可 | 本网络的本主机 |
$0$ | host-id | 可以 | 不可 | 本网络的某台主机 |
全$1$ | 全$1$ | 不可 | 可以 | 本网络进行广播(受限广播地址) |
net-id | 全$1$ | 不可 | 可以 | 对net-id上所有网络广播(直接广播地址) |
127.x.x.x | 非全$0$或全$1$的任何数 | 可以 | 可以 | 本地软件回环测试 |
私有地址
网络类型 | 私有IP地址 |
---|---|
A | 10.0.0.0$\sim$10.255.255.255 (10.0.0.0/8) |
B | 172.16.0.0$\sim$172.31.255.255 (172.16.0.0/12) |
C | 192.168.0.0$\sim$192.168.255.255 (192.168.0.0/16) |
划分子网
IP地址::={<网络号>,<子网号>,<主机号>}
好处:减少广播域大小、提高IP地址利用率不增加网络数量、主机数减少
子网掩码
- 从一个IP数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
- 使用子网掩码(subnet mask)可以找出IP地址中的子网部分。规则:
- 子网掩码长度=32位
- 子网掩码左边部分的一连串1,对应于网络号和子网号
- 子网掩码右边部分的一连串0,对应于主机号
- $网络地址\ =\ IP地址\ \ &\ \ 子网掩码$
- 默认子网掩码
- A:$255.0.0.0$
- B:$255.255.0.0$
- C:$255.255.255.0$
使用子网时分组的转发
划分子网时路由器转发分组算法
- 从收到的分组的首部提取目的IP地址$D$
- 先用各网络的子网掩码和$D$逐位相与,看是否和相应的网络地址匹配。若匹配,则将分组直接交付;否则就是间接交付,执行(3)
- 若路由表中有目的地址为$D$的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(4)
- 对路由表中的每一行,将子网掩码和$D$逐位相与。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(5)
- 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(6)
- 报告转发分组出错。
无分类编址CIDR(构造超网)
无分类编址 CIDR
CIDR最主要特点
- CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,因而可以更加有效地分配IPv4的地址空间。
- CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
- IP地址从三级编址(使用子网掩码)又回到了两级编址。
作用:小的网络汇聚成小的超网
无分类的两级地址
$IP地址::={<网络前缀>,<主机号>}$
- 斜线记法:$IP地址/网络前缀所占位数$
路由聚合
- CIDR 把网络前缀都相同的连续的IP地址组成“CIDR地址块”。
- 一个CIDR地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。
- 路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
- 路由聚合也称为构成超网(supernetting)
- CIDR虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。
最长前缀匹配
- 使用CIDR时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。
- 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching).
- 网络前缀越长,其地址块就越小,因而路由就越具体(morespecific)。
- 最长前缀匹配又称为最长匹配或最佳匹配。
IPv4地址应用规划
子网IP需求$=$主机数$+$路由器接口数$+$网络地址$+$广播地址1
定长子网掩码FLSM
从主机号借$n$比特作为子网号
子网数量:$2^n$
每个子网地址数:$2^{主机号-n}$
缺点:易造成IP地址浪费
变长子网掩码VLSM
主机号位数:$[\log_2(子网IP需求)]$
网络前缀位数:$32-主机号位数$
每个子块起点位置不能随意选取,只能选取大小整数倍的地址作为起点建议先给大的子块分配
网段网络号:$A.B.C.D/n$,可分配主机号:$32-n$,1位主机只可以表示广播和网络,故至少2位主机号,故最少分成$2^{30-n}$个子网;子网最大则只有全部分给主机,最多$2^{32-n}$台主机
路由选择协议
路由器转发分组由路由表转发,路由表通过路由算法得到
- 静态路由选择(非自适应路由选择):简单、开销较小,但不能及时适应网络状态的变化管理员手动配置路由
- 动态路由选择(自适应路由选择) :能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。
路由选择协议
内部网关协议IGP(Interior Gateway Protocol)
- 在一个自治系统内部使用的路由选择协议。
- 目前这类路由选择协议使用得最多,如RIP和OSPF协议。
- 路由信息协议RIP(基于距离向量,最早使用)
- 内部网关路由协议IGPR(基于距离向量,被EIGRP取代)
- 增强型内部网关路由协议EIGRP(结合距离向量和链路状态)
- 开放式最短路径优先OSPF(基于链路状态,各个网络中广泛使用)
- 中间系统到中间系统IS-IS(基于链路状态,ISP骨干网最常用IGP协议)
外部网关协议EGP(External Gateway Protocol)
- 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。
- 在外部网关协议中目前使用最多的是BGP。
协议封装
路由选择协议特点
- 自适应:较好适应网络状态变化
- 分布式:路由器之间交换路由信息
- 分层次:将整个因特网划分许多较小的自治系统AS
自治系统AS
- 自治系统AS:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议用以确定分组在AS之间的路由。
- 尽管一个AS使用了多种内部路由选择协议和度量,但重要的是一个AS对其他AS表现出的是一个单一的和一致的路由选择策略。
路由信息协议RIP
走最短路由
工作原理
- 内部网关协议IGP中最先得到广泛使用的协议。
- 是一种分布式的、基于距离向量的路由选择协议。
- 要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
“距离”的定义
从一个路由器到直接连接的网络的距离定义为1.
RIP协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加1。
RIP允许一条路径最多只能包含15个路由器。
“距离”的最大值为16时即相当于不可达。可见RIP只适用于小型互联网。
RIP不能在两个网络之间同时使用多条路由。RIP选择最短路由,哪怕存在低时延但路由器较多的路由。
RIP协议特点
- 仅和相邻路由器交换信息。
- 交换的信息是自己的路由表。
- 按固定的时间间隔交换路由信息。
距离向量算法
路由器收到相邻路由器(其地址为X)的一个RIP 报文:
先修改此RIP报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有的“距离”字段的值加1.
对修改后的 RIP 报文中的每一个项目,重复以下步骤:
if 项目中的目的网络不在路由表中
把该项目加到路由表中
else
if 下一跳字段给出的路由器地址是同样的
把收到的项目替换原路由表中的项目。
else
if 收到项目中的距离小于路由表中的距离
进行更新
else
什么也不做。
- 到达目的网络,相同下一跳,最新消息,更新距离
- 到达目的网络,不同下一跳,新路由优势,更新距离与下一跳
- 到达目的网络,不同下一跳,等价负载均衡,添加
- 发现新网络,添加
- 到达目的网络,不同下一跳,新路由劣势,不更新
- 若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(表示不可达)。
- 返回。
RIP2协议报文格式
- RIP2报文由首部和路由部分组成。
- RIP2报文中的路由部分由若干个路由信息组成。每个路由信息需要用20个字节。地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。
- 路由标记填入自治系统的号码,这是考虑使RIP有可能收到本自治系统以外的路由选择信息。
- 再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。
- 一个RIP报文最多可包括25个路由,因而RIP报文的最大长度是4+20 x25=504字节。如超过,必须再用一个RIP报文来传送。
- RIP2具有简单的鉴别功能。
- 若使用鉴别功能,则将原来写入第一个路由信息(20个字节)的位置用作鉴别。
- 在鉴别数据之后才写入路由信息,但这时最多只能再放入24个路由信息。
- RIP协议特点:好消息传播得快,坏消息传播得慢。
- RIP存在的一个问题:当网络出现故障时,要经过比较长的时间(例如数分钟)路由环路才能将此信息传送到所有的路由器。距离向量算法故有问题
- 解决:限制最大路径距离15(16表示不可达)
- 当路由表发生变化就立即更新报文,而非周期性发送
- 让路由器记录收到某特定路由信息接口,而不让同一路由信息在通过此接口向反方向传送(水平分割)
开放最短路径优先OSPF
OSPF协议的基本特点
- “开放”表明OSPF 协议不是受某一家厂商控制,而是公开发表的。
- “最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF
- 采用分布式的链路状态协议
- 注意:OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。
OSPF要点
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
- 发送的信息就是与本路由器相邻的所有路由器的链路状态可达性、度量,但这只是路由器所知道的部分信息。
- **“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)**。
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
链路状态数据库(link-state database)
- 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
- 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
- OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。
- OSPF 的更新过程收敛得快是其重要优点。
OSPF的区域
- 为了使OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。
- 每一个区域都有一个32位的区域标识符(用点分十进制表示),主干区域必须0.0.0.0
- 区域也不能太大,在一个区域内的路由器最好不超过200个。
- 优点:洪范法广播范围局限于一个区域而非整个AS,减少网络通信量
划分区域
- 主干区域的作用是用来连通其他在下层的区域
- 区域内路由器IR:区域内不与其他区域接通路由器
- 其他区域来的信息都由区域边界路由器ABR(area border router)进行概括
- 主干区域内的路由器叫做主干路由器BBR(backbone router)
- 和本自治系统外的其他自治系统交换路由信息。这样的路由器叫做自治系统边界路由器ASBR
OSRF分组
版本:占8字节,当前版本号为2
类型:占8字节,OSRF的5种类型
分组长度:占16字节,分组总长度
路由器标识符:占32字节,发送端路由器某一个接口的IP地址
区域标识符:占32字节,分组所在区域
检验和:占16字节,检测分组差错
鉴别类型:占16字节,1——口令鉴别
0——不用鉴别
鉴别:鉴别类型为0时就填入0,鉴别类型为1时就填入8字符的口令
OSRF特点
- OSPF允许管理员给每条路由指派不同的代价时延长的就设计较高的代价
- 多路径间的负载平衡
- 具有鉴别功能简单口令鉴别
- OSPF支持可变长度的子网划分和无分类的编址CIDR3
- 每一个链路带上32位序号,用来区分旧的更新和新的更新
OSRF的五种分组类型
- 类型1,问候分组:确定和维护邻居路由器可达性
- 类型2,数据库描述分组:描述自己链路状态数据库
- 类型3,链路状态请求分组:向邻居请求发送某些链路状态的详细信息
- 类型4,链路状态更新分组:用洪泛法对全网更新链路状态
- 类型5,链路状态确认分组:对链路状态更新确认
多点接入网络OSRF
选举指定路由器DR和备用指定路由器BDR
所以非DR、BDR只与DR/BDR建立邻居关系
邻居关系数:$\dfrac {n(n-1)}2\rightarrow 2(n-2)+1$
边界网关协议 BGP
BGP使用环境
- 互联网的规模太大,使得自治系统之间路由选择非常困难(代价度量不同)。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。
- 当一条路径通过几个不同AS时,要想对这样的路径计算出有意义的代价是不太可能的。
- 比较合理的做法是在AS之间交换“可达性”信息。
- 自治系统之间的路由选择必须考虑有关策略。
- 因此,边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
BGP交换路由信息
- 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的”BGP发言人”(BGP speaker)。往往就是BGP边界路由器
- 一个 BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP 连接(端口179),然后在此连接上交换 BGP报文以建立BGP会话(session),利用 BGP会话交换路由信息。
- 使用TCP连接能提供可靠的服务,也简化了路由选择协议。
- 使用TCP连接交换路由信息的两个 BGP发言人,彼此成为对方的邻站(neighbor)或*对等站(peer)。
- BPG发言人还需运行自己内部网关协议GIP
BGP协议特点
- BGP支持CIDR,因此 BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
- 在BGP刚刚运行时,BGP的邻站是交换整个的 BGP路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
BGP-4共使用四种报文
- 打开(OPEN)报文,用来与相邻的另一个BGP发言人建立关系。
- 更新(UPDATE)报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
- 保活(KEEPALIVE)报文,用来确认打开报文和周期性地证实邻站关系。
- 通知(NOTIFICATION)报文,用来发送检测到的差错。
路由协议比较
IP数据报
地址解析协议ARP
IP地址 & 硬件地址
- IP地址32位与硬件地址48位是不同的地址。
- 从层次的角度看,
- 硬件地址(或物理地址)是数据链路层和物理层使用的地址适配器中ROM中。
- IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称I地址是逻辑地址是因为IP地址是用软件实现的内存中)。
- 在IP层抽象的互联网上只能看到IP数据报
- 虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择。
在局域网的链路层,只能看见MAC帧。
地址解析协议ARP
ARP 作用:从网络层使用的IP地址,解析出在数据链路层使用的硬件地址。
被系统自动调用,用户不知道过程
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
每一个主机都设有一个ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表。
$$
<IP address; MAC address; TTL>
$$
当主机A欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。
- 如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。
- 如没有,AR进程在本局域网上广播发送一个ARP请求分组。收到ARP响应分组后,将得到的IP地址到硬件地址的映射写入ARP高速缓存。
ARP请求分组:包含发送方硬件地址/发送方IP地址/目标方硬件地址(未知时填O)/目标方IP地址。
本地广播/ARP请求(路由器不转发ARP请求)。
ARP响应分组单播:包含发送方硬件地址/发送方IP地址/目标方硬件地址/目标方IP地址。
ARP分组封装在物理网络的帧中传输。
ARP高速缓存的作用
- 存放最近获得的IP地址到MAC地址的绑定,以减少ARP广播的数量。
- 为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到硬件地址的映射写入ARP请求分组。
- 当主机B收到A的ARP请求分组时,就将主机A的这一地址映射写入主机B自己的ARP高速缓存中。这对主机B以后向A发送数据报时就更方便了。
IP数据报格式
- 一个IP数据报由首部和数据两部分组成。
- 首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。
- 在首部的固定部分的后面是一些可选字段,其长度是可变的最大长度40字节。
版本:占4位,指IP协议版本,数值为4——$01\ 00$
首部长度:占4位,指数据报首部长度,可表示的最大数值是15个单位,因此IP的首部长度的最大值是60字节。【基本单位:4B】
填充:使得可变部分为4字节的整数倍
区分服务:占8位,无实际含义
总长度:占16位,指数据报总长度,**总长度不得超过65535字节(MTU)**【基本单位:1B】
标识:占16位,分片后的字段具有相同标识不是序号
标志:占3位,最低位$MF$——$MF=1$:还有分片;
$MF=0$:最后一个分片
中间位$DF$——$DF=0$:允许分片
$DF=1$:不允许分片若长度$\gt MTU$,则丢弃且ICMP向源主机报告
保留位:0
片位移:占13位,较长的分组分片后某片在原分组相对位置,片偏移以8个字节为偏移单位【基本单位:8B】
$偏移=原字节位置/8$
生存时间TTL:占8位,网络中可通过路由器最大值(防止IP数据报在网络中永久兜圈· )
协议:占8位,指出数据报携带的数据使用何种协议
协议 ICMP IGMP TCP UDP IPv6 OSPF 字段 1 2 6 17 41 89 首部检验和:占16位,只检验数据报的首部,不检验数据部分
源地址:占4字节【传输过程不变】
目的地址:占4字节【传输过程不变】
可变部分:用来支持排错、测量以及安全等措施,内容很丰富。
- 选项字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。
- 增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。
- 实际上这些选项很少被使用。
填充:0填充,确保IP首部长度为4整数倍
静态路由配置
- 特定主机路由网络前缀最长,最具体
- 默认路由网络前缀最短,最模糊
- 多条路由可选,选最长前缀
目的网络 | 下一跳 | 类型 |
---|---|---|
直接连接路由器的网络 | 连接网络的接口 | 直连 |
路由器的路由表
目的主机所在网络 | 下一跳地址 |
---|---|
直接连接的网络 | 直接交付,接口X |
非直接连接的网络 | 下一个路由器的接入地址 |
特定主机路由
目的网络 | 下一跳 | 类型 |
---|---|---|
特定主机CIDR | 通向的路由器接口 | 静态 |
虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。
采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
主机IP地址 | 下一跳地址
默认路由
目的网络 | 下一跳 | 类型 |
---|---|---|
0.0.0.0/0 | 默认路由地址 | 静态 |
- 对于相同下一跳的不同目的网络的路由条目,可用默认路由替代
- 路由器还可采用默认路由以**优先级最低减少路由表所占用的空间和搜索路由表所用的时间**。
- 这种转发方式在一个网络只有很少的对外连接时是很有用的。
- 默认路由在主机发送IP数据报时往往更能显示出它的好处。
- 如果一个主机连接在一个小网络上,而这个网络只用一个路由器和互联网连接,那么在这种情况下使用默认路由是非常合适的。
环路错误
- 配置错误
- 聚合了不存在的网路
- 网络故障
路由条目类型
- 直连网络
- 静态路由(人工配置)
- 动态路由(路由选择协议)
特殊条目
- 默认路由:目的网络0.0.0.0,掩码0.0.0.0
- 特定主机路由:目的网络:主机IP;掩码255.255.255.255
- 黑洞路由:下一跳为null
IP层转发分组流程
路由器分组转发算法
- 从数据报的首部提取目的主机的IP地址$D$,得出目的网络地址为$N$
- 若网络$N$与此路由器直接相连在同一个网段,则把数据报直接交付目的主机$D$;否则是间接交付,执行(3)
- 若路由表中有目的地址为$D$的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)
- 若路由表中有到达网络$N$的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)
- 报告转发分组出错
路由器修改内容
- 私有地址和Internet主机通信时,须由NAT路由器进行网络地址转换,把源IP地址转换为NAT路由器的一个全球IP地址
- 每经过一个路由器,TTL减1
- 若分组长度超过MTU,总长度、标志、片偏移发生变化
主机发送IP数据报
判断目的主机是否与自己在同一网络
若在,直接交付
若不在,间接交付,传输给主机所在网络的默认网关(路由器)进行转发
路由器转发IP数据报
检查IP数据报首部是否出错
若出错,直接丢弃IP数据报并报告主机
若无错,进行转发
根据IP数据报目的地址在路由表中查找匹配的条目
若找到匹配条目,转发给条目指示下一帧
若找不到,丢弃并报告源主机
网际控制报文协议ICMP
- 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP (Internet Control Message Protocol)。
- ICMP是互联网的标准协议。
- ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。
- 但ICMP不是高层协议(看起来好像是高层协议,因为ICMP报文是装在IP数据报中,作为其中的数据部分),而是IP层的协议。
ICMP报文格式
- 类型:占8字节,产生差错的分类
- 代码:占8字节,大类型下不同情况
- 检验和:占16字节,检验整个ICMP报文
ICMP 报文的种类
- ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。
ICMP报告报文 | 类型的值 | ICMP报文的类型 |
---|---|---|
差错报告报文 | 3 | 终点不可达 |
11 | 时间超过 | |
12 | 参数问题 | |
5 | 改变路由(重定向)(Redirect) | |
询问报文 | 8或0 | 回送(Echo)请求或回答 |
13或14 | 时间戳(Timestamp)请求或回答 |
ICMP差错报文
- 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
- 时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
- 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确是,就丢弃该数据报,并向原点发送参数问题报文。
- 改变路由(重定向)(Redirect):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
- 源点抑制:拥塞
不应发送ICMP 差错报告报文情况
- 对ICMP差错报告报文不再发送ICMP 差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送ICMP 差错报告报文。
- 对具有特殊地址的数据报不发送ICMP差错报告报文。
ICMP询问报文
- 回送请求和回答报文:ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。
- 时间戳请求和回答报文:ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。时间戳请求与回答可用于时钟同步和时间测量。
路由器的构成
- 路由器是一种典型的网络层设备。
- 路由器是互联网中的关键设备。
- 路由器的主要作用是:
- 连通不同的网络。
- 选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速
度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。
lPV6
lPv6的基本首部
IPv6基本变化
- 更大的地址空间。IPv6将地址从IPv4的32位增大到了128位。
- 扩展的地址层次结构。
- 灵活的首部格式。IPv6定义了许多可选的扩展首部。
- 改进的选项。IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。
- 允许协议继续扩充。
- **支持即插即用(即自动配置)**。因此IPv6不需要使用DHCP。
- 支持资源的预分配。IPv6支持实时视像等要求,保证一定的带宽和时延的应用。
- IPv6首部改为8字节对齐。首部长度必须是8字节的整数倍。原来的IPv4首部是4字节对齐。
IPv6数据报一般格式
- 基本首部(base header)
- **有效载荷(payload)**。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分。
- 版本:占4字节,协议的版本,数值为6
- 通信量类:占8字节,区分不同IPv6数据报的类别和优先级
- 流标号:占20字节。“流”是互联网络上从特定源点到特定终点的一系列数据报,“流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。
- 有效载荷长度:占16字节,指明数据报除基本首部外字节数,最大值为64KB
- 下一个首部:占8字节,相当于IPv4的协议字段
- 跳数限制:占8字节,路由器转发最大次数
- 源地址:占128字节,
- 目的地址:占128字节,
扩展首部
- 逐跳选项
- 路由选择
- 分片
- 鉴别
- 封装安全有效载荷
- 目的站选项
IPv6的地址
- 单播(unicast):传统的点对点通信。
- 多播(multicast):一点对多点的通信。
- 任播(anycast):这是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。
结点和接口
IPv6将实现IPv6的主机和路由器均称为结点。
一个结点就可能有多个与链路相连的接口。
IPv6地址是分配给结点上面的接口的。
一个接口可以有多个单播地址。
其中的任何一个地址都可以当作到达该结点的目的地址。
即一个结点接口的单播地址可用来唯一地标志该结点。
IPv6地址分类
从IPv4向 IPv6过渡
- IPv6必须向后兼容IPv4
IPv4向IPv6过渡的策略
- 双协议栈
- 隧道技术
双协议栈
- 双协议栈(dual stack)是指在完全过渡到IPv6之前,使一部分主机(或路由器)装有两个协议栈,一个IPv4和一个IPv6
- 双协议栈的主机(或路由器)记为IPv6/IPv4,表明它同时具有两种IP地址:一个IPv6地址和一个IPv4地址
- 双协议栈主机在和IPv6主机通信时是采用IPv6地址,而和IPv4主机通信时就采用IPv4地址。
- 根据DNS返回的地址类型可以确定使用IPv4地址还是IPv6地址。
隧道技术
- 在IPv6数据报要进入IPv4网络时,把IPv6数据报封装成为IPv4数据报,整个的IPv6数据报变成了IPv4数据报的数据部分。
- 当IPv4数据报离开IPv4网络中的隧道时,再把数据部分(即原来的IPv6数据报)交给主机的IPv6协议栈。
ICMPv6
- IPv6也不保证数据报的可靠交付,因为互联网中的路由器可能会丢弃数据报。
- 因此IPv6也需要使用ICMP来反馈一些差错信息。新的版本称为ICMPv6。
- ICMPv6是面向报文的协议,它利用报文来报告差错,获取信息,探测邻站或管理多播通信。
ICMPv6报文的分类
- 差错报文
- 信息报文
- 邻站发现报文(ND协议)
- 组成员关系报文(MLD协议)
IP多播
- 再互联网上进行多播就是IP多播
- 在多播数据报的目的地址写入的是多播组的标识符
- 多播组的标识符就是IP地址中的D类地址(多播地址)
- 多播地址只能用于目的地址,不能用于源地址。
在局域网上进行硬件多播
- 互联网号码指派管理局IANA拥有的以太网地址块的高24位为00-00-5E
- IANA使用的以太网多播地址块的范围是
从01-00-5E-00-00-00
到01-00-5E-7F-FF-FF - 在每一个地址中,只有23位可用作多播。
- D类IP地址可供分配的有28位,在这28位中的前5位不能用来构成以太网硬件地址。
网际组管理协议IGMP和多播路由选择协议
- 为了使路由器知道多播组成员的信息,需要利用网际组管理协议lGMP (Internet Group Management Protocol)
- 连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议
IGMP使用范围
IGMP 并非在互联网范围内对所有多播组成员进行管理的协议,强调了IGMP的本地使用范围
IGMP是整个网际协议IP的一个组成部分
- 和ICMP 相似,IGMP使用IP数据报传递其报文(即IGMP报文加上IP首部构成IP数据报),但它也向IP提供服务。
- 因此,我们不把IGMP看成是一个单独的协议,而是属于整个网际协议IP的一个组成部分。
IGMP工作阶段
- 第一阶段:加入多播组
- 当某个主机加入新的多播组时,该主机应向多播组的多播地址发送IGMP报文,声明自己要成为该组的成员。
- 本地的多播路由器收到IGMP报文后,将组成员关系转发给互联网上的其他多播路由器。
- 第二阶段:探询组成员变化情况
- 因为组成员关系是动态的,因此本地多播路由器要周期性地探询
本地局域网.上的主机,以便知道这些主机是否还继续是组的成员。 - 只要对某个组有一个主机响应,那么多播路由器就认为这个组是
活跃的。 - 但一个组在经过几次的探询后仍然没有一个主机响应,则不再将
该组的成员关系转发给其他的多播路由器。
- 因为组成员关系是动态的,因此本地多播路由器要周期性地探询
多播路由选择协议在转发多播数据报时使用方法
- 洪泛与剪除构造转发树
- 这种方法适合于较小的多播组,而所有的组成员接入的局域网也相邻接的。
- 一开始,路由器转发多播数据报使用洪泛的方法(这就是广播)
- 为了避免兜圈子,采用了叫做反向路径广播RPB(Reverse PathBroadcasting)的策略。
- 隧道技术(tunneling)
- 隧道技术适用于多播组再地理上很分散的情况
- 基于核心的发现技术
- 这种方法对于多播组的大小在较大范围内变化时都适合。
- 这种方法是对每一个多播组G指定一个核心(core)路由器,给出它的IP单播地址。
- 核心路由器按照前面讲过的方法创建出对应于多播组G的转发树。
RPB要点
- 路由器收到多播数据报时,先检查它是否是从源点经最短路在传达术的。
- 若是,就向所有其他方向转发刚才收到的多播数据报(但进入的方向除
外),否则就丢弃而不转发。 - 如果存在几条同样长度的最短路径,那么只能选择一条最短路径,
选择的准则就是看这几条最短路径中的相邻路由器谁的IP地址最小。 - 最后就得出了用来转发多播数据报的多播转发树,以后就按这个多播转发树转发多播数据报。避免了多播数据报的兜圈子,同时每一个路由器也不会接收重复的多播数据报。
- 如果在多播转发树上的某个路由器发现它的下游树枝(即叶节点方
向)已没有该多播组的成员。就应把它和下游的树枝一起剪除 - 当某个树枝有新增加的组成员时,可以再接入到多播转发树上
虚拟专用网VPN & 网络地址转换NAT
虚拟专用网 VPN
虚拟专用网$\star $:在公用网络上建立专用网络的技术。之所以称其为虚拟网,是因为整个VPN网络的任意两个节点之间的连接并没有传统专网所需的端到端的物理链路,而是架构在公用网络服务商所提供的网络平台,如Internet、 ATM(异步传输模式)、Frame Relay (帧中继)等之上.的逻辑网络,用户数据在逻辑链路中传输。之所以称为专用网,是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。
- 由于IP地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。
- 考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。
- 假定在一个机构内部的计算机通信也是采用TCP/IP协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其IP地址。
专用IP地址
- 10.0.0.0到10.255.255.255
A类,或记为10.0.0.0/8,它又称为24位块 - 172.16.0.0到172.31.255.255
B类,或记为172.16.0.0/12,它又称为20位块 - 192.168.0.0到192.168.255.255
C类,或记为192.168.0.0/16,它又称为16位块
内联网intranet & 外联网extranet
- 它们。
- 由部门A和B的内部网络所构成的虚拟专用网VPN又称为内联网(intranet),表示部门A和B都是在同一个机构的内部。
- 一个机构和某些外部机构共同建立的虚拟专用网VPN又称为外联网(extranet)。
IP隧道技术
局域网数据报加密通过因特网给另一个局域网
VPN 的特点:
①VPN通过建立一个隧道,利用加密技术对传输数据进行加密,以保证数据的私有性和安全性。
②具有很好的扩充性和灵活性。
③VPN可以从用户和运营商角度方便进行管理。
④VPN可以为不同要求用户提供不同等级的服务质量保证。
VPN的优点:
①连接方便灵活。用户如果想与合作伙伴联网,只需双方配置安全连接信息即可。
②使用VPN可降低成本。通过公用的因特网连接不同网点,节省租金;
③传输数据安全可靠。对通过因特网传送的数据加密,保证了数据的安全;
④安全控制。虚拟专用网使用户可以利用ISP的设施和服务,同时又完全掌握着自己网络的控制权。
VPN 的缺点: VPN 比普通网络更复杂,VPN 需购买专门的硬件和软件,费用比普通网络更高。
VPN分类
VPN协议分类
- PPTP、L2TP和IPSec,其中PPTP和L2TP协议工作在OSI模型的第二层,又称为二层隧道协议;
- IPSec 是第三层隧道协议,是最常见的协议。
- L2TP 和IPSec配合使用是目前性能最好、应用最广泛的一种。
VPN应用分类
分别是内联网,外联网和远程接入VPN,其中内联网的各网点属于同一机构,而外联网的网点属于不同机构。都是基于TCP/IP协议的
所用的设备类型分类
网络设备提供商针对不同客户的需求,开发出不同的VPN网络设备,主要为交换机、路由器和防火墙。
网络地址转换 NAT
NAT网络地址转换:需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。
NAT的优点
- 通过NAT,专用网内部主机可使用专用地址与因特网上的主机通信;
- 通过NAT,一个全球合法IP地址可被多台专用网内部主机分享使用,节省全球IP地址资源。
NAT的缺点:通信必须由专用网内的主机发起,专用网内部的主机不能充当服务器。
网络地址转换过程
- 内部主机A用**本地地址$IP_A$**和互联网上主机B通信所发送的数据报必须经过NAT路由器。
- NAT路由器将数据报的源地址$IP_A$转换成全球地址$IP_G$,并把转换结果记录到NAT地址转换表中,目的地址$IP_B$保持不变,然后发送到互联网
- NAT路由器收到主机B发回的数据报时,知道数据报中的源地址是$IP_B$而目的地址是$IP_G$
- 根据NAT转换表,NAT路由器**将目的地址$IP_G$转换为$IP_A$**,转发给最终的内部主机A。
网络地址端口转换NAPT
- 在路由器转发IP数据报时,NAFY 对IP地址和端口号都进行转换,对于出专用网的数据,把专用网内不
同的源IP地址转换为同样的全球IP地址,把源主机端口号转换为不同的新的端口号;对于入专用网的应答,NAPT
根据不同的目的端口号,从NAPT转换表中找到正确的目的主机;. - NAPT工作在网络层和传输层。.
多协议标记交换MPLS
MPLS的工作原理
MPLS特点
- MPLS 并没有取代IP,而是作为一种IP增强技术,被广泛地应用在互联网中。
- MPLS具有以下三个方面的特点:
- 支持面向连接的服务质量;
- 支持流量工程,平衡网络负载;
- 有效地支持虚拟专用网VPN。
MPLS 协议的基本原理
- 在MPLS域的入口处,给每一个IP数据报打上固定长度“标记”,然后对打上标记的IP数据报用硬件进行转发。
- 采用硬件技术对打上标记的IP数据报进行转发就称为标记交换。
- “交换”也表示在转发时不再上升到第三层查找转发表,而是根据标记在第二层(链路层)用硬件进行转发。
- MPLS域(MPLS domain)是指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持MPLS技术的标记交换路由器LSR(Label Switching Router)。
- LSR同时具有标记交换和路由选择这两种功能,标记交换功能是为了快速转发,但在这之前LSR需要使用路由选择功能构造转发表。
MPLS基本工作过程
- MPLS域中的各LSR使用专门的标记分配协议LDP交换报文,并找出标记交换路径LSP。各LSR根据这些路径构造出分组转发表。
- 分组进入到MPLS域时,MPLS** 入口结点把分组打上标记,并按照转发表将分组转发给下一个LSR。给IP数据报打标记的过程叫做分类**(classification)。
- 一个标记仅仅在两个标记交换路由器LSR之间才有意义。分组每经过一个LSR,LSR 就要做两件事:一是转发,二是更换新的标记,即把入标记更换成为出标记。这就叫做标记对换(label swapping)。
- 当分组离开 MPLS域时,MPLS** 出口结点把分组的标记去除**。再以后就按照一般分组的转发方法进行转发。
转发等价类FEC
- MPLS有个很重要的概念就是转发等价类FEC (ForwardingEquivalence Class)。
- “转发等价类”就是路由器按照同样方式对待的IP数据报的集合。
- 目的IP地址与某一个特定IP地址的前缀匹配的IP数据报(这就相当于普通的IP路由器)
- 所有源地址与目的地址都相同的IP数据报;
- 具有某种服务质量需求的IP数据报。
MPLS首部的位置与格式
- MPLS 并不要求下层的网络都使用面向连接的技术。
- 下层的网络并不提供打标记的手段,而IPv4数据报首部也没有多余的位置存放_MPLS 标记。
- 这就需要使用一种封装技术:在把IP数据报封装成以太网帧之前,先要插入一个MPLS 首部。
- 从层次的角度看,MPLS首部就处在第二层和第三层之间。
- 标记值(占20位)。可以同时容纳高达220个流(即1048576个流)。实际上几乎没有哪个MPLS实例会使用很大数目的流,因为通常需要管理员人工管理和设置每条交换路径。
- 试验(占3位)。目前保留用作试验。
- 栈S(占1位)。在有“标记栈”时使用。
- 生存时间TTL(占8位)。用来防止 MPLS分组在MPLS 域中兜圈子。