计算机网络期末复习

计算机期末复习总结

主体来自于Maxwell:https://maxwell-lyu.github.io/,在其基础上简单修改

List

计网复习

  • [重点] 1.x

  • [概念] 3.2 3.3

  • [重点] 3.5 3.6 3.7

  • [重点] 4.2 4.3

  • [重点] 5.2 5.3

  • [概念]

  • [重点] CSMA/CD

  • [概念]

  • [概念] 9.x QoS相关内容

距离向量算法,可能出现的问题

LS算法

TCP reno协议 三次握手,四次挥手

默写ALOHA

流媒体

CSMA/CA CSMA/CD

了解:SDN,ICMP,网桥

第一章

=================

什么是因特网

具体构成描述

  • 主机 / 端系统: 与因特网相连的设备

  • 通信链路: 同轴电缆, 铜缆, 光纤, 无线电频谱

  • 分组交换机

  • 路由器: 通常在网络核心

  • 链路层交换机: 通常在接入网

  • 传输速率: 比特/秒 bps

  • 分组: 数据分段并加上首部字节(发送系统)

  • 路径: 分组经历的通信链路和分组交换机

  • 因特网服务提供商(ISP): 因特网接入服务

  • 协议: 控制因特网中信息的接收和发送

  • TCP: 传输控制协议

  • IP: 网际协议

  • 因特网标准: 由IETF研发

  • RFC: 请求评论, 因特网标准文档

服务描述

  • 分布式应用程序: 涉及到多个相互交换数据的端系统

  • 套接字接口: 规定了端系统上的程序, 请求因特网基础设施, 向另一个端系统上程序, 交付数据的方式

什么是协议

  • 协议定义了:

  • 在两个或多个通信实体之间, 交换报文的格式和顺序

  • 报文发送和/或接收报文, 或其他事件, 所采取的动作

网络边缘

  • 端系统: 运行应用程序

  • P2S模型

  • 客户端: 发送请求, 接受服务

  • 服务器: 响应请求, 提供服务, 始终在线, 性能更强

  • P2P模型

  • 无专用服务器, 每设备既是客户端也是服务器

接入网

  • 接入网: 端系统物理连接到边缘路由器的网络

  • 边缘路由器: 端系统接入到远程端系统的第一台路由器

  • 接入链路与接入环境

  • 家庭接入

  • 拨号

  • 介质: 电话线, 有调制解调器, 执行的操作相当于给接入号(服务台)打个电话, 独占一个线路

  • 速率: 56kbps

  • 卫星: 1Mbps

  • DSL: 数字用户线

  • 介质: 电话线

  • 拓扑

![image-20211222112530253](C:\Users\zhaochaoyi\AppData\Roaming\Typora\typora-user-images\image-20211222112530253.png)
  • DSLAM: 数字用户线接入复用器, 位于中心局, 许多端系统共享

  • 频段分布

*  高速下行: 50kHz - 1MHz 12Mbps 55Mbps

*  中速上行: 4kHz - 50kHz 1.8Mbps 15Mbps

*  双向话音: 0 - 4kHz
  • HFC: 混合光纤同轴/电缆因特网接入

  • 介质: 同轴电缆 + 光纤

  • 拓扑

![image-20211222112541475](C:\Users\zhaochaoyi\AppData\Roaming\Typora\typora-user-images\image-20211222112541475.png)
  • CMTS: 电缆调制解调器端接系统, 位于电缆头端

  • 速率: 42.8Mbps下行, 30.7Mbps上行

  • 有碰撞

  • FTTH: 光纤到户(PON: 被动光纤网络)

  • 介质: 光纤

  • 拓扑

![image-20211222112605837](C:\Users\zhaochaoyi\AppData\Roaming\Typora\typora-user-images\image-20211222112605837.png)
  • ONT: 光纤网络端接器; OLT: 光纤线路端接器

  • 企业(家庭)接入

  • LAN

*  介质: 双绞线

*  拓扑: 设备接入以太网交换机, 通过路由器接入因特网

*  速率: 10Mbps 100Mbps, 1Gbps, 10Gbps
  • WiFi(802.11b/g/ac)
*  11Mbps, 54Mbps, 100Mbps+
  • 广域无线接入: 通信运营商

  • 3G: 1Mbps

  • 4G LTE / WiMAX(淘汰): 10Mbps+

  • 5G: 20Gbps?

物理媒体

  • 导向型

  • 双绞铜线

  • 同轴电缆(可用作共享媒体)

  • 光纤

  • 非导向型

  • 陆地无线电

  • 卫星无线电

网络核心

分组交换

  • 数据切分成分组, 加首部

  • 每个分组发送时独占带宽

  • 交换机: 链路层交换机, 路由器

  • 存储转发传输

  • 交换机先接收并存储整个分组, 之后再发出

  • 端到端时延(N个交换机, 分组长度L, 速率R): $d_{e2e}=N\frac{L}{R}$

  • 排队时延和分组丢失

  • 输出缓存/输出队列: 位于输出链路前

  • 拥塞: 分组排队等待链路

  • 排队时延: 入队到出队的时延

  • 分组丢失: 队列近满, 概率丢失; 队列满, 直接丢失

  • 转发表和路由选择协议

  • 转发表: 目的地址映射到输出链路

  • 路由选择协议: 自动设置转发表

电路交换

  • 预留资源, 需要建立连接/断开连接

  • 端到端连接: 专用电路, 恒定时延/速率, 稳定的性能

  • 电路交换中的复用

  • 频分复用

*  分频段, 每个电路独占一个频率范围
  • 时分复用
*  划分时隙, 每个电路轮流得到时隙

*  统计时分复用: 划分时隙, 高数据率的源得到更多时隙
  • 对比
*  电路: 时延固定

*  分组: 时延不可预测, 共享带宽更高, 更简单有效成本低

*  电路预先分配, 分组按需分配
  • 虚电路
*  电路交换 + 分组交换

*  虚电路建立时, 固定路由, 无需路由选择

*  共享资源, 需要拥塞控制

*  保证分组按序到达

*  可预留资源, 可区别服务(有快有慢, 优先级等)

*  需要连接建立和拆除

网络的网络

  • 粗略的层次结构

  • Tier-1 ISP与内容提供商

  • 区域ISP(与多个Tier-1相连)

  • 接入ISP: 接入网, 连接端系统和Tier-2 ISP

  • IXP: 连接ISP, 可以来自不同级

分组交换网中的时延丢包和吞吐量

时延概述

  • 处理时延: 节点检查首部, 决定转发, 进行校验的时间, 微秒-$d_{proc}$

  • 排队时延: 在链路前的队列等待传输, 微秒~毫秒,$d_{queue}$

  • 传输时延: $L/R$, 将所有比特推向链路的时间, 微秒~毫秒,$d_{tran}$.

  • 传播时延: $d/s$, 速度s略小于光速, 毫秒,$d_{prop}$.

