VuePress 站点
首页
数学
计算机基础
Java后端
AI大模型
UI设计
首页
数学
计算机基础
Java后端
AI大模型
UI设计
  • 计算机基础
  • 计算机网络应用

    • 课程笔记:TCP三次握手建立连接
    • 课程笔记:TCP三次握手的必要性
    • 课程笔记:TCP协议缺陷与SYN Flood攻击
    • 课程笔记:TCP四次挥手释放连接
    • 课程笔记:TCP四次挥手释放连接的必要性
    • 课程笔记:TCP 报文段格式与 IP 分组
    • 课程笔记:HTTP/2 新特性——二进制分帧
    • 课程笔记:HTTP/2 新特性——多路复用
    • 课程笔记:HTTP/2 新特性——服务器推送(Server Push)
    • 课程笔记:HTTPS 简介与架构图
    • 课程笔记:HTTPS原理与传输层安全协议(TLS)
    • 课程笔记:HTTPS原理——对称加密算法
    • 课程笔记:HTTPS原理——非对称加密算法
    • 课程笔记:HTTPS 原理 —— 数字签名
    • 课程笔记:HTTPS 原理——证书与 CA
    • 课程笔记:完整的HTTPS协议通信流程
    • 课程笔记:HTTPS 协议的性能损耗
    • 课程笔记:TLS False Start 加速 HTTPS
    • 课程笔记:升级 HTTP 协议到 HTTP/2
    • 课程笔记:通过会话恢复加速 HTTPS
    • 课程笔记:OWASP 组织与十大 Web 安全漏洞
    • 课程笔记:XSS 跨站脚本攻击
    • 课程笔记:存储型XSS跨站脚本攻击
    • 课程笔记:XSS攻击窃取Cookie
    • 课程笔记:反射型XSS跨站脚本攻击
    • 课程笔记:DOM型XSS跨站脚本攻击
    • 课程笔记:植入 JS、HTML 代码攻击
    • 课程笔记:XSS攻击的防护策略
    • 课程笔记:XSS攻击的输入环节防护
    • 课程笔记:XSS 劫持 Cookie 的防护策略
    • 课程笔记:XSS 内容输出防护方案
    • 课程笔记:CSP 内容安全策略
    • 课程笔记:CSP 内容安全策略的应用方式
    • 课程笔记:CSRF 跨站请求伪造攻击原理
    • 课程笔记:CSRF 跨站点请求伪造攻击案例
    • 课程笔记:CSRF 跨站请求伪造防护方案
    • 课程笔记:OWASP CSRFTester 工具的原理与使用
    • 课程笔记:点击劫持攻击原理
    • 课程笔记:点击劫持防护方案
    • 课程笔记:URL 跳转漏洞原理与防护
    • 课程笔记:Session 认证与会话劫持
    • 课程笔记:Session固定与Session保持攻击
    • 课程笔记:注入攻击与 OWASP 靶机平台
    • 课程笔记:SQL盲注与ORM注入攻击及防护
    • 课程笔记:XML注入、代码注入、OS命令注入攻击
    • 课程笔记:文件上传漏洞与文件下载/目录浏览漏洞
    • 课程笔记:访问控制与权限访问漏洞
    • 课程笔记:DDoS 分布式拒绝服务攻击原理与防护
    • 课程笔记:CC(Challenge Collapsar)攻击与防护
    • 课程笔记:CDN 的工作原理
    • 课程笔记:CDN的网络架构和术语说明
    • 课程笔记:CDN应用场景与阿里云CDN
    • 课程笔记:如何使用阿里云CDN服务
    • 课程笔记:CDN 刷新与预热
    • 课程笔记:阿里云 CDN 回源配置
    • 课程笔记:CDN 缓存配置
    • 课程笔记:CDN 访问控制与性能优化
  • 计算机网网络

    • 📖 教材介绍与课程导言
    • 📖 1.1 信息时代的计算机网络
    • 📖 1.2 因特网概述
    • 📖 1.3 电路交换、分组交换和报文交换
    • 📖 1.4 计算机网络的定义和分类
    • 📖 1.5 计算机网络的性能指标(1)
    • 📖 1.5 计算机网络的性能指标(2)
    • 📖 1.6.1 常见的三种计算机网络体系结构
    • 📖 1.6.2 计算机网络体系结构分层的必要性
    • 📖 1.6.3 计算机网络体系结构分层思想举例
    • 📖 计算机网络体系结构中的专用术语
    • 📖 物理层概述
    • 📖 物理层下面的传输媒体
    • 📖 传输方式
    • 📖 编码与调制
    • 📖 2.5 信道的极限容量
    • 📖 2.6 信道复用技术
    • 📖 3.1 数据链路层概述
    • 📖 3.2 数据链路层的三个重要问题
    • 📖 3.2.1 封装成帧和透明传输
    • 📖 3.2.2 差错检测
    • 📖 3.2.3 (1) 可靠传输的相关基本概念
    • 📖 3.2.3 (2) 可靠传输的实现机制 - 停止-等待协议(SW)
    • 📖 3.2.3 (3) 可靠传输的实现机制 - 回退N帧协议(GBN)
    • 📖 3.2.3 (4) 可靠传输的实现机制 - 选择重传协议(SR)
    • 📖 3.3 点对点协议 PPP
    • 📖 3.4 共享式以太网
    • 📖 3.4.1 网络适配器和 MAC 地址
    • 📖 3.4.2 (1) CSMA/CD 协议的基本原理
    • 📖 3.4.2 (2) 共享式以太网的争用期、最小帧长和最大帧长
    • 📖 3.4.2 (3) 共享式以太网的退避算法和信道利用率
    • 📖 3.4.3 使用集线器的共享式以太网
    • 📖 3.4.4 在物理层扩展以太网
    • 📖 3.4.5 (1) 网桥的主要结构和基本工作原理
    • 📖 3.4.5 (2) 透明网桥的自学习和转发帧的过程以及生成树协议STP
    • 📖 3.5 交换式以太网
    • 📖 3.5.1 以太网交换机
    • 📖 3.5.2 共享式以太网和交换式以太网的对比
    • 📖 3.6 以太网的MAC帧格式
    • 📖 3.7.1 虚拟局域网 VLAN 概述
    • 📖 3.7.2 虚拟局域网 VLAN 的实现机制
    • 📖 3.8 以太网的发展
    • 📖 3.9.1 802.11 无线局域网的组成
    • 📖 3.9.2 802.11 无线局域网的物理层
    • 📖 3.9.3 (1) 802.11 无线局域网的数据链路层 —— 使用 CSMA/CA 协议(而不使用 CSMA/CD 协议)
    • 📖 CSMA/CA(载波监听多址接入/碰撞避免)协议的基本工作原理
    • 📖 802.11 无线局域网的 MAC 帧格式
    • 📖 网络层概述
    • 📖 网际协议 IP(网际协议)与异构网络互连
    • 📖 IPv4 地址及其编址方法——概述
    • 📖 IPv4 地址的分类编址方法
    • 📖 IPv4 地址的划分子网编址方法
    • 📖 IPv4 地址的无分类编址方法(CIDR)
    • 📖 IPv4 地址的应用规划
    • 📖 IPv4 地址与 MAC 地址
    • 📖 地址解析协议 ARP
    • 📖 IP 数据报的发送和转发流程
    • 📖 IPv4 数据报的首部格式
    • 📖 静态路由配置
    • 📖 因特网的路由选择协议概述
    • 📖 路由信息协议 RIP(路由信息协议)
    • 📖 开放最短路径优先 OSPF(开放最短路径优先)
    • 📖 边界网关协议 BGP(边界网关协议)
    • 📖 路由器的基本工作原理
    • 📖 网际控制报文协议 ICMP(网际控制报文协议)
    • 📖 虚拟专用网 VPN 和网络地址转换 NAT
    • 📖 IP 多播技术的相关基本概念
    • 📖 在局域网上进行硬件多播
    • 📖 在因特网上进行 IP 多播需要的两种协议
    • 📖 网际组管理协议 IGMP
    • 📖 多播路由选择协议
    • 📖 移动 IP 技术概述
    • 📖 IPv6 引进的主要变化
    • 📖 IPv6 数据报的基本首部和扩展首部
    • 📖 IPv6 地址
    • 📖 从 IPv4 向 IPv6 过渡
    • 📖 网际控制报文协议 ICMPv6
    • 📖 软件定义网络 SDN
    • 📖 运输层概述 — 进程间基于网络的通信
    • 📖 TCP/IP 体系结构运输层中的两个重要协议
    • 📖 运输层端口号、复用与分用的概念
    • 📖 UDP 和 TCP 的对比
    • 📖 TCP 报文段的首部格式
    • 📖 "三报文握手"建立 TCP 连接
    • 📖 "四报文挥手"释放 TCP 连接
    • 📖 TCP 的流量控制 (Flow Control)
    • 📖 TCP 的拥塞控制 (Congestion Control) 及与网际层拥塞控制的关系
    • 📖 TCP 可靠传输的实现
    • 📖 TCP 超时重传时间 (RTO) 的选择
    • 📖 TCP 的选择确认 (SACK)
    • 📖 6.1 应用层概述
    • 📖 6.2 客户—服务器方式和对等方式
    • 📖 6.3 动态主机配置协议 DHCP
    • 📖 6.4 域名系统 DNS
    • 📖 6.5 文件传送协议 FTP
    • 📖 电子邮件
    • 📖 万维网 WWW
    • 📖 网络安全概述
    • 📖 密码学相关基本概念
    • 📖 对称密钥密码体制
    • 📖 公钥密码体制
    • 📖 报文摘要和报文鉴别码
    • 📖 数字签名(digital signature)
    • 📖 实体鉴别
    • 📖 密钥分发
    • 📖 访问控制
    • 📖 网络体系结构各层采取的安全措施—物理层和数据链路层
    • 📖 网络体系结构各层采取的安全措施—网络层
    • 📖 网络体系结构各层采取的安全措施—运输层
    • 📖 网络体系结构各层采取的安全措施—应用层
    • 📖 防火墙访问控制与入侵检测系统
    • 📖 常见的网络攻击及其防范
    • 📖 定长子网划分和变长子网划分的二叉树解法

