计算机网络第五章--网络层

计算机网络第五章--网络层

计算机网络第五章--网络层
计算机网络第五章--网络层
  • 引言
    • 网络层功能
      • 转发forwarding:将分组从路由器的输入端口转移到正确的路由器输出端口
      • 路由routing:确定分组从发送方传输到接收方(目的主机)所经过的路径(或路由)
    • 网络层:数据平面和控制平面
      • 数据平面:本地的,每个路由器内部的功能,实现转发
      • 控制平面:整个网络范围,实现路由
  • 虚电路和数据报网络
    • 连接和无连接服务
      • 数据报网络提供网络层的无连接服务
      • 虚电路网络提供网络层的连接服务
      • 传输层:面向连接服务在网络边缘的端系统中实现
      • 网络层:面向连接服务在端系统及网络核心的路由器中实现
    • 虚电路
      • 源主机-目的主机路径的行为类似于电话网络的行为
      • 在数据传输之前,需要为每个呼叫建立连接
      • 网络功能复杂、端系统设备简单
    • 数据报网络
      • 特点
        • 路由器:不需要维护端到端连接的状态
        • 没有网络等级的“连接”的概念
        • 使用目的主机的地址进行分组转发
        • 网络层服务模型简单,端系统功能复杂(由运输层等高层实现)
      • 数据转发
        • 数据报转发表:目的地址范围对应输出链路
        • 最长前缀匹配
  • 路由器的工作原理
    • 两个核心功能
      • 运行路由算法/协议(OSPF、RIP、BGP)
      • 将分组从路由器的输入链路传送到正确的输出链路
    • 输入端口功能
      • 第一个线路端接模块:将一条物理链路端接到路由器的物理层;
      • 第二个数据链路处理模块:实现路由器的数据链路层功能;
      • 第三个查找与转发模块:实现查找与转发功能,以便分组通过路由器交换结构转发到适当的输出端口;
    • 交换结构:将分组从输入端口缓冲交换到恰当的输出端口缓存中
      • 经内存的交换结构
        • 输入端口与输出端口之间的交换由CPU(选路处理器)控制完成;
        • 输入端口与输出端口类似I/O设备
          • 当分组到达输入端口时,通过中断向选路处理器发出信号,将分组拷贝到处理器内存中
          • 选路处理器根据分组中的目的地址查表找出适当的输出端口,将该分组拷贝到输出端口的缓存中
      • 经总线的交换结构
        • 输入端口通过一条共享总线将分组直接传送到输出端口,不需要选路处理器的干预。
      • 经纵横式crossbar(交换矩阵)的交换结构
        • 纵横式交换机:由2n条总线组成,n个输入端口与n个输出端口连接。
        • 到达输入端口的分组沿水平总线穿行,直至与所希望的输出端口的垂直总线交叉点
        • 若该条垂直总线空闲,则分组被传送到输出端口;
        • 否则,该到达的分组被阻塞,必须在输入端口排队
  • IP协议(划重点)
    • IP数据报
      • 20个字节的首部长度
      • 分片和重组
      • MTU:数据链路帧的数据区的最大字节数
    • IP地址
      • 简介
        • IP 地址: 分配给主机或路由器接口的标识符
        • 每个接口有一个IP地址
        • IPV4:32个二进制位长(4字节),常用点分十进制表示;
        • IPV6:128个二进制位长(16字节)常用冒号分隔表示
      • IPv4
        • IP地址结构
          • 网络号:指明主机所在网络的编号
          • 主机号:主机在网络中的编号
        • 传统的IP地址分类
          • 全0表示本地地址全1表示在本地网络中向所有机广播
          • A类地址(1. 0. 0. 1-127.255.255.254):利用IP地址的第一个字节作为网络地址最高位为0,其余的三个字节作为主机地址
          • B类地址(128.0.0.1-191.255.255.254 ):利用IP地址的前两个字节作为网络地址,最高位为10,其余的两个字节作为主机地址
          • C类地址(192.0.0.1-223.255.255.254 ):利用IP地址的前三个字节作为网络地址,最高位为110,最后一个字节作为主机地址
          • 本地地址localhost(127.0.0.1-127.255.255.254 ):这是预留的一组IP地址,主要是用来识别主机本身的地址
          • 私有地址(10.x.x.x,  172.16.x.x-172.31.x.x,  192.168.x.x  ):局域网所使用的地址段,在公网上不能被路由
    • 划分子网
      • 方法:主机号借用若干个比特作为子网号,剩下的主机位为主机号
      • 子网掩码:子网掩码长为32位比特,其中的1对应于IP地址中的网络号和子网号,而子网掩码中的0对应于主机号
      • 子网划分:对某个子网来说,主机号全0的地址不能用,它被用做表示该子网的子网号;主机号全1的也不能用,它用于本子网的广播。因此每个子网所能容纳的主机数是2^N-2,N是主机号位数。
    • 无分类域间路由CIDR
      • 使用斜线记法,又称为CIDR记法来区分网络前缀和主机号,即在IP地址后面加上一个斜线“/”,斜线后面用一个数字指定网络前缀的长度
    • 动态主机配置协议DHCP(应用层协议)
      • 主机广播 “DHCP DISCOVER”消息
      • DHCP 服务器用 “DHCP OFFER” 消息响应
      • 主机请求IP地址: “DHCP REQUEST” 消息
      • DHCP 服务器确认 “DHCP ACK/NACK” 消息
      • DHCP 终止租用期 DHCP RELEASE” 消息
    • 网络地址转换NAT
      • 动机: 对外部网络来讲,本地网络只用一个IP地址
      • 在路由器上,通过NAT穿透实现本地地址外网地址的转换
    • 因特网控制报文协议ICMP
      • 用于主机路由器之间彼此交流网络层信息
        • 差错报告: 不可到达的主机, 网络,端口,协议
        • 请求/应答 (用于ping,traceroute)
      • 位于IP之上
        • 因为ICMP消息是装载在IP分组里的
      • Traceroute
        • 源端发送一系列的UDP分组给目的端
        • 当第n个分组到达第n个路由器
          • 路由器丢弃该分组
          • 并给源端发送一个ICMP报文(type11, code 0)
          • 这个报文包含了路由器的名称和IP地址
        • 当源端收到ICMP报文时,计算传输往返时间RTT
        • 对每个TTL作三次
    • IPv6
      • 固定长度的40字节首部
      • 冒号十六进:69DC:8864:FFFF:FFFF:0:1280:8C0A:FFFF
      • 从 IPv4 到 IPv6过渡
        • 双栈:一些路由器具有双重栈 (v6, v4) 能够在两种格式中转换
        • 隧道: 在穿过IPv4路由器时,IPv6分组作为 IPv4分组的负载
  • 路由和选路(重点、难点)
    • 选路算法
      • 路由的基本概念
        • 默认路由器:与主机直接相连的路由器,又叫第一跳路由器
        • 路由算法:是确定一个分组从源路由器到目的路由器所经路径的算法
      • 路由算法分类
        • 全局路由算法:所有路由器拥有完整的网络拓扑信息和链路费用信息。
          • 链路状态路由算法LS:必须知道网络中每条链路的费用。
        • 分布式路由算法:以迭代的、分布式的方式计算最低费用路径。
          • 距离向量路由算法DV:每个节点维护到网络中所有其他节点的费用(距离)的估计向量。
      • 链路状态选路算法(Dijkstra最低费用路径算法)
        • 基本思想:以源节点为起点,每次找出一个到源节点的费用最低的节点,直到把所有的目的节点都找到为止。
        • 术语定义
          • c(x,y):表示从节点x到y的链路费用;
          • D(v):表示从源节点到目的节点v的当前路径的费用
          • p(v):表示从源节点到目的节点v的路径上的前驱节点(例如w是v的前驱节点);
          • N’:表示已经找到最低费用路径的节点集合
        • 算法描述
          • 1. 初始化结点D(v)=c(u,v)
          • 2. 找出一个到源节点的费用最低的节点w,并以此更新其它点D(v)值
            • D(v)=min[D(v),D(w)+c(w,v)]
          • 3. 重复步骤2,直到添加所有网络节点
        • 构建最低费用路径树、转发表
    • 距离向量路由算法DV
      • 最低费用表示
        • Bellman-Ford方程:dx(y) = minv{c(x,v)+ dv(y)}
        • dx(y):节点x到节点y的最低费用路径的费用。
        • v: 节点x的邻居节点。
        • c(x,v)+dv(y):x与某个邻居v之间的直接链路费用c(x,v)加上邻居v到y的最小费用。即x经v到节点y的最小的路径费用
        • minv :从所有经直接相连邻居节点到节点y的费用中选取的最小路径费用
      • 距离向量DV路由算法
        • 1. 每个节点初始化自己的距离向量表
        • 2. 和相邻节点交换自己的距离向量表,利用BF方程计算最低费用更新
        • 3. 重复步骤2,直到距离向量不再更新
      • 链路费用改变与链路故障
        • 某链路费用减少时情况
          • 节点之间链路费用减少的“好消息”在网络中能迅速传播
        • 某链路费用增加时情况
          • 产生“选路回环”:为到达x, y通过z选路,z又通过y选路。
          • 链路费用增加的“坏消息”传播很慢!
          • 迭代次数计算
  • 层次选路
    • 自治系统
      • 一个区域内的路由器组成集合“自治系统” (AS,autonomous system )
      • 同一个自治系统的路由器运行相同的路由协议——区域内路由协议
      • 不同自治系统内的路由器可以运行不同的区域内路由协议
    • 域(自治系统)内路由选择
      • RIP:路由信息协议
      • OSPF:开放最短路径优先
      • IGRP:内部网关路由协议(Cisco 所有)
    • RIP(Routing Information Protocol)
      • 距离向量算法
      • RIP 通告:每隔30秒,通过响应报文在邻居间交换距离向量 
      • RIP链路失败及恢复 :若180秒后没有收到通告,则认为邻居死机或链路中断
    • OSPF(Open Shortest Path First)
      • 用链路状态算法
        • 分发LS 分组
        • 每个节点具有拓扑图
        • 路由计算使用 Dijkstra算法
      • 每个router都广播OSPF通告,OSPF通告里为每个邻居路由器设一个表项(记录每个邻居的链路特征和费用)。
      • 通告会散布到 整个 自治系统 (通过洪泛法)
        • OSPF信息直接通过IP传输 (不是 TCP 或 UDP)
    • Internet 域间选路:BGP
      • 选路方法
        • 从相邻AS获取子网可达信息
        • 向该AS内部的所有路由器传播这些可达性信息
        • 基于该可达信息和AS策略,决定到达子网的“好”路由
        • 允许一个子网向Internet的其他部分通告它的存在 “I am here”