排队时延和丢包

  • 排队时延对不同的分组不相通, 以统计量衡量

  • 流量强度: $La/R$, $a$为分组到达的速率, 流量强度不能大于1。($a$是分组到达的速率,$L$是分组的长度,比特到达队列的平均速率是$La$ $bps$)

  • 流量强度增加, 平均排队时延迅速增加($x^2$)

  • 丢包

  • (上课提到)队列近满, 部分设备采取按照概率丢弃分组, 队列越长概率越大

  • 队列满, 再来就丢, 用丢包率衡量

端到端时延

  • $N-1$个路由器, 则端到端时延$d_{e2e}=N(d_{proc}+d_{trans}+d_{prop})$

  • traceroute: ttl递增的一系列分组, 分别测试到第i跳的时延

  • 端系统, 应用程序和其他时延

  • 向共享媒体传输的端系统, 有意延迟传输

  • 媒体分组化(AD-DA转换, 填充分组)延迟

吞吐量

  • 瞬时吞吐量: 主机B接收的速率

  • 平均吞吐量: $F/T$, 文件大小除以传输时间

  • 瓶颈链路: 吞吐量是各个子链路吞吐量的最小值

  • 因特网中, 吞吐量瓶颈在接入网

  • 共享链路: 多个链路共享某一段链路, 则需要共享这个链路的吞吐量

协议层级及其服务模型

分层的协议结构

  • 协议分层

  • 每层向上提供服务, 各层所有协议称为协议栈

  • PDU: protocol data units, 也就是分组(控制信息 + 数据)

  • 因特网(TCP/IP)协议栈

  • 应用层:网络应用程序及它们的应用层协议停留的地方

*  支持网络应用程序: FTP(端系统文件传输), SMTP(电子邮件报文传输), HTTP(Web文档请求和传送)

*  信息分组: 报文
  • 运输层:在应用程序端点之间传递报文
*  进程间数据传输: TCP, UDP

*  信息分组: 报文段
  • 网络层:负责将称为数据报的网络层分组从一台主机移动到另一台主机
*  路由数据报: IP

*  信息分组: 数据报
  • 链路层:沿着路径将数据报传递给下一个节点
*  在邻接的主机或路由器间传输: Ethernet, PPP

*  信息分组: 帧
  • 物理层:将该帧中的一个个比特从一个节点移动到下一个节点
*  线路上的比特
  • OSI模型

  • 应用层: 应用访问OSI模型的环境

  • 表示层, 会话层: 并入应用层

  • 表示层:表示层的作用是使通信的应用程序能够解释交换数据的含义

  • 会话层:会话层提供了数据交换的定界和同步功能,包括了建立检 查点和恢复方案的方法

  • 运输层

*  端系统间通信

*  可靠传输 或 单块传输

*  连接建立, 维持, 释放
  • 网络层
*  分组在多个网络或链路上传输

*  编址, 路由, 转发, 拥塞控制

*  连接建立, 维持, 拆除
  • 数据链路层
*  链路层帧

*  媒体访问控制, 差错检测和重传, 流量控制

*  连接激活, 维持和失活
  • 物理层
*  链路上的比特流

封装

  • 封装: 分组 = 首部字段 + 有效载荷字段

  • 应用层报文

  • 运输层报文段: 运输层首部(应用交付信息, 差错检测信息) + (分段的)应用层报文

  • 网络层数据报: 网络层首部(源目的地址等) + 运输层报文段

  • 链路层帧: 链路层首部 + 网络层数据报

面对攻击的网络

  • 攻击个人电脑

  • 恶意软件

*  大多数都是自我复制的

*  病毒: 需要某种形式的用户交互来感染用户设备

*  蠕虫: 无需任何明显用户交互就能进入设备

*  木马: 伪装成无害程序, 吸引用户点击

*  后门: 绕过授权验证

*  广告软件: 访问弹出广告

*  间谍软件: 收集用户的输入, 记录用户活动
  • 攻击服务器和网络基础设施

  • 拒绝服务攻击DoS

*  使得服务不能由合法用户使用

*  弱点攻击: 针对易受攻击的程序或操作系统, 引发停止运行或崩溃

*  带宽洪泛: 大量发送分组到目标, 使链路拥塞

*  连接洪泛: 创建大量半开或全开的TCP连接, 耗尽资源
  • 分布式DoS(DDoS)
*  攻击者控制多个源

*  僵尸网路: 攻击者用恶意软件控制大量计算机, 作为DDoS的源头等
  • 嗅探分组

  • 分组嗅探器: 记录每个流经的分组副本的被动接收机

  • 防范: 加密

  • 伪装

  • IP欺骗: 将具有虚假源地址的分组注入因特网

  • 重放攻击

  • 中间人攻击

  • 连接劫持

  • 解决方案: 加密, 数字签名, MAC

第三章

=================

多路复用与多路分解

  • 多路分解: 将运输层报文段中的数据, 交付到正确的套接字的工作

  • 多路复用: 从套接字中收集数据, 加首部生成报文段, 将报文段传递到网络层

  • 套接字

  • 具有唯一标识符

  • 报文段具有特殊字段(源端口号16bit, 目的端口号16bit), 指示需要交付到的套接字

  • 周知端口号: 0~1023

无连接的多路复用与多路分解

  • UDP套接字由二元组进行标识: 目的IP : 目的端口号

  • 源端口号: 回复时使用

面向连接的多路复用与多路分解

  • TCP套接字由四元组进行标识: 源IP : 源端口号 : 目的IP : 目的端口号

  • 不同来源的报文到达同一端口可区分, HTTP服务器

无连接运输UDP

  • 仅提供复用分解, 差错检测

  • 无连接: 发送报文段之前, 没有握手

  • 优点: 首部短, 时间灵活, 无连接建立, 无连接状态

  • 无拥塞控制, 可以由应用层构建可靠传输

报文段结构

源端口号目的端口号长度(首部+数据)检验和应用数据(报文)

| ——– | ———- | —————– | —— | —————- |

16 bit16 bit16 bit16 bit-
  • UDP变长数据段

  • 检验和计算: UDP报文段 + IP首部的部分字段()

UDP检验和

  • 计算方法

  • 报文段分为16bit字, 相加求和

  • 最高位进位回卷, 加到最低位

  • 取反码

  • 检验方法: 接收方做前两步, 得到全1, 则没问题

  • 能检测, 不能纠错, 端到端差错控制

面向连接的运输TCP

  • 提供差错检测, 重传, 累积确认, 定时器, 序号和确认号的首部字段

  • 全双工

