网络层

网络层

概述

数据交换

数据交换的原因

  • 网络中计算机间需要实现数据通信和资源共享

  • 如何实现数据通信和资源共享:

    • 每台主机之间需要进行通信

    • 主机两两之间建立链路直接数据交换导致链路数量太多

    • 主机都接在一个交换设备上进行数据交换,会导致吞吐量过大时交换设备无法很好地进行数据交换

    • 主机和多个交换设备组合在一起构成交换网络

      因此交换网络中需要按照一定的交换方式进行数据的交换,不能够在随意地进行数据的交换了

    • 图示

image-20210319151932221

数据交换方式

报文交换

  • 概念:动态选择线路发送报文

    • 动态选择线路:根据网络状况选择最优的转发路径
    • 报文 = 目的地址 + 源地址 + 数据
  • 优点

    • 无需建立连接:节省建立连接的时延

    • 提高线路可靠性:不会因为某条路径故障导致数据的重发或者发送失败,可以选择另一条路径发送

    • 提高线路的利用率:通信双方不会长时间占用某条线路

    • 多目标服务:报文可以同时发送给多个目的站点

      能够同时发送吗?

  • 缺点

    • 具有存储转发的时延
      • 报文大小不确定,交换设备需要预备较大的存储空间

分组交换

  • 发送方式

    • 数据报交换

      • 概念:==无需建立连接==,==动态选择线路==发送==分组==

        实际上和分组交换完全是一个概念

        • 动态选择线路:采取路由算法选择最优的转发路径

        • 分组:

          • 概念:报文按照规格划分成大小基本相等的切片

          • 特点

            ①每个分组都需要附带必要的控制信息:==目的地址 + 源地址 + 控制信息==

            ②每个分组选择的路径不一定相同

            ③==每个分组占用全部带宽==

      • 交换过程

        • 每个分组携带目的地址的分组传输到交换设备上
      • 交换设备查找路由表,找到分组携带的目的地址对应的转发接口

  • 重复多次这个过程,直到分组传输到目的主机

    • 优点:

      • 无需建立连接

      • 线路利用率较高

      • 没有单点故障

      • 交换设备不需要较大的存储空间

      • 全双工通信

      • 缺点

        • ==存储转发时延==
        • 不保证可靠性
      • 额外控制信息开销

        • 分组可能丢失或者失序
      • ==网络拥塞==

  • 虚电路交换

    • 概念:源主机和目的主机建立==虚电路==;==所有分组==按==次序==通过该虚电路从源主机发送到目的主机

      • 虚电路:
        • 源主机到目的主机建立的逻辑连接(物理上并不存在)
        • 路径节点维护一张虚电路表,每张虚电路表记录每个虚电路号对应的转发接口
      • 分组:
        • 基本概念和数据报交换一致;携带的内容不同
        • 分组携带==虚电路号==不携带目的地址
        • 所有分组携带的虚电路号是一样的
    • 交换过程:

      • 源主机向目的主机发送请求,目的主机应答后开始传输分组
      • 每个携带虚电路号的分组传输到交换设备上
      • 交换设备查找维护的虚电路表,找到分组携带的虚电路号对应的转发接口
      • 重复多次这个过程,直到分组传输到目的主机
    • 优点

      • 保证可靠性
      • 没有分组失序问题
      • 虚电路号相对目的地址开销小
      • 全双工通信
    • 缺点

      • 单点故障

      • ==连接的建立和拆除需要时间==(网络延迟)

      • 特点:虚电路建立的连接并不是专用的(和电路交换区分开)

        物理意义上的链路在逻辑上可能是多条虚电路;即某部分物理链路可能被多个虚电路共用;所以通信是全双工

    • 流水线问题

    image-20210319160134849

IP 协议

IPv4

