文章

网络层

网络层

  • 网络层
    • 网络层提供的两种服务
      • 虚电路服务
      • 数据报服务
    • 网际协议IP
      • IP协议配套使用的协议
        • 地址解析协议ARP
        • 网际控制报文协议ICMP
        • 网际组管理协议IGMP
      • 虚拟互连网络
        • 中间设备
          • 作用:将网络互联起来
          • 分类
            • 物理层:转发器
            • 数据链路层:网桥/桥接器
            • 网络层:路由器
            • 网络层以上:网关
        • 互联网可以由多种异构网络互联组成
        • 互联网交付
          • 直接交付
            • 本网络
            • 不经过路由器
          • 间接交付
            • 经过至少一个路由器,最后一次一定是直接交付
      • 分类的IP地址
        • IP地址及其表示方法
          • IP地址给因特网上的每一个主机/路由器的每一个接口分配唯一的32位标识符
          • IP地址编址方法经过的历史阶段
            • 分类的IP地址–最基本
            • 子网的划分–最基本的改进
            • 构成超网–无分类编址
          • 分类的IP地(唯一32位二进制)
            • 每一类地址都由两个固定长度的字段组成
            • 组成
              • 第一字段:网络号
                • 标志主机/路由器所链接到的网络,唯一
              • 第二字段:主机号
                • 标志该主机/路由器
            • 两级IP地址
              • IP地址 ::={<网路号>,<主机号>}
            • 类别
              • A类
                • 网路号(1字节);类别位:0
                • 主机号(3字节)
              • B类
                • 网络号(2字节);类别位:10
                • 主机号(2字节)
              • C类
                • 网络号(3字节);类别号:110
                • 主机号(1字节)
              • D类
                • 前四位:1110
                • 多播:一对多
              • E类
            • IP地址不仅仅指明一个主机,而是还指明了主机所连接的网络
          • IP地址的表示方法
            • 32位的连续二进制
            • 32位每隔8位插入空格提高可读性
            • 点分十进制法
        • 常用的三种类别的IP地址
          • 不适用的IP地址
            • 网络号
              • 全0
              • 全1
              • 大于223
              • 等于127
            • 主机号
              • 全0—网络地址
              • 全1—所有主机
              • 大于255
          • IP地址特点
            • 每一个IP地址都有网络号和主机号两部分组成–分等级的地址结构
              • 便于IP地址的管理
              • 路由器仅根据目的主机所连接的网络号来转发分组,减少了路由表所占存储空间以及查找路由表的时间
            • IP地址是标志一个主机/路由器和一条链路的接口
              • 一个回主机/路由器连接到不同的网络需要有不同的IP地址(网络号必须不同)
            • 利用转发器或网桥连接起来的若干局域网仍然为一个网络
            • 所分配到网络号的网络都是平等的
      • IP地址与硬件地址
        • 物理地址是数据链路层和物理层所使用的地址
          • 硬件地址放在MAC帧的首部
        • IP地址是网络层和以上各层使用的地址/逻辑地址
          • IP地址放在IP数据报的首部
        • 在IP层首相的互联网只能看到IP数据报
        • 路由器志根据目的站的IP地址的网络号进行路由选择
        • 在局域网的链路层,只能看见MAC帧
      • 地址解析协议ARP
        • 用途:从网络层使用的IP地址解析出在数据链路层使用的硬件地址
          • 主机/路由器知道在MAC帧的首部填入的硬件地址
        • 每个主机都有ARP高速缓存,存有本局域网上的各主机和路由器的IP地址到硬件地址的映射表
          • 生存时间:给出IP数据报所能经过最大路由数
        • 解决的是同一个局域网的主机/路由器的IP地址和硬件地址的映射问题
        • 过程
          • 先查找ARP高速缓存
          • 在本局域网上进行ARP请求分组
          • 得到ARP响应分组
          • 若在非本局域网,需要解析路由器的MAC地址
        • ARP自动进行
      • IP数据报的格式
        • IP数据报首部的固定部分(20字节)的各字段
          • 版本(4位):IP协议版本
          • 首部长度(4位):最小54;最大154
          • 区位服务(8位)
          • 总长度(16位):首部+数据部分(字节);不可超过数据链路层协议规定的一个数据帧的最大传输单元MTU
            • 分片长度=每一个分片的首部长度+分片的数据长度
          • 标志(3位)
            • MF=1:后面还有分片
            • MF=0这是若干数据报片中的最后一个
            • DF:不能分片
            • DF=1:可以分片
          • 位偏移(13位)
          • 生存时间TTL(8位)
          • 协议(8位)
          • 首部检验和(16位):只检验首部,不检验数据部分
          • 源地址(32位)
          • 目的地址(32位)
        • IP数据报首部的可变部分
      • IP层转发分组的流程
        • 路由表每一条路由信息
          • (目的网络地址,下一跳地址)
        • IP数据报最终一定可以找到目的主机所在目的网络上的路由器
        • 只有到达组后一个路由器时候,才试图向目的主机进行直接交付
        • 特定主机路由
        • 默认路由
          • 减少路由表所占用的空间和搜索路由所哦用的时间
          • 直接交付/默认路由:0.0.0.0
        • 分组转发算法归纳(根据路由表内容)
          • 从数据报的首部提取目的主机的IP地址D,得出目的网络地址N—网络号+主机全0
          • 若N就是与此路由器直接相连的某个网络地址,则直接交付目的主机(目的主机地址D->MAC帧->转发帧),不需要经过其他路由器;否则间接交付
          • 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中指明的下一跳路由器
          • 若路由表中有到达网络N的路由,则把数据报传给路由表中指明的下一跳路由器
          • 若路由表中有一个默认路由,则把数据报传送给路由表中指明的默认路由器
          • 否则,报告转发分组出错
    • 划分子网和构造超网
      • 划分子网/子网寻址/子网路由选择–编址方式
        • 从两级IP地址到三级IP地址
          • 两级IP地址的缺点
            • IP地址空间的利用率有时很低
            • 给每一个物理网络分配一个网络号会使得路由器变得太大因而网络性能变差
            • 两级IP地址不够灵活
          • 基本思路
            • 对外仍然表现为一个网络
            • 不改变原来的网络号;借用主机号位数;IP地址::={<网络号>,<子网号>,<主机号>}
            • 根据IP数据报的目的网络号找到连接在本单位网络上的路由器;再按网络号和子网号找到目的子网,再交付主机
        • 子网掩码–是否进行了子网划分/以及如何到达子网
          • 网络地址:网络号(子网加上子网号)+主机号全部为0
          • 子网掩码好处:将子网掩码和目的IP地址逐位相与得到网络地址(默认子网掩码或者三级子网掩码)
          • 子网的子网掩码
            • 子网子网掩码中1的位置与IP地址中网络号字段和子网号字段相对应(网络号,子网号全部为1)
          • 默认子网掩码
            • 如果不划分子网,则要在路由表中加上默认子网掩码:默认子网掩码中1的位置和IP地址中的网络号字段net-id相对应(网络号部分全部为1)
            • 默认子网掩码与某个不划分子网的IP地址相与可以得出IP地址的网络地址
            • 其中
              • A类地址的默认子网掩码:255.0.0.0/0xFF000000
              • B类地址的默认子网掩码:255.255.0.0/0xFFFF0000
              • C类地址的默认子网掩码:255.255.255.0/0xFFFFFF00
          • 两类
            • 默认子网掩码&&目的IP地址=目的网络地址
            • 子网子网掩码&&目的IP地址=子网的网络地址
          • 划分子网增加了灵活性,但是却减少了能够连接在网络上的主机总数
          • (根据类别和子网掩码得出)子网号位数n,子网数2的n次方-2,子网号位数越少,每个子网上连接的主机越多,反之越少
          • 计算网络地址
            • 点分十进制表示的IP地址
            • 根据子网掩码255与0之外
              • IP地址的第n个字节的二进制表示
            • 子网掩码的二进制表示
            • IP地址与子网掩码逐位相与
            • 得到点分十进制的网络地址
      • 使用子网时分组的转发
        • 路由表每一条路由信息
          • (目的网络地址,子网掩码,下一跳地址)
        • 分组转发算法归纳(根据路由表内容)
          • 从数据报的首部提取目的主机的IP地址D
          • 判断是否为直接交付
            • 对路由器直接相连的网络逐个进行检查
            • 用各网络的子网掩码和D逐位相“与”,看结果是够和相应的网络地址匹配
              • 匹配:直接交付(目的主机地址D->MAC帧->转发帧)
              • 不匹配:间接交付
          • 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中指明的下一跳路由器
          • 对路由器中每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和D逐位相“与”,结果为N
            • 若N与该行的目的网络地址匹配,则把数据报传给该行的下一跳路由器
          • 若路由表中有一个默认路由,则把数据报传送给路由表中指明的默认路由器
          • 否则,报告转发分组出错
      • 无分类编址CIDR(构成超网)–编址方式
        • 网络前缀
          • 无分类域间路由选择CIDR
            • 特点
              • CIDR消除了传统的ABC类以及划分子网的概念
                • 记法
                  • 无分类的两级编址 IP地址::={<网络前缀>,<主机号>}
                  • 斜线记法/CIDR记法:在IP地址后面加上斜线“/”+网络前缀所占的位数
              • CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”
                • 知道CIDR地址块中的任何一个地址
                  • 起始地址(最小地址)=网络前缀+全部0
                  • 最大地址=网络前缀+全部1
                  • 地址块中的地址数=2的(32-网络前缀数)的次方
                  • 计算
  • 找到地址掩码1与0的分界的字节用二进制表示(前面的点分十进制不变)
  • 找到网络前缀,前面不变
  • 最小地址为32-网络前缀其余都为0
  • 最大地址为32-网络前缀其余都为1
  • 表示地址块:该地址块中的最小地址/网络前缀位数
  • 地址掩码(连续的n个1和0组成/32位)–n为网络前缀位数
  • 斜线记法/CIDR记法:斜线“/”后面的数字就是地址掩码的个数
  • 在地址块中划分子网(需要中主机号借位)
  • 路由聚合/构成超网
  • 路由表中利用CIDR地址块来查找目的网络
  • 优点:减少了路由器之间的路由选择信息的交换,提高了因特网的性能
  • CIDR记法
  • 10.0.0.0./10->10/10
  • 00001010 00 网络前缀越短,其地址块所包含的地址数就越多
  • 最长网络前缀/最长匹配/最佳匹配
  • 使用二叉线索查找路由表
    • 网际控制报文协议ICMP
      • ICMP报文装在IP数据报中,作为数据部分
      • 并不是实现了可靠传输
      • ICMP报文的种类
        • ICMP差错报告报文
          • 类型值
            • 3:终点不可达
            • 4:源点抑制
            • 11:时间超过
            • 12:参数问题
            • 5:改变路由/重定向
        • ICMP询问报文
          • 类型值
            • 8/0:回路请求或回答
            • 13/14:时间戳请求或回答
      • ICMP的应用举例
        • 分组网内探测PING
          • 探测主机之间的连通性
          • 应用层直接使用网络层的例子
          • 没有通过运输层的TCP/UDP
          • 使用了ICMP会送请求与会送回答报文
        • traceroute
          • 跟踪一个分组从源点到终点的路径
    • 因特网的路由选择协议
      • 有关路由选择协议的几个基本概念
        • 理想的路由算法
          • 算法必须是正确的和完整的
          • 算法在计算上应简单
          • 算法应能够适应通信量和网络拓扑的变化/自适应性/稳健性
          • 算法应具有稳定性
          • 算法应是公平的
            • “最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已
        • 能否随网络的通信量和拓扑自适应进行调整变化
          • 静态路由选择策略/非自适应路由选择–小网络
          • 动态路由选择策略/自适应路由选择–大网络
        • 分层次的路由选择协议
          • 一般路由选择协议是自适应的(动态的)、分布式路由选择协议
          • 分层次路由选择协议
            • 因特网的规模非常大
            • 需要封闭性
        • 自治系统AS
          • 一个AS对其他AS表现出的是一个单一的和一致的路由选择策略
        • 路由选择协议分类
          • 内部网关协议IGP/域内路由选择协议
            • 一个自治系统内部使用的路由选择协议
            • 分类
              • RIP
              • OSPF
          • 网布网关协议EGP/域间路由选择协议
            • 不同的自治系统之间使用的路由选择协议
            • BGP-4
      • 内部网关协议RIP
        • RIP路由信息协议
        • 工作原理
          • 基于距离向量的路由选择协议
          • 距离/跳数
            • 每经过一个路由器,跳数+1
            • 最多包含15个路由器
            • 距离等于16相当于不可达—RIP适用于小网络
            • RIP选择一条具有最少路由器的路由
          • 特点
            • 仅和相邻的路由器交换信息
            • 路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表(到所有网络的距离和吓一跳路由器)
            • 按固定的时间间隔交换路由信息
          • 注意
            • 刚刚开始工作时候,只知道直接连接的网络的距离(距离定义为1);RIP协议可以收敛,并且过程也很快
        • 距离向量算法
          • 到每个目的网络的最短距离
          • 步骤
            • 对于地址为X的相邻路由器发来的RIP报文
              • 下一跳字段的地址改为X
              • 所有的距离字段+1
            • 若原来路由表中没有目的网络N,啧添加到路由表中
            • 否则
              • 若下一跳路由表地址是X,则把该项目添加到路由表中
              • 否则
                • 若疏导的项目的距离d小于路由表中的项目的距离,则进行更新
                • 否则什么都不做
        • 当网路出现故障时候,要经过比较长的时间才能把信息传到所有的路由器
        • 优点:实现简单,开销较小
        • 缺点
          • RIP限制了网络的规模
          • 路由器之间交换的路由信息是由路由器中的完整路由表,随着网络规模的扩大,开销也增加
          • 更新过程的收敛时间过长
      • 内部网关协议OSPF
        • OSPF协议的基本特点
          • 开放最短路径优先OSPF
          • 使用链路状态协议
          • 特点
            • 向本自治系统中所有路由器发送信息
            • 发送的信息就是本路由器相邻的所有路由器的链路状态(路由器的部分信息)
            • 只有当链路状态发生变化时候,路由器才向所有路由器用洪泛发发送此信息
            • OSPF允许管理员给每条路由指派不同的代价
            • 负载平衡
            • 所有在OSPF路由器之间交换的分组都具有鉴别的功能
            • OSPF支持可变长度的子网划分和无分类的编址CIDR
            • OSPF让每一个俩路状态都带上一个32位序号,序号越大就越新
          • 优点
            • 更新过程收敛得快
            • 适用于规模很大的网络
          • 使用层次结构的区域划分
            • 主干区域
              • 与外界:自治系统边界路由器
            • 区域边界路由器
        • OSPF的五种分组类型
          • 问候分组
          • 数据库描述
          • 链路状态请求
          • 链路状态更新
          • 链路状态确认
      • 外部网关协议BGP
        • 路径向量路由选择协议
      • 路由器的构成
        • 路由选择部分/控制部分
          • 路由选择处理机
        • 分组转发部分
          • 交换结构
            • 根据转发表转发
            • 本身是一个网络
            • 三种常用的交换方法
              • 通过存储器
              • 通过总线
              • 通过互连网络
          • 输入端口
          • 输出端口
        • 注意
          • 转发:涉及一个路由器
          • 路由选择:涉及多个路由器
          • 路由表一般仅包含从目的网络到下一跳(IP地址)的映射,转发表是从路由表得出的
          • 路由表必须包含完成转发功能的所有必须的信息
    • IP多播
      • IP多播的基本概念
        • 在因特网上进行多播
        • IP多播所传送的分组需要使用多播IP地址
        • 多播地址只用于目的地址,而不能用于源地址
        • IP多播使用D类IP地址
      • 在局域网上进行硬件多播
      • 网际组管理协议IGMP和多播路由选择协议
        • IGMP是让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组
        • 多播转发必须动态地适应多播组成员的变化
        • 多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而要考虑这个多播数据报从什么地方来和要到什么地方去
        • 多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络
    • 虚拟专用网VPN和网络地址转换NAT
      • 虚拟专用网VPN
        • 字因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发
        • 专用互联网/本地互联网:用专用IP地址的互联
        • 所有通过因特网传送的数据必须加密
      • 网络地址转换NAT
        • 将专用网络内部使用专用IP地址,而仅在连接到因特网的路由器使用全球IP地址
本文由作者按照 CC BY 4.0 进行授权