TCP连接

  • 三次握手

  • 客户发送

  • 服务端发送

  • 客户发送

  • MSS最大报文段长度(其实是应用层数据的最大长度): 根据 MTU(链路层)最大传输单元确定, 典型值1460字节(1500-40TCP/IP首部)

TCP报文段结构

源端口号目的端口号序号确认号(第一堆)接收窗口因特网校验和 -紧急数据指针选项数据

| ——– | ———- | —– | —— | ———- | ——– | ————————– | —– | —- |

16bit16bit32bit16bit16bit16bit16bit + 16bit0bit+-
  • 第一堆里面有: 首部长度4bit(以字为单位, 1=4字节) + 保留未用6bit + (URG ACK PSH RST SYN FIN)标志字段6bit

  • SYN FIN RST 用于连接建立和拆除, PSH代表必须立即将数据交给上层, URG与紧急数据指表示指向位置是紧急数据的最后一个字节, 需要通知上层

  • 序号和确认号

  • 序号: 是该报文段的首字节的字节流编号

单纯的ACK不包含数据字节, 因此不引发编号增加

  • 确认号: 表示这一序号之前的字节均被正确接收, 它和其后的未接收

一个报文可以同时有确认号和序号, 是捎带ACK

往返时间的估计与超时

  • 估计往返时间

  • SampleRTT: 某一报文被发出(交给IP)到其确认被接收的时间量(一个来回)

重传的报文不进行测量

  • EstimatedRTT: 初始为第一个测得的SampleRTT, 之后根据下式更新
\[\textrm{EstimatedRTT} = (1-\alpha)\cdot\textrm{EstimatedRTT} + \alpha \cdot \textrm{SampleRTT}\]

指数移动加权平均

  • DevRTT: RTT的偏差, 是Sample和Estimated的差的绝对值, 也用指数移动加权平均
\[\textrm{DevRTT} = (1-\beta)\cdot\textrm{DevRTT} + \beta \cdot |\textrm{SampleRTT}-\textrm{EstimatedRTT}|\]
  • 设置和管理重传超时间隔

  • 重传间隔

  • 默认初始值为1s

  • 超时后, 设为先前值的2倍

  • 若有新的EstimatedRTT, 立刻据下式更新

 $$\textrm{TimeInterval} = \textrm{EstimatedRTT} + 4\cdot \textrm{DevRTT}$$

可靠数据传输

  • 累积ACK

  • ACK中的数字, 表示其之前的字节均被接收

  • 重传

  • 规则: 一个报文到达重传间隔, 仍未收到ACK(ACK>SEQ+LEN), 则重传

  • 超时间隔加倍: 重传过后, 下一次的定时将会加倍;

  • 推算超时间隔: 若收到ACK或得到上层应用数据, 则又改为使用$\textrm{TimeInterval}$计算

  • 快速重传

  • ACK生成策略

  • 具有所期望序号的按序报文段到达。所有在期望序号及以前的数据都已经被确认:延迟的ACK。对另一个按序报文段的到达最多等待500ms。如果下 一个按序报文段在这个时间间隔内没有到达,则发送一个ACK

  • 具有所期望序号的按序报文段到达。另一个按序报文段等待ACK传输:立即发送单个累积ACK,以确认两个按序报文段

  • 比期望序号大的失序报文段到达。检测出间隔:立即发送冗余ACK,指示下一个期待字节的序号(其为间隔的低端 的序号)

  • 能部分或完全填充接收数据间隔的报文 段到达:倘若该报文段起始于间隔的低端,则立即发送ACK

  • 收到3个冗余ACK, 则进行快速重传, 假定被ACK的报文后的报文全部丢失

  • 回退N步还是选择重传

  • 第n个报文重传, 若之后的报文被缓存, 且其ACK及时到达, 那么后续可以不用重传

这意味着TCP不是单纯的GBN, 而含有一部分SN

流量控制

  • 接收窗口

  • 接收方跟踪

  • 应用读取的最后一个字节的编号: LastByteRead

  • 接收到的最后一个字节的编号: LastByteRcvd

  • 接收缓存大小: RcvBuffer

  • 接收窗口大小: rwnd = RcvBuffer-(LastByteRcvd-LastByteRead)

也就是缓存余量

  • 接收方将rwnd放入发给发送方的报文中

  • 发送方跟踪

  • 发送的最后一个字节的编号: LastByteSent

  • 被确认的最后一个字节的编号: LastByteAcked

  • 从接收到的报文中得到的rwnd

  • 需要始终保证 LastByteSent - LastByteAcked <= rwnd

  • 若出现rwnd=0, 则需要继续发送含有一字节数据的报文

为了防止接收方无数据要发, 引发发送端阻塞. 这个一字节的报文总会被ACK, 有机会获得一个非0的rwnd值

TCP连接管理

  • 建立: 三次握手
通信SYN是否有ACKACKSEQ数据操作

| ———- | —- | ——— | ———— | ———— | —— | ——————————– |

客户->服务+  client_isn 客户端随机选择起始序号
服务->客户++client_isn+1server_isn 服务器分配资源, 随机选择起始序号
客户->服务 +server_isn+1client_isn+1可携带客户端分配资源

image-20220102152227074

  • 终止(以客户终止为例)
通信FINSEQ是否有ACKACK操作

| ———- | —- | ————– | ——— | —————- | ———————————————- |

客户->服务+client_isn server_isn客户发送FIN
服务->客户 server_isn+client_isn+1服务器ACK这个FIN, 之后还可以发数据(len)
服务->客户+server_isn+len client_isn+1服务器发送FIN, 收到客户端的ACK后关闭, 释放资源
客户->服务 client_isn+1+server_isn+len+1客户端ACK这个FIN, 定时等待之后关闭, 释放资源

image-20220102152429848

  • 防范SYN洪泛攻击

  • 第二步的server_isn使用散列函数, 用源地址, 目的地址和端口号, 和一个只有服务器知道的散列函数

  • 第二步不分配资源

  • 第三步根据ACK里面的seq, 可以验证这个ACK是由先前的某个SYN生成的, 于是分配资源建立连接

  • 拒绝通信

  • 发送RST(RST标志位1)

拥塞控制原理

  • 一堆废话, 我只关心TCP

TCP拥塞控制

  • 拥塞窗口cwnd

  • 对发送进行限制: LastByteSent - LastByteAcked <= min(rwnd, cwnd)

  • 窗口与速率的关系: B = S(发出的包数量)/RTT(往返时间)

  • TCP拥塞控制算法

  • 总结

  • ssthresh(慢启动阈值)变化: 丢包事件: ssthresh = cwnd / 2

  • cwnd变化: 状态初始值

