计算机网络/学习笔记四/《计算机网络(自顶向下方法 第七版)》

发布于:2022-11-08 ⋅ 阅读:(291) ⋅ 点赞:(0)

课程资源

  1. 课程网站:http://staff.ustc.edu.cn/~qzheng/teaching.html
  2. 课程视频:https://www.bilibili.com/video/BV1JV411t7ow/
  3. 课程教材:计算机网络(自顶向下方法 第7版),机械工业出版社,2016

第四章

网络层:数据平面

1、网络层导论

网络层服务与功能

  • 服务
    • 在发送主机和接收主机对之间传送段(segment)
    • 在发送端将段封装到数据报中
    • 在接收端,将段上交给传输层实体
    • 网络层协议存在于每一个主机和路由器
    • 路由器检查每一个经过它的IP数据报的头部
  • 功能
    • 转发: 将分组从路由器的输入接口转发到合适的输出接口,硬件实现,几纳秒
    • 路由选择: 使用路由选择算法来决定分组从发送主机到目标接收主机的路径,软件实现,几秒
      • 路由选择算法
      • 路由选择协议

数据平面与控制平面

  1. 数据平面
  • 是每个路由器的功能,决定从路由器输入端口到达的分组如何转发到输出端口,即实现转发功能
    • 传统方式:基于目标地址+转发表
    • SDN方式:基于多个字段+流表
  1. 控制平面
  • 是网络范围的逻辑,决定数据报如何在路由器之间路由,决定数据报从源到目标主机之间的端到端路径,即实现路由选择功能
    • 传统的路由算法: 在路由器中被实现
    • software-defined networking (SDN): 在远程的服务器中实现
  1. 传统方式
  • 在每一个路由器中的单独路由器算法元件,在控制平面进行交互
    在这里插入图片描述

在这里插入图片描述
4. SDN方式

  • 一个不同的(通常是远程的)控制器与本地控制代理(CAs)交互
    在这里插入图片描述

2、路由器组成

路由器结构

  • 高层面(非常简化的)通用路由器体系架构
    • 路由:运行路由选择算法/协议 (RIP, OSPF, BGP)-生成路由表
    • 转发:从输入到输出链路交换数据报-根据路由表进行分组的
      在这里插入图片描述

输入端口

在这里插入图片描述

  • 最长前缀匹配
    • 当给定目标地址查找转发表时,采用最长地址前缀匹配的目标地址表项
  • 输入端口缓存
    • 当交换机构的速率小于输入端口的汇聚速率时, 在输入端口可能要排队
      • 排队延迟以及由于输入缓存溢出造成丢失
    • Head-of-the-Line (HOL) blocking: 排在队头的数据报阻止了队列中其他数据报向前移动
      在这里插入图片描述

交换结构

  • 将分组从输入缓冲区传输到合适的输出端口
  • 交换速率:分组可以按照该速率从输入传输到输出
    • 运行速度经常是输入/输出链路速率的若干倍
    • N 个输入端口:交换机构的交换速度是输入线路速度的N倍比较理想,才不会成为瓶颈
  • 通过内存交换
    • 在CPU直接控制下的交换,采用传统的计算机
    • 分组被拷贝到系统内存,CPU从分组的头部提取出目标地址,查找转发表,找到对应的输出端口,拷贝到输出端口
    • 转发速率被内存的带宽限制 (数据报通过BUS两遍)
    • 一次只能转发一个分组
  • 通过总线交换
    • 数据报通过共享总线,从输入端口转发到输出端口
    • 总线竞争: 交换速度受限于总线带宽
    • 1次处理一个分组
  • 通过互联网络(crossbar等)的交换
    • 同时并发转发多个分组,克服总线带宽限制
    • Banyan(榕树)网络,crossbar(纵横)和其它的互联网络被开发,将多个处理器连接成多处理器
    • 当分组从端口A到达,转给端口Y;控制器短接相应的两个总线
    • 高级设计:将数据报分片为固定长度的信元,通过交换网络交换
      在这里插入图片描述

输出端口

