计算机网络背诵笔记
本提纲是计算机网络课程的复习背诵,根据西交的考点截取了内容。这个课程使用 Tanenbaum, Andrew S. 的著名课本。
这次考的不难,居然没有 TCP 拥塞控制。
开悟
计算机网络是一组通过单一技术相互连接的自主计算机集合
分布式系统强调整体性
分类
[Personal | Local | Metropolitan | Wide] Area Networks
、internetworks
按其他标准
子网:一组路由器和通信线路的集合,主要负责将数据包从源主机移动到目的主机
分层模型
优点:各层独立,灵活性好,结构分离,易于实现维护,促进标准化
原则:根据功能需要,功能明确,利于标准,信息量少,层数合适
OSI 七层模型(主要概念:服务、接口、时序)
协议三要素:语法、语义、时序
Unit exchanged | 层 | 协议 |
---|---|---|
APDU | 应用 | HTTP, SMTP, RTP, DNS, TELNET, FTP, DNS |
PPDU | 表示 | |
SPDU | 会话 | |
TPDU (Segment) | 传输 | TCP, UDP |
Packet | 网络 | IP, ICMP, RIP, OSPF, BGP |
Frame | 数据链路 | PPP |
Bit | 物理 |
TCP/IP 模型:应用层,传输层,互联网层(Host to network)(Link layer)
会话层:管理应用程序间的会话;表示层:处理语法语义
服务
有无连接,有无确认
服务 | 例子 |
---|---|
可靠消息流 | 帧序列 |
可靠字节流 | 远程登录 |
不可靠连接 | 数字语音 |
不可靠数据报 | 垃圾邮件 |
确认数据报 | 挂号信 |
请求-回复 | 数据库查询 |
Standardization
Body | Area | E.g. |
---|---|---|
ITU | Telecommunication | G.992 (ASDL), H.264 |
IEEE | Communications | 802.3, 802.11, 802.15 (PAN) |
IETF | Internet | RFC 2616, RFC 1034/1035 |
W3C | Web | HTML5 |
Internet Architecture
- POP: Point Of Presence;ISP 存点
- IXP: internet exchange point;Internet 交换点
- CMTS: cable modem termination system
- DSLAM: access multiplexer
物理层
机械特性;电气特性;规程特性(同步、信号时序、应答关心、操作过程);功能特性
傅立叶分析
假设周期是 8 个 Bit,8 次谐波足以复原信号
则 \(b\) Bit/s 的第一个谐波频率为 \(b/8\) Hz,可发送的谐波次数是截止频率(电话线 3kHz)除以一次谐波频率
Nyquist 采样定理
波特率:符号一秒变换的次数 \(B_r\);比特率 \(s\)(bps);离散等级 \(V\) \[ s=B_r\log_2 V \] 采样定理 \[ \max{s} = 2B\log_2V \]
其中 \(B\) 为带宽
也就是说,带宽 \(B\) 的信道最多做两倍频率采样来到达 \(2B\) 的波特率
Shanon 定理
\[ \text{Maximum Bit Rate} = B\log_2(1+S/N) \]
其中 \(S/N\) 是信噪比
dB: \(10\log_{10}(S/N)\)
介质
引导型介质:磁,双绞线(S/U TP),同轴线,电力线,光纤(0.85um, 1.30um, 1.55um)
非引导型介质:电磁波,微波,红外,可见光
VLF,LF,MF 地面传播(AM)
HF、VHF、UHF 电离层反射(FM/TV)
卫星:LEO,MEO(GPS),GEO(L, S, C, Ku, Ka)(SHF、EHF)
小口径终端可使用地面 Hub 放大
数字调制
比特(数据)与代表他们的信号之间的转换过程称为数字调制
Baseband、Passband
- T1/USB:NRZI
- Ethernet:Manchester
解决 NRZI 长串 0:4B/5B 码,扰频
解决直流分量:双极编码(1/-1 均为 1,用于平衡直流分量),8B/10B码
通带传输
ASK 幅移键控
FSK 频移键控
PSK 相移键控:二进制相移键控 BPSK,正交相移键控 QPSK
QAM 正交调幅
信道复用
频分复用 FDM
利用通带传输使多个用户共享信道
OFDM 正交频分复用:取消保护带,在所有子载波上调制
波分复用 WDM
(SONET)波长,光纤上极高频率的频分多路复用
时分复用 TDM
时间槽,保护时间
统计时分复用
码分复用 CDMA
Code Division Multiple Access,由 Walsh 码产生正交码片序列,每个比特分为 \(m\) 个码片,每个站发送被分配的码片序列或其反码
所有站的码片序列两两正交,\(S\cdot T=\dfrac{1}{m}\sum_{i=1}^mS_iT_i=0\)
电话交换网
Local loop; Trunks; Switching offices
LATA (Local Access and Transport Access), LEC, IXC
DSL: Cat3 UTP
ASDL (Asymmetric Digital Subscriber Lines) 256x4kHz Channels; 0-25 Voice
数字电话中使用脉冲编码调制 PCM,Pulse Code Modulation,每秒采集 8000 个样值,T1 载波每帧(125 \(\mu\text{s}\))24 个信道(TDM),每信道 8 bit,一个帧标记位,共 193 bit,\((8\times 24 + 1)\times 8000 = 1.544\) Mbps,信令控制 8 kbps
T2 = 4 T1,T3 = 7 T2,T4 = 6 T3
SONET(Synchronous Optical Network),每帧 \(87+3\) 列,\(9\) 行, \(8\times810\times((87+3)\times 9)\times 8000 = 51.84\) Mbps
有线电视网同轴搭接,同轴接到光纤节点;固话每家回环到 End Office
交换
电路交换(Strowger 装置):建立电路,传输数据,拆除电路
包交换(存储-转发):报文交换(逻辑上完整),分组交换(数据报、虚电路),信元交换(固定长度的信息段)
发送时延、传播时延、转发时延
蜂窝网络
频率可跨蜂窝复用,并随着用户的移动而切换蜂窝
模拟语音 1G(AMPS),临近蜂窝不复用,832 个信道(Control/Paging/Access/Data),FDM,频分双工(FDD)
数字语音 2G(GSM),124 FDM,8 TDM,148 bit 数据帧
移动交换中心 MSC,归属位置寄存器 HLR,拜访位置寄存器 VLR,鉴权中心 HLR
数字语音数据 3G,CDMA(长伪随机序列),功率控制
4G,TD-LTE(TDD 时分双工)
5G,融合怪
数据链路层
主要功能:物理地址;成帧(定界与同步);差错控制;流量控制;信道访问控制
PPP:成帧,链路控制(启动、测试线路、协商参数)、协商网络层选项(没有差错流量控制)
上层服务:不可靠(无 ACK)无连接,可靠无连接,可靠连接
应答:最常采用正向(负向,双向)
成帧
原则:易区分,带宽小
- 字节计数法
- 字节填充的标志字节法 FLAG,ESC
- 含位填充的分界标志法:使用 01111110 定界,连续 1 塞 0
- 物理层编码违例法:冗余编码使用
错误控制
自动纠错
Hamming codes
Binary convolutional codes
Reed-Solomon codes
Low-Density Parity Check codes
汉明距离即异或值的 1 数量
纠错码 \(n=m+r\) 位,对于一位错误纠错,\(m+r+1\le 2^r\)(对于合法的 \(2^m\) 个码字,距离 1 内的 \(n+1\) 个码字都纠错至它)
Hamming Code
汉明码 index \([1,n]\),第 \(2^k, k\ge 0\) 位是二进制 index \(k\) 位为 1 的所有值(包括自己)的偶校验
纠错位置为所有校验结果拼接成的二进制串表示的
index(...P8P4P2P1
)
检错反馈重发
Parity
Checksums
Cyclic Redundancy Checks
CRC
\(r\) 阶生成多项式 \(G(x)\),向帧追加 \(r\) 位使得多项式能被 \(G(x)\) 模二除尽
流量控制
Utopian
无错,理想信道,单工
链路层进什么出什么
无错信道下的单工停等协议
收方有有限的速度和缓冲区,每收一包发送确认;
发方只有确认后才可发下一包。
有错信道下的单工停等协议
采用正向应答、定时重传、循环序列号
有错信道下的双工协议
Piggybacking:ACK 序列号在数据帧中附带
缺点:同时开始传送时,若超时计时器不合理,将会传送三次以上
ack_timeout
用于 Piggyback 缺少反向流量的情况
滑动窗口协议
发送端维护允许连续发送未应答帧的序号,当收到 ACK 后该序号移除并后移窗口
接收端维护允许连续接收未处理帧的序号,当收到后将该序号移除并后移窗口
延迟-带宽乘积 \(BD\),窗口大小(发送容许未 ACK 的帧数量)为 \(w\),链路利用率小于 \(\dfrac{w}{1+2BD}\)
损坏帧处理
根据接收缓冲区和带宽的 Trade-off,有两种方案
Go Back N
在该帧之后的所有帧都会被忽略,接收窗口大小为 1
使用累计确认(accumulative acknowledgement),确认某帧会确认之前帧
每一帧都要给一个计数器
Selective Repeat
仅重传该帧,需要 NAK
为了防止发送接收窗口重叠,序列号空间至少为窗口大小的两倍
数据链路层协议例子
SONET
IP 包;PPP 帧;SONET 载荷
PPP 负责成帧,链路控制(LCP),协商网络层选项(NCP),错误检测;不需要错误纠正,流量控制,有序性,多点链路
PPP 帧结构:Flag 转义
0x7D 0x5E
;控制域在不可靠线路上可以使用有序号的传输
ASDL
PPP;AAL5;ATM;ASDL 载荷
介质访问控制子层
静态信道分配:FDM,TDM
动态信道分配假设:独立流量、单信道、检测冲突、连续时间或时间槽、载波监听或无载波监听
发送站行为假设:所有帧长相等,泊松分布发送每帧时间发送包均值 \(0<N<1\),带重传均值 \(G\),冲突率 \(P_0\),吞吐率 \(S=GP_0\)
给定时间发送 \(k\) 帧的概率
\[ \mathrm{Pr}[k]=\frac{G^ke^{-G}}{k!} \]
ALOHA
连续时间
无载波监听,若要发送,则直接发送,若冲突,随机重传;\(G=0.5\) 时效率最好 \(18.4\%\)
\(S=Ge^{-2G}\)
时间槽
时间槽内才能发送,冲突时间减半,最高效率翻倍 \(G=1\) 时效率最好 \(36.8\%\)
\(S=Ge^{-G}\)
CSMA
Carrier Sence Multiple Access,有载波监听的多站访问
1-persistent
监听,若可发,立即发
Non-persistent
监听,若不可发,随机时间后再次尝试
p-persistent
使用时间槽,若信道可用,以 \(p\) 概率发送,\(1-p\) 概率下一槽发送
CSMA-CD
CSMA with Collision Detection,带冲突检测
如果冲突发生,立即停止发送,等随机时间
Bit-Map Protocol
N 个冲突槽,在冲突时间发比特以预约,接下来由编号高的站先发
Token Ring
拥有 Token 的站可以发,并把 Token 传递给下一个站
Binary Countdown
在竞争期间从高到低发自己的编号,若看到 1 且自己为 0 则放弃(上述两种每站在竞争期间都需要一位,\(O(N)\);此方法 \(O(\log N)\))
Limited-Contention Protocols
思路:对 \(k\) 个站来说,每个站该槽发的概率若是 \(p\),成功发的几率是 \(kp(1-p)^{k-1}\)。对 \(p\) 求导可得最优概率 \(((k-1)/k)^{k-1}\)。将多个站分为组,组内竞争,组间无竞争。
The Adaptive Tree Walk Protocol
自适应树遍历协议:叶子是站,节点是组,有冲突则深度优先走直到不冲突
假设 \(q\) 个 ready 站均匀分布,\(i\) 层某节点的 ready 站期望为 \(2^{-i}q\)
Wireless LAN Protocols
Hidden terminal problem:A 给 B 发,看不见的 C 也给 B 发
Exposed terminal problem:A 因为 C 不给 B 发,但实际上 C 对 B 没影响
MACA (Multiple Access with Collision Avoidance):RTS (Request To Send),CTS (Clear To Send);其他收到 CTS 的站不能发,仅收到 RTS 的站可以发
Ethernet
Classic Ethernet
Physical Layer
全部通过 Transceiver 接到同一根同轴线上,同轴线可以 Repeater 串接
发曼彻斯特码
线:xBasey/xBase-T/F
,x 表示速率(Mbps),Base
基带传输,y 表示 coax 长度(100m),Twisted pair/Fiber;用四个中继器最长
2500 米
MAC Sublayer
帧格式
前导码每字节 10101010
,除了最后一位 Start of
frame;它是曼彻斯特码方波
MAC 地址第一位 1 是组播地址,全 1 是广播地址
由于 Ethernet 和 IEEE 的兼容问题,0x600 以下为 Length,否则 Type
Data 最长限制最早来自于 Transceiver 的 RAM 容量
传播时延 \(\tau\),最长 \(2\tau\) 时检测到错误,帧长不得小于该时间(2500m,50 \(\mu\)s,10 Mbps,则最小帧长 500 bit);每一个检测到冲突的站都发 4-6 Byte 的干扰串;最小帧长 64 字节
32 bit CRC Checksum
CSMA-CD
一个时间槽 64 bit
802.3:1-坚持 CSMA-CD
Binary Exponential Backoff: 假设我发的帧已经撞了 \(i\) 次,下次发之前等待
randfrom(0, 2^i)
个时间槽;第 10-15 次冲突等最多 1023
个时间槽,第十六次没成功就开摆
交换以太网
全双工则无冲突
混杂模式:所有的帧给所有的电脑,不只给 dst
快速以太网
802.3u,直接快十倍,再变短(210 m)
100Base-TX 4B-5B 125 MHZ, 100 Mbps (Cat 5 UTP)
千兆以太网
支持 200m:
- 载波扩展(加 Padding 到 512 Byte)
- 帧突发(合并多个帧)
万兆
10GBase-[S|L|E]R/CX4/T
,三种光纤/四对同轴/四对双绞线(Cat
6a)
无线网络
802.11
数据链路层分为 MAC 子层和 LLC(Logical Link Control)子层
Physical Layer
802.11 Frequency hopping
802.11b Spread spectrum, CDMA 2.4G
802.11a OFDM 5G
802.11g OFDM 2.4G
802.11n MIMO OFDM
MAC Sublayer
CSMA-CA
准备发之前先随机后退(Backoff)一段时间,若冲突使用 Binary Exponential Backoff
使用 ACK 推断冲突
DCF: Distributed Coordination Function 分布式协调功能
Point Coordination Function 用于单 AP 情况,通常无用
Virtual Sensing: Network Allocation Vector 记录别的站要发多久,RTS CTS 实际上没啥用
DIFS (DCF Interframe Spacing) 每种帧后退不一
802.11 帧格式
三个地址:AP, src, dst; rcv, AP, src
802.16 Broadband Wireless
早期试图作为有线本地回环的无线替代的产物,挑战 4G
数据链路层有三个子层:Security Sublayer; MAC common sublayer; Service specific convergence sublayer.
Physical
802.16a OFDM, Fixed; 802.16e Scalable OFDMA Mobile
3.5 GHz/2.5 GHz
MAC
Classes of service (same as ATM)
constant bit rate (uncompressed voice)
real-time variable bit rate (compressed multimedia)
non-real-time variable bit rate (file transfer)
best-effort (else)
Bluetooth
Piconet: Master and slaves
TDM 系统(时分复用)
活跃从节点最大 7 个,最多 255 个驻留节点
Scatternet: overlapping piconets
对于不同的应用预先定义 Profile
Linkcontrol \(\sim\) MAC
L2CAP: Logical Link Control Adaptation Protocol
Header:F 流量控制 A 确认 S 序号;重复三遍是保证大量冗余
RFID
Radio Frequency Identification
EPC (Electronic Product Code) Gen 2 RFID
Physical layer
标签选择不反射或反射读写器的信号(后向散射 Backscatter)
Tag Identification Layer
Slotted ALOHA
读写器告诉标签的时间槽范围(Query Qrepeat),标签随机选择时间槽应答 RN16,收到读写器ACK后,再发 EPC
二层交换
学习网桥
网桥工作在混杂模式(dst 不是网桥的包也可以处理)
泛洪:不知道就全发
后向学习:看源端口学
生成树网桥
802.1D
选举一个根,然后按到根的距离做生成树
VLAN
802.1Q
最大长度 1522 字节(本来是 1518)
Type 字段魔改一番;CFI: Canonical Format Indicator
网络层
主要功能:寻址;路由选择;数据分组转发;流量控制;拥塞控制;差错检测恢复;审计
面向连接实现
标签交换:路由器可以分配连接标识符
多协议标签交换 MPLS
路由算法
泛洪算法:设最大跳数,通过维护源路由器的最大序号表判断泛洪过的数据包
距离矢量路由:表告诉你某目的走哪条路
- 有无穷计数问题
链路状态路由(OSPF/IS-IS):把完整的链路信息发给别的节点
广播 LAN(一根 Ethernet)被建模成一个节点,指定一台做路由工作
发现邻居、度量成本、构造信息包、发给其他路由器、接收信息包、计算最短路
每一个链路信息数据包都有 Age,每次转发或走过一秒减一
状态包缓冲区里记录了 Age,Seq,发送标志(要发到哪里),ACK 标志(从哪个端口来)
层次路由:分层,最优的层数是 \(\ln N\)
广播路由:逆向路径转发(沿着生成树来的泛洪包可以转,其他的不用)
组播路由:距离矢量组播路由协议(生成树子树如果没儿子有兴趣就剪掉,但是每个组播源都可能是根);核心树(发给某个组的树根然后转发,树其实是同一颗)
任播路由(Anycast,发给最近的组成员):
层次路由即可移动路由:家乡代理
Ad Hoc 路由(ADOV):按需发现(泛洪),路由维护(周期 Hello)
拥塞控制
网络供给:加钱
流量感知路由:依照负载调节路由权重
准入控制:应用于虚电路,控制虚电路建立
流量调节:向上游发 Choke 包(抑制包);ECN(应答包上打标记);逐跳后压(每一跳收到抑制都要减缓)
负载脱落:Wine;Milk;Priority;RED(Random Early Detection,平均队列长度超阈值即丢)
服务质量
应用需求(带宽;延迟;抖动;丢失)
流量整形
漏桶:数据包恒定速率流出
令牌桶:用令牌发包,令牌恒定速率供给,可以存一些
包调度:同一个流的数据包需要统一路由;预约带宽、缓冲和 CPU 时钟
Round-robon 多个流公平队列
Weighted Fair Queueing 计算 Finish Time \(F_i=\max(A_i, F_{i-1})+L_i/W\),按 Finish Time 排序发送
准入控制:建立流时生成流规范(令牌桶容量,令牌桶速率,峰值速率,最小最大包大小),一路上的路由器调整规范并预留资源
综合服务,资源预留协议:沿着组播生成树往上走做预留
区分服务:基于类别的服务质量,单跳行为(在服务器的待遇)
加速转发:开了一个新的快道
确保转发:先过分类器,再过监管器,生成 12 个 优先级(4 个分类 3 个丢包),进 WFQ
互联网络
网络层要隐藏下面不同的链路层技术
多协议路由,管道技术:直接把整个带头的包包住(v4 包 v6)
数据包分段
限制包长的理由
硬件(如以太网 1500)
操作系统(如 512 Byte 缓冲区)
协议(IP 65515 Byte)
标准
减少错误带来的重传(802.11 2272 Byte)
防止占信道
MTU (Path Maximum Transmission Unit)
Transparent fragmentation: 出网关重组(需要计数,路由器支持,需要缓冲)
Nontransparent fragmentation: 直到目的再重组(分段开销,丢包,主机突发大)
分段相关字段:包编号(分段后一样);Offset(第一字节的偏移量);终止位(最后一段)
路径 MTU 发现:如果包太大就传回去告诉源重发个小的
IPv4
IP 头
(4b) IHL: 头长度,5-15 Words
(1B) Diff.Serv.: 6b 标识确保服务,2b ECN
(2B) L: 65535 Max
(2B) ID: 包序号,同一个包的所有段一样
(1b) Unused
(1b) DF: Don't Fragment,来检测 MTU
(2b) MF: More Fragments: 同包最后一段置 0
(13b) Frag.Offs: 第一字节的位置,段按 8 Byte 对齐,则少三位
(1B) TTL: 最多活 255 跳
(1B) Protocol: 传输层协议
(1B) Checksum: 所有半字的和的补码(加起来是零)
Option 基本不管了
IP 地址
The prefix is network address; the suffix is the host address.
Subnetting: 加长给的 prefix
CIDR-Classless InterDomain Routing 无类域间路由:
路由聚合,即高层路由器的表项前缀变短
Longest matching prefix:聚合完了可以加项,这些前缀长的优先匹配
Classful addressing
Special addresses:
127.*.*.*
环回
0.0.0.0
This host
255.255.255.255
广播
(Network)11...1
某网络下的所有主机
224.0.0.0/24
本地网络组播
NAT
依赖 TCP/UDP 协议
三种内网 IP
1 | 10.0.0.0 - 10.255.255.255/8 |
Full Cone NAT:第一次使用建立映射 (IP:Port) \(\to\) (IP:Port),内发外外发内地址不变
Restricted Cone NAT:外网主机 S 按映射地址发内网主机 C 时,C 必须向 S 的 IP 发过包
Port Restricted Cone NAT:外网主机 S 按映射地址发内网主机 C 时,C 必须向 S 的 IP:Port 发过包
Symmetric NAT:外网主机与内网建立连接,NAT 都会创建新的 IP:Port,其他外网主机无法通过别的连接建立的 IP:Port 访问
IPv6
目标
很多
减小路由表
简化,更快
安全
关注服务类型
辅助组播
漫游不换地址
给发展留空间
共存
流标签为零时不是虚电路,流标签和地址有关
Payload Length 不算 40 个字节的头
Next Header 是可选头的类型,若没有可选头就是下一个协议头
不分段,直接发现 MTU
ICMP
它是包裹在 IP 里的
ARP
Who has (Some IP)? Tell (Some IP);
(Some IP) is at (Some MAC).
缓存 ARP 表,ARP 表会超时,以允许动态
广播可以把自己的表也给你一份
ARP 别的网会问到网关的 MAC,这样就发给网关了
DHCP
动态主机配置协议 Dynamic Host Configuration Protocol
需要 DHCP 服务器,路由器也支持
DISCOVER;
OFFER.
MPLS
多协议标签交换
可以多加很多层标签,这样按最外层路由,可以将多条路径合并节省
S 表示后面是不是还有标签
OSPF
Open Shortest Path First
域内路由算法(内部网关协议)(RIP 也是内部网关协议):自治系统(AS)里的协议
如果有多条最短路,OSPF 会平均载荷
支持物理距离、延迟等距离尺度
一个区域内的最短路计算是一样的
边界路由器可以传递拓扑的摘要,如果边界只有一个路由器(stub 存根),不需要传递路由信息
BGP
Border Gateway Protocol
域间路由算法,解决政治、经济问题
是距离矢量协议
路由器通过 TCP 通信
所有 AS 从 AS1 买服务,AS2 3 间有对等传输
IGMP
组播
Mobile IP
Use home IP everywhere
No software changes
No router/table changes
Restrict detours
No overhead at home
ARP 代理
gratuitous ARP
传输层
主要工作:屏蔽子网差异;弥补应用层差异;提供进程级通信能力
传输实体:Kernel/so/proc,给应用层提供两种服务
单独的一层:位置不一样,主机,路由器。用户对网络层没有控制权
Segment: TPDU (Transport Protocol Data Unit)(想想为啥它也要 Seq)
Berkeley Socket 原语
NSAP(Network Service Access Point): IP
TSAP(Transport Service Access Point): Port
如何区分并拒绝重复的段:数据包存活上限 \(T\)(120s for Internet),序号在 \(T\) 内不被重用(划禁止区域),初始序号即(不同步的)计数器的低位,序号递增速率不得大于时间进度
三次握手(目的是让服务器区分连接请求是否确是当前的)
段也要时间戳,为了防止 32 位序号绕回(因为现在太快了)(序号需要随机以防被预测)
非对称释放:挂电话;对称释放:我不发了哦
四次挥手,因为要是对方决定好了要放开连接才放开连接,那就放不了了
挥手以及 ACK 超时都会释放连接
多路复用:多个连接过一个地址(路由器);逆向多路复用:一个连接利用多个网络地址冲
差错控制
链路层的差错控制可以避免整条路径重传
传输层差错控制可以防止路由器出错
BL 积非常大,窗口和缓冲要大,多连接:缓冲池
动态缓冲区分配,发送端告知要多少缓冲,接收端分配并告诉实际缓冲数量(Window size 字段)
窗口大小跟踪网络承载能力的变化,也可以达到拥塞控制
主机崩溃恢复只能由上层完成(A for ACK;W for write to process;C for crash)(S0 没有未完成的段但有确认,S1 没有确认)
流量控制
流量分配
最大最小公平:(所有的流从零开始增长)如果分配给一个流的带宽在不减少分配给另一个流带宽的前提下无法得到进一步增长,那么就不给这个流更多带宽
事实上模糊地按连接分配流量,所以电驴毒瘤
XCP(eXplicit Congestion Protocol) 路由器告诉源速率,ECN 路由器告诉源减速,其他是测量并控制
关于丢包式检测:无线链路层毫秒级重传,传输层秒级
加法递增乘法递减:
UDP
没有流量控制,差错控制或者重传;有多路复用
校验和包括的伪头如下(没有传输,算的时候按下面,实际上破坏分层)
远程过程调用(Remote Procedure Call):不需要 Socket,客户端和服务器都有 Stub
实时传输协议 RTP(应用层上实现的传输协议):UDP 实现(配合 RTCP 控制协议获得更多功能)
P:四字节对齐;X:扩展头;CC:有多少贡献源;M 应用解释(一般为标记开始);Payload Type(MP3);时间戳用于减少抖动
同步源标识符 (Synchronization source identifier) 指明了该数据包属于哪一个流
TCP
头
一个 TCP 段最多 65535-20(IP)-20(TCP) = 65495 数据
TCP 给每个字节编了址,ACK number 是下一个期待的字节(累计确认)
标志位
有 ECN 时,ECE(ECN-Echo)告诉发送端网络给了 ECN;CWR(Congestion Window Reduced)表示发送端已放缓
URG 是否使用紧急指针,紧急指针指向数据里紧急的那个部分(实际上不怎么用)
PSH 刷缓冲区
RST 被用于突然重置一个己经变得混乱的连接,或者拒绝连接
SYN/ACK=1/0 表示连接请求,SYN/ACK=1/1 表示连接接受
FIN 挥手
校验和包括头、数据和 TCP 伪头(和 UDP 一样),校验是强制的
选项可以有的字段:
最大段长 MSS
窗口尺度(可以将窗口大小左移最多 14 位)
时间戳(解决序号绕回)
SACK 已经接收到的段序号范围
连接
右:如果同时发起连接,结果是建立了一个 (x, y) 的连接
SYN 泛洪解决方法:序号加密送出去,握手回来解密拿到序号
四次挥手 SYN 和 ACK 可能在同一个包,就变成了三次
TCP 连接是十一个状态的有限状态机
滑动窗口
窗口探测:强制宣告下一个窗口大小
延迟确认:接收端最晚到缓冲区满才确认(延迟 50 ms 等搭车)
Nagle(避免发的全是小包):发送端只发送第一次到达的数据,后面的缓冲起来(相当于停等)
Clark(低能窗口综合症,应用一次读一个,窗口就 1):窗口更新在 空缓存\(=\min(\) 一半,最大段长 \()\) 时才发生
计时器管理
重传计时器
记录 \(SRTT\) 平滑平均往返时间:\(SRTT=\alpha SRTT+(1-\alpha)RTT\),\(\alpha\) 典型值 \(7/8\)
\(RTTVAR\) 是上述的均方差:\(RTTVAR=\beta RTTVAR + (1-\beta)|SRTT-RTT|\) 典型值 \(3/4\)
重传超时 \(RTO=SRTT+4RTTVAR\)
第一次重传不更新估计值,接下来每一次连续重传超时加倍
持续计时器
发送端做窗口探测以免窗口更新丢了
保活计时器
连接没有活动时查看另一端是否存在(争议)
连接终止计时器
等待最大包存活时间的两倍
拥塞控制
拥塞窗口(cnwd):任何时候发送端可以向网络发送的字节数
确认时钟:ACK 包的速率代表了这个网络上最慢的链路的速度
慢启动:拥塞窗口初始值 4 个段,每 ACK 一个发出的包增加一个段的字节量(任何时候未确认的数据包的数量就是拥塞窗口的大小)
TCP Tahoe
慢启动阈值:慢启动的上限,每当检测到丢包,慢启动阈值就设为拥塞窗口的一半,慢启动超过阈值之后就到线性增加(近似每个 RTT 增加一段,针对 cwnd/MSS 中每个可能被确认的包,增加 (MSS*MSS)/cnwd)
丢包:意味着拥塞窗口满,无法发包,等到重传可发再开始慢启动,阈值为拥塞窗口一半
重复确认:当丢失数据包的后续数据包到达接收端时,它们触发给发送端返回确认,这些确认段携带着相同的确认号(因为是累积确认);TCP 假设三个确认意味着丢包了(快速重传)
快速恢复(维持确认时钟避免重新慢速启动):对重复确认计数直到网络内的数据包数量下降到新阈值,从此时往后,每接收到一个重复确认就发送一个新的数据包;一个 RTT 后丢的包被确认(就没有重复确认了),重新开始线性增加
性能问题
Performance problems in computer networks
Network performance measurement
- 确保样值空间足够大,确保样值具有代表性,缓存可以破坏测量结果,确保测试期间不会发生不可知事情,小心使用粗粒度时钟,小心推断结果
System design for better performance
- 主机速度比网络速度更重要,减少包数量来降低开销,最小化数据复制(一起实现层),带宽能买延时不行,最小化上下文切换,避免拥塞比从中恢复更好,避免超时(重复)
Fast TPDU processing
- Make common cases fast; TCP/IP 相邻段一般一样(存好);计时轮(每个槽一个 Tick,指向一个触发的计时器列表)
Protocols for high-speed networks
- 序号回绕;大窗口;重传策略;延时瓶颈;简洁协议少计算
Delay Tolerant Networking
处理间歇性的连接,按消息处理,存储转发
Custodian 托管标识符(路上的节点承担照看数据安全的责任)
应用层
DNS
记录格式
1 | Domain name Time to live Class Type Value |
IN:Internet
PTR 可用于反向查找(IP 查名字)
域名解析
权威记录:管辖的服务器返回的结果(相对于缓存记录)
13 个根服务器 a.root-servers.net
到
m.root-servers.net
,选播路由
递归查询:服务器全权帮你干完,给你返回最终结果
迭代查询:返回部分方案和下一个操作
SMTP->SMTP->POP3/IMAP
MIME:多媒体支持
五种传输编码和一个扩充入口:文本、8 位编码、二进制文件、base64、可打印编码
1 | From: alice@cs.washington.edu |
SMTP (Simple Mail Transfer Protocol) 端口 25,纯 ASCII
协议,不包括认证,明文传输;4 个单词的命令(HELO
,
MAIL FROM
, RCPT TO
, DATA
)
IMAP (Internet Message Access Protocol) 端口 143
POP3 (Post Office Protocol) 端口 110
WWW
URL (Uniform Resourse Locator); URI (Uniform Resourse Identifier)
Cookie 最多 4KB
动态页面
公共网关接口 (CGI, Common Gateway Interface):后端程序到 Web 服务器的接口
PHP
<?php echo $name; ?>
; JSP; ASP.NETJS; VBScript
HTTP
HTTP1.1 持续连接(一次连接多次请求、流水请求)
ASCII 协议
每个响应都有状态码
消息头 (Cookie; Set-Cookie ...)
缓存
Check expiry
Conditional GET (If-Modified-Since; Etag; If-None-Match)
Not modified / Responce
移动 Web (XHTML)
流媒体
量化 CD: 44100 / 16 bit / 1.4 Mbps stereo
编码 AAC 96k 128kbps;
波形编码:FFT 后传未被截止的频率
感知编码:利用频率屏蔽
JPEG
块准备(YCbCr 三个矩阵各切成 8x8)
离散余弦变换
量化(除权值)
差分量化
行程编码(蛇皮发送顺序)
静态输出编码(霍夫曼编码)
MPEG
I 帧内编码
P 前向(I)帧
B 前后向(IP)帧
视频
前向纠错(发校验,组播路由大家丢不一样)
交替传输(一个包只传奇数帧,掉个帧罢了)
缓冲
实时会议 H.323(可以电话拨入)
建立 5 条逻辑信道:呼叫信令(Q.931);呼叫控制(H.245);“双工”数据(两条RTP);数据控制(RTCP)
IP 语音 SIP
Content Delivery
Zipf 分布
服务器农场(DNS/负载均衡)
Web 代理(缓存)
CDN
P2P
Overlay networks
BitTorrent
Torrent(种子):跟踪器的名称、块清单(和哈希)
Tracker:上传下载该内容的用户列表
DHT 分布式哈希表(Cord 方案)节点保留少量其他节点信息
逻辑上 Key 是 hash(Torrent)
,Value 是 IP
标识符构成一个环,有可能代表实际节点
successor(k)
是 k 之后第一个实际节点的标识符,key 和 k
在同一个空间做映射
朴素找:向 successor 发 query,沿着环走,找到了返回给请求者
指取表(倍增找):每个节点一张,Key 是 0-(m-1)(m
是实际节点数);标识符 k 的第 i 项是
start=(k+(1<<i))%(1<<m)
和
successor(start[i])
的 IP
网安
密码学
密码分析学:唯密文/已知明文(有一些明文密文对)/选择明文(可以由明文生成密文)
密码编码学:努力在选择明文保持安全
\[ D_K(E_K(P))=P \]
Kerckhoff 原则:保密性仅取决于对密钥的保密,而算法是公开的。密钥作为算法参数
置换密码:做置换
替代密码:按行排,然后按列按列顺序写
一次性密钥:xor
量子密钥
密码学原则:冗余度、新鲜度
对称密钥
加密解密是一个密钥
DES
三重 DES,K1 加密 K2 解密 K1 加密
AES
密码长度和块长度 128-128 / 128-256
生成 11 个轮密钥干牛b事情
公钥算法
\(D(E(P))=P\)
从 E 推导 D 极其困难
E 不会被选择明文破解
加密公钥,解密私钥
RSA
选大素数 \(p\),\(q\)
计算 \(n=pq\),\(z=(p-1)(q-1)\)
找一个与 \(z\) 互质的 \(d\)
找到 \(e\) 使 \(ed=1\mod z\)
加密:\(C=P^e\mod n\),解密 \(P=C^d\mod n\)
数字签名
接收方可验证
发送方无法否认
接收方无法编造
对称密钥:Big Brother
非对称:要求 \(E(D(P))=P\);主要问题是 Alice 可以公开私钥
消息摘要
认证但不需要保密
SHA
MD5(8 行了)
证书
安全地分发公钥
证书证明某个公钥属于某人,这个证书附带一个签名块(证书的 SHA 被私钥签名)
X.509 证书
PKI 信任链