*  进入慢启动: cwnd = 1

*  进入拥塞避免: cwnd = ssthresh

*  进入快速恢复: cwnd = ssthresh + 3
  • cwnd变化: 增长方式
*  慢启动: 每个ACK, +1, 相当于每轮乘二

*  拥塞避免: 每轮 +1

*  快速恢复: 每个冗余ACK +1
  • 慢启动

  • 初始: cwnd = 1 (MSS)

  • 加倍: 每一轮, cwnd加倍

  • 结束

*  超时, 取cwnd = 1, ssthresh = cwnd/2,重新慢启动

*  到达ssthresh, 进入拥塞避免模式

*  3个冗余ACK, ssthresh = cwnd/2, cwnd = cwnd/2+3, 快速重传后,进入快速恢复
  • 拥塞避免

  • 线性增加: 每一轮, cwnd+1

  • 结束

*  超时, 取cwnd = 1, ssthresh = cwnd/2, 相当于慢启动,进入慢启动

*  3个冗余ACK, ssthresh = cwnd/2, cwnd = cwnd/2+3, 进入快速恢复
  • 快速恢复

  • 接下来收到的冗余ACK, cwnd都加1(之前的3个冗余ACK已经加过3, 至少加3)

  • 结束

*  收到期待的ACK(当对丢失报文段的一个ACK到达时), 将cwnd = ssthresh, 进入拥塞避免

*  超时, ssthresh = cwnd/2, cwnd = 1
  • TCP拥塞控制: 回顾

  • TCP Tahoe: 没有快速恢复, 3个ACK也进入慢启动

  • TCP Reno: 上文的方案

加3根据协议不同, 看具体情况做

慢启动: 其实是收到的每个ACK都加1, 因为ACK数等于发送数, 相当于翻倍

  • 需要拥塞控制的原因: 浪费带宽

  • 速率接近容量 -> 队列满 + 大排队时延

  • 大时延 -> 不必要的超时重传

  • 队列满 -> 丢包 -> 浪费上游流量

  • 丢包 -> 重传代价

公平性

  • TCP AIMD

  • 相同的RTT: 公平, 最终会达到平均分配带宽

  • RTT不同: RTT小的更快扩大窗口, 将得到更多带宽, 最终似乎与RTT成反比

  • UDP参与

  • UDP没有公平可言, 抢占资源

  • UDP将挤压TCP资源

  • 并行TCP

  • 一个应用使用多个TCP连接, 就获得了多倍其应得的带宽

网络辅助拥塞控制

  • IP首部设置ECN(2比特, 4状态), 送到接收主机

  • 接收主机在TCP ACK中设置ECE, 发到发送主机

  • 发送主机减半cwnd, 并在下一个报文头中设置CWD, 发到接收主机

第四章

=================

路由器工作原理

  • 输入端口

  • 线路端接: 物理线路接入

  • 数据链路处理: 协议, 拆封

  • 查找转发排队: 查找转发表, 存帧排队

  • 交换结构

  • 经内存交换

  • 经总线交换

  • 经互连网络交换(纵横式)

  • 输出端口: 排队, 数据链路处理, 线路端接

  • 路由选择处理器: 执行控制平面功能, 维护路由选择表和链路状态, 计算转发表

  • 基于目的地转发: 仅考虑目的地

  • 通用转发: 考虑更多因素

输入端口处理和基于目的地转发

  • 转发表在输入端口有副本, 在输入端口本地做出转发决策

  • 前缀匹配

  • 转发表不存储所有目的地址, 而是根据最长前缀匹配确定转发

  • 使用DRAM, SRAM, TCAM(三态内容可寻址存储器), 纳秒级

  • 其他动作

  • 出现物理层和链路层处理

  • 检查版本号, 检验和, 寿命, 重写后两个

  • 更新网络管理信息(如 计数器)

交换

  • 经内存交换: 输入卡处理地址查找和分组存储, 所有输入共享内存

  • 经总线交换

  • 输入端口为分组计划一个交换机内部标签(首部)

  • 与首部匹配的输出端口存分组, 并去除标签

  • 经互连网络交换

  • 优点: 可以并行

  • 纵横式, N纵N横N*N交叉点

  • 非阻塞: 到不同输出端的分组不会互相阻塞

  • 更复杂(去数据通信笔记看)

  • 三级非阻塞网络

输出端口处理

  • 输出缓存, 数据链路处理(协议, 封装), 线路端接

何处出现排队

  • 丢包: 没有缓存可以用来存储到达的分组

  • 输入排队

  • 交换结构不足以使所有到达分组无时延地通过它传送

  • HOL阻塞(线路前部阻塞): 被线路前部的一个分组阻塞, 例如两个分组发往一个目的地

  • 输出排队

  • 没有足够的内存存储到达的分组

  • 主动队列管理AQM

*  弃尾: 丢弃到达的分组

*  也可以删除正在排队的部分分组

*  向发送方提供阻塞信号
  • 随机早期检测RED

  • 缓存大小: $B=\textrm{RTT}\cdot C/\sqrt{N}$, $C$为链路容量, $N$链路上的TCP流数量, $\textrm{RTT}$平均往返时延

分组调度

  • 先进先出FIFO 先来先服务FCFS

  • 维护一个队列, 来了进入队尾, 队首挨个处理

  • 优先权排队

  • 每个优先权类有自己的队列, 各自FIFO

  • 不同优先级, 高的队列空了才处理低的

  • 非抢占: 已经开始的传输不会被打断

  • 循环排队规则

  • 多个队列, 不分优先级, 轮流提供服务

  • 保持工作排队规则: 有任何类的分组在等待, 则不允许链路保持空闲

  • 加权公平排队

  • 在循环排队的基础上加上优先级

  • 每一循环, 每个类得到多次服务, 次数与权重成正比

网际协议

IPv4数据报格式

  • 数据报格式
版本 4首部长度 4服务类型 8数据报长度16
标识16标志 3片偏移13
寿命 8上层协议 8首部检验和16
(NoNAT)源地址32
(NoNAT)目的地址32
选项(可选)
数据
  • 服务类型: 优先级(3bit), 可靠性(1bit, 一般/高), 时延(1bit, 一般/低), 吞吐量(1bit, 一般/高)

  • 标识, 标志, 片偏移: 与IPv4分片有关

  • 选项: 长度不定, 默认首部长度为20字节, 可变

  • 数据报长度: 首部加数据的长度, 字节为单位

  • 寿命: 经过一个路由器, 减1, 为0丢弃

  • 协议: 到达目的地才有用, 6-TCP, 17-UDP, 类似端口号

