王道计算机网络笔记整理 4网络层
- 4.1 网络层功能概述
- 4.2 IP数据报格式
- 4.3 IP数据报分片
- 4.4 IPv4地址
- 4.5 网络地址转换(NAT)
- 4.6 子网划分和子网掩码
- 4.7 无分类编址CIDR
- 4.8 ARP协议
- 4.9 DHCP协议
- 4.10 ICMP协议
- 4.11 IPv6
- 4.12 路由算法和路由协议概述
- 4.13 RIP协议与距离向量算法
- 4.14 OSPF协议与链路状态算法
- 4.15 BGP协议
- 4.16 IP组播
- 4.17 移动IP
- 2 移动IP通信过程 ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0a3d2aa78f29ba5c097dcd982b1e993a.png)
- 4.18 网络层设
4.1 网络层功能概述
主要任务:把分组从源端传到目的端,为分组交换网上不同主机提供通信服务
传输单位:数据报
*数据报和分组是父与子关系,分组是由数据报分割而来的片段
功能
- 路由选择与分组转发(即选择转发最佳路径)
- 异构网络互联(依靠路由器)
- 拥塞控制(全局性问题:所有结点来不及接受分组而要大量丢弃时,则网络处于拥塞状态)
解决:开环控制(静:在网络开始工作前进行预先控制) / 闭环控制(动:在网络开始运行时自动调整)
4.2 IP数据报格式
1 TCP/IP协议栈
*ARP协议为IP协议服务,IP协议为ICMP,IGMP协议服务
2 IP数据报格式
*首部划分为固定部分和可变部分,固定部分为一定要有且长度不变(20B),可变部分为可有可无,大多数情况下没有可变部分
- 版本:IP协议版本(IPv4/IPv6)
- 首部长度:单位为4B,由于固定部分长度为20B所以最小长度为5(即0101–1111)
- 区分服务:期望得到哪种类型的服务(很少用,只有在使用服务时起作用)
- 总长度:首部+数据,单位为1B(最大值216-1=65535B)
- 生存时间(TTL):IP分组的保质期,经过一个路由器-1,变成0丢弃
防止IP数据报一直在网络中传送 - 协议,数据部分的协议(TCP:6 UDP:17)
- 首部检验和:只检查首部
由于在传送过程中生存时间、片偏移等参数会改变,通过检验和检验数据是否出错 - 源IP地址和目的IP地址:32位(4B)
- 可选字段:0-40B,用来支持排错、测量以及安全等措施
- 填充:全0,把首部补成4B的整数倍(因为首部长度单位是4B)
4.3 IP数据报分片
1 最大传送单元MTU
链路层数据帧可封装数据的上限(即IP分组总长度要小于MTU)
*以太网MTU位1500B
IP分组总长度大于MTU---->解决办法:分片(前提是分组愿意分片)
2 IP数据报格式
- 分片:同一数据报的分片使用同一标识
用于检验该分片是属于哪一个数据报 - 标志:只有2位有意义
中间位DF(DF=1表示禁止分片,DF=0表示允许分片)
最低位MF(MF=1表示后面还有分片,MF=0表示最后一片) - 片偏移:单位为8B,指出较长分组分片后某片在原分组中相对位置
除最后一个分片,每个分片长度一定是8B的整数倍
3 例题
*分片长度指首部+数据(除最后一个分片,每个分片以最大值分)
*首部长度、标识都和源数据报相同
*片偏移=分片在元数据报起始位/8B
4.4 IPv4地址
1 IP编址的历史阶段
- 分类的IP地址:将很大的IP地址空间划分为几类
- 子网的划分
- 构成超网(无分类编址方法)
2 分类的IP地址
(1)IP地址:全世界唯一的32位/4字节,标识路由器主机的接口
*不是一个IP地址标识一个主机,一个主机可以有很多个接口
IP地址={<网络号><主机号>}
*一般使用点分十进制的写法
(2)互联网中的IP地址
*网桥无法隔离广播域,路由器可以隔离广播域,一个接口为一个广播域,分配一个网络号
(3)特殊IP地址
(4)私有IP地址:只适用于内部网络中使用
*内部地址和外部地址通信要通过NAT技术
(5)分类
*A类网络号不可用全0和127,B类和C类网络号不可用全0
*ABC三类主机号不可用全0和全1
4.5 网络地址转换(NAT)
1 私有IP地址
路由器对目的地址是私有IP地址的数据报一律不进行转发
*私有IP地址是用于本地网或专用网,只可以在本网、本地网中使用,在互联网、广域网等中路由器和主机无法识别该地址
2 网络地址转换NAT
在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址
*专用网内的主机用该有效的外部全球IP地址进行伪装,在外网中传输数据
*端口号:唯一标识主机中的具体进程,同一主机内不同进程端口号不同,不同主机内进程端口号可相同
4.6 子网划分和子网掩码
1 分类的IP地址的缺点
- IP地址空间的利用有时很低
- 两级IP地址不够灵活
2 子网划分
某单位划分子网后,对外仍表现为一个网络,即本网络外的网络看不见本单位内子网的划分
*主机号至少有两位
*子网号能否全0或全1要看情况,主机号不能全0或全1
2 子网掩码
子网掩码与IP地址逐位相与(两位都为1得1,其他情况得0)就得到子网网络地址
**主机号为全为0,子网和网络号全为1
3 子网掩码例题
4 使用子网时的分组转发
(1)前提条件
每个路由器都有一个转发表
包含:目的网络地址;目的网络子网掩码;下一跳地址(接下来去那个路由器及接口)
(2)算法
- 提取目的IP地址
- 是否直接交付
(是否在此路由器的子网内,用目的地址和此路由器子网的子网掩码相与) - 特定主机路由
(若路由表中的某一IP地址和目的地址相同,通过路由表信息进行转发) - 检测路由表中有无路径
(用目的地址和路由表中每行子网掩码都相与,若相同则按照其规定的下一跳地址往下转发) - 默认路由0.0.0.0
(交给默认路由处理,默认路由发给其他路由器循环以上步骤) - 丢弃,报告转发分组出错
(生存时间为0)
4.7 无分类编址CIDR
1 无分类域间路由选择CIDR
将网络号和子网号合并为网络前缀(可灵活调整长度)---->主机号也可灵活调整长度
- 消除了传统的A类、B类和C类地址以及划分子网的概念
- 融合子网地址和子网掩码,方便子网划分
*最小地址为本网络,最大地址为广播,均不可用
*地址块即最小地址
2 构成超网(路由聚合)
将多个子网聚合成一个较大子网(路由表中接口相同的多行网络合并成一行)
方法:将网络前缀缩短---->所有网络地址取交集
*对于二进制前16位相同
3 最长前缀匹配
使用CIDR时查找路由表可能得到几个匹配结果,应选择具有最长网络前缀的路由
*前缀越长地址块越小,路由越具体
*0.0.0.0为默认路由,即当为有匹配结果时则交付给默认路由,由默认路由转交给下一路由器重新匹配
4.8 ARP协议
1 发送数据过程
(1)同一局域网内(如主机1到主机3):
ARP高速缓存:IP地址与MAC地址的映射
在数据链路层需进行MAC地址的封装,先在ARP高速缓存内进行查找,若查找不到MAC3则广播ARP请求分组等待主机3响应
*目的地址为FF-FF-FF-FF-FF-FF,即广播
(1)同一局域网内(如主机1到主机5):
首先对主机1的IP地址和主机5的IP地址进行子网掩码,发现不在同一网络,此时将数据发给默认网关进行转发(及目的地址为路由器)
*交换机无MAC地址,下一跳地址为路由器
*路由器之间如果是点对点(即一个路由器只与另一个路由器相连接),使用PPP协议
2 ARP协议
在实际网络的链路上传送数据帧时,最终必须使用MAC地址
ARP协议:完成主机或路由器IP地址到MAC地址的映射
- 使用过程
检查ARP高速缓存,若有对应表则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组(同一局域网中所有主机都能收到该请求),目的主机收到请求后就会向源主机单播一个ARP响应分组(仅源主机收到),源主机收到后将此映射写入ARP缓存(10-20min更新一次) - 典型情况
- 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址
- 主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址
- 路由器发给本网络上的主机A:用ARP找到主机A的硬件地址
- 路由器发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址
4.9 DHCP协议
1 主机如何获得IP地址
- 静态配置:固定的有序的分配(IP地址、子网掩码、默认网关“路由器接口IP地址”)
- 动态配置
2 DHCP协议
动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP
- 作用:提供即插即用的联网机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址
- 工作过程
- 主机广播DHCP发现报文:试图寻找网络中的服务器,服务器获得一个IP地址
- DHCP服务器广播DHCP提供报文:服务器拟分配一个IP地址及相关配置
*很多个服务器都会提供,先到的主机先用 - 主机广播DHCP请求报文:主机向服务器请求提供IP地址
*广播是因为要通知其他服务器收回刚刚拟分配的IP地址 - DHCP服务器广播DHCP确认报文:服务器正式分配一个IP地址及相关配置给主机
4.10 ICMP协议
桥梁作用:为了更有效地转发IP数据报和提高交付成功的机会
1 网际控制报文协议ICMP
支持主机或路由器实现差错或异常报告和网络探询(对于出错分组进行丢弃后发送差错报告文---->特定的ICMP报文)
2 ICMP报文
*ICMP协议为网络层协议(封装在IP数据报的数据部分中)
- 类型
-
ICMP差错报告报文
**第二种 “终点抑制” 已不用 -
ICMP询问报文
*第三中和第四种已不用
- ICMP报文数据字段
3 不应发送ICMP差错报文的情况
- 对ICMP差错报告报文的数据不再发送ICMP差错报告报文(不对ICMP差错进行差错报告)
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有组播地址的数据报都不发送ICMP差错报告报文
*组播地址:一对多(有选择性) - 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报都不发送ICMP差错报告报文
4 应用
*Traceroute:跟踪路径,测算源点到终点的距离(TTL时间不同,每经过一个路由器丢弃一个分片)
4.11 IPv6
1 IPv6的产生
32位IPv4地址空间分配殆尽,IPv6从根本上解决地址耗尽问题
方法:改进首部格式
要求:
- 快速处理/转发数据报
- 支持QoS:满足实时和多媒体通信的需要
2 IPv6数据报格式
- 版本:指明协议版本(总是6)
- 优先级:指明数据报的类别和优先级(是否优先处理)
- 流标签:属于同一个流的数据报都具有同样的流标签
*流:在互联网络上从特定源点到特定终点的一系列数据报 - 有效载荷长度:包括扩展首部和数据
- 下一个首部:标识下一个扩展首部或上层协议首部(即最后一个扩展首部为数据)
- 跳数限制:相当于IPv4的TTL
3 IPv6和IPv4的区别
4 IPv6地址表示形式
冒号十六进制记法
*每一组要保证有一个0
*双冒号表示法只能在一个地址中出现一次
6 IPv6基本地址类型
- 单播(一对一通信):可做源地址/目的地址
- 多播(一对多通信):可做目的地址
- 多播(一对多中的一个通信):可做目的地址
7 IPv6向IPv4过渡的策略(两个使用不同协议的设备如何通信?)
- 双栈协议:在一台设备上同时启用IPv4协议栈和IPv6协议栈
- 隧道技术:重新封装其他协议的数据帧或包
4.12 路由算法和路由协议概述
1 最佳路由
路由表/转发表:含最佳路由相关信息
最佳路由:“最佳”只能是相对于某一种特定要求下得出的较为合理的选择(通常是路径最短、跳数最少的路径)
2 路由算法
- 分类
- 静态路由算法(非自适应路由算法)管理员手工配置路由信息
简便可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好【广泛用于高度安全性的军事网络和较小的商业网络】;但路由更新慢【不适用大型网络】 - 动态路由算法(自适应路由算法)路由器间彼此交换信息,按照路由算法优化出路由表项
路由更新快,及时响应链路费用或网络拓扑变化【适用大型网络】;但算法复杂,增加网络负担
- 动态路由算法
- 全局性(链路状态路由算法)OSPF
所有路由器掌握完整的网络拓扑和链路费用信息 - 分散性(距离向量路由算法)RIP
路由器只掌握物理相连的邻居及链路费用信息
3 分层次的路由选择协议
- 原因:
因特网规模大
许多单位不想让外界知道自己的路由选择协议 - 自治系统AS
在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由
*一个AS内所有网络属于一个行政单位管辖,一个自治系统的所有路由器必须连通 - 路由选择协议
- 内部网关协议IGP 一个AS内使用(RIP、OSPF)
- 外部网关协议EGP AS之间使用(BGP)
4.13 RIP协议与距离向量算法
1 RIP协议
- 一种分布式的基于距离向量的路由选择协议,是因特网的协议标准---->简单
- 要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录
*距离:通常为跳数,即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1
*从一路由器到直接连接的网络距离为1,RIP允许一条路由最多包含15个路由器,故距离为16表示网络不可达---->只适用于小互联网
2 交换方式 - 仅和响铃路由器交换信息
- 路由器交换的信息是自己的路由表
- 每30s交换一次,根据新信息更新路由表
*超过180s没收到相邻路由器的通告,则判定相邻路由器没了,并更新路由表
经过若干次更新后所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器地址(即收敛)
3 距离向量算法
4 RIP协议的报文格式
RIP是应用层协议:使用UDP(传输层协议)传送数据–>该数据是由应用层传下来的
一个RIP报文最多可包括25个路由:超过时用新RIP报文传送
5 RIP协议特点
好消息传得快,换消息传得慢
当网络出现故障时要经过较长的时间才能将此信息传送到所有路由器(即慢收敛)
R1收到后会更新路由表,误认为经过R2可以到达网1,不断更新直至次数达16次
4.14 OSPF协议与链路状态算法
1 OSPF协议
- 开放最短路径优先协议:“开放”表示OSPF协议不受某一家厂商控制,而是公开发表的;“最短路径优先”是因为使用Dijkstra提出的最短路径算法SPF
- 使用分布式的链路状态协议
2 交换方式
- 使用洪泛法向自治系统内所有路由发送信息
*路由器通过输出端口向所有相邻的路由器发送信息,而每个相邻路由器又再次将信息发往其所有的相邻路由器 - 发送的信息是与本路由器相邻的所有路由器的链路状态(相邻路由器是谁?该链路的度量/代价)
- 只有当链路状态发生改变,路由器才会向所有路由洪泛发送此信息
最终所有路由器都能建立一个链路状态数据库(即全网拓扑图)
3 链路状态路由算法
4 OSPF的区域
OSPF可用于规模很大的网络,将一个自治系统划分为若干个更小的范围(称为区域)
每一个区域都有一个32位的区域标识符(点分十进制表示)
*区域边界路由器也是主干路由器
5 OSPF分组
*暂时将OSPF协议当作网络层协议记忆
6 特点
- 每隔30min要刷新一次数据库中的链路状态(表项)
- 由于一个路由器的链路状态只涉及到相邻路由器的连通状态,因而与整个互联网规模无直接关系
- 不存在坏消息传得慢的消息,收敛速度很快
4.15 BGP协议
1 交换方式
- 与其他AS的邻站BGP发言人(BGP边界路由器)交换信息
- 交换网络可达性的信息,既要到达某个网络锁要经过的一系列AS(是一条路径)
- 只有发生变化时更新有变化的部分
2 交换信息过程
BGP交换的网络可达性信息就是要到达某个网络锁要经过的一系列AS---->路径向量
当BGP发言人互相交换了网络可达性信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的较好路由
*边界路由器即使用BGP协议(清楚到达其他自治系统内的子网所要经过的路由),同时也使用内部网关协议(清楚从外部来的分组在自治系统内下一跳该走哪里)
3 BGP协议报文格式
BGP是应用层协议:将BGP报文放入TCP报文中作为TCP的数据段,借助TCP传送
*一个BGP发言人与其他自治系统中的BGP发言人交换路由信息就要先建立TCP连接,再次连接上交换BGP报文以建立BGP会话,利用BGP会话交换路由信息
4 特点
- 支持CIDR,因此BGP路由表应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
- BGP刚运行时交换整个BGP路由表,之后只需在发生变化时更新有变化的部分
*节省网络带宽和减少路由器的处理开销
5 BGP-4的4种报文
6 三种路由协议比较
4.16 IP组播
1 IP数据报传播方式
-
单播:用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址---->点对点
*占据带宽资源多,在发送者和每一接收者之间需要单独的数据信道 -
广播:发送数据包到同一广播域或子网内的所有设备的一种传输方式,源地址为单播地址,目的地址为FF-FF-FF-FF-FF-FF---->点对多点
-
组播(多播):网络中某些用户需要特定数据时组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发---->点对多点
*无需事先复制多份数据报,提高数据传输效率,减少主干网出现拥塞的可能性
*组播组中的主机可以是同一个物理网络,也可以来自不同的物理网络(由组播路由器“运行组播协议”支持)
2 IP组播地址
属于多播组的设备将分配一个组播组IP地址(一群共同需求主机的相同标识),让源设备能够将分组发给一组设备
- 地址范围(D类):224.0.0.0–239.255.255.255
*只能用作分组的目标地址,源地址为单播地址 - 特点:
- 组播数据报尽最大努力交付,不提供可靠交付,应用于UDP(因为大部分情况为实时通信)
- 对组播数据报不产生ICMP差错报文
- 并非所有D类地址都可作为组播地址
- 组播分类:硬件组播 / 因特网范围内组播
3 硬件组播
**组播IP地址需要根据相应的组播MAC地址在本地网络中实际传送帧 **
- 组播MAC地址:十六进制01-00-5E打头,剩下的6个十六进制位根据IP组播组地址的最后23位转换得到
*由于D类地址中5位不固定,不同的D类地址当最后23位相同时映射出的组播组地址是相同的,故收到多播数据报的主机还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃
4 IGMP协议(网际组管理协议)
IGMP协议让路由器知道本局域网上是否有主机(的进程)参加或退出某个组播组
-
在TCP/IP协议中位置
*在网络层上层,属于网络层协议,使用IP数据报传递报文 -
两个工作阶段
*组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员,而不知道组播组成员数量
5 组播路由选择协议
目的:找出以源主机为根节点的组播转发数
**对不同的多播组对应于不同的多播转发数,同一个多播组对不同的源点(不同的源主机位置)也会有不同的多播转发数
6 组播路由选择协议
- 基于链路状态的路由选择
- 基于距离向量的路由选择
- 协议无关的组播(稀疏/密集)
可以建立在任何的路由器协议之上的,虽然在建立转发树的过程中是使用单播数据报和远程路由协议,但并不要求使用相同的一个单播路由选择协议
稀疏/密集指一个组播组中的主机距离远近
4.17 移动IP
1 相关概念
移动IP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变
- 移动结点:具有永久IP地址的移动设备
- 归属代理(本地代理):一个移动结点的永久居所称为归属网络,在归属网络中代表移动结点执行移动管理功能的实体叫做归属代理
- 永久地址(归属地址/主地址):移动结点在归属网络中的原始地址
- 外部代理(外地代理):在外部网络中帮助移动结点执行移动管理功能的实体
- 转交地址(辅地址):是外部代理的地址动态配置的一个地址
2 移动IP通信过程
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0a3d2aa78f29ba5c097dcd982b1e993a.png)
4.18 网络层设
1 路由器
一种具有多个输入端口和多个输出端口的专用计算机,任务是转发分组
- 路由选择:根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换信息,不断更新维护路由表
- 分组转发:根据转发表(路由表得来)对分组进行转发---->即为数据分组寻找转发接口
*若收到RIP/OSPF分组则把分组交往路由选择处理机,若收到数据分组则查找转发表并输出
2 输入和输出端口对线路上收到的分组的处理
- 输入端口
*输入端口中的查找和转发功能在路由器的交换功能中是最重要的 - 输出端口
*若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间必定减少至零,这就使后面再进入队列的分组由于没有存储空间只能被丢弃
---->路由器中输入或输出队列产生溢出是造成分组丢失的重要原因
3 三层设备区别
4 路由表和路由转发
-
路由表:根据路由选择算法得出,用途为路由选择(总用软件实现)
*接口栏可无 -
转发表:由路由表得来(用软件或特殊硬件实现)
必须包含完成转发功能的必需信息,在转发表每行必须包含从要到达的目的网络到输出端口和某些MAC地址信息的映射
知识总结导图及要点