[计网]4.网络层

目录:

网络层

网络层的概述

  • 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输
  • 要实现网络层任务,需要解决以下问题

    • 网络层向运输层提供怎样的服务(可靠传输还是不可靠传输)
    • 网络层寻址问题
    • 路由选择问题
    • 因特网是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈
    • TCP/IP协议栈的网络层使用网际协议IP,因此在TCP/IP协议栈中网络层常称为网际层

网络层提供的两种服务

面向连接的虚电路服务

虚电路表示这是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而不是真正建立一条物理连接

与其不同的则是电话通信,其则是建立一条真正的连接

虚电路的核心思想如下所示

  • 可靠通信由网络来保证
  • 必须建立网络层的连接 —— 虚电路VC
  • 通信双方沿着已建立的虚电路发送分组
  • 目的主机的地址仅在建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)
  • 这种通信方式如果再使用可靠传输的网络协议,就可以使所发送的分组最终正确到达接收方(无差错、按序到达、不丢失、不重复)
  • 通信结束后,需要释放之前所建立的虚电路

无连接的数据报服务

无连接是因特网采用的一种服务,其核心思想如下:

  • 可靠通信应当由用户主机来保证
  • 不需要建立网络层连接
  • 每个分组可走不同的路由
  • 每个分组的首部必须携带目的主机的完整地址
  • 这种通信方式所传送的分组可能误码、丢失、重复和失序
  • 由于网络本身不提供端到端的可靠传输,基于这种服务的路由器可以很简单,很便宜
  • 因特网采用了此思想

两种服务的区别

image-20211005035915168

IPv4地址概述

  • IPv4地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符
  • IPv4地址由因特网名字和数字分配机构ICANN进行分配
  • IPv4地址的编址方法经历了如下三个历史阶段

    • 分类编址
    • 划分子网
    • 无分类编址
  • IPv4地址采用点分十进制的表示方法以方便用户使用
  • 8位bit对应的十进制如下所示

image-20211005165402631

分类编址的IPv4地址

  • A类地址:网络号8位,主机号24位,网络号开头一位固定为0
  • B类地址:网络号16位,主机号16位,网络号开头两位固定为10
  • C类地址:网络号24位,主机号8位,网络号开头三位固定为110
  • D类地址:D类地址为多播地址,开头四位固定为1110
  • E类地址:E类地址为保留地址,保留为今后使用,开头四位固定为1111

注意事项:

  1. 只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口
  2. 主机号为"全0"的地址是网络地址,不能分配
  3. 主机号为"全1"的地址是广播地址,不能分配

image-20211005171740507

A类地址

  • 最小网络号为0,保留不指派
  • 最大网络号127,作为本地环回测试地址,不指派

    • 最小的本地环回测试地址为:127.0.0.0.1
    • 最大的本地环回测试地址为:127.255.255.254
  • 第一个可指派的网络号为1,网络地址1.0.0.0
  • 最后一个可指派的网络号为126,网络地址为126.0.0.0
  • 可指派的网络数量为:2^(8-1) - 2 = 126

    • 减 2 的原因是除去最小网络号和最大网络号
  • 每个网络中可分配IP地址的数量为: 2^34 - 2 = 16888214

    • 减 2 的原因是除去主机号全为0的网络地址和全为1的广播地址

B类地址

  • 最小网络号为128.0,也是第一个可指派的网络号,网络地址为128.0.0.0
  • 最大网络号191.255,也是最后一个可指派的网络号,网络地址为191.255.0.0
  • 可指派的网络数量为:2^(16-2) = 16384
  • 每个网络中可分配IP地址的数量为: 2^16 - 2 = 65534

    • 减 2 的原因是除去主机号全为0的网络地址和全为1的广播地址

C类地址

  • 最小网络号为192.0.0,也是第一个可指派的网络号,网络地址为192.0.0.0
  • 最大网络号223.255.255,也是最后一个可指派的网络号,网络地为223.255.255.0
  • 可指派的网络数量为:2^(24-3) = 2097152
  • 每个网络中可分配IP地址的数量为: 2^8 - 2 = 254

    • 减 2 的原因是除去主机号全为0的网络地址和全为1的广播地址