IPv4数据报分片

  • 原因: 链路层最大传输单元MTU, 限制IP数据报的长度

  • 对数据报分片, 并设置标识等

  • 标识: 每个数据报+1, 一个数据报的各个分片相同

  • 标志: 最后一个为0, 其他是1

  • 片偏移: 以64bit为单位

IPv4编址

  • 接口: 主机与物理线路的边界

  • 点分十进制记法: 192.168.0.255, 就这样的, 每个8位当作十进制数, 点分开

  • 地址分类:

  • A: 0开头/8

  • B: 10开头/16

  • C: 110开头/24

  • 子网(IP网络): CIDR无类别域间路由选择

  • 子网掩码: xxx.xxx.xxx.xxx/yy, yy为子网掩码,

  • 网络前缀: 地址的前yy位

  • 子网内的地址: 剩下的位数

  • 另一种表示: 前yy位为1, 剩下为0, 用点分十进制写出来

  • 路由聚合/路由摘要: 一个组织共享相同前缀

  • 主机得到地址的过程

  • 获取一块地址

*  来自ISP, ISP来自ICANN

*  管理员划分这些地址给子网
  • 获取主机地址: DHCP
*  所有的目的地址都是 255.255.255.255

*  DHCP服务器发现: 新到达的主机发送DHCP发现报文

  *  UDP目的端口67的报文

  *  目的: 255.255.255.255

  *  内容: 事务ID

*  DHCP服务器提供: 服务器的相应

  *  UDP目的端口68(其它端口也行)的报文

  *  源: DHCP服务器地址

  *  内容

    *  事务ID, 推荐IP地址, 掩码, 地址租期

*  DHCP请求: 主机选择一个服务器, 相应

  *  UDP端口67的报文

  *  源: 0.0.0.0

  *  内容: 回显配置信息, 事务ID+1

*  DHCP ACK: 确认配置

  *  UDP端口68的报文

  *  源: DHCP服务器地址

  *  内容: 证实参数, 事务ID+1

网络地址转换NAT

  • NAT路由器: 它和它背后的网路对外界是一台单一的设备

  • 允许内部外部通信, 使用不同的地址

  • NAT路由器将重写IP地址和端口号字段

  • NAT转换表

  • 内部地址:端口 - 外部地址:端口

  • NAT穿越: 解决内网服务器周知端口问题

  • UPnP: 通用即插即用协议, 解决NAT自动配置

  • 跨越网络层和传输层

IPv6

  • 数据报格式
版本 4流量类型 8流量标签 20
有效载荷长度 16下一个首部 8寿命 8
源地址 128
目的地址 128
数据
  • 首部定长40字节

  • 版本: 6

  • 流量类型: 与IP的服务类型字段类似

  • 流标签: 识别数据报的流, 用于优先权等

  • 有效载荷长度: 给出数据段的长度, 不含头部

  • 下一个首部 = 上层协议类型, 与IPv4的协议类型同值

  • 与IPv4的不同

  • IPv6不允许由路由器进行分片, 因此没有分片3字段

  • 首部检验和: 运输层和数据链路层进行过检验, 因此丢掉

  • 选项: 不是标准IP的一部分了, 可能出现在”下一个首部”指定的地方

  • 从IPv4到IPv6

  • 隧道: IPv6数据报放入IPv4的有效载荷字段中, 上层协议41

第五章

=================

路由选择算法

  • 路由选择算法: 从发送方到接收方, 确定一条通过路由器网络的好的路径

  • 图, 节点, 路径, 最低开销路径, 最短路径

  • 分类1

  • 集中式路由选择算法(链路状态算法): 完整, 全局的网络知识, 计算源到目的的最低开销路径

  • 分散式路由选择算法(距离向量算法): 迭代, 分布式地计算出最低开销路径

  • 分类2

  • 静态路由选择算法: 变化很慢, 人工配置

  • 动态路由选择算法: 随着网络流量负载变化或拓扑发生变化而改变路由选择路径

  • 分类3

  • 负载敏感: 链路开销反映拥塞水平

  • 负载迟钝: 反之

链路状态路由选择算法

  • 算法流程

  • $u$源, $D(v)$从源到$v$的距离, $p(v)$到$v$的最短路上的下一个节点

  • 首先$D(v)$正无穷, 若有边设为边的开销

  • 每一轮, 找出$D(v)$中最小的一个$v$, 进行如下操作

*  用这个$D(v)$更新$v$的所有邻点的开销, 值为$D(v)$加边开销
  • 直到不再变化

  • 复杂性: $O(n^2)$

  • 出现的问题

  • 同时运行LS算法的路由器

  • 链路选择的震荡, 由于一侧拥塞, 都选择另一侧, 而恰好使得这一侧也拥塞, 不断往返

  • 解决: 随机化发送链路通告的时间

距离向量路由选择算法

  • 算法流程: 对于每个节点

  • 更新距离向量估计值, 当直接相连的链路开销发生变化, 或从邻居接收到距离向量的更新

  • 更新规则: 取最小值, 对所有$D_v(y)+c(x,v)$以及原有的距离, $v$是$x$的邻居

  • 路由选择环路

  • 无穷计数: 有环路的情况下, 链路代价的增加, 将会反复震荡, 长时间后才能达到稳定

  • 毒性逆转: 如果z通过y路由选择到x, 则z将通告y, z到x的距离是无穷大

  • 涉及到3个或更多节点的环路还是不能解决无穷计数

算法比较

  • 报文复杂性

  • LS: $O(N E)$
  • DV: 仅在新的链路开销导致与该链路相连节点的最低开销路径发生改变, 才传播开销

  • 收敛速度

  • LS: 收敛块

  • DV: 较慢, 还有无穷计数

  • 健壮性

  • LS: 节点分别计算自己的最短路径, 一定程度健壮性

  • DV: 一个节点的错误计算值, 扩散到整个网络

因特网中自治系统内部的路由选择OSPF

  • 自治系统AS

  • 由处在相同管理控制下的路由器组成

  • 具有 自治系统内部路由选择协议

  • 具有 独有的AS编号 ASN

开放最短路优先OSPF

  • 是一种链路状态协议: 洪泛状态信息 + Dijkstra算法

  • 各个链路的开销: 管理员进行配置

  • 路由选择信息: 向全部路由器广播

  • 广播条件: 有链路状态发生变化 / 至少每30min一次

  • 报文: 直接由IP承担, 上层协议的值为89, 自己实现可靠传输和链路状态广播

  • 其他功能: 检查链路运行(发送OSPF HELLO), 获得相邻路由的链路状态数据库

  • 优点

  • 安全: 鉴别报文防止伪造(使用口令或MD5), 序号防范重放攻击

  • 多条相同开销的路径: 允许使用多条路径

  • 单播与多播: MOSPF使用现有的链路数据库, 链路状态广播机制增加新型链路状态通告

  • AS内层次结构: OSPF自治系统内部也可以配置多个区域, 运行自己的OSPF算法

