网络层概述
# 网络层概述
# 分组转发和路由选择
网络层的主要任务就是将分组从源主机经过多个网络和多段链路传输到目的主机,可以将该任务划分为分组转发和路由选择两种重要的功能。
对于路由器如何选择从哪个接口转发分组,是由转发表和路由表来决定的。
# 网络层向上提供两种服务
面向连接的虚电路服务
无连接的数据报服务
# 异构网络互连
# 网际协议IP
# 异构网络互连
当IP网上的主机进行通信时,就好像在一个单个网络上通信一样,它们看不见互连的各网络的具体异构细节
# IPv4
# 基本概念
IPv4地址是给因特网(Internet)上的每一个主机(或路由器)的每一个接口分配的一个在全世界范围内唯一的32比特的标识符。
# 表示方法
由于IPv4地址由32比特构成,不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。
# 分类编制方法
网络号
- 标志主机(或路由器)的接口所连接到的网络
- 同一个网络中,不同主机(或路由器)的接口的IPv4地址的网络号必须相同,表示它们属于同一个网络。
主机号
- 标志主机(或路由器)的接口
- 同一个网络中,不同主机(或路由器)的接口的IPv4地址的主机号必须各不相同,以便区分各主机(或路由器)的接口。
# 划分子网编址方法
# IPv4地址的应用规划
IPv4地址的应用规划是指将给定的IPv4地址块(或分类网络)划分成若干个更小的地址块(或子网),并将这些地址块(或子网)分配给互联网中的不同网络,进而可以给各网络中的主机和路由器的接口分配IPv4地址。
定长的子网掩码
- 所划分出的每一个子网都使用同一个子网掩码。
- 每个子网所分配的IP地址数量相同,容易造成地址资源的浪费。
变长的子网掩码
- 所划分出的每一个子网可以使用不同的子网掩码。
- 每个子网所分配的IP地址数量可以不同,尽可能减少对地址资源的浪费。
# IPv4地址与MAC地址
# IPv4地址与MAC地址的封装位置
# 数据包传送过程中IPv4地址与MAC地址的变化情况
- 在数据包的传送过程中,数据包的源IP地址和目的IP地址保持不变
- 在数据包的传送过程中,数据包的源MAC地址和目的MAC地址逐链路(或逐网络)改变。
在这个过程中,涉及到如果通过IP地址找出其相应的mac地址。
如果仅使用mac地址进行通信,则会出现以下主要问题:
- 因特网中的每台路由器的路由表中就必须记录因特网上所有主机和路由器各接口的MAC地址。
- 手工给各路由器配置路由表几乎是不可能完成的任务,即使使用路由协议让路由器通过相互交换路由信息来自动构建路由表,也会因为路由信息需要包含海量的MAC地址信息而严重占用通信资源。
- 包含海量MAC地址的路由信息需要路由器具备极大的存储空间,并且会给分组的查表转发带来非常大的时延。
因特网的网际层使用IP地址进行寻址,就可使因特网中各路由器的路由表中的路由记录的数量大大减少,因为只需记录部分网络的网络地址,而不是记录每个网络中各通信设备的各接口的MAC地址。
# 地址解析协议
通过ARP自动获取,生命周期默认为两分钟,手工配置,不同操作系统下的生命周期不同,例如系统重启后不存在或系统重启后依然有效。
# IP数据报的发送和转发流程
IP数据报的发送和转发过程包含两个过程:
- 主机发送IP数据报
- 路由器转发IP数据报
针对源主机如何判断目的主机是否与自己在同一个网络中:
对于C主机,C主机想知道F的IP地址,C将F的IP地址的前25比特取出,与自己的25比特网络前缀比较发现不相同,所以不再同一个网络中。
# IPv4数据报的首部格式
IPv4数据报的首部格式及其内容是实现IPv4协议各种功能的基础。
在TCP/IP标准中,各种数据格式常常以32比特(即4字节)为单位来描述。
固定部分是指每个IPv4数据报都必须要包含的部分。
某些IPv4数据报的首部,除了包含20字节的固定部分,还包含一些可选的字段来增加IPv4数据报的功能。
# 版本
长度为4个比特,用来表示IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议的版本号为4(即IPv4)。
# 首部长度
长度为4个比特,该字段的取值以4字节为单位,用来表示IPv4数据报的首部长度。
- 最小取值为二进制的0101,即十进制的5,再乘以4字节单位,表示IPv4数据报首部只有20字节固定部分。
- 最大取值为二进制的1111,即十进制的15,再乘以4字节单位,表示IPv4数据报首部包含20字节固定部分和最大40字节可变部分。
# 可选字段
长度从1字节到40字节不等,用来支持排错、测量以及安全措施等功能。虽然可选字段增加了IPv4数据报的功能,但这同时也使得IPv4数据报的首部长度成为可变的,这就增加了因特网中每一个路由器处理IPv4数据报的开销。但是实际上,可选字段很少被使用。
# 填充
用来确保IPv4数据报的首部长度是4字节的整数倍,使用全0进行填充。
# 总长度
长度为16个比特,该字段的取值以字节为单位,用来表示IPv4数据报的长度(首部长度+数据载荷长度)。
# 标识、标志、片偏移
共同用于IPv4数据报分片
# 静态路由配置
静态路由配置是指用户或网络运维人员使用路由器的相关命令给路由器手工配置路由表。人工配置方式简单、开销小,但不能及时适应网络状态(流量、拓扑等)的变化,一般只在小规模网络中采用。
# 因特网的路由选择协议
# 路由选择分类
# 分层次的路由选择协议
# 路由信息协议
# 基本概念
路由信息协议(Routing Information Protocol,RIP)是内部网关协议中最先得到广泛使用的协议之一,其相关标准文档为[RFC 1058]。
RIP要求自治系统AS内的每一个路由器,都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为距离向量(Distance-Vector,D-V)。
RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。
RIP将路由器到直连网络的距离定义为1。
RIP将路由器到非直连网络的距离定义为所经过的路由器数加1。
RIP允许一条路径最多只能包含15个路由器,距离等于16时相当于不可达。因此RIP只适用于小型互联网。
和谁交换
仅和相邻路由器交换信息。
交换什么信息
路由器自己的路由表,即本路由器到所在自治系统AS中各网络的最短RIP距离,以及到各网络应经过的下一跳路由器。
何时交换信息
周期性交换:为了加快RIP的收敛速度,当网络拓扑发生变化时,路由器要及时向相邻路由器通告拓扑变化后的路由信息,这称为触发更新。
# 工作流程
- 路由器刚开始工作时,只知道自己到直连网络的RIP距离为1。
- 每个路由器仅和相邻路由器周期性地交换并更新路由信息。
- 若干次交换和更新后,每个路由器都知道到达本自治系统AS内各网络的最短距离和下一跳路由器,称为收敛。
# 距离向量算法
- N2,为相同的下一跳,最新消息,要更新
- N3,为新的网络,直接更新
- N6,不同的下一跳,新路由优势,要更新
- N8,不同的下一跳,RIP距离相等,可以等价负载均衡,添加
- N9,不同的下一跳,新由劣势,不更新
# 存在的问题
# 报文的封装
RIP相关报文使用运输层的用户数据报协议UDP进行封装,使用的UDP端口号为520。
- 从RIP报文封装的角度看,RIP属于TCP/IP体系结构的应用层。
- 但RIP的核心功能是路由选择,这属于TCP/IP体系结构的网际层。
# RIP的优缺点
# 开放最短路径优化协议
# OSPF的相关基本概念
开放最短路径优先(Open Shortest Path First,OSPF)协议是为了克服路由信息协议RIP的缺点在1989年开发出来的。
- “开放”表明OSPF协议不是受某一厂商控制,而是公开发表的。
- “最短路径优先”是因为使用了Dijkstra提出的最短路径算法(Shortest Path First,SPF)。
- OSPF是基于链路状态的,而不像RIP是基于距离向量的。
- OSPF基于链路状态并采用最短路径算法计算路由,从算法上保证了不会产生路由环路。
- OSPF不限制网络规模,更新效率高,收敛速度快。
# OSPF的五种分组类型
# 问候
问候(Hello)分组封装在IP数据报中,发往组播地址224.0.0.5。IP数据报首部中的协议号字段的取值为89,表明IP数据报的数据载荷为OSPF分组。
- 问候分组的发送周期为10秒
- 若40秒未收到来自邻居路由器的问候(Hello)分组,则认为邻居路由器不可达
# 数据库描述
使用OSPF的每一个路由器都有一个链路状态数据库(Link State Database,LSDB),用于存储链路状态通告LSA。
# 链路状态请求
用来向邻居路由器请求发送某些链路状态项目的详细信息
# 链路状态更新
路由器使用链路状态更新分组将其链路状态信息进行洪泛发送,即用洪泛法对整个系统更新链路状态。
# 链路状态确认
对链路状态更新分组的确认分组。
# OSPF的基本工作流程
# 多点接入网络中的OSPF路由器
# OSPF划分区域
为了使OSPF协议能够用于规模很大的网络,OSPF把一个自治系统AS再划分为若干个更小的范围,称为区域(area)。
# 边界网关协议
# BGP的相关基本概念
边界网关协议(Border Gateway Protocol,BGP)属于外部网关协议EGP这个类别,用于自治系统AS之间的路由选择协议。
由于在不同AS内度量路由的“代价”(距离、带宽、费用等)可能不同,因此对于AS之间的路由选择,使用统一的“代价”作为度量来寻找最佳路由是不行的。
在配置BGP时,每个AS的管理员要选择至少一个路由器作为该AS的“BGP发言人”。
# BGP-4的四种报文
# 打开
用来与相邻的另一个BGP发言人建立关系,使通信初始化。
# 保活
用来周期性地证实邻站的连通性。
# 更新
用来通告某一条路由的信息,以及列出要撤销的多条路由。
# 通知
用来发送检测到的差错。
# 路由器的基本工作原理
路由器是一种具有多个输入端口和输出端口的专用计算机,其任务是转发分组。
# 网际控制报文协议
# 网际控制报文协议ICMP概述
为了更有效地转发IP数据报以及提高IP数据报交付成功的机会,TCP/IP体系结构的网际层使用了网际控制报文协议。
主机或路由器使用ICMP来发送差错报告报文和询问报文。
ICMP报文被封装在IP数据报中发送。
# ICMP报文种类
# 差错报告报文
用来向主机或路由器报告差错情况。
# 询问报文
用来向主机和路由器询问情况。
回送请求和回答
由主机或路由器向一个特定的目的主机或路由器发出。收到此报文的主机或路由器必须给发送该报文的源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。
时间戳请求和回答
用来请求某个主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32比特的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。这种询问报文用来进行时钟同步和测量时间。
# ICMP的典型应用
- 分组网间探测:分组网间探测PING用来测试主机或路由器之间的连通性。
- 跟踪路由:用于探测IP数据报从源主机到达目的主机要经过哪些路由器。
# 虚拟专用网和网络地址转换
# 虚拟专用网
利用公用的因特网作为本机构各专用网之间的通信载体,这样形成的网络又称为虚拟专用网。
# 网络地址转换
网络地址转换(Network Address Translation,NAT)技术于1994年被提出,用来缓解IPv4地址空间即将耗尽的问题。
- NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源
- 这种方法需要在专用网络连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器称为NAT路由器,它至少要有一个有效的外部全球地址IPG。这样,所有使用内部专用地址的主机在和外部因特网通信时,都要在NAT路由器上将其内部专用地址转换成IPG。
# IP多播
# IP多播技术的相关基本概念
多播(Multicast,也称为组播)是一种实现“一对多”通信的技术,与传统单播“一对一”通信相比,多播可以极大地节省网络资源。
# IP多播地址和多播组
多播地址只能用作目的地址,而不能用作源地址。
用每一个D类地址来标识一个多播组,使用同一个IP多播地址接收IP多播数据报的所有主机就构成了一个多播组。
- 每个多播组的成员是可以随时变动的,一台主机可以随时加入或离开多播组。
- 多播组成员的数量和所在的地理位置也不受限制,一台主机可以属于几个多播组。
# 网际组管理协议
# IGMP的三种报文类型
成员报告报文
成员查询报文
离开组报文
# IGMP的基本工作原理
加入多播图
监督多播组的成员变化
退出多播组
# IPv6
# IPv6数据报的基本首部
# IPv6数据报的扩展首部
因此,为了提高路由器对数据包的处理效率,IPv6把原来IPv4首部中的选项字段都放在了扩展首部中,由路径两端的源点和终点的主机来处理,而数据报传送路径中的所有路由器都不处理这些扩展首部(除逐跳选项扩展首部)。
# IPv6地址空间大小
在IPv6中,每个地址占128个比特。IPv6地址空间大小为𝟐^𝟏𝟐𝟖
# IPv6地址的表示方法
# IPv6地址的分类
# 目的地址
- 单播:传统的点对点通信
- 多播:一点对多点的通信。数据报发送到一组计算机中的每一个。IPv6没有采用广播的术语,而将广播看作多播的一个特例。
- 这是IPv6新增的一种类型。任播的终点是一组计算机,但数据报只交付其中的一个,通常是按照路由算法得出的距离最近的一个。
# 地址分类
未指明地址
环回地址
多播地址
本地链路单播地址
全球单播地址
# 参考
https://github.com/BloothOfYouth/Computer-Network-Notes
https://www.bilibili.com/video/BV1c4411d7jb/