📖 软件定义网络 SDN

🎯 课程摘要:SDN(软件定义网络)由斯坦福大学 Nick McKeown 教授于 2009 年提出,其核心思想是将网络的控制层面与数据层面分离,用软件集中控制数据层面的设备。本课介绍 SDN 的基本概念、OpenFlow 协议、流表与广义转发,以及 SDN 体系结构的四个关键特征。

📝 详细笔记

1. SDN 简介

  • 起源:SDN(软件定义网络)的概念最早由斯坦福大学的 Nick McKeown 教授于 2009 年提出,最初只是学术界讨论的新型网络体系结构。
  • 发展:近些年来 SDN 发展快速,被不少企业相继采用。最成功的案例是谷歌于 2010~2012 年间建立的数据中心网络 B4。
  • 地位:SDN 是当前网络领域最热门和最具发展前途的技术之一,也是 408 考研计算机网络部分 2022 年新增知识点。

2. 传统路由器的两个层面

路由器的网络层可抽象划分为两个层面:

层面功能实现方式速度
控制层面路由选择:路由器间交互路由信息,利用路由算法得出路由表,再由路由表得出转发表软件秒数量级
数据层面(转发层面)转发服务:基于自己生成的转发表转发分组硬件纳秒数量级
  • 传统方式:每个路由器无法独自创建路由表,必须和相邻路由器周期性交换路由信息后才能创建路由表。