ISP之间的路由选择BGP

  • 自治系统间路由选择协议

  • 边界网关协议: BGP

BGP的作用

  • BGP中, 分组不是路由到特定的地址, 而是路由到CIDR化的前缀

  • 协议提供的手段

  • 从邻居AS获得前缀的可达性信息: 允许子网广播自己的存在

  • 确定到该前缀的”最好的”路由: 本地运行BGP路由选择过程, 基于策略和可达性信息

通告BGP路由信息

  • 网关路由器: AS边缘的路由器, 直接连接到其他AS中的路由器

  • 内部路由器: 只连接了同一AS内的路由器

  • BGP连接

  • 在端口179的半永久TCP连接

  • eBGP: 跨越AS的BGP连接

  • iBGP: 相同的AS内的两台路由器的连接

  • 传递可达信息: 不断重复 AS内广播, 网关传递到其他AS 的过程

确定最好的路由

  • BGP属性: 路由器通告前缀时, 会在前缀中包括BGP属性

  • AS-PATH属性

*  每当前缀通过(离开)一个AS, (网关路由器)就在AS-PATH属性末尾, 加上自己的ASN

*  若其中已有自己的ASN, 则拒绝该通告, 以防止环路

*  于是, 接到这个通告的路由器, AS-PATH从头到尾恰为到达目标需要经过的AS的顺序
  • NEXT-HOP属性
*  是该AS-PATH起始路由器接口的IP地址, 也就是连接AS1, AS2的子网中, AS2网关路由器的地址
  • 目的前缀属性

  • 更多

  • 热土豆(烫手山芋)路由选择

  • 不考虑AS-PATH, 只关注NEXT-HOP

  • 用内部路由协议确定, 所有的NEXT-HOP中, 开销最小的一个

  • 目的是尽快将分组送出AS, 如同烫手山芋

  • 路由器选择算法

  • 依次使用规则, 直到只剩一个

*  选择本地偏好最高的

  *  路由被指派本地偏好(是BGP属性之一), 可由该路由器设置或学习到, 取决于网络管理员

*  选择最短AS-PATH的路由, 使用DV确定路径, 距离测度使用AS跳的跳数

*  使用热土豆路由选择

*  使用BGP标识选择

IP任播

  • 访问某任播地址的请求, 到达一系列主机中的一个

  • CDN

  • 多台服务器, 相同IP地址, 都用BGP通告各自的IP地址

  • 路由器将认为收到的多个通告, 是到达同一服务器的不同路径(其实是不同的服务器, 只是配置为相同的服务)

  • 客户请求时, 路由器将路由到”较近”的CDN服务器

  • DNS

  • 根服务器13个地址, 每个地址有许多镜像

  • 类似CDN, 可以让DNS请求到达”最近的”镜像

路由选择策略

  • 选择的路由通告策略

  • ISP协商等, 确定BGP通告规则, 拒绝某些通告, 尽管这些通告能够提供有效的路径

  • 例如BC直连, 另有BXC路线, X可以选择拒绝通告B和C自己能到达C或B, 以达到不转发BC流量的目的

拼装在一起: 在因特网中呈现

  • [木大警告] 这节不知道在讲什么玩意, 全是例子

因特网控制报文协议ICMP

  • ICMP在IP之上, 位于IP分组的有效载荷字段, 上层协议字段为1

  • 字段

  • 类型

  • 编码

  • 引发该ICMP报文生成的IP数据报的首部, 及其前8字节

  • 详细

  • 0-0: PING回显

  • 3-[0~3]: 目的[网络/主机/协议/端口]不可达

  • 3-[6-7]: 目的[网络/主机]未知

  • 4-0: 源抑制

  • 8-0: PING请求

  • 9-0: 路由器通告

  • 10-0: 路由器发现

  • 11-0: TTL过期

  • 12-0: IP首部损坏

  • 例子

  • PING: 类型8编码0, 回显: 类型0编码0

  • ICMP源抑制: 网络层拥塞控制, 然而TCP有了, 废物一件

  • TRACEROUTE

*  利用报文过期的ICMP的TTL过期报文(内含路由器的地址和名字)

*  每个包的目的端口号都不可达, 使用ICMP的目的端口不可达报文, 确定探索结束
  • IPv6新的ICMPv6

  • 分组太大

  • 未被承认的IPv6选项

第六章

=================

多路访问链路和协议

  • 广播链路: 多点, 一个信道

  • 碰撞: 多个结点同时发送

信道划分协议

  • 时分复用TDM

  • 时隙slot, 每轮每结点一个时隙

  • 速率: R/N, 负载不均衡时浪费, 统计时分复用解决, 有额外开销

  • 频分复用FDM

  • 分频率, 一人一频

  • 速率: R/N, 负载不均衡时浪费

  • 码分多址CDMA

  • 每结点一个编码, 1电平为此编码, 0为编码取反

  • 速率: R, 可同时发送(每个结点的编码必须线性不相关), 抗干扰

随机接入协议

  • 时隙ALOHA

  • 有ACK

  • 前提: 每帧长L, 每时隙L/R, 结点同步, 且在时隙开始时才传输, 碰撞检测够快

  • 流程

  • 发送: 结点在一个时隙开始发送帧

 *  成功: 若没检测到碰撞, 则认为成功传输
  • 失败: 检测到碰撞, 在之后的时隙中以概率p不断尝试重传, 直到没有碰撞

  • 效率: 取p=1/N时最大化, 当N趋于无穷时, 效率为1/e

  • ALOHA

  • 有ACK

除了不同步, 跟时隙ALOHA一样

  • 流程

  • 发送: 结点发送帧

*  成功: 若没检测到碰撞, 则认为成功传输
  • 失败: 检测到碰撞, 立刻以概率p不断尝试重传, 直到没有碰撞

  • 效率: 取p=1/N时最大化, 当N趋于无穷时, 效率为1/2e(前后都可能有重叠)

  • CSMA/CD

  • 无ACK

  • 不做同步

  • 流程

  • 监听: 监听信道是否空闲, 空闲时才开始传输, 传输前得等96比特时间(最小帧间隔)

  • 传输: 传输时也不断监听是否有其他结点的信号能量

 *  成功: 未发现其他能量, 认为发送成功
  • 失败: 发现其他能量, 立刻停止; 发送48bit干扰信号

  • 等待(非持续): 等待一个随机时间, 回到”监听”重传

  • 回退(p持续): 之后的时间当中以概率p重传

  • 回退(1持续, 以太网): 使用二进制指数后退

 *  经历过了k次碰撞, 就从\[0,…,2^k-1\]中选一个K值, 等待512K个比特时间

 *  k最大为10

 *  最多尝试16次发送
  • 效率: 近似为
