• 【计算机网络】第四章 网络层


    第四章 网络层

    单位:数据报、分组。分组是经过切分后的数据报

    4.1 网络层的功能

    设计思想:向上提供简单灵活、无连接的、尽力交付的数据报服务,分组可能会出错、丢失、重复、失序或者超时,采用这种思路使得网络的造价大大降低,运行方式灵活,能够适应多种应用。主要任务是将分组从源传送到目的端,为分组交换网上的不同主机提供通信服务。
    功能:

    • 路由选择和分组转发
    • 异构网络互联(不同速率、类型的网络相互连接,比如4G网和WiFI、有线网的互联)
    • 拥塞控制

    路由主要完成的两个功能是:路由选择(确定哪一条路径)和分组转发(当一个分组到达时所采取的动作)
    而网络层中使用了一种创新网络架构,称为软件定义网络SDN,将网络层划分成了集中式的控制层面和分布式的数据层面

    拥塞控制
    因为过量分组而引起的网络性能下降的情况叫做拥塞。判断网络是否拥塞的办法是观察网络吞吐量和网络负载之间的关系,如果随着网络负载增加,网络的吞吐量明显小于正常,则是轻度拥塞;如果负载增加网络吞吐量迅速下降则可能已经进入拥塞状态。而网络吞吐量降至为零的时候,整个网络陷入死锁。

    拥塞控制的办法主要分为两种:
    开环控制:在设计网络的时候事先将相关发生拥塞的情况考虑周到,力求在运行时不发生拥塞,是一种静态的预防方法
    闭环控制:采用监测网络系统去见识,及时检测哪里发生了拥塞,是基于反馈环路的一种方法,是动态的

    4.2 IPv4及其数据报

    TCP/IP协议栈主要协议有IP协议、ICMP\IGMP、ARP,其中ARP为IP提供服务,IP又为ICMP和IGMP提供服务

    1.数据报格式

    在这里插入图片描述
    固定部分:20B

    • 版本字段(4b):IPv4还是IPv6
    • 首部长度(4b):数值为5-15,表示数据报首部大小,单位为4B
    • 区分服务(8b):期望获得的服务
    • 总长度(16b):表示一整个数据报的长度,单位为1B
    • 生存时间TTL(8b):标识IP分组的保质期,经过一个路由器就减一,防止无法到达目的地的分组在网络中无意义传输
    • 协议(8b):代表运输层传下来的数据使用的是什么协议,TCP对应值为6,UDP为17
    • 首部检验和(16b):用于检验首部是否正确
    • 源地址、目的地址(各32b)

    可变部分40B

    • 可选字段(0-40字节):支持排错、测量和安全措施,可根据需求自定义IP数据报功能
    • 填充:将数据报首部填充为4B的整数倍,方便首部长度能够准确表示

    2.数据报分片

    在链路层中,会有最大传输单元限制MTU,以太网为1500Byte。一旦数据报超过MTU,则需要进行分片,将若干个数据报分割为若干个分组
    其中IP数据报的首部有三个字段是用于数据报分片的:

    • 标识(16b):同一个数据报划分出来的分组有相同的标识字段,用于表示分组属于哪个数据报
    • 标志(3b):
      • 中间位为DF(Don’t Fragment):DF=1,禁止分片,DF=0,允许分片
      • 最低位MF(More Fragment):MF=1,后面还有分片,MF=0,后面没有分片
      • 最高位无意义
    • 片偏移(13b):支出长分组分片后,某个片在原分组的位置,以8字节为一个单位,因此除了最后一个分片外每个分片长度都是8字节的倍数

    TIPS:需要注意的是,首部长度的单位数据大小为4B,总长度的单位数据大小为1B,而片偏移的单位数据大小为8B

    3.IPv4地址

    IP地址用于标识路由器主机的接口

    分类的IP地址

    IP地址=(<网络号><主机号>)
    在同一个局域网内的主机的网络号都是一致的,但是主机号不一样。路由器可以划分广播域,因此路由器的接口都连接着不同的网络,有着不同的网络号

    IP地址分类
    在这里插入图片描述
    特殊IP地址
    在这里插入图片描述
    私有IP地址:路由器对目的地址为自由IP地址的数据报一律不进行转发,只会在本局域网内使用
    在这里插入图片描述
    在这里插入图片描述
    一定要注意最大主机数要减去全0和全1两种情况

    IP地址有以下的重要特点:

    1. IP地址管理机构在分配IP地址时只负责分配网络号。路由器只根据目的主机的网络地址转发,从而减少了路由表的空间
    2. 一台路由器至少连接着两个不同的网络,所以路由上至少有两个IP地址
    3. 用转发器、网桥等物理层和链路层设备连接的LAN依旧是同一个网络,其网络号相同但是主机号不同

    注意:某些主机上可能会有多个网络接口,这些接口需要接入到不同的逻辑网络中。如果接入同一个逻辑网络,会导致IP地址冲突

    4.3 网络层协议栈

    1. NAT网络地址转换

    上述的私有IP地址只会在所在局域网内使用。

    在专用连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫做NAT路由器,这个路由器至少有一个有效的外部全球地址。在此局域网内的主机使用的都是私有IP地址,需要同公网通信则由NAT路由器代劳。持有私有IP地址的主机将访问外网的数据报传送给NAT路由器,NAT路由器收到私有IP的数据报后,用自身的公网IP创建一个数据部分一样的数据报向公网发送。

    NAT转换表:
    假设NAT路由的IP位172.38.1.5

    WAL端LAN端
    172.38.1.5:8080192.168.0.3:1000
    172.38.1.5:8081192.168.0.4:1001

    2.子网划分和子网掩码

    分类IP地址的弱点

    1. 固定划分的IP指定有时候地址空间利用率低
    2. 两级IP地址不够灵活

    划分子网的思想:
    在这里插入图片描述
    对外仍表现为一个网络,也就是本单位外的网络看不到内部的子网划分。至少要留2个位用作主机号。

    子网掩码:用于表示IP中的网络号是多少。主机位为0,网络号为1,通过子网掩码和IP地址相与就可以得到网络号。通过IP前8位可以知道从属哪个类型的网络,从而知道公网IP长度。那么剩下的位则是子网网络号。

    子网掩码的使用:
    每个路由器都会有一个路由表,路由表中内容有:

    1. 目的网络地址
    2. 目的网络子网掩码
    3. 下一跳地址
      路由器收到一个IP数据报后:
    提取IP地址
    if(可以直接交付){
    	直接交付
    }else{
    	通过子网掩码提取网络号
    	if (有对应的子网路由){
    		交付
    	}else{
    		if(有特定的主机路由){
    			交付
    		}else{
    			if(路由表中有对应路径)
    				交付
    			else{
    				交付给默认路由
    				如果分组寿命结束,则丢弃,并报告分组出错
    			}
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    3.CIDR无分类编址

    面临问题:IP地址很快分配完毕,路由表中项目急剧增长。
    CIDR将网络号和子网号合二为一称为网络前缀,而且网络前缀变长
    特点:

    1. 消除了传统了ABC类地址以及划分子网得概念
    2. 融合了子网地址和子网掩码,方面子网划分 在这里插入图片描述
    构成超网

    将多个子网聚合成一个较大的子网,称之为构成超网,又称为路由聚合
    主要的方法是将两个子网的子网IP取网络交际作为合成的大子网的IP,此时IP的网络前缀会缩短。
    在这里插入图片描述
    上面的例子中,网络1和网络2构成一个超网后,该超网的IP位206.1.0.0/16

    划分子网是将一个网络划分为多个网络
    构成超网是将多个子网合称为一个子网

    最长前缀匹配

    使用CIDR的时候,数据报查找路由表可能得到几个匹配的结果,将数据报中的目的地址IP和各个匹配结果相与得到匹配的网络前缀,应该选择具有最长网络前缀的路由,前缀越长,地址块越小,路由越具体。
    正如邮件上的地址一样,地址越长越详细,有些地址只写到了市,而有些地址写到了街道,那么应该优先选用写到了街道的地址。
    注意:最长前缀匹配要求匹配的目的网络的网络前缀一定要比其网络前缀长度要长,否则不是目的网络

    4.ARP协议

    ARP协议是最接近数据链路层的网络层协议。ARP高速缓存是主机和路由中对IP地址和MAC地址的映射。而ARP协议负责的是完成主机或者路由器IP地址到MAC地址的映射,也是解决下一跳该去哪的问题。

    使用过程:
    如果源主机要向目的主机P发送数据,则先检查ARP高速缓存,查询主机P对应的MAC地址,有则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装成ARP广播分组,并将其广播出去,同一局域网内所有主机都能收到请求。目的主机P收到请求分组后,会向源主机单播一个ARP相应分组,其中携带有主机P的IP和MAC地址,源主机收到后将此映射写入ARP缓存(10-20min更新一次),并且使用该MAC地址通信。

    • 注意:每个主机都会有ARP高速缓存,都有ARP地址转换表

    ARP使用的4种典型情况
    在这里插入图片描述

    |IP1(路由)|IP3(目的)|MAC1(路由)|目的物理地址(全为0)|
    目的物理地址全0位

    如果源主机想要访问的主机不在本局域网内:

    5.DHCP协议

    获取IP地址有静态配置和动态配置两种方法,主要配置IP地址、子网掩码、默认网关。默认网关是一个默认的路由,是主机同外网通讯的中介。
    DHCP协议是一种动态分配IP地址的协议,实际上是一种应用层协议,客户端和服务端通过广播的方式进行交互,基于UDP和CS架构。是一个提供即插即用联网机制,可以同服务期动态获得IP地址、子网掩码、默认网关、DNS服务器等,允许地址重用,支持移动用户加入网络,支持在用地址续租。

    步骤:
    1.主机广播DHCP发现报文,用于查询网络中是否有DHCP服务器
    2.DHCP服务器广播DHCP提供报文:服务器准备分配给主机一个IP地址及其配置,先到先得
    3.主机广播DHCP请求报文:请求使用目前服务器给出的IP地址
    4.DHCP服务器广播确认报文:向所有主机确认该IP地址被分配给了谁

    6.ICMP协议

    位于网络层和运输层的交界,用于支持主机和路由器进行差错报告网络探寻。ICMP报文被装载于IP数据报的数据部分。
    在这里插入图片描述

    ICMP差错报告报文:
    1. 终点不可达:路由器或主机不能交付数据报
    2. 源点抑制:拥塞丢弃数据时
    3. 时间超过:路由器收到生存时间TTL的数据报的时候发送该报文,或者目的主机在规定时间内没有收到一个报文的完整所有分组的时候也发送该报文,并且将已收到的部分丢弃
    4. 参数问题:首部字段有问题
    5. 改变路由(重定向):当网络中有更好更优的路径抵达目的主机时,路由器把改变路由路径报文发回给主机

    在这里插入图片描述
    不应该发送ICMP差错报文的情况:
    6. 对ICMP差错报告报文不再发送
    7. 对具有组播地址的数据报
    8. 对第一个分片的数据报片后的所有后续分片都不发送

    ICMP询问报文

    类型:

    1. 会送请求和回答报文:比如ping命令,测试目的站是否可达并且了解其状态
    2. 时间戳请求和回答报文:请求某个主机或者路由器回答日期和时间,进行时钟同步和测量时间
    3. 掩码地址请求和回答报文
    4. 路由器询问和通告报文

    应用:
    ping:测试两个主机之间的联通性,使用回送请求回答报文
    traceroute:跟踪一个分组从源点到终点的路径,使用ICMP时间超时报告报文

    7.IPv6

    IPv4的地址已经分配殆尽,哪怕是CIDR和NAT也无法帮他续命
    那么IPv6可以根本解决地址耗尽问题
    在这里插入图片描述
    IPv6基本首部结构:
    在这里插入图片描述

    • 版本:数据报版本,为IPv6
    • 优先级:区分数据报的类别和优先级
    • 流标签:流指的是互联网络上从特点源点到特定终点的一系列数据报,所有属于同一个流的都有同样的流标签
    • 有效在和长度:指数据报有效载荷部分长度
    • 下一个首部:用于指向本数据报中的下一个首部的位置,比如说指向扩展首部的位置,如果没有下一个首部则指向数据位置
    • 跳数限制TTL
    • 源地址和目的地址(各128位)
    IPv6和IPv4的区别

    在这里插入图片描述

    • IPv6将首部检验和移除
    • IPv6首部部分定长,变长部分移动到了有效载荷
    IPv6地址表示形式

    在这里插入图片描述
    单播:一对一通信,可作为源地址+目的地址
    多播:一对多通信,可作为目的地址
    任播:一对多中的一个通信,可作为目的地址,给一个组中的其中一个地址传输数据

    IPv6向IPv4过渡的策略

    双栈协议
    在一台设备商同时启用IPv4和IPv6的协议栈,这样的话,这台设备既可以和IPv4网络通信,也可以和IPv6通信,会同时拥有IPv4和IPv6两种地址。
    隧道技术
    在IPv6数据报外面再包装一层IPv4的数据报首部使得其可以在IPv4的体系内传输


    4.4 路由算法

    4.4.1 概述

    路由算法会将最佳路由路径加入到路由的路由表中,其中的最佳只是相对于某一种特定要求下得出的较为合理的结果的选择,比如说路由器跳数最少。

    4.4.2 静态路由与动态路由

    路由器转发分组是通过路由表转发的,而路由表是通过各种算法得到的,根据是否能自适应地根据网络通信量和拓扑结构进行调整变化来划分,可以讲路由算法分为静态路由和动态路由

    静态路由算法指的是由网络管理员手工配置的路由信息,当网络拓扑结构或者链路状态发生改变的时候,需要管理员手工修改路由表中相关的静态路由信息。大型网络一般不宜采用静态路由,因为网络管理员难以全面了解整个网络的拓扑结构,并且当网络结构发生变化时,路由器中的静态路由信息需要大量更改。

    动态路由算法又称为自适应路由算法,指路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,这些信息会不断的更新,以适应不断变化的网络。

    静态路由的有点在于简便可靠,在负荷稳拓扑结构变化不大的网络中效果挺好。而动态网络能够改善网络的性能并有助于流量控制,但是算法复杂,会增加网络的负担,并且可能因对动态变化的反应太快而引起震荡,或者反映太慢影响网络的一致性。动态算法主要分为距离-向量路由算法(分散性算法)和链路状态路由算法(全局性算法)

    分层次的路由选择协议
    当网络规模扩大的时候,路由器的路由表成比例扩大,这会需要越来越多的时间去扫描越来越庞大的路由表,也占用了更多的网络带宽。而且一些单位不希望外界知道自己的路由选择协议,需要对外界隐藏协议信息。

    因此因特网将整个网络划分为许多小的自治系统AS,一个自治系统中包含很多局域网。自治系统内有权自主决定本系统内应该采用何种路由。因此路由选择协议分为了两大类:

    • 内部网关协议(IGP),用于决定AS内部的路由选择协议,也成域内路由选择
    • 外部网关协议(EGP),用于在不同的自治系统的路由之间交换信息,比如BGP协议



    4.4.3 距离-向量路由选择算法(RIP协议)

    适用于较为小规模的网络,优点是简单

    路由表

    在该算法中,每一个路由器都要维护一个从他自己到其他每一个网络的唯一最佳距离记录。这些路由选择表包括:

    • 每条路径的目的地(另一节点)
    • 路径的代价(距离)
    • 下一跳路由器
      在这里插入图片描述
      其中距离为到达目的网络的跳数,RIP允许一条路由最多有15个路由,因此距离16表示网络不可达。
    路由表的交换和更新
    • RIP只会和相邻的路由交换信息,而且路由器交换的是自己的路由表
    • 每30秒更新一次路由信息,然后路由器更具新信息更新路由表,如果超过180s没有收到邻域路由器的信息,则认为邻居没了,将邻居移出自己的路由表
    • 路由刚开始工作时,只知道直接相连的网络的距离,在若干次更新之后,所有路由都会知道到达本自治系统任何一个网络的最短距离和下一跳地址,也就是收敛

    在该算法中,所有节点都需要参与距离向量的交换,以保证路由的有效性和一致性,就是所有节点都简介从其他节点传来的路由选择更新信息。并且会在下列情况下更新他们的路由表:

    1. 被通告由一条新的路由,路由表将该条路由加入到路由表中
    2. 发来的路由信息中有一条到达某个目的地的路由的通路,该路由通路与当前使用的路径相比距离更加短,则路由表会丢弃距离长的路由,并且更新路由表。

    他要求每个节点更新时将它的全部路由表发送给所有的相邻节点。那么,更新报文的数量就和节点数量成正比,大的通信子网将导致需要发送非常多的更新报文,这是一个不利的因素。典型的距离-向量路由选择算法为RIP算法

    RIP协议的报文用于在相邻路由之间传输路由表,由首部和路由部分组成,并且用UDP用户数据报封装,然后再交由IP数据报封装。其中一个RIP报文中最多包含25个路由项,如果路由表过长则需要发送多个RIP报文

    RIP算法具体过程

    在这里插入图片描述
    其次,RIP协会会出现好消息传得快,坏消息传的慢的问题,又称为慢收敛。如果一个路由X不可达,这会导致另外两个路由不断地循环交换路由表,直到其中目的地址为X的表项到达了16之后,才能确认X不可达


    4.4.4 开放最短路径优先算法(OSPF)和链路状态协议

    该算法使用了Dijkstra提出的最短路径算法SPF最主要的特征是使用分布式的链路状态协议。首先,在自治系统内会采用链路状态路由算法来使得,每一个路由都能获得一个记录了全网网络结构的全网拓扑图,然后再使用SPF算法计算出最优路径

    • 和谁交换信息:使用洪泛法向本自治系统内的所有路由器发送信息
    • 交换什么:交换的是和本路由器相邻的所有路由器的链路状态(比如费用、距离、时延、带宽,取决于用户希望使用什么衡量标准)
    • 多久交换:只有在链路状态发生变化的时候

    最后,所有的路由器都能获得一个链路状态数据库,也就是全网拓扑图

    链路状态算法具体过程

    在这里插入图片描述
    在第6步之后,整个网络的每个路由都有完整的网络拓扑,接下来就是根据这些信息结合SPF算法来求出最短路径,该算法主要在数据结构中有所叙述。

    OSPF分组

    OSPF直接使用IP数据报传送,OSPF分组包括分组首部和后面的OSPF类型
    OSPF有五种分组:

    1. 问候分组Hello:用于发现和维持和临站的可达性
    2. 数据库描述分组DD:向临站给出自己链路状态数据库中的链路信息
    3. 链路状态请求分组LSR:请求对方发送某些链路状态项目
    4. 链路状态更新分组LSU:用洪泛法对全网更新链路状态
    5. 链路状态确认分组LSAck:对链路更新分组进行确认
    OSPF的区域

    为了使得OSPF能够用于规模很大的网络,会将自治系统再划分为若干个小范围,每个区域都有一个32位的标识符,并且路由器最好不超过200个
    在这里插入图片描述
    这使得需要交换的信息的种类增多了,并且使得OSPF需要考虑更多情况,协议变得更复杂了,但是需要交换的信息量大大减少了

    特点
    1. 每隔30min刷新一次数据库中的链路状态
    2. 不存在坏消息传的慢的问题,收敛速度慢
    3. 由于一个路由器的链路状态只涉及与之相邻的路由的联通状态,因此和整个互联网规模无关,因此当互联网规模很大的时候吗,其性能要比RIP好很多



    4.4.5 BGP协议

    BGP用于自治系统之间交换信息

    • 主要和其他AS的临站BGP发言人交换信息,发言人是自治系统中负责对外通讯的边界路由
    • 交换的是网络可达性信息,也就是到达某个网络所需要经过的AS
    • 只有发生变化的时候才交换信息
    BGP协议交换信息的过程

    BGP发言人互相交换了网络可达性信息之后,各个BGP发言人会根据所采用的策略从收到的路由信息中找到到达各个AS的较好路由。因为想要找出最好路由付出的代价太大

    其中交换的信息是一组完整的路径,是一组路径向量。其中BGP协议报文需要先被TCP报文封装,然后再被IP数据报封装。

    特点
    1. 支持CIDR,因此BGP路由表也应包括网络前缀,下一跳路由,和经过的AS序列
    2. 在BGP刚运行的时候,会和临站交换整个BGP路由表,而往后只需要在发生变化时交换发生变化的部分
    3. BGP交换路由信息的节点数量级是自治系统的数量级,要不这些自治系统的网络数少很多
    4. 每个自治系统中BGP发言人的数目是很少的,这就使得路由选择不是太困难
    BGP-4的四种报文

    在这里插入图片描述

    4.4.6 三种协议的比较

    在这里插入图片描述
    在这里插入图片描述

    4.5 IP组播

    单播、广播和组播的区别

    在这里插入图片描述
    组播提高了数据传输效率,减少了主干网出现拥塞的概率,组播组中的主机可以再同一个物理网络,或者来自不同的物理网络。

    IP组播地址

    在这里插入图片描述
    在组播中,分为了两个过程:因特网范围内组播和硬件组播。

    硬件组播

    将IP组播转化为组播MAC地址
    在这里插入图片描述
    两个第5到第10位不一样的组播IP会映射到同样的组播MAC地址,因此收到都播数据报的主机还需要再IP层面利用软件进行过滤,将不是本机接受的数据报丢弃

    IGMP协议和组播路由选择协议

    要使得路由器知道组播成员的信息,还需要利用因特网管理协议IGMP,IGMP协议让路由器知道本局域网上是否有主机参加或者推出了某个组播组。主机使用IGMP协议可以知道本局域网内是否有可以接收组播数据报的路由器。

    IGMP工作的两个阶段

    在这里插入图片描述
    组播路由协议可以找出以源主机为根节点的组播转发树,因此构造树可以避免在路由之间兜圈子
    通常基于三种算法:

    • 基于链路状态的路由选择
    • 基于距离-向量的路由选择
    • 协议无关的组播(稀疏型/密集型)

    4.6 移动IP

    移动节点可以通过固定的网络IP地址,实现跨越不同网段的漫游功能,并且保证了基于网络IP的网络权限在漫游过程中不发生任何改变
    在这里插入图片描述

    4.7 网络层设备

    路由器

    具有多个输入和输出端口,负责转发分组的专用计算机
    在这里插入图片描述
    在这里插入图片描述
    输入端口中查找和算法功能在路由器的交换功能中是最重要的
    在这里插入图片描述
    如果路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到0,这会使得后面在进入队列的分组由于没有存储空间而只能被丢弃
    路由器中输入或者输出队列产生溢出是造成分组丢失的重要原因

    在这里插入图片描述

    路由表和路由转发

    路由表根据路由选择算法得出,主要用途是路由选择,使用软件实现。默认路由是在没有对应表项的时候,默认发送给该路由
    在这里插入图片描述

    转发表由路由表得出来,转发表必须包含某些完成转发的必要信息,比如说在每一行必须要包含从要到达的摸底网络到输出端口和某些MAC地址信息的映射

  • 相关阅读:
    【电源专题】开关稳压器vs线性稳压器
    Vue08/Vue 生命周期钩子函数( Vue生命周期11个阶段 )应用场景
    Spring Security配置
    SpringCloud Alibaba
    集合注入实例(八)
    Go 语言特性与设计哲学
    LeetCode第81场双周赛
    springboot+实验课程辅助管理系统 毕业设计-附源码191113
    如何更改eclipse的JDK版本
    到底什么样的数字化才是企业需要的?用2个数字化案例告诉你
  • 原文地址:https://blog.csdn.net/weixin_45434953/article/details/126875381