3. SDN 的核心思想

  • 在 SDN 体系结构中,路由器中的路由软件都不存在了,路由器之间不再相互交换路由信息。
  • 控制层面:有一个在逻辑上集中的远程控制器(物理上可由不同地点的多个服务器组成),掌握各主机和整个网络的状态,为每一个分组计算最佳路由,并为每一个路由器生成正确的转发表。
  • 数据层面:路由器工作变得非常单纯,只需对收到的分组进行查表转发。
  • 核心思想:把网络的控制层面和数据层面分离,让控制层面利用软件来控制数据层面中的许多设备。

4. OpenFlow 协议

  • 地位:OpenFlow 协议是一个得到高度认可的标准,讨论 SDN 时往往与 OpenFlow 一起讨论。
  • 作用:OpenFlow 协议可被看成 SDN 体系结构中控制层面与数据层面之间的通信接口,使控制器可以对数据层面中的物理设备进行直接访问和控制。
  • 标准化组织:技术规范由非盈利性产业联盟开放网络基金会 ONF 负责制定,致力于 SDN 的发展和标准化,但并未规定必须使用 OpenFlow(不过大部分 SDN 产品都采用了它)。
  • 版本演进:从 2009 年底 1.0 版开始,历经 12 次更新,到 2015 年 3 月发布 1.5.1 版,目前较为成熟的是 1.3 版本。

5. 广义转发:匹配 + 动作

  • 传统转发(两个步骤):
    1. 匹配:查找转发表中的网络前缀,进行最长前缀匹配。
    2. 动作:把分组从匹配结果指明的接口转发出去。
  • SDN 广义转发(扩充后):
    1. 匹配:能够对网络体系结构中各层首部中的字段进行匹配(数据链路层、网络层、运输层)。
    2. 动作:不仅可以转发分组,还可以负载均衡、重写 IP 首部、人为阻挡或丢弃分组。
  • 设备名称变化:完成广义转发的设备不局限在网络层工作,因此不再称为路由器,而称为 OpenFlow 交换机(或分组交换机、交换机)。
  • 流表取代转发表:在 SDN 中取代传统路由器转发表的是流表。一个流就是通过网络的一种分组序列,其中每个分组都共享分组首部某些字段的值(例如具有相同源 IP 和目的 IP 的一连串分组)。
  • 流表管理:OpenFlow 交换机中的流表由 SDN 远程控制器通过安全信道使用 OpenFlow 协议来管理。尽管网络设备可由不同厂商生产,但从 SDN 控制器看到的则是统一的逻辑交换功能。

6. OpenFlow 1.0 流表结构