\[\frac{1}{1+5d_{prop}/d_{trans}}\]
  • 最小帧长: 检测冲突的时长不超过端到端传播时延的2倍, 取这一值为最小帧长

轮流协议

  • 轮询协议

  • 流程: 每个从结点n

*  主节点发帧, 告诉从节点n能够发送的最大包数

*  从节点发送不超过n帧

*  主节点发现没有信号了, 继续轮询下一个从节点
  • 缺点: 轮询时延(第一步耗时); 主节点损坏则信道无用

  • 令牌传递协议

  • 流程

*  收到令牌

*  如果有帧要发, 则发送不超过最大数目的帧数

*  传递令牌
  • 缺点: 令牌传播时延, 令牌丢失, 单点故障则信道崩溃

交换局域网

链路层寻址和ARP

  • 媒体访问控制 MAC地址

  • 长度: 6字节

  • 与适配器(NIC等)绑定

  • 广播地址: 全1, 即12个F

  • 每个主机都检查MAC是否与自己相同, 相同则接收

  • 地址解析协议 ARP协议

  • 子网内解析

  • 每台主机或路由器存有ARP表, 保存了其知晓的MAC-IP对应关系, 每个条目有过期时间

  • 流程

*  若有表项, 直接构造包并发送

*  若无, 向适配器发送ARP分组(内容: 发送和接收的IP地址, 目的MAC: 广播地址)

*  每个主机都收到, 若IP相同, 则响应ARP分组, 用标准链路层帧回复
  • 发送数据报到子网以外

  • 路由器每个端口均有MAC和IP

  • 路由器将相应ARP, 主机获得的此IP的MAC地址是路由器这一端口的MAC

以太网

  • 以太网帧结构

  • 帧字段

*  前同步码: 8字节: 前7个字节都是10101010, 同步时钟并唤醒适配器; 最后一个是10101011, “11”警告适配器数据到来

*  目的MAC地址: 6字节: 与自己的MAC相同才会接收

*  源MAC地址: 6字节

*  类型字段: 2字节: 允许以太网复用多种网络层协议

*  数据: 46-1500: 承载IP数据报, 超长将分片

*  CRC: 4字节: 适配器丢弃校验出错的帧
  • 无连接服务: 不事先握手

  • 不可靠服务: 成功无ACK, 失败无REJ

  • 以太网技术

  • 命名: [速率]BASE[距离 或 介质], T指铜双绞线, FX/SX/BX指光纤

  • 10Mbps: 10BASE[%d], 距离, 使用同轴电缆

  • 100Mbps: 100BASE-TX/T4/T2双绞线, -FX/SX/BX光纤

  • 1000Mbps: 1000BASE-T等, 又名802.3z, 双绞线, 兼容旧标准, 点对点(交换机)信道全双工, 另有广播(集线器)

  • 10Gbps: 10GBASE-T

链路层交换机

  • 交换机转发和过滤

  • 过滤: 决定帧应该发到某个接口还是将其丢弃

  • 转发: 决定帧去往哪个接口

*  流程: 借助交换机表(MAC - 接口 - 时间)

  *  没找到目的MAC, 向源以外的所有端口广播

  *  找到MAC, 与源端口匹配, 则丢弃

  *  找到MAC, 与另一端口匹配, 转发到这一端口(进入端口的缓存)
  • 自学习

  • 流程

*  初始: 交换表为空

*  学习: 收到帧, 则将\[源MAC地址 - 到达的接口 - 当前时间\]存入交换表

*  老化: 一段时间后未收到这一地址作为源的帧, 则此表项移除
  • 即插即用设备: 无需进行配置

  • 双工: 每个接口可同时发送和接收

  • 链路层交换机的性质

  • 消除碰撞: 星型拓扑, 没有因碰撞而浪费的带宽

  • 异质链路: 链路彼此隔离, 允许不同速率, 新旧混用

  • 管理: 检测异常适配器并断开之, 等

  • 交换机与路由器

  • 交换机

*  优: 即插即用, 分组过滤, 高速率

*  缺: 拓扑限制为树形, 不提供广播风暴的保护
  • 路由器
*  优: 拓扑灵活, 提供防火墙保护

*  缺: 需要配置, 处理延迟大

网桥

  • 功能: 读取A网(总线)的所有帧, 在B(总线)上重发每个帧; B->A同理

  • 特点: 不更改帧, 原样转发; 带缓存; 路由寻址能力(基于MAC, 只转发需要转发的帧)

  • 协议体系

  • 层次: 数据链路层 - MAC层

  • 链接模式

1. `局域网 - 网桥 - 局域网`, 原样转发

2. `局域网 - 网桥 - [网络或链路] - 网桥 - 局域网`, 需要适当封装, 但原始MAC帧不修改
  • 固定路由选择

  • 每对点均有一条选定的路由, 跳数最少, 仅在拓扑变化时改变(生成树算法)

  • 生成树方法

  • 帧转发

*  x收到帧

*  检查目的地址: 若在某一端口的列表中, 且非阻塞, 发送; 不在任何列表, 则x除以外的端口全部转发
  • 地址探索: 同交换机
*  收到帧, 则帧源地址MAC与此端口关联, 加入此端口数据库

*  数据库项带计时器, 超时删除
  • 最小生成树算法: Prim
*  Prim算法流程

  *  选取起始点(根网桥), 加入集合S

  *  对于S中所有点(网桥), 在他们所有邻居里面找离S中点最短的距离, 把这个邻居加入S, 这条边(网桥间的最短距离)加入生成树

  *  直到所有点都加入S, 边集合构成生成树

*  网桥阻塞规则

  *  选择根网桥: ID最小的网桥

  *  为每个网桥选择root port: 到根网桥最低开销的端口

  *  为每个LAN指定网桥: 拥有到根网桥最低开销路径的, 与这个LAN相连的网桥

  *  Designated port: 这个指定网桥与这个LAN相连的端口

  *  Designated port 和 root port 不阻塞, 别的都阻塞

虚拟局域网

  • 树形交换局域网的缺陷

  • 缺乏流量隔离: 单播能够隔离, 但广播不行; 缺乏安全隐私的隔离

  • 交换机无效使用: 为了分组造成交换机端口的浪费

  • 管理用户: 用户在分组间移动, 则需要改变物理布线, 连接到不同交换机

  • VLAN: 单一的物理交换机定义多个虚拟局域网, 广播流量仅到达同一分组的端口

  • 跨VLAN需要路由器

  • VLAN划分: 端口 或 MAC

  • VLAN干线连接

*  干线接口: VLAN交换机之间交换帧