划分子网的IPv4地址

  • 子网掩码:用于划分子网的工具,其长度为32比特,

    • 32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号
    • 子网掩码使用连续的比特1来对应网络号和子网号
    • 子网掩码使用连续的比特0来对应主机号
    • 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在的子网的网络地址

image-20211005172655762

注意:每个子网也有主机号全为0的网络地址和主机号全为1的广播地址,这两个地址不予分配

  • 给定一个分类的IP地址和其相应的子网掩码,就可知道子网划分的细节:

    • 划分出的子网数量
    • 每个子网可分配的IP地址数量
    • 每个子网的网络地址和广播地址
    • 每个子网可分配的最小和最大的地址
  • 默认的子网掩码是指在未划分子网的情况下使用的子网掩码

    • A类:255.0.0.0
    • B类:255.255.0.0
    • C类:255.255.255.0

无分类编址的IPv4地址

划分子网在一定程度缓解了因特网在发展过程中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁

为此,提供了无分类编址的方法来解决IP地址紧张的问题

无分类域间路由选择CIDR

  • CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念
  • CIDR可以更加有效的分配IPv4的地址空间
  • CIDR采用“斜线记法”,即在IPv4地址后面加上斜线"/",在斜线后面写上网络前缀所占比特数量
  • image-20211005174018936
  • CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块”
  • 我们只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节

    • 地址块的最小地址
    • 地址块的最大地址
    • 地址块中的地址数量
    • 地址快聚合某类网络(A类、B类、C类)的数量
    • 地址掩码(也可继续称为子网掩码)

例如:

image-20211005174649813

路由聚合(构造超网)

  • 路由聚合(构造超网)的方法是找共同前缀
  • 网络前缀越长地址块越小,路由越具体
  • 若路由器查表转发分组时有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配
  • 注意:找共同前缀是找其比特前缀相同的部分,而不是其十进制相同的部分

IPv4地址的应用规划

  • 定长的子网掩码FLSM

    • 使用同一个子网掩码来划分子网
    • 子网划分方式不灵活:只能划分出2^n个子网(n是从主机号部分借用的用来作为子网号的比特数量)
    • 每个子网所分配的IP地址数量相同,造成IP地址的浪费
  • 变长的子网掩码VLSM

    • 使用不同的子网掩码来划分子网
    • 子网划分方式灵活:可以按需分配
    • 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费

IP数据报的发送和转发过程

IP数据报的发送和转发过程包含以下两部分:

  • 主机发送IP数据报

    • 判断目的主机是否与自己在同一个网络

      • 若在同一个网络,则属于直接交付
      • 不再同一个网络,则属于间接交付,传输给主机所在网络的默认网关(路由器),由默认网关帮忙转发
  • 路由器转发IP数据报

    • 检查IP数据报首部是否出错

      • 若出错,则直接丢弃该IP数据报并通告源主机
      • 若没有出错,则进行转发
    • 根据IP数据报的目的地址在路由表中查找匹配的条目

      • 若找到匹配的条目,则转发给条目中指示的下一条
      • 若找不到,则丢弃该IP数据报并通告源主机

静态路由配置及其可能产生的路由环路问题

  • 静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表

    • 这种人工配置方式简单,开销小,但不能及时适应网络状态(流量、拓扑等)的变化
    • 一般只在小规模网络中采用
  • 使用静态路由配置可能出现以下导致产生路由环路的错误

    • 配置错误
    • 聚合了不存在的网络
    • 网络故障
  • 路由条目类型

    • 直连网络
    • 静态路由(人工配置)
    • 动态路由(路由选择协议)
  • 特殊的静态路由条目

    • 默认路由(目的网络为0.0.0.0,子网掩码为0.0.0.0)

      • 在查表时若为查到目的主机的条目,则转发自默认路由
    • 特定主机路由(目的网络为特定主机的IP地址,地址掩码为255.255.255.255)
    • 黑洞路由(下一跳为null0)

      • 为了避免路由环路,null0为虚拟接口

路由选择协议的概述

  • 静态路由选择:

    • 由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由
    • 这种人工配置方式简单、开销小、但不能即使适应网络状态(流量、拓扑)的变化
    • 一般只在小规模网络中采用
  • 动态路由选择

    • 路由器通过路由选择协议自动获取路由信息
    • 比较复杂,开销比较大、能较好的适应网络状态的变化
    • 适用于大规模网络
  • 因特网采用的路由选择协议的主要特点:

    • 自适应:动态路由选择,能较好的适应网络状态的变化
    • 分布式:路由之间交换路由信息
    • 分层次:将整个因特网划分为许多较小的自治系统AS
  • 常用的路由选择协议:

    • 内部网关协议IGP:设法使分组再一个自治系统内尽可能有效的从源网络传输到目的网络

      • 基于距离向量的有:路由信息协议RIP
      • 基于链路状态的有:开放式最短路径优先OSPF
    • 外部网关协议EGP:在不同的自治系统中,度量路由的"代价"可能不同,对于自治系统之间的路由选择,使用"代价"作为度量来寻找最佳路由是不行的

      • 边界网关协议BGP:力求寻找到一条能够达目的网络且比较好的路由,而并非寻找一条最佳路由

路由信息协议RIP

  1. 路由信息协议RIP是内部网关协议IGP中最先得到广泛使用的协议之一
  2. RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录,这是一组距离,称为"距离向量D-V"
  3. RIP使用跳数作为度量来衡量到达目的网络的距离

    1. 路由器到直连网络的距离定义为1
    2. 路由器到非直连网络的距离定义为所经过的路由器数加1
    3. 允许一条路径最多只包含15个路由器,"距离"等于16时相当于不可达因此,RIP只适用于小型互联网
  4. RIP认为好的路由就是”距离短“的路由,也就是所通过路由器数量最少的路由
  5. 当到达同一目的的网络有多条"距离相等"的路由时,可以进行等价负载均衡
  6. RIP包含以下三个要点:

    • 仅和相邻路由器交换信息
    • 交换的信息为自己的路由表
    • 其为周期性交换(每过一个特定时间交换一次)
  7. RIP的工作过程与BFS有相近的地方

    1. 路由器刚开始工作时,只知道自己到直连网络的距离为1
    2. 每个路由器仅和相邻路由器周期性的交换并更新路由信息
    3. 若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛
  8. RIP存在"坏消息传播的慢"的问题

    1. "坏消息传播慢"又称为路由环路或距离无穷计数问题,这是距离向量算法的一个故有问题,可采用以下措施来减少此问题出现

      • 限制最大路径距离为15(16表示不可达)
      • 触发更新:当路由表发生变化时就立即发送更新报文,而不仅是周期性发送
      • 水平分割:让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送

★开放最短路径优先OSPF协议

  • 开放:表明OSPF协议不是受某一厂商控制,而是公开发表的
  • 最短路径优先:采用了DIjkstra提出的最短路径算法SPF,使用该算法保证了不会产生路由环路
  • OSPF:基于链路状态的,而不是向RIP那样基于距离向量的
  • 链路状态:指本路由都和哪些路由相邻,以及相应的链路代价

    • 代价:用来表示费用、距离、时延、带宽等等
  • 链路状态通告LSA:每个路由器产生的直连网络的链路状态信息和邻居路由器的链路状态信息

    • 链路状态更新分组LSU:LSA被封装在其中,采用洪泛法发送
    • 链路状态数据库LSDB:使用OSPF的每个路由器都有一个,用于存储LSA
  • 通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终达到一致
  • 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表
  • OSPF有以下五种分组类型:

    1. 问候分组
    2. 数据库描述分组
    3. 链路状态请求分组
    4. 链路状态更新分组
  • OSPF在多点接入网络中路由器邻居关系的建立

    • 选举指定路由器DR备用的指定路由器BDR
    • 所有非DR/BDR只于DR/BDR建立邻居关系
    • 非DR/BDR之间通过DR/BDR交换信息
  • 为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,叫做区域

    • 划分区域的好处:把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个自治系统

边界网关协议BGP

  • BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由
  • 在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的"BGP发言人"
  • 不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179

    1. 在此TCP连接上交换BGP报文以建立BGP会话
    2. 利用BGP会话交换路由信息(例如,增加新的路由,撤销过时的路由,以及报告出错的情况等)
    3. 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站对等站
  • BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF或RIP
  • BGP发言人交换网络可达的信息(要到达某个网络所要经过一系列的自治系统)
  • 当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找到到达各自治系统的较好的路由,
  • BGP-4有以下四种报文:

    1. OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化
    2. UPDATA(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由
    3. KEEPALIVE(保活)报文:用来周期性的证实邻站的连通性
    4. NOTIFICATION(通知)报文:用来发送检测到的差错

★IPv4数据报的首部格式

image-20211006172824654

  1. 版本字段:占4比特,表示IP协议的版本

    • 通信双方使用的IP协议的版本必须一致
  2. 首部长度:占4比特, 表示IP数据报的首部长度,该字段的取值以4字节为单位

    • 最小十进制取值为5,表示IP数据报首部只有20字节固定部分
    • 最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分
  3. 区分服务:用来获得更好的服务,未被使用过
  4. 总长度字段:占16比特,表示IP数据报的总长度(首部+数据载荷)

    • 最大取值为十进制的65535,以字节为单位
  5. 数据分片:当IP数据报的总长度超过MTU(最大传输单元),无法封装,需要进行分片
  6. 标识:占16比特,属于同一个数据报的各分片数据报应该具有相同的标识,IP软件维持一个计数器,每产生一个数据报,计数器值就加1,并将此值赋给标识字段
  7. 标志:占3比特,各比特含义如下

    1. DF位:1表示不允许分片,0标识允许分片
    2. MF位:1表示"后面还有分片",0表示"这是最后一个分片"
    3. 保留位:必须为0
  8. 片偏移:占13比特,指出分片数据报数据载荷部分偏移其在原数据报的位置有多少个单位,片偏移以8个字节为单位

    • 例如:image-20211006180506824
  9. 生存时间TTL:占8比特,最初以秒为单位,最大为255秒,路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器所耗费的时间,若不为0则转发,否则丢弃

    • 现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则丢弃
    • 生存时间解决了路由环路的问题
  10. 协议:占8比特,指明IPv4数据报的数据部分是何种协议数据单元,常用的一些协议和相应的协议字段值如下

    1. image-20211006181019147
  11. 可选字段:用来支持排错、测量及安全等措施,很少使用
  12. 填充字段:确保首部长度为4字节的整数倍,使用全0进行填充
  13. 首部校验和:占16比特,用来检测首部在传输过程中是否出现差错

★网际控制报文ICMP

为了更有效的转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP

  • 主机或路由器使用ICMP来发送差错报告报文询问报文
  • ICMP报文被封装在IP数据报中发送
  • ICMP差错报告报文共有以下五种

    1. 终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文
    2. 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢
    3. 时间超过:当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1,若结果不为0,则将该IP数据报转发出去,若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文

      • 当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片丢弃,也会向源点发送时间超过报文
    4. 参数问题:当路由器或目的主机收到IP数据报厚,根据其首部中的校验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文
    5. 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)
  • 以下情况不应该发送ICMP差错报告报文:

    1. 对ICMP差错报告报文不再发送ICMP差错报告报文
    2. 对第一个分片的数据报分片的所有后续数据报问篇都不发送ICMP差错报告报文
    3. 对具有多播地址的数据报都不发送ICMP差错报告报文
    4. 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
  • 常用的ICMP询问报文有以下两种

    1. 回送请求和回答

      • ICMP回送请求报文是由主机或路由器向特定的目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文
      • 这种询问报文用来测试目的站是否可达及了解其有关状态
    2. 时间戳请求和回答

      • ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间
      • 这种询问报文用来进行时钟同步和测量时间
  • ICMP应用:

    1. 分组网间探测PING
    2. 跟踪路由traceroute

虚拟专用网VPN

  • 虚拟专用网:利用公用的因特网作为本机构各专用网之间的通信载体
  • 内联网VPN:同一机构内不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN
  • 内部数据报加密:VPN要保证传输数据的安全性,会将原始的内部数据报进行加密,然后再将其封装成为因特网上发送到外部的外部数据报
  • 外联网VPN:有时一个机构的VPN需要某些外部机构参加进来,这样的VPN就称为外联网VPN
  • 远程接入VPN:在范围之外的主机连接VPN软件即可建立与内部网主机的VPN隧道

网络地址转换NAT

由于IP地址的紧缺,一个机构能够申请到的IP地址数量往往远小于本机构所拥有的主机数量,因此,虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的公有地址

  • NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源
  • 网络地址与端口号转换NAPT:由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据

    • 因此可以利用运输层的端口号和IP地址一起进行转换
    • 这样用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信

本文链接:

https://nullcode.fun/175.html
1 + 8 =
快来做第一个评论的人吧~