每个 OpenFlow 交换机必须有一个或多个流表。OpenFlow 1.0 版本中,每个流表项包含三个字段:

字段内容说明
首部字段值(匹配字段)一组用来使入分组的对应首部与之匹配的字段,共 11 个项目,涉及数据链路层、网际层、运输层三个层次的首部匹配不上的分组被丢弃或发送到 SDN 控制器处理
计数器字段一组计数器记录已匹配的分组数量、该流表项上次更新到现在经历的时间
动作字段一组动作转发到指明端口、丢弃分组、复制后从多端口转发、重写首部字段(数据链路层/网际层/运输层)
  • ⚠️ 重点/考点:OpenFlow 的匹配与计算机网络体系结构分层处理的原则完全不同——在 OpenFlow 交换机中既可以处理数据链路层的帧,也可以处理网际层的 IP 数据报,还可以处理运输层的 TCP 或 UDP 报文。

7. 基于流表的举例

网络中有 H1~H6 共 6 台主机,S1~S3 共 3 台 OpenFlow 交换机(每台 4 个端口),以及一台 SDN 远程控制器。

  • 简单转发:H1 或 H2 发往 H3、H4 的分组,路径应为 S1→S3→S2。控制器给 S1 设置流表项:源 IP = 10.0.1.,目的 IP = 10.0.2.,动作 = 转发端口 3。
  • 负载均衡:为均衡链路 S2-S3 与 S1-S3 的通信量,规定 H3 发往 H5、H6 走 S2→S3,H3 发往其他走 S2→S1→S3。基于目的 IP 的传统转发无法实现,但在 S2 流表项中设置合适匹配项即可。
  • 防火墙:在 S2 中设置防火墙,仅接收来自与 S1 相连的主机所发送的分组,而不管这些分组从 S2 哪个端口进来。

上述例子省略了计数器字段,但已能体现 SDN 广义转发的多样性和灵活性。

8. SDN 体系结构的四个关键特征

特征内容
① 基于流的转发分组转发可基于数据链路层、网络层、运输层 PDU 首部字段的值进行(传统路由器仅根据目的 IP 转发)。各交换机的流表项都由 SDN 控制器计算、管理和安装。
② 数据层面与控制层面分离传统路由器中二者在同一设备;SDN 中二者分离,数据层面是相对简单快速的分组交换机,控制层面是若干服务器和软件。
③ 控制层面由软件实现控制软件可处于不同机器上,甚至远离数据层面设备。包含两个构件:SDN 控制器(网络操作系统,维护网络状态信息)和控制应用程序。
④ 可编程的网络SDN 控制器能确定端到端路径、进行接入控制(阻挡)、执行负载均衡,使整个 SDN 网络成为可编程的网络。

9. SDN 控制器的接口与层次

  • 南向 API:SDN 控制器与其下方数据层面中受控设备的通信接口(即 OpenFlow 等协议)。
  • 北向 API:SDN 控制器与控制层面应用程序的通信接口。
  • SDN 控制器三个层次:
层次任务
通信层(底层)通过南向 API 完成 SDN 控制器与数据层面受控网络设备之间的通信
网络范围的状态管理层(中间层)让控制器掌握全网的主机、链路、分组交换机等信息,对网络状态和流表进行读写操作
应用层(上层)运行各种控制应用程序,通过北向 API 获取网络状态并对设备进行控制
  • ⚠️ 重点/考点:SDN 控制器是 SDN 体系结构中最复杂的部分。
  • 开源控制器:最有代表性的是 OpenDaylight 和 ONOS。

💡 核心总结

  • SDN 核心思想:控制层面与数据层面分离,软件集中控制。
  • OpenFlow 是控制层面与数据层面的通信接口(南向接口),成熟版本为 1.3。
  • SDN 广义转发 = 匹配 + 动作,匹配可跨多层首部,动作多样(转发/负载均衡/重写/丢弃)。
  • 流表三字段:首部字段值(匹配)、计数器、动作。
  • 四大特征:基于流的转发、数据/控制层面分离、控制层面软件实现、可编程网络。

❓ 课后思考 / 经典考题

  1. 简述 SDN 的核心思想,并说明与传统路由器体系结构的区别。
  2. OpenFlow 协议在 SDN 体系结构中起什么作用?它属于哪种接口?
  3. SDN 的"广义转发"与传统转发的"匹配 + 动作"有何不同?
  4. OpenFlow 1.0 流表项包含哪三个字段?各有什么作用?
  5. 简述 SDN 体系结构的四个关键特征。
  6. SDN 控制器可分为哪几个层次?南向 API 和北向 API 分别连接什么?
最近更新: 2026/6/23 17:18
Contributors: yangwenguang
Prev
📖 网际控制报文协议 ICMPv6
Next
📖 运输层概述 — 进程间基于网络的通信