IPv4 数据报格式

  • 整体格式

    image-20210319160626422

  • 详细格式

    image-20210319162045953

    • 版本:规定 IP数据报 采用的 IP 协议的版本;便于路由器解析数据报后面的部分

    • 首部长度

    • 区分服务

      • 含义:区分不同类型的数据报

      • 特点:

        • 前面 3 bit 是优先权字段

        • 中间 4 bit 用于设置数据报需要的服务:最小时延、最大吞吐量、最高可靠性和最小费用

          注:每个数据报只能够选择其中一项服务;如果都不选择,那么默认是一般服务

        • 最后 1 bit 置为 0

    • 总长度

      • 含义:表示 IP数据报 的长度( 包括 首部数据部分
      • 特点:
        • 使用 16 位比特表示单位大小的数量
        • 单位大小 ==1B==
      • 注意:数据链路层的 MTU 不会达到 2^16^ - 1 B:通常会进行分片
    • 标识:IP 数据报分片后每个分片具有的统一标识符

    • 标志:

    • 片偏移:

    • 生存时间:(1) 数据报每经过一个路由器生存时间就会减1 (2) 生存时间为0时,该数据报被丢弃

    • 目的:防止数据报没有找到合适的路径进行转发,始终在交换网络中循环

  • 协议

  • 首部校验和

  • 填充:用于填充首部部分,将首部部分的大小补为 4B 的整数倍

  • 可选字段:用来支持测量,排错以及安全措施

IPv4 编址

IP 地址分类(二级IP地址)

image-20210319172151300

  • 特殊 IP 地址
网络号 主机号 作为IP分组源地址 作为IP分组目的地址 用途
全0 全0 可以 不可以 表示主机上的所有 IP 地址
特定值 全0 不可以 不可以 表示子网本身
特定值 全1 不可以 可以 直接广播地址
全1 全1 不可以 可以 受限广播地
127 任意 不可以 不可以 环回自检;用于软件测试

(1) 127 开头的 IP 地址只能够作为环回自检地址;但是能够使用的只有 127.0.0.1

(2) 0.0.0.0 通常用于默认路由

  • 优点:
    • 便于 NIC 组织分配 IP 地址;只需要根据网络号进行分配就行,不需要考虑主机号;主机号由得到网络的机构自行分配
    • 路由器转发表中只需要保存网络号,而不需要记录主机号(全0),节省表项数量
  • 缺点:不够灵活,造成 IP 地址浪费
NAT转换
  • 公有 IP 地址:可==直接==用于互联网连接的 IP 地址 (利用 python 的 pystun3 可以查看 NAT 相关信息)

    #coding=utf-8 
    import stun
    if __name__ == "__main__":
    nat_type, external_ip, external_port = stun.get_ip_info() # 东北大学校园网 NAT
    print("NAT 类型: " + nat_type) # Restric NAT
    print("NAT IP: " + external_ip) # 210.30.193.143
    print("NAT 端口: " + str(external_port)) # 54320
    pass
  • 私有 IP 地址

    • 概念:不能直接用于互联网连接的 IP 地址,只能用于局域网连接

    • 目的:(1) 实现网络安全 (互联网中的任何主机都是不可以直接访问私有 IP 地址的) (2) 节省 IP 地址 ( 不同私网中的私有 IP 地址可以重复使用 )

    • 私有地址

    分类 地址范围 网段个数 IP 地址数量
    A类 10.0.0.0 ~ 10.255.255.255 1 256 x 256 x256
    B类 172.16.0.0 ~ 172.31.255.255 16 16 x 256 x 256
    C类 192.168.0.0 ~ 192.168.255.255 256 256 x 256

    思考:网段个数是怎么算的?

    注意:网段个数不是私有 IP 地址的数量

  • NAT转换 (Network Address Translation)

子网划分(三级IP地址)
  • 原因:

    • IP 地址空间的==利用率有时很低==

      申请者申请网络(A类 B类 C类..)可能实际连接的主机数量并没有达到最大容纳的主机数量

      剩余的主机数又不能够被其他申请者使用,导致空闲浪费

    • 两级 IP 地址不够灵活

      没有办法根据实际主机的数量划分网络 IP 地址

  • 概念:

    image-20210320185910140

    • 定长划分子网

      image-20210329154108192

    • 变长子网划分

      • 概念:借用的==主机号位数可变==
      • 特点:
        • 每个子网的子网掩码都不一样
        • 每个子网能够容纳的最大主机数量也不一样;==借用位数越多会导致最大主机数容量越小==
        • 划分方式

      image-20210322170402977

      • 划分后的变化

        • 子网掩码:每个子网的==子网掩码都是不一样的==

        • 广播地址:==每个子网都有自己的广播地址==

          00 111111 ;01 111111;10 111111;11 111111;都是不可以使用 的

        • 点分十进制:仍然按照 8bit 划分;这样得到的子网地址结尾就可以不是 0 了

      • 注意:上述只是演示变长子网的划分过程,如果采用分类 IP 地址划分子网,上述非常多的子网是无效的,如果采用 CIDR 技术划分子网是没有问题的

  • 子网掩码

    • 概念:一串 1 + 一串 0 组成(32bit)

      • 所有的 1 对应 网络号 + 子网号

      • 所有的 0 对应 主机号

        牢记子网掩码的目的就是为了提取网络号部分就能够理解

    • 目的:从 IP 地址中提取出 ==网络号 + 子网号==;获取每个子网的 IP 地址

    • 子网 IP 地址计算方式

      • 获取==主机 IP 地址==和==子网掩码==
        • 子网如果没有进行划分:默认的子网掩码是 255.0.0.0(A类) 255.255.0.0(B类) 255.255.255.0(C类)
        • 子网如果划分之后:子网掩码会发生变化
      • 主机 IP 地址 和 子网掩码进行 ==与运算==
        • 因为 1 对应 网络号 + 子网号,所以在与运算之后,这两部分都被提取出来了
        • 因为 0 对应 主机号,所以在与运算之后,这部分就是 0 了
  • 分组转发

    • 利用 ==IP 地址 + 子网掩码== 判断源主机和目的主机是否在==同一子网(网段)==内
      1. 如果在同一子网内,那么源主机==直接==将分组交付给目的主机
      2. 如果不在同一子网内,执行==间接交付==的操作
    • 路由器接收源主机提交的分组,根据路由表将分组交付给下一个路由器(间接交付)
    • 最后一个路由器将分组==直接交付==给目的主机
  • 直接交付和间接交付比较

    image-20210329150334335

无分类编址方法(CIDR)
  • 引入:分类 IP 地址 + 子网划分 仍然不够灵活,网络号部分始终是固定的,考虑将网络号部分变为随机的,增加灵活性

  • 概念:(无类别域间路由选择 Classless Interdomain Routing)

    • 基本思想:取消按照固定的网络号对 IP 地址进行分类;使用 ==网络前缀==对 IP 地址进行“分类”

    • 网络前缀:

      • 概念:相当与 ==任意长度== 的网络号;剩余的就是主机号
      • 记法:192.168.0.0 / 20;网络前缀是 20bit
    • CIDR 地址块:具有 ==相同的网络前缀== 的 IP 地址组成 CIDR 地址块

      相当于分类 IP 地址中的类型

  • 图解

    image-20210322172035423

  • 超网

    • 概念:多个 ==CIDR 地址块== 聚合 在一起形成的网络 (称为地址聚合 Address Aggregation)

    • 目的:多个子网合并在一起形成超网,只需要在==转发表中存储一个网络前缀==和对应转发的路由器

      多个子网的网络前缀中可能存在大量相同的比特位,不使用聚合技术,那么转发表中就会存储每个子网的网络前缀和对应转发的路由器,增大了路由表的存储开销

    • 聚合方式:从最高位开始直到==第一个不相同的位之前( 不包含不相同的位 )==出现为止 -> 作为超网的网络前缀

    • 图解

      image-20210329154822131

    • CIDR 地址块超网 的区分

      • CIDR地址块 是相同网络前缀的==不同主机的集合==
      • 超网 是不同网络前缀的==子网的集合==
    • CIDR 子网划分:子网号是可以==全 0 全 1==的

      • 优点:使用 CIDR 划分子网能够得到==更多的子网数==相比于传统的分类地址

      • 原因:使用==最长前缀匹配技术==能够==避免二义性==,所有和主网络冲突的信息都会被发送到对应的 CIDR 地址块

      • 做题注意事项:如果题目中没有明确指明是否采用 CIDR 技术,我们需要根据问题进行推测,如果问的是最大子网数,那么显然采用 CIDR 划分子网显

        然得到的子网数更多,也就是不用 -2,还有一点就是如果用于表示网络号的比特位数不是8,16,24,那么肯定是采用的 CIDR

  • 最长前缀匹配

    • 引入:
      • 每个分组都会携带目的 IP 地址
      • 进入路由器转发的时候,可能会出现多个==相同的 IP 地址==(网络前缀不一样)
      • 此时就需要根据最长前缀匹配选择合适的 IP 地址进行转发
    • 概念:多个相同 IP 地址出现时,选择 ==符合条件==的且 ==最具体的 IP 地址==
    • 图解:132.19.237.5 如何转发

    image-20210322174027769

IPv6

IPv6 数据报格式

  • 引入:
    • IPv4 地址已经被分配耗尽;利用 NAT 和 CIDR 技术也无法改变地址消耗殆尽的现状
    • ST-2 协议被舍弃,未能够成为 IPv5 协议
  • 基本格式:基本首部 + 有效载荷
    • 基本首部:长度固定为40B (区别于 IPv4 是不固定的,只是最小长度为 20B)
    • 有效载荷:IP 数据报的数据部分
    • 图示

image-20210326160114164

  • 详细格式
    • 图示

image-20210326162033661

  • 特点:

    • 快速 处理和转发数据报:因为许多字段从基本首部中移除,路由器不需要再对多余的内容作处理

    • IPv6 支持 即插即用 :不需要配置 DHCP 协议

    • 支持 QoS

  • 对比

    • 新增

      • 地址扩大:IPv6 地址从 32 位(4B)扩大到 ==128位==(16B)

      • 流标签:标识属于同一个流的数据报

    • 减少

      • IPv6 地址不可以在 路由器处 进行分片仅可以在 主机处 分片:删去==标志,标识,片偏移==字段

        注:超过 MTU 的分组将会被路由器 直接丢弃

      • IPv6 地址删去==校验和==:保证数据报的快速处理 (数据链路层和传输层已经存在差错控制)

      • IPv6 地址删去==首部长度==:基本首部长度是固定的 40B

    • 修改

      • IPv6 ==有效载荷长度==:仅包括数据部分,不包括首部长度(IPv4 的总长度是包含首部的)
      • IPv6 地址==优先级==字段 – IPv4 ==区分服务== 字段
      • IPv6 跳数限制字段 – IPv4 生存时间字段
      • IPv6 ==下一个首部==字段 – IPv4 ==协议==字段
      • IPv6 将==选项==字段放入==有效载荷==字段中
  • 问题:为什么 IPv6 地址是 128 bit,但是数据报中字段只有 32 bit?

  • 表示形式:冒号十六进制记法

    • 例子:2408:842e:d10:24c6:49f4:a398:e7cf:86e1
    • 特点:
      • 每个单元 4 个十六进制数;共 8 个单元
      • 如果单元内 4 个十六进制数全为 0,那么可以将 4 个 0 简化为 1 个 0
      • 如果多个连续单元内 4 个十六进制数全为 0 ,那么可以将多个单元合并成一对冒号
  • 地址类型

    • 单播地址:二级分类地址中的 ABC 类地址
    • 广播地址:二级分类地址中的 特殊 IP 地址
    • 多播地址:二级分类地址中的 ==D 类地址==
  • 过渡策略

    • 双栈协议:每台主机和路由器同时配置 IPv4 和 IPv6 协议
    • 隧道技术(Tunneling):
      • IPv6 数据报经过使用 IPv4 协议的路由器时
      • 路由器 将 IPv6 数据报放入 IPv4 数据报的数据部分 然后转发
      • 目的主机可以得知这是 IPv6 数据报会进行拆卸

IPv6 多播

基本内容
  • 概念

    • 内容:
      • 源主机发送给==多个特定==用户数据
      • 数据报在传输过程中==仅存在一份==
      • 数据报在到达离特定用户最近的路由器时==复制一份==发送给用户
      • 重复上述过程,直到所有特定用户都收到数据
    • 区别
      • 广播技术:对网络(子网)中所有主机发送数据报,多播只对网络中的多个特定用户发送数据(相当于一个组内的用户)
      • 单播技术:点对点的传输,需要在源主机处复制多份需要发送的数据,然后再进行传输,多播在源主机处只需要一份数据
    • 特点
      • 减少主干网络出现堵塞的情况,提高传输数据的效率
      • ==组内的主机==可以分散在不同的局域网内,只需要提供==多播路由器==就可以实现
  • 多播地址

    • 引入:

      • 源主机需要向组内多个特定用户发送数据,显然需要 IP 地址才能够确定组内用户所在的位置
      • 显然不可能使用组内用户自己的唯一 IP 地址,那样就变成了单播传输
      • 显然需要组内用户需要一个共同的多播地址才能将数据发送给组内用户
    • 概念:组内所有主机被分配一个==相同的多播地址==,标记为同一个组

    • 特点:

      • 多播地址是二级分类地址中的 ==D 类地址==;但是并非所有 D 类地址 都可以作多播地址
      • 多播地址只能够==作目的地址==,不能够是源地址
      • 多播数据报==采用 UDP 协议==,尽最大努力交付(不提供差错检查和流量控制等功能)
      • 多播数据报==不产生 ICMP 错误报文==
    • 多播方式

      • 因特网范围内多播:因特网范围内的多播在进入局域网之后仍然需要采用硬件多播

      • 硬件多播

        • 引入:局域网之间相互传播数据报需要使用 MAC 地址(数据链路层),因此多播地址仍然需要对应的 MAC 地址
    • 多播 MAC 地址

        * 前 6 个十六进制数固定为 ==01-00-5E==
        * 后 6 个十六进制数根据多播地址的后 ==23== 位进行映射
      * 问题:多播地址还剩下 5 位没有被使用,这意味着两个不同的多播地址可能会映射成相同的 MAC 地址,因为这 5 位可能不同
      * 解决方式:组内用户在接收多播数据报时仍需要在 ==IP 层==采用==软件==进行过滤
      
IGMP 协议
  • IGMP 协议

    • 概念:多播路由器能够==明确==组内==存在的主机==
    • 工作过程:
      • 想要加入组内的主机向组播地址==发送 IGMP 报文==;声明自己想要加入组内
      • 组播路由器接收到 IGMP 报文后==通知其余所有的组播路由器==组内新的成员关系
      • 组播路由器==周期性==测试组内的主机,查看是否还是组内成员;如果该组内没有一个成员响应,认为该组是不活跃的;
      • 组播路由器认为==组不活跃==后,不会再将组内成员关系发送给其他组播路由器
    • 特点:
      • ==不能==明确组内存在的==主机数量==
      • ==不能==明确各主机所在的==局域网==
  • 组播路由选择协议

    • 概念:找到从源主机到组内各成员的路径

    • 特点:形成==组播转发树==

    • 组播转发树:

      • 避免图形结构造成数据报在路由器之间循环

      • 不同的多播组,生成的组播转发树也不同

      • 相同的多播组,不同的源主机,生成的组播转发树也是不同的

        一个多播组内可以有多个源主机吗?

    • 路由选择算法

      • 链路状态选择算法
      • 距离向量选择算法
      • 协议无关的组播算法

移动IP

  • 引入:每台主机都具有全球唯一的 IP 地址,如果主机发生移动进入另一个局域网中,需要和其他局域网通信,显然这台主机和局域网的网络号是不同的,

    根本不可能和外界通信,这时就需要借助移动 IP 技术

    MAC 地址和 IP 地址的联系和区别?

  • 概念:每台主机进入其他局域网中时,都会被分配一个==转交地址==用于和外界通信

  • 术语

    • 移动结点:具有永久 IP 地址的移动设备
    • 归属代理(本地代理):主机 IP 地址==所属的局域网==
    • 外部代理(外地代理):主机进入的==新的局域网==
    • 永久地址(归属地址,主地址):主机被分配的全球唯一的 IP 地址
    • 转交地址:主机在新的局域网被分配的==临时 IP 地址==
  • 通信过程

    • 主机进入新的局域网,新局域网分配给主机==临时 IP 地址==(转交地址)
    • 新局域网此时根据主机的永久 IP 地址找到主机的原来所在的局域网,==向其提交临时 IP 地址==
    • 其他主机向本主机通信时,数据报首先发送到本主机原来所在的局域网,原局域网==根据登记的临时地址找到本主机现在所在的局域网,转发数据报==
    • 主机离开当前局域网,再次进入新的局域网,获得新的临时 IP 地址,并且==覆盖之前的临时 IP 地址==,同样需要在原局域网进行登记
    • 主机回到原局域网,原局域网==注销其临时 IP 地址==,也通知主机之前所在的局域网注销临时 IP 地址

网络层协议

ARP 协议

  • 引入:数据链路层在封装帧时,需要得到 ==目的 IP 地址对应的 MAC 地址==

  • 概念(Address Resolution Protocol 地址解析协议):获取目的 IP 地址的 MAC 地址

  • 获取方式:

    • ARP 高速缓存:==IP 地址 和 MAC 地址的映射==

      注意:高速缓存只会存放局域网中的映射,其他网络中的映射是没有的

    • 广播 ARP 请求分组

      • 前提:ARP 高速缓存中没有目的 IP 地址对应的 MAC 地址

      • 过程描述:

        • 判断 ==目的 IP 地址== 和 ==源 IP 地址== 是否存在 ==一个网段==

          ①网段相同:广播 ARP 分组(源 IP 地址,目的 IP 地址,源 MAC 地址,广播 MAC 地址(全F))给其他主机

          • ==目的主机==接收到广播就会向源主机==返回自己的 MAC 地址==
          • 源主机接收到目的主机的 MAC 地址后,就将其==封装==在数据链路层的==帧==中

          ②网段不同:广播 ARP 分组(源 IP 地址,目的 IP 地址,源 MAC 地址,默认网关 MAC 地址)给路由器

          • ==路由器==接收到广播就会向源主机==返回自己的 MAC 地址==
          • 源主机接收到路由器的 MAC 地址后,就将其==封装==在数据链路层的==帧==中
        • 路由器之间传送数据时同样需要下一个路由器的 MAC 地址:==路由器和路由器之间同样需要使用 ARP 协议==

          1. 路由器拆卸 IP 数据报,==替换 源 MAC 地址==(路由器自己的 MAC 地址) 和 ==目的 MAC 地址==(使用 ARP 获得下一个路由器的 MAC 地址)
          2. 路由器封装 IP 数据报,==MAC 地址发生了变化,但是 IP 地址始终没变==
        • 数据到达目的主机所在局域网时,获取 ==目的主机的 MAC 地址==

  • 细节:

DHCP 协议

  • 引入:主机连接到互联网之前需要==获取==自己在网上的 ==IP 地址==

    注:路由器基本都配置了 DHCP 服务器 (可以手动关闭路由器的 DHCP 服务器)

  • 概念:基于传输层==UDP== 协议,采用 ==客户端 / 服务器== 方式,客户端和服务端通过 ==广播== 方式进行交互

  • 获取方式

    • 静态配置:网络管理员==手动配置==各台主机的 IP 地址,默认网关,子网掩码等信息

    • 动态配置

      • 概念:允许主机==自动获取 IP 地址==等信息,也允许网络管理员进行配置

      • 过程

  • 细节:

image-20210324150127326

ICMP 协议

  • 概念(控制报文协议):路由器和主机利用该协议用于彼此沟通有关数据报的信息
  • 报文格式:==类型字段 + 编码字段 + 相关 IP 数据报的前 8 个字节==(8个字节 = 版本号 + 首部长度 +区分服务 + 总长度)
  • 核心:执行差错报告 (ICMP 报文也可以执行拥塞控制,但是传输层中已经实现了,实践中就很少再用了)
  • 报文类型
    • ICMP 差错报文
      1. 终点不可达:路由器无法交付数据报
      2. 源点抑制:路由器因堵塞丢弃数据报 (执行拥塞控制)
      3. 时间超过:路由器收到 TTL=0 的数据报
      4. 参数问题:路由器收到首部字段出问题的数据报
      5. 改变路由:路由器认为有更好的路径发送数据报
    • ICMP 询问报文
      1. 回送请求和回答报文
      2. 时间戳请求和回答报文
      3. 掩码地址请求和回答报文
      4. 路由器询问和回答报文
  • 不发送差错报文
    • 差错报文如果出错,不会再发送差错报文进行提示
    • 源 IP 地址如果为组播地址,不发送差错报文
    • 特殊 IP 地址,不发送差错报文
    • 对第一个分片的数据报片的后续所有分片都不发送差错报文

路由选择协议

基本概念

内部网关协议

  • 统称:自治系统内部域间路由 (Intra-Autonomous System Routing Protocol)

RIP 协议

OSPF 协议

对比

  • RIP 协议采用 距离向量算法 <-> OSPF 协议采用 链路状态算法

  • RIP 协议每个路由器拥有的 不一定 是最低开销路径 (需要等到 收敛 之后才是) <-> OSPF 协议每个路由器拥有的 一定 是最低开销路径

  • RIP 协议仅向 相邻 的路由器发送链路信息 <-> OSPF 协议向网络中 所有 路由器发送链路信息 (洪泛法)

  • RIP 协议所有路由器 周期性 交换链路信息 <-> OSPF 协议仅在 链路状态发生变化 时交换链路信息 (洪泛法)

    注:RIP 协议在链路状态发生变化时也会交换链路信息 <-> OSPF 协议也会定期更新链路信息但是并不会采用洪泛法同步

  • RIP 协议 不支持 变长子网划分和无分类域间路由技术 <-> OSPF 协议 支持 变长子网划分和无分类域间路由技术

  • RIP 协议 仅可以配置一条 最低开销链路 <-> OSPF 协议 可以配置多条 最低开销链路

  • RIP 协议路由器发送链路信息是 双向 的 <-> OSPF 协议发送链路信息是 单向

  • RIP 协议是 应用层协议 & 使用 UDP 协议传输<-> OSPF 协议是 网络层协议 & 不使用 UDP/TCP 传输使用 IP 数据报传输

  • RIP 协议端口号是 520 <-> OSPF 协议端口号是 89

外部网关协议

  • 统称:自治系统间路由选择协议 (Inter-Autonomous System Routing Protocol)

BGP 协议

  • 引入:

    • 每个自治系统的内部采用的协议并不相同,但是每个自治系统之间又需要相互联系
    • 所以每个自治系统之间需要采用相同的协议来进行联系,也就是 BGP 协议
  • 概念(边界网关协议 Broder Gateway Protocol):用于连接每个不同的自治系统的协议

    注:BGP 协议也是 分布式异步

  • 核心:基于 路径向量选择 的协议

  • 术语:

    • 边界网关路由器 (Gateway Router):能够连接本自治系统中的路由器 & 也可以连接其余自治系统中的路由器

      注:每个边界网关路由器之间通过 TCP 建立连接后通信  (该 TCP 是半永久连接使用端口号 179)

    • 内部路由器 (Internal Router):仅能够连接本自治系统中的路由器

    • BGP 连接:路由器之间用于通信的连接

      • 外部 BGP (eBGP):跨越两个自治系统的 BGP 连接
      • 内部 BGP (iBGP):自治系统内部的 BGP 连接
    • 分组信息:

  • 通信过程:(路径向量选择)

  • 细节:

  • 最优路由:

    • 热土豆选择算法:源路由器找到 距离 NEXT-HOP 最小的开销,然后依次递推,到达最后的目的路由器

      注:这样得到的路径很有可能不是最短的,因为仅仅是确认距离自己最近的,从全局角度来说可能不是最近的

    • 路由器选择算法

      • 选择偏好:网路管理员指定偏好值:偏好值高的路径就会被选择 (人为选择)
      • 距离向量:如果选择偏好相同,使用距离向量计算最短开销 (计算的是经过的 AS 的跳数)
      • 热土豆:如果前两者相同,使用热土豆计算
      • 标识:如果前三者相同,使用标识来区分

路由器

目的网络 IP 地址 子网掩码 下一跳 IP 地址 转发端口
1.1.1.0 255.255.255.0 2.2.2.0 1
0.0.0.0 0.0.0.0 11451

image-20210327164149171

Author: Fuyusakaiori
Link: http://example.com/2021/09/09/network/网络层/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.