文章目录
概述
网络层的主要任务:把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。
传输单位:数据报
功能概述:
- 路由选择及分组转发:选择最佳路径。
- 异构网络互联。
- 拥塞控制:分为开环和闭环两种手段。
数据交换方式
名称 | 描述 | 传输方式 | 传输单位 | 优点 | 缺点 |
---|---|---|---|---|---|
电路交换 | 进行数据传输前,两个结点需要先建立一条由双方独占的物理通路,直到通信结束后才释放。 | 直通方式 | - | 通信时延小、有序传输、没有冲突、不需存储转发 | 建立连接时间长、信道利用率低 |
报文交换 | 以报文的格式传输数据,报文携带有源地址、目标地址等信息。 | 存储转发 | 报文 | 无需建立连接、动态分配线路、提高线路可靠性和利用率、基于拷贝可提供多目标服务 | 存在转发时延、对转发结点的缓存空间有要求 |
分组交换 | 限制了每次传送数据量的上限,解决了报文交换中大报文的传输问题,分组交换进一步可分为面向连接的虚电路方式和无连接的数据报方式 | 存储转发 | 分组 | 除具有报文交换的优点外,还简化了转发结点的存储管理,因为其分组长度固定;减少了一个分组出错的概率和重传成本,因为其分组长度较小。 | 除具有报文交换的缺点外,还需要传输更多的附加信息,因为每个分组都需要附加控制信息 |
分组交换时,根据其通信子网向端点系统提供的服务,可分为面向连接的虚电路方式和无连接的数据报方式,比较如下:
方式 | 描述 | 目的地址 | 分组顺序 | 故障影响 |
---|---|---|---|---|
数据报方式 | 为网络层提供无连接服务:不事先为分组确定传输路径,每个分组独立确定传输路径。 | 每个分组都有完整的目的地址。 | 不一定有序到达。 | 只有出故障的结点会丢失数据。 |
虚电路方式 | 每个分组携带虚电路号,而非目的地址。每个结点都维护一张虚电路表。为网络层提供面向连接的服务:首先为分组的传输确定传输路径,即建立连接,然后通过此连接传输一系列的分组,传输结束后拆除连接。 | 仅在建立连接阶段使用,之后使用虚电路号。 | 一定有序到达。 | 所有经过故障结点的分组均会丢失。 |
路由算法
路由算法是指在某一种要求下为分组选择合理的转发路径的算法。
分层次的路由选择协议
由于因特网规模很大,所以让所有路由器都掌握完整的网络拓扑是不现实的,而且许多机构既并不希望自己的路由协议被其他人知道,又希望连入因特网,因此将因特网划分为多个“小团体”,即自治系统AS。
这样一来,整个因特网的路由选择就可分为AS间和AS内两个层次,即:
- 外部网关协议EGP:包括BGP-4。
- 内部网关协议IGP:包括RIP和OSPF。
AS的内部和外部使用的协议,(除发言人外)互相是看不见的。
外部网关协议
当数据报传到一个AS的边界时,需要使用外部网关协议将路由选择信息传递到可能使用另一种内部网关协议的AS,目前使用最多的是BGP-4协议。
如上图,每个AS内部运行内部网关协议,但每个AS都要有数个路由器(发言人)既运行内部网关协议,也运行外部网关协议。
BGP协议
目的:力求寻找一条能到达目的网络的比较好的路由(而非最佳路由)。
协议:应用层协议,基于TCP。
算法:路径向量路由选择算法。
交换信息:到达某个网络所要经过的一系列AS。
交换:BGP刚运行时,邻站间交换整个BGP路由表,以后只需交换发生变化的部分。
内部网关协议
AS内部使用的协议,根据能否随网络的通信量或拓扑结构的变化自适应地进行调整来划分,分为静态路由算法和动态路由算法两大类。
静态路由算法:
由管理员手工配置路由信息,简单方便,适用于网络负荷稳定、拓扑变化小的网络。
动态路由算法:
路由器间彼此交换信息,按照路由算法优化出路由表项。路由更新快,适用于链路代价变化大和拓扑变化大的网络。根据路由信息交换的范围还可进一步分为:
- 分散性动态路由算法(如距离-向量路由算法中的RIP):路由器只掌握物理相邻的邻居的状况及其链路代价信息。
- 全局性动态路由算法(如链路状态算法OSPF):所有路由器都掌握完整的网络拓扑和链路代价信息。
RIP协议
RIP协议要求网络中的每一个路由器都维护从自己到其他目的网络的唯一最佳距离记录。其中距离实际上指的是跳数,即经过路由器的个数,如下图。
要点:
- RIP协议将跳数最少的路径作为最佳路径。
- 一条路径最多只能包含15个路由器,即距离等于16时表示不可达。
- 动态维护路由表:任意两个使用RIP的路由器之间,每30秒广播一次RIP路由更新信息,即将自己的路由表全部发给对方。
- RIP是应用层协议,使用UDP传送数据。
距离向量算法:
- 路由表中有三个字段:目的网络、距离、下一跳。
- 若收到地址为X的相邻路由发来的RIP报文,其中一个表项为(net1, distance, next),先进行报文修改,即将报文中“目的网络”为net1的表项的“下一跳next”修改为X,然后把“距离”字段distance的值+1。即表示:本机若经下一跳X到达目的网络net1,距离为distance+1。
- 修改后查看本机路由表,若没有目的网络为net1的这一表项,则添加;若有net1且下一跳为X,则替换,因为可能是X到net1的距离发生了变化;若有net1但下一跳不为X,且经X到net1的距离小于当前到net1的距离,说明本机到net1有了更佳的路径,替换。
- 若超时(默认180秒)未收到相邻路由器的更新路由表,则将其距离修改为16,即标记为不可达。
坏消息传的慢:
假设拓扑如图,收敛后,R1的路由表项为(net, 1, none),R2的路由表项为(net, 2, R1)。若R1某时刻发现net1不可达,则修改自己的表项为(net, 16, none),若在其向其他路由器通告之前收到了R2的路由表,则会误认为可经R2到达R1,于是修改自己的表项为(net, 3, R2),R2收到其表项后又会更新为(net, 4, R1)…一直循环直到达到16,两个路由器才都知道net不可达。
OSPF协议
要点:
- 负载均衡:如果到同一个目的网络有多条路径,则可将通信量大致均匀地分配到这几条路径。
- 路由器根据全网的拓扑结构图,采用Dijkstra算法计算到其他目的网络的最短路径,但只在路由表中存储“下一跳”。
- OSPF可将AS进一步划分为区域,采用洪泛法时只在区域内交换链路状态信息,减少了整个网络的通信量,区域内部的路由器只知道本区域的拓扑。
比较
名称 | 信息交换的对象 | 信息交换的范围 | 信息交换的时机 | 协议 | 算法 |
---|---|---|---|---|---|
BGP | 发言人之间 | 首次运行时交换整个路由表,以后只交换发生变化的部分 | 首次交换、发生变化时交换。 | 应用层协议,基于TCP | 路径向量算法 |
RIP | 相邻路由器 | 自己的路由表的全部信息 | 固定的时间间隔 | 应用层协议,基于UDP | 距离向量算法 |
OSPF | 若不划分区域,则在本AS内交换 | 只发送部分信息,即与本路由器相邻的所有路由器的链路状态。 | 链路状态发生变化时 | 网络层协议,直接使用IP数据报 | 链路状态算法 |
IP数据报
格式
字段说明:
分片
当IP数据报的长度太长,超过了链路层的最大传送单元MTU时就需要进行分片。
分片用到的IP数据报字段如下,其中片偏移是指本报文的数据部分相对于原报文数据部分的偏移。
分片例题:
IP分组的首部为20B,数据长度为1480B。
链路层MTU为800B,故最大分片中最多有780B可存数据,而分片的数据长度只能是8的倍数,故一个最大分片封装776B的数据。
需要两个分片,第一个分片的片偏移是0,第二个分片的片偏移是97(单位为8B)
分类IP地址
分类
特殊IP地址
私有IP地址
NAT
定义:将私有网络地址转换为公用地址。
作用:对外隐藏内部的IP,使得整个专用网只需一个外网IP即可与因特网连通,节省了IP地址的消耗。
实现:在专用网连通外网的路由器上安装NAT软件,其至少有一个外网IP,负责进行地址转换。
转换表:
子网
子网掩码:用于计算某个分类IP地址的网络地址,即确定其处于哪一个子网下。
子网划分,注意主机号至少为2位:
子网掩码的使用:
- 设置:同属于一个子网下的所有主机及路由器连接此子网的端口设置相同的子网掩码。
- 路由表:每个表项都包含目的网络地址
(如 141.14.64.0)
、子网掩码(如 255.255.192.0)
、下一跳地址。 - 分组转发的直接交付情形:首先从分组首部提取目的地址D
(如 141.14.72.24)
,然后对路由表的每一项计算 D & 子网掩码(如结果为 141.14.64.0)
,得到的是如果此IP属于这个子网,则其对应的网络地址为多少 ,然后将此结果与路由表项中此子网的实际网络地址对比,若相同,则此IP在此子网下,将分组直接交付。
例题:
IP所在的子网的网络地址位数:22
网络地址:180.80.76.0
广播地址:180.80.79.255
CIDR
消除了传统的A、B、C类及划分子网的概念,而是重新变为 [任意长度网络前缀 + 主机号] 的二级地址。
路由聚合:
如图,R2连接了两个子网,在R1的转发表中将占有两个表目,但是下一跳地址都是R2,为了节省资源,进行路由聚合,即将这两条表目合并为一条。
聚合的方法是:找到两个子网的网络地址的最长公共前缀,图中为206.1.0.0。
在使用CIDR时查找路由表可能会得到数个匹配长度不一样的结果,此时应选择最长匹配的那一个,这个最为具体。
ARP
无论网络层使用什么协议,在实际网络上传送数据帧时,最终必须使用硬件地址,因此需要由ARP协议完成IP地址到硬件地址的映射。
每台主机都设有一个ARP表,用来存放本局域网上各主机和路由器的IP-MAC映射。
DHCP
动态主机配置协议,一种基于UDP的用于给主机动态地分配IP地址的应用层协议。
ICMP
网际控制报文协议,用于让主机或路由器报告差错或异常情况。
ICMP报文作为IP数据报的数据部分,加上首部后,以IP数据报的形式发出。
ICMP的种类有两种:ICMP差错报文和ICMP询问报文。
ICMP差错报文分为:
- 终点不可达报文
- 源点抑制报文:用于缓解拥塞。
- 时间超过:TTL = 0。
- 参数问题:首部有问题。
- 改变路由:建议主机选择其他路由
IPv6
重点:
- 使用16B地址。
- 支持即插即用。
- IPv6在路由器上不能进行分片。
- IPv6的首部长度必须是8B的整数倍。
- 可采用隧道技术,即将IPv6的报文作为数据封装到IPv4数据报中,使其能通过只支持IPv4的网络传输。
- 零压缩法:IPv6地址有相邻的多个0时可采用双冒号缩写(如4BF5:0:0:0:BAF5:0:0:2176可缩写为4BF5::BAF5:0:0:2176),但是只能出现一次,因为双冒号代表的0的个数是任意数量的,需要用8减去有效字节推出。
组播
目的:让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机,并被其正确接收。
组播一定是针对于UDP而言的,只有UDP报文可以被同时送往多个接收者,而TCP是面向一对一连接的。
主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制,然后继续转发。
组播需要路由器的支持才能实现,能够运行组播协议(IGMP)的路由器称为组播路由器。
IP组播使用D类地址格式,范围是 224.0.0.0 到 239.255.255.255,每一个D类IP地址都标志一个组播组。
组播地址只能用于目的地址,而不能用于源地址。
对组播数据报不产生ICMP差错报文,如PING一个组播地址不会得到响应。
并非所有的D类地址都可以作为组播地址,因为有一些已被指派为永久组地址。
组播可以分为:在因特网的范围内进行组播和在局域网内进行硬件组播。
多个组播IP地址可以映射到一个以太网硬件地址,映射方法为:01-00-5E-组播IP地址的后23位转HEX。
在设计组播路由时,为了避免路由环路,引入了组播转发树。
移动IP
定义:移动结点(计算机、服务器等)以固定的IP地址实现跨越不同网段的漫游功能,保证了基于IP的网络权限不改变。
归属代理:一个移动结点的永久居所。
外部代理:一个移动结点的临时居所。
永久地址:在归属代理处的地址。
转交地址:在外部代理处的地址。
通信过程:
- A刚进入外部网络时,在外部代理处登记获得一个转交地址,离开时注销。
- 外部代理向A的归属代理登记此转交地址。
- B向A的永久地址发数据时,由归属代理截获并进行封装,新数据报的目的地址为A的转交地址,发往A的外部代理。
- 外部代理收到后拆掉隧道封装,恢复原始的IP数据报发给A。
路由器
定义:一种具有多个输入输出端口的专用计算机。
任务:转发分组。
构成:
输入端口:
输出端口: