『computer network-3』network layer

网络层

一、网络层提供的两种服务

  • 面向连接的服务:虚电路;以电信公司为代表的一派支持,电话没有差错处理能力,故传输网络必须可靠

    • 通信双方开始数据传输前,先由网络建立连接,由网络保证数据传输可靠性
    • 虚电路通信时,首部无需填写完整的目的主机地址,只需要填写虚电路编号(减少分组开销)

    注意:虚电路只是一种逻辑连接,分组沿逻辑连接传送,并不是真正建立了一条物理连接

  • 无连接的服务:数据报;以Internet为代表的一派支持,电脑比电话有更强的差错处理能力

    • 网络在发送数据时不需要先建立连接,每个分组在网络中独立传送
    • 网络层要设计得尽可能简单,向上层提供简单灵活、无连接的、尽最大努力交付的数据报服务(不可靠交付)

    注意:网络层不保证服务质量,分组可能出错、丢失、重复或失序;由上层运输层负责可靠通信


二、网际协议IP

  • 网际协议(Internet Protocol):TCP/IP体系中最重要的两个协议之一

    • 各层网络的中间设备:将网络互相连接的设备

      • 物理层:转发器

      • 数据链路层:网桥 or 交换机

        注意:物理层 和 数据链路层 的设备知识把网络扩大了,不能称之为网络互连

      • 网络层:路由器,真正的网络互连

      • 网络层以上:网关(比较复杂、使用较少)

    • 虚拟互连网络:即 逻辑互联网络,屏蔽了各网络的具体异构细节,在网络层上看好像是一个统一的网络

      • 直接交付:查找转发表,若目的主机本网络上,就不需要经过路由器而是直接交付
      • 间接交付:查找转发表,若目的主机不在本网络上,就需要转发给其它路由器进行间接交付
  • 分类的IP地址:分配给主机或路由器的标识符,目前使用的IPv432位IP地址;IP地址由ICANN机构分配

    • IP地址的表示方法:32bit,采用点分十进制记法,将IP地址用4段十进制数字表示,并在段间插入一个小数点

    • IP地址的分类:分为A、B、C、D、E五类,IP地址 ::= {<网络号>, <主机号>}

    • 各地址的范围:看点分十进制的最高字节

      • A类地址:最高字节 \(\le\) 127
      • B类地址:128 \(\le\) 最高字节 \(\le\) 191
      • C类地址:192 \(\le\) 最高字节 \(\le\) 223
      • D类地址:224 \(\le\) 最高字节 \(\le\) 239
      • E类地址:240 \(\le\) 最高字节 \(\le\) 255
  • 特殊IP地址:这些IP地址不会被指派,仅用于特定情况

    • {0, 0}:本网络上的本主机;能作为源地址,不能作为目的地址
    • {0, X}:本网络上主机号为 X 的主机;能作为源地址,不能作为目的地址
    • {全1, 全1}:本网络上进行广播的地址(路由器不转发);不能作为源地址,能作为目的地址
    • {Y, 全1}:对网络号为 Y 的网络上的所有主机进行广播;不能作为源地址,能作为目的地址
    • {127, 非全0且非全1}:用于本机软件回环测试;能作为源地址,能作为目的地址
  • IP地址的特点:

    • 分等级的地址结构:
      • 网络前缀是第一级地址(由管理机构分配),主机号是第二级地址(由单位自行分配,便于管理
      • 转发时仅考虑网络前缀,无需考虑目的主机号 \(\Rightarrow\) 减少转发表所占存储空间,缩短查找转发表的时间
    • 多归属主机:由于路由器至少连接到两个网络上,故一个路由器至少有两个不同的IP地址
    • 用转发器(物理层)或交换机(链路层)连接的网络仍属于一个网络;拥有不同网络前缀的局域网必须使用路由器进行互联
    • 同一个局域网上的主机 or 路由器使用的网络前缀(网络号)必须相同;局域网地址的主机号部分为全0
    • 匿名网络:点对点链路("/31",即只有两个IP地址)构成的网络不分配IP地址(节省IP地址资源)

  • IP地址与硬件地址(MAC地址):

    • IP地址:网络层 及 以上各层使用的地址,是一种逻辑地址;设置在IP数据报首部
    • 物理地址:数据链路层 以及 物理层使用的地址;设置在MAC帧首部

  • ARP与RARP协议:分别实现同一局域网内 IP地址 \(\rightarrow\) MAC地址 MAC地址 \(\rightarrow\) IP地址 的转换

    • ARP高速缓存:存放本局域网内各主机或路由器的IP地址到MAC地址的转换项

    • ARP(发送)请求分组:发送方IP地址 + 发送方MAC地址 + 接收方IP地址

    • ARP(接收)响应分组:接收方IP地址 + 接收方MAC地址

      注意:ARP发送请求是局域网内广播发送,ARP响应请求是局域网内单播发送(只返回给发送方)


    • 主机A想给本局域网上的主机B发送IP包:

      1. 在主机A的ARP cache中查找主机B的IP地址项
      2. 若存在主机B的IP地址项,将对应的硬件地址写入MAC帧,通过局域网发送
      3. 若不存在,在局域网内广播ARP请求;当主机B收到ARP请求时,向主机A返回ARP应答(告知B的物理地址)

      注意:ARP解决同一局域网内IP地址和硬件地址的映射问题;若目的主机不在本局域网内,IP包需经路由器转发

    • 运行ARP协议:主要分为以下四种情况:

      • \(\text{H}_1\)发送数据至同一网络\(\text{H}_2\)\(\text{H}_1\)广播(\(\text{N}_1\))ARP请求分组,获得\(\text{H}_2\)的MAC地址
      • \(\text{H}_1\)发送数据至不同网络\(\text{H}_3\)\(\text{H}_1\)广播(\(\text{N}_1\))ARP请求分组,获得连接两个网络的\(\text{R}_1\)的MAC地址(剩余工作由\(\text{R}_1\)完成)
      • \(\text{R}_1\)发送数据至邻接网络\(\text{H}_3\)\(\text{R}_1\)广播(\(\text{N}_2\))ARP请求分组,获得\(\text{H}_2\)的MAC地址
      • \(\text{R}_1\)发送数据至非邻接网络\(\text{H}_4\)\(\text{R}_1\)广播(\(\text{N}_2\))ARP请求分组,获得连接\(\text{N}_2\)\(\text{R}_2\)的MAC地址(剩余工作由\(\text{R}_2\)完成)

      注意:ARP cache中的每个映射项目都有生存时间,超过生存时间的项目会被删除

  • IP数据报的格式:首部 + 数据

    • 首部固定部分:

      • 版本:占4bit,目前IP协议版本是IPv4;通信双方使用协议IP版本必须一致

      • 首部长度:占4bit,单位为一个word(32bit) \(\Rightarrow\) 首部长度最长可达60Byte(15 \(\times\) 32 / 8 Byte)

      • 区分服务:占1byte,表示服务类型,一般被忽略

      • 总长度:占2byte,表示首部 + 数据部分总长度,单位为一个Byte \(\Rightarrow\) 总长度最大可达65535Byte

      • 标识:占2btye;当数据报长度 > MTU时要分片传输,各数据报片具有相同的标识,便于各分片重装为原来的数据报

      • 标志:占3bit,其最低位为MF、中间一位为DF,最高位无意义 MF=1表示该分片后面"还有分片",MF=0表示是最后一个分片 DF=1表示“不能分片”,DF=0表示允许分片7

      • 片偏移:占13bit,表示该分片相对于原分组中数据字段起点偏移,单位为8Byte

      • 生存时间:占8bit,表示跳数限制;每次转发时就将TTL减一,减小至0就丢弃(防止无法交付的数据报浪费网络资源)

      • 协议:占8bit,表示该数据报携带的数据使用何种协议,如ICMP、IP、TCP、UDP、IGMP等

      • 首部校验和:占16bit,只检验数据报首部,不包括数据部分;最终结果(取反后)为全0则可以保留

        • 反码求和:将n个长度为16bit的字按行排列,写出每列"1"的个数

          1. 拆分数字:将各列数字拆分成 1 + (若干2的幂次之和) or 0 + (若干2的幂次之和)
        1. 进位:将拆分得到的若干2的幂次按2进制权重向前累加到对应的列上,原列只保留1 or 0
        2. 循环迭代:若最高位拆分得到的数仍 > 1,继续拆分之,并将拆分得到的数回添到末位上;直至各列位置均 = 0 or 1

        注意:也可用16进制计算,各列求和后拆分得到16的倍数 + <16的数进位 + 循环迭代直至各列位置均 < 16 (0~9A~F)

      • 源地址、目的地址:各占32bit,分别表示发送IP数据报的主机IP地址 和 接收IP数据报的主机IP地址

    • 首部可变部分:选项字段,长度可变,用来支持排错、测量以及安全等措施;实际很少被使用


三、划分子网和构造超网

  • 划分子网的目的:分类IP地址无法适应Internet快速发展的需要(主机数量庞大 + 访问子网需求)

  • 三级IP地址 与 子网掩码:

    • 三级IP地址:net-id + subnet-id + host-id
    • 子网掩码:net-id 和 subnet-id 部分全1,host-id 部分全0

    • 子网地址 = 主机IP地址 & 子网掩码
  • 使用掩码的分组转发过程:路由表项 = 目的网络地址 + 目的网络子网掩码 + 下一跳

    1. 路由器提取分组首部的目的IP地址D
    2. 与路由器直接相连的各网络的子网掩码D逐位相“与”,若与D匹配直接交付,否则间接交付(即转入下一步) 匹配 \(\Leftrightarrow\) (目的地址) & (子网掩码) = (主机地址) & (子网掩码)
    3. 若路由表中存在目的地址为D的特定主机路由,则将分组传送给对应的下一跳路由(否则转入下一步)
    4. 路由表中的各子网掩码D逐位相“与”,若其结果与该行目的地址匹配,则传送给对应的下一跳路由(否则转入下一步) 匹配 \(\Leftrightarrow\) (目的地址) & (子网掩码) = (目的网络地址)
    5. 若路由表中存在默认路由,则传送给路由表中指明的默认路由器,否则报告转发分组出错

    注意:子网内部通过数据链路层MAC帧实现直接交付,涉及ARP缓存的查询


  • 无分类编址 CIDR:用于缓解IP地址枯竭的问题

    • 网络前缀:代替分类地址中的网络号 + 子网号,IP地址 = {<网络前缀>, <主机号>}

      • CIDR记法:IP地址后添 "/n",n表示IP地址高n位是网络前缀
    • CIDR地址块:由网络前缀相同的连续IP地址组成

      • 最小地址 = <网络前缀> + 全0
      • 最大地址 = <网络前缀> + 全1

      注意:CIDR是无分类的,如果IP地址未指明前缀长度("/n"),就不知道网络地址是什么

    • 地址掩码:用于计算网络地址,高n位为全1,剩余低位为全0;网络地址 = IP地址 && 地址掩码

    • 路由聚合 与 构成超网:

      • 超网:一个CIDR地址块可包含多个分类地址网络,如 255.255.254.0/23(512个主机)可容纳两个C类网络(256个主机)
      • 路由聚合:一个表项 \(\rightarrow\) 很多个传统分类地址(可减少路由表中表项的个数),减少了查找转发表所需要的时间
    • 最长前缀匹配:选择匹配成功的表项中具有最长网络前缀的路由

      1. 目的地址D依次与路由表中各掩码进行“按位与”操作:(掩码) & (数据报目的地址) = (表项网路地址)
      2. 若 (某项掩码) & (目的地址D) = (该项网络地址),说明匹配成功
      3. 匹配成功的若干表项中选出网络前缀最长的表项,转发至对应出口

      注意:网络前缀越长,说明CIDR地址块越小,路由也就越具体


四、网际控制报文协议 ICMP

  • ICMP的作用:报告错误 + 测试

  • ICMP报文格式:ICMP位于IP层,封装在IP包内传输

    注意:首部的检验和检验首部,ICMP报文中的检验和检验数据报

  • ICMP报文协议:差错报告报文 + 询问报文,主要包括以下9种类型(“询问”包括request+reply)

    • 差错报告报文:向源主机发送
      • 终点不可达:路由器 or 主机无法传输报文时向源主机发送
      • 源点抑制:路由器 or 主机由于拥塞丢弃报文时,向源主机发送此报文,使其放慢发送速度
      • 超时:当报文字段TTL=0时,路由器丢弃该报文,并向源主机发送此报文
      • 参数问题:路由器 or 主机收到的报文中头部有非法字段时,丢弃数据包,并向源主机发送此报文
      • 重定向:路由器向源主机发送此报文告知路由改变,主机下次发送数据报给另外的路由器
    • 询问报文:向目的主机发送
      • 回声探测:测试网络连通性
      • 请求时间:可用于时间同步
    • 应用实例:Ping(回声探测,主机回应) + Traceroute(超时检测, 一系列报文的TTL=1, 2, 3, ...)

五、路由算法及协议

  • 路由器根据路由信息转发分组;路由信息由路由协议生成;路由算法是路由协议的核心

  • 理想路由算法的特性:

    • 正确 + 完整:可根据路由正确寻址
    • 计算上简单、不能增加过多开销
    • 具有自适应性:根据通信量 + 网络拓扑 变化调整路由
    • 具有稳定性:通信量和拓扑稳定时,能快速收敛
    • 公平性:对所有用户公平
    • 最佳路由:能找出最好的路由(时延)
  • 静态路由 与 动态路由

    • 静态路由:非自适应 + 简单开销小(无法及时适应网络变化)+ 适用于小规模网络(人工设置路由)
    • 动态路由:自适应 + 复杂开销大(较好地适应网络状态变化)+ 适用于大规模网络(算法协议计算)
  • 自治系统AS:一组路由器,AS内部使用 路由选择协议 + 共同的度量 确定AS内的路由

    • 内部网关协议IGP:AS内部使用的路由选择协议,如RIP和OSPF
    • 外部网关协议EGP:若源站和目的站处在不同的自治系统中,自治系统边界使用EGP将路由选择信息传递到另一个AS中

  • RIP报文:距离向量路由协议

    • RIP特点:

      • 简单、适用于小规模网络
      • 距离定义为路由器跳数:最长为15、16表示不可达
      • 仅与相邻路由器交换信息(即路由表),每30s交换一次
    • RIP格式:属于用户层协议,封装在UDP用户数据报中

    • RIP优势与缺陷:

      • 优势:实现简单,开销较小
      • 缺陷:”坏消息传得慢“
        • 网络出现故障时,要经过很长的时间才能传送到所有路由器
        • 支持的网络规模有限($$15)
        • 每次交换完整的路由表,这导致随着网络规模扩大,开销随之增加
  • 距离向量路由:动态路由算法;各路由器维护一张路由表,存放 目的网络 - 最短距离 - 下一跳 的表项

    1. 路由器R收到相邻路由器X的RIP报文,把报文下一跳地址改为X把报文中所有距离d加1得到d',报文目的地址仍为N
    2. 对改后RIP报文中的每个项目:
      • 若R的路由表中不存在目的网络N,直接将该项目加入路由表即可(N不可达 \(\Rightarrow\) N可能可达)
      • 若R的路由表中存在目的网络N
        • 若其下一跳地址仍是X,必须用新的项目更新该项目(保证路由信息是最新的)
        • 若其下一跳地址不是X,且d'小于原先距离,用最新的项目覆盖该项目(松弛操作);否则不更新
    3. 若3min内未收到相邻路由器的更新路由表(标明邻居不可用),则把此相邻路由器更新为16

  • 链路状态路由:

    • 链路状态:本路由器与哪些路由器相邻,以及该链路的“度量
    • 链路状态数据库:每个路由器各自建立,均包含全网络的拓扑结构图,各db保持一致(链路状态数据库的同步
      注意:RIP协议并不知道全网的拓扑结构,只知道全网络dist + 下一跳地址
    • 路由表构建:基于全网拓扑图,使用dijkstra算法计算本路由器到其它节点的最佳路径,构建路由表
  • 链路状态路由算法:以下均为双向操作

    1. 每个节点向邻居发送问候分组(间隔10s一次),了解邻居节点的网络地址、是否可达
    2. 设置到它每个邻居的成本度量metric
    3. 构造DD分组,向邻站提供自己数据库中已有的链路状态摘要信息
    4. (根据摘要信息)邻站向本站发送LSR分组,请求本站没有的 or 可更新的信息
    5. 本站收到邻站的LSR分组后,发送LSU分组对链路进行更新;更新完毕后,邻站返回LSA分组确认

    注意:只要有一个路由器链路状态发生改变,就要使用洪泛法更新全网链路状态,且收到更新分组后要返回确认

  • OSPF协议:属于链路状态路由协议,直接通过IP数据报传送(不使用UDP)

    • OSPF特点:

      • 收敛速度快:当链路状态发生变化时,通过洪泛方式告知本AS中的其它节点
        注意:“洪泛”是指向除了输入链路外的所有其他链路发送数据,之后每个相邻路由器接着向所有相邻路由器发送数据("BFS")
      • 适用于较大规模的网络:仅在链路状态发生变化发送洪泛信息,不会产生很大的通信量
    • OSPF类型:Hello确定可达性,其余类型用于达到数据库的同步

      • 问候(Hello)分组:用来发现和维持邻站可达性
      • 数据库描述(DD)分组:向邻站给出自己的链路状态数据库所有链路状态项目摘要
      • 链路状态请求(LSR)分组:向对方请求某些链路状态项目的详细信息
      • 链路状态更新(LSU)分组:用洪泛法对全网络更新链路状态
      • 链路状态确认(LSA)分组:对链路更新分组(LSU)的确认

    • 划分区域:OSPF将一个AS进一步划分为若干个区域,便于管理大规模网络

      • 优势:将洪泛范围限制在一个区域而不是整个自治系统,减少整个网络上的通信量

      • 层次结构的区域划分:每个区域拥有一个32位的区域标识符(用点分十进制表示);主干区域用于连通其它下层区域

      注意:一个区域内的路由器只知道本区域内的完整网络拓扑,不知道其它区域的网络拓扑


  • 外部网关路由协议 BGP:不同AS路由器之间交换路由信息的协议

    • BGP发言人:每个AS至少要选择一个路由器作为BGP speaker,与其它AS的BGP speaker交路由换信息

      • 连接方式 与 选择条件:通过一个共享网络连接、一般选自AS边界路由器(也可以不是)
      • 通信条件:路由信息交换由TCP协议进行,在TCP连接上交换BGP报文建立BGP会话

      注意:BGP发言人除了运行BGP协议外,还要运行AS内部网关路由协议(RIP or OSPF)

    • 信息交换 与 路由生成

      • 信息交换:交换网络可达性信息,即要到达某个网络所经过的一系列AS(路径向量)
      • 路由生成:BGP发言人交换了网络可达性信息后,根据策略找到到达各AS的较好的路由
    • BGP-4报文:包括以下4种

      • OPEN报文:与相邻的另一个BGP发言人建立联系
      • UPDATE报文:发送某一路由信息 + 列出要撤销的多条路由,路由信息变化时发送
      • KEEPALIVE报文:确认打开报文(OPEN) + 周期性证实邻站关系
      • NOTIFICATION报文:传送检验到的差错
    • BGP协议的特点:

      • 交换路由信息的节点数量级 约等于 AS个数,大大少于所有AS中的网络数
      • 各AS中的BGP发言人数量很少,使AS之间的路由选择不至于过于复杂
      • BGP支持CIDR,故BGP路由表中包括目的网络前缀 + 下一跳路由器
      • BGP刚开始运行时,邻站交换完整的BGP路由表;之后只在发生变化时更新,有利于节省网络带宽 + 减少处理开销

  • 路由器:具有多个输入/输出端口的专用计算机,任务是转发分组

    • 路由器组成:路由选择(控制层面,根据路由选择协议构建路由表)+ 分组转发(数据层面,交换结构 + 一组输入/输出端口)

    • 分组转发:

      • 报文转发速率影响因素:输入/输出端口性能 + 交换机构的性能
      • 衡量路由器性能的指标:packet per second,简写为pps
    • 输入和输出端口处理:

      注意:在端口队列中排队会产生时延;分组处理速率 < 分组进队速率 会导致丢包(无队列存储空间)


  • 网络的控制平面与数据平面

    • 控制平面:生成路由表 + 转发表;数据平面:进行分组的快速转发
    • 软件定义网络SDN:
      • 控制层面:
        • SDN控制器:维护准确的网络状态信息 + 为运行在控制平面的网络控制应用程序提供这些状态信息
        • 网络控制应用程序:根据SDN控制器提供的方法,监视编程控制下方的网络设备
      • 数据层面:根据转发表进行数据转发
      • 特点:
        • 控制平面数据平面分离:控制器负责计算转发表,路由器仅实现转发
        • 网络控制远离数据层面的网络交换机:由软件实现控制层面,包含 SDN控制器 + 若干网络控制应用程序
        • 可编程的网络:利用控制层面的网络控制应用程序,使网络成为可编程的
      • 优势:可以灵活快速地控制路由 / 转发策略;适用于路由策略变化频繁的网络

六、IP组播

  • 组播(多播):用于实现一点多点的数据传输
    • 优势:可大大减少网络流量,应用于网络视频服务
    • 组播数据报:使用D类IP地址(1110...),每个D类地址标志一个多播组,其IP首部协议字段是2,表示使用IGMP协议
      注意:多播地址只能用于目的地址,不能用于源地址;多播数据报不产生ICMP差错报文
    • 组播类别:包含以下2种
      • 在局域网中的硬件组播:将MAC地址中特定地址段作为组播地址,并与IP组播地址形成对应关系
      • 在Internet中的组播:
        • 需要组播路由器
        • 主机通过IGMP协议组播路由器通信,加入 or 退出某个组播组
        • 组播路由器之间通过组播路由协议实现组播数据报的传输

七、NAT 与 VPN

  • 网络地址转换 NAT:

    • 专用地址:只能用于机构内部的保留地址,Internet中的路由器不转发目的地址为专用地址的包 注意:专用地址可减少IP地址空间的占用,提高安全性
    • 网络地址转换:当内部网络使用专用地址时,与Internet通信需要经过NAT路由器,实现外网数据包内网地址的转换

  • 虚拟专用网 VPN:涉及隧道、加密、身份认证等技术

    • 多个企业 or 机构的内部网络间互连实现方法:

      • 租用专用网络,形成专用网,成本高昂
      • 基于公用网路,形成虚拟专用网VPN
    • 基于Internet建立VPN的两种情形:

      • 内部网络间通过Internet互连
      • 远程用户访问某内部网络(remote access VPN)
    • 典型的VPN实现技术:IPSec(工作在网络层) or SSL(Web浏览器内置支持)

    • VPN架构:使用隧道技术,效果好像在本部门的专用网上传输


『computer network-3』network layer
http://larry0454.github.io/2024/04/04/computer_network/network-layer/
Author
WangLe
Posted on
April 4, 2024
Licensed under