*  帧格式802.1Q: 以太网帧的源地址和类型之间, 加入VLAN标志

第七章

=================

802.11 体系结构

  • 接入点AP: 中央基站

  • 基本服务集BSS: 1AP + 若干站点(其NIC有唯一MAC)

  • 基础设施无线LAN: AP和将AP连接到路由器的有线以太网

  • 信道与关联

  • 服务集标识符SSID: 热点名(单字/双字)

  • 信道: 一共11个, 1 6 11是三个不重叠信道

  • 关联: 站点选择一个AP, 仅通过它接入因特网

*  信标帧: AP周期性广播发送, 包含SSID和MAC

*  被动扫描: 站点等待信标帧

*  主动扫描: 站点广播探测帧, AP回复探测响应帧

*  关联流程: 类似DHCP

  *  关联请求帧 -> 关联响应帧 -> (第二次握手, 与想关联的AP)

CSMA/CA: 802.11 MAC协议

  • 带碰撞避免的CSMA: CSMA/CA

  • 载波侦听

  • 碰撞避免

  • 使用链路层ARQ: 确认/重传, 有ACK

  • 不适用碰撞检测的原因

  • 接收信号的强度远小于发送信号的强度, 检测碰撞代价大

  • 由于隐藏终端, 衰减问题, 无法检测所有的碰撞

  • 链路层确认方案

  • 目的接到帧, 且通过了CRC检验, 则等待”短帧间间隔SIFS”, 发回确认帧

  • 发送站点在给定时间内未收到确认, 将会假定发生错误, 并重传该帧

  • 多次重传失败, 将放弃发送并丢弃该帧

  • CSMA/CA流程

  • 监听到信道空闲, 则在”分布式帧间间隔DIFS”的短时间后发送

  • 否则, 选取一个随机回退值, 并在侦听信道空闲时递减该值, 若信道忙, 则不变

  • 当值为0时, 发送整个帧

  • 如果收到确认, 则该帧已被正确接收

*  如果此时需要发下一帧, 直接从第二步开始

*  如果没有确认, 则进入第二步的回退, 并从更大的范围选取随机值
  • 处理隐藏终端

  • 隐藏终端: AP与节点A B均相互可见, 但由于信号衰减, AB之间互相接收不到对方的信号, 无从进行载波侦听

  • 请求发送(RTS)帧, 短: 站点广播, 指示传输DATA帧和ACK需要的总时间

  • 允许发送(CTS)帧, 短: AP广播, 给发送方明确地许可, 并让其他站点知道不要发送

*  收到CTS且不是自己发送RTS的站点, 将在其中的时间段内, 抑制发送
  • 效果
*  解决隐藏终端, 长DATA只会在预约后才被传输

*  发生RTS和CTS的碰撞, 因为他们很短, 仅持续很短时间
  • 实际
*  RTS门限值, 大于此的数据才会预约

*  许多站点的RTS门限大于帧长, 默认不使用RTS/CTS
  • 点对点网络

  • 定向天线, 没其他站点, 相当于是AP与站点的点对点

第八章 网络安全

=================

  • 安全通信要求

  • 机密性:加密报文

  • 报文完整性:不会被篡改,或识别出篡改

  • 端点鉴别:确认两方身份

  • 运行安全性

  • 密钥

  • 对称密钥

  • 攻击方式

  • 唯密文攻击:入侵者只能截获密文

  • 已知明文攻击:入侵者知道明文和密文的匹配

  • 选择明文攻击:能够选择某一明文报文并得到改明文报文对应的密文形式

  • 单码代替密码:凯撒密码

  • 多码代替密码:不同位置出现的相同字母可能以不同的方式加密

  • 块密码

  • 要加密的报文被处理为k比特的块,kbit块明文被映射为k比特块的密文

  • 如:DES,3DES,AES

  • 流密码

  • 公开密钥加密

  • RSA

  • $n=pq,z=\phi(n)=(p-1)(q-1)$

  • 选择$e<n,gcd(e,z)=1$,$ed\mod{z}=1$

  • 公钥$K_B^+(n,e)$,私钥$K_B^-(n,d)$

  • $K_B^+(m)=m^e\mod{n},K_B^-(m)=m^d\mod{n}$.

  • 会话密钥

  • 用RSA传输用于加密大量传输信息的密钥

  • 报文完整性和数字签名

  • 密码散列函数:MD5、SHA-1等

  • 报文鉴别码:报文附加H(m+s),s仅二者已知

  • 数字签名:私钥签名

  • 公钥认证:CA

  • 端点鉴别

  • ap4.0:

  • A->B: “我是A”

  • B->A: 选一个不重数R,给A

  • A->B: $K_{A-B}(R)$.

  • B验证

  • TCP:SSL

  • 握手

  • 客户发送它支持的密码算法的列表,连同一个客户的不重数

  • 从该列表中,服务器选择一种对称算法(例如AES)、一种公钥算法(例如具有 特定密钥长度的RSA)和一种MAC算法。它把它的选择以及证书和一个服务器不重数返 回给客户

  • 客户验证该证书,提取服务器的公钥,生成一个前主密钥(Pe Master Secret, PMS),用服务器的公钥加密该PMS,并将加密的PMS发送给服务器。

  • 使用相同的密钥导岀函数(就像SSL标准定义的那样),客户和服务器独立地从 PMS和不重数中计算出主密钥(Master Secret, MS)O然后该MS被切片以生成两个密码和 两个MAC密钥。此外,当选择的对称密码应用于CBC (例如3DES或AES),则两个初始 化向量(Initialization Vector, IV)也从该MS获得,这两个IV分别用于该连接的两端。自 此以后,客户和服务器之间发送的所有报文均被加密和鉴别(使用MAC)

  • 客户发送所有握手报文的一个MAC

  • 服务器发送所有握手报文的一个MAC

第九章

=================

流式存储视频

  • UDP流、HTTP流、适应性HTTP流

  • 与客户缓存有关

提供多种类型的服务

  • 监管: 漏桶

  • 监管准则

*  平均速率: 长时间速率存在最大值 - 漏桶的令牌产生速率

*  峰值速率: 短时间速率存在最大值 - (将桶容量定为1, 此时能够限制峰值速率)

*  突发长度: 极短时间(趋近0)发送的分组数量存在最大值 - 漏桶的高度
  • 漏桶描述
*  分组首先进入令牌等待队列

*  在漏桶处取得令牌的分组将被发送

*  桶高度不超过b

*  每秒生成r个令牌加入桶
  • 效果
*  平均速率: r + b/t, 时间足够长, 该值为r

*  突发长度: b

*  峰值速率: 在已有的一个漏桶后, 串联一个高度为1的桶, 其速率r’可限制峰值速率