在这里插入图片描述

  • 输出端口排队
    • 排队带来延迟,由于输出端口缓存溢出则丢弃数据报
  • 调度机制
    • 调度: 选择下一个要通过链路传输的分组

    • FIFO (first in first out) scheduling: 按照分组到来的次序发送

      • 丢弃策略: 如果分组到达一个满的队列,哪个分组将会被抛弃?
        • tail drop: 丢弃刚到达的分组
        • priority: 根据优先权丢失/移除分组
        • random: 随机地丢弃/移除
    • 优先权调度:发送最高优先权的分组

      • 类别可能依赖于标记或者其他的头部字段
      • 先传高优先级的队列中的分组,除非没有
      • 高(低)优先权中的分组传输次序:FIFO
        在这里插入图片描述
    • Round Robin (RR) scheduling:

      • 循环扫描不同类型的队列, 发送完一类的一个分组,再发送下一个类的一个分组,循环所有类
    • Weighted Fair Queuing (WFQ):

      • 一般化的Round Robin
        在这里插入图片描述

3、IP:Internet Protocol

在这里插入图片描述

IP数据报格式

在这里插入图片描述

IP分片/重组

  • 网络链路有MTU (最大传输单元) –链路层帧所携带的最大数据长度
    • 不同的链路类型
    • 不同的MTU
  • 大的IP数据报在网络上被分片(“fragmented”)
    • 一个数据报被分割成若干个小的数据报
      • 相同的ID
      • 不同的偏移量
      • 最后一个分片标记为0
    • “重组”只在最终的目标主机进行
    • IP头部的信息被用于标识,排序相关分片
      在这里插入图片描述

IPv4

  • IP编址

    • IP 地址: 32位标示,对主机或者路由器的接口编址
    • 接口: 主机/路由器和物理链路的连接处
      • 路由器通常拥有多个接口
      • 主机也有可能有多个接口
      • IP地址和每一个接口关联
    • 一个IP地址和一个接口相关联
  • 子网(Subnets)

    • 一个子网内的节点(主机或者路由器)它们的IP地址的高位部分相同,这些节点构成的网络的一部分叫做子网
    • 无需路由器介入,子网内各主机可以在物理上相互直接到达
      在这里插入图片描述
  • IP地址分类
    在这里插入图片描述

    • 特殊IP地址
      • 子网部分: 全为 0—本网络
      • 主机部分: 全为0—本主机
      • 主机部分: 全为1–广播地址,这个网络的所有主机
        在这里插入图片描述
        在这里插入图片描述
  • IP编址:CIDR(Classless InterDomain Routing无类域间路由)

    • 子网部分可以在任意的位置
    • 地址格式: a.b.c.d/x, 其中 x 是 地址中子网号的长度
  • 子网掩码(subnet mask)

    • 32bits , 0 or 1 in each bit
      • 1: bit位置表示子网部分
      • 0:bit位置表示主机部分
        在这里插入图片描述
  • 获得一个IP地址:

    • DHCP(Dynamic Host Configuration Protocol),动态主机配置协议
      • 是一个应用层协议
      • 允许主机在加入网络的时候,动态地从服务器那里获得IP地址
      • DHCP可以自动分配IP、子网掩码、网关、DNS。
      • DHCP客户端使用的端口68,服务端使用端口67,使用的UDP应用层的协议。
      • DHCP一般不为服务器分配IP,因为他们要使用固定IP,所以DHCP一般只为办公环境的主机分配IP。
    • 获取一个网络的子网部分?
      • 从ISP获得地址块中分配一个小地址块
    • 一个ISP如何获得一个地址块
      • ICANN: Internet Corporation for Assigned Names and Numbers
        • 分配地址
        • 管理DNS
        • 分配域名,解决冲突

NAT:网络地址转换

  • 动机: 本地网络只有一个有效IP地址
    • 不需要从ISP分配一块地址,可用一个IP地址用于所有的(局域网)设备–省钱
    • 可以在局域网改变设备的地址情况下而无须通知外界
    • 可以改变ISP(地址变化)而不需要改变内部的设备地址
    • 局域网内部的设备没有明确的地址,对外是不可见的–安全
  • 实现: NAT 路由器必须
    • 外出数据包:替换源地址和端口号为NAT IP地址和新的端口号,目标IP和端口不变 …远端的C/S将会用NAP IP地址,新端口号作为目标地址
    • 记住每个转换替换对(在NAT转换表中)
    • 进入数据包:替换目标IP地址和端口号,采用存储在NAT表中的mapping表项,用(源IP,端口)
      在这里插入图片描述
      在这里插入图片描述
  • 争议
    • 路由器只应该对第3层做信息处理,而这里对端口号(4层)作了处理
    • 违反了end-to-end 原则
      • 端到端原则:复杂性放到网络边缘
        • 无需借助中转和变换,就可以直接传送到目标主机
      • NAT可能要被一些应用设计者考虑, eg, P2P applications
      • 外网的机器无法主动连接到内网的机器上
    • NAT穿越: 如果客户端需要连接在NAT后面的服务器?
      • 方案1: 静态配置NAT:转发进来的对服务器特定端口连接请求
        •  e.g., (123.76.29.7, port 2500)总是转发到10.0.0.1 port 25000
      • 方案2: Universal Plug and Play(UPnP) Internet GatewayDevice (IGD) 协议. 允许NATted主机可以:
        • 获知网络的公共 IP地址(138.76.29.7)
        • 列举存在的端口映射
        • 增/删端口映射 (在租用时间内)
      • 方案 3: 中继 (used in Skype)
        • NAT后面的服务器建立和中继的连接
        • 外部的客户端链接到中继
        • 中继在2个连接之间桥接
    • 地址短缺问题可以被IPv6 解决

IPv6

  • 动机

    • 初始动机: 32-bit地址空间将会被很快用完
    • 另外的动机:
      • 头部格式改变帮助加速处理和转发
        • TTL-1
        • 头部checksum
        • 分片
      • 头部格式改变帮助QoS
  • 数据报格式

    • 固定的40 字节头部
    • 数据报传输过程中,不允许分片
      • ICMPv6: ICMP的新版本
        • 附加了报文类型, e.g. “Packet Too Big”
        • 多播组管理功能
          在这里插入图片描述
  • 隧道:从IPv4到IPv6的平移

    • 在IPv4和IPv6路由器混合时,网络如何运转?
    • 隧道: 在IPv4路由器之间传输的IPv4数据报中携带IPv6数据报
      在这里插入图片描述
      在这里插入图片描述

4、通用转发和SDN

SDN(software-defined networking):逻辑上集中的控制平面

  • 网络设备数据平面和控制平面分离
    • 数据平面-分组交换机
      • 将路由器、交换机和目前大多数网络设备的功能进一步抽象成:按照流表(由控制平面设置的控制逻辑)进行PDU(帧、分组)的动作(包括转发、丢弃、拷贝、泛洪、阻塞)
      • 统一化设备功能:SDN交换机(分组交换机),执行控制逻辑
    • 控制平面-控制器+网络应用
      • 分离、集中
      • 计算和下发控制逻辑:流表
  • 优势
    • 水平集成控制平面的开放实现(而非私有实现),创造出好的产业生态,促进发展
    • 集中式实现控制逻辑,网络管理容易
    • 基于流表的匹配+行动的工作方式允许“可编程的”分组交换机
      • 实现流量工程等高级特性
  • 架构
    • 数据平面交换机

      • 流表被控制器计算和安装
      • 基于南向API(例如OpenFlow),SDN控制器访问基于流的交换机
    • SDN 控制器(网络OS)

      • 维护网络状态信息
      • 通过上面的北向API和网络控制应用交互
      • 通过下面的南向API和网络交换机交互
      • 逻辑上集中,但是在实现上通常由于性能、可扩展性、容错性以及鲁棒性采用分布式方法
        在这里插入图片描述
    • 网络控制应用

      • 控制的大脑: 采用下层提供的服务(SDN控制器提供的API),实现网络功能
      • 非绑定:可以被第三方提供,与控制器厂商以通常上不同,与分组交换机厂商也可以不同

OpenFlow

  • 每个路由器包含一个流表(被逻辑上集中的控制器计算和分发)
    • 流: 由分组(帧)头部字段所定义
    • 通用转发: 简单的分组处理规则
      • 模式: 将分组头部字段和流表进行匹配
      • 行动:对于匹配上的分组,可以是丢弃、转发、修改、将匹配的分组发送给控制器
      • 优先权Priority: 几个模式匹配了,优先采用哪个,消除歧义
      • 计数器Counters: #bytes 以及 #packets
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到