整理了期末复习资料
BIN
Review/images/CRC校验.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
Review/images/GBN Receiver.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
BIN
Review/images/GBN Sender.png
Normal file
|
After Width: | Height: | Size: 277 KiB |
BIN
Review/images/GBN例子.png
Normal file
|
After Width: | Height: | Size: 501 KiB |
BIN
Review/images/IP报文结构.png
Normal file
|
After Width: | Height: | Size: 166 KiB |
BIN
Review/images/P2P.png
Normal file
|
After Width: | Height: | Size: 208 KiB |
BIN
Review/images/SR例子.png
Normal file
|
After Width: | Height: | Size: 437 KiB |
BIN
Review/images/STMP.png
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
Review/images/TCP传输过程.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
Review/images/TCP报文结构.png
Normal file
|
After Width: | Height: | Size: 204 KiB |
BIN
Review/images/Tahoe和Reno.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
Review/images/eBGP和iBGP.png
Normal file
|
After Width: | Height: | Size: 123 KiB |
BIN
Review/images/rdt1.0FSM.png
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
Review/images/rdt2.0FSM.png
Normal file
|
After Width: | Height: | Size: 220 KiB |
BIN
Review/images/rdt2.1FSM Receiver.png
Normal file
|
After Width: | Height: | Size: 298 KiB |
BIN
Review/images/rdt2.1FSM Sender.png
Normal file
|
After Width: | Height: | Size: 238 KiB |
BIN
Review/images/rdt2.2FSM Receiver.png
Normal file
|
After Width: | Height: | Size: 247 KiB |
BIN
Review/images/rdt2.2FSM Sender.png
Normal file
|
After Width: | Height: | Size: 244 KiB |
BIN
Review/images/rdt3.0FSM Sender.png
Normal file
|
After Width: | Height: | Size: 262 KiB |
BIN
Review/images/傅立叶分析.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
Review/images/平均排队时延.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
Review/images/毒性逆转案例.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
Review/images/编码.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
Review/images/路由器交换结构.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
Review/images/迪杰斯特拉ans.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
Review/images/迪杰斯特拉problem.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
41
Review/物理层.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# 1. 物理层基本概念
|
||||
|
||||
- 物理层常用标准
|
||||
|
||||
- 点对点通信线路用于直接连接两个结点
|
||||
|
||||
- 广播通信线路:一条公共通信线路连接多个结点
|
||||
|
||||
# 2. 数据通信基础
|
||||
|
||||
- 傅立叶分析例子
|
||||
|
||||
<img src="images\傅立叶分析.png" alt="傅立叶分析" style="zoom:50%;" />
|
||||
|
||||
傅立叶分析系数$a_n=\cos(\frac{\pi n}{4})-\cos(3\frac{\pi n}{4})+\cos(6\frac{\pi n}{4})-\cos(7\frac{\pi n}{4})$,$b_n=-\sin(\frac{\pi n}{4})+\sin(3\frac{\pi n}{4})-\sin(6\frac{\pi n}{4})+\sin(7\frac{\pi n}{4})$,$c=3/8$
|
||||
|
||||
a为cos,b为sin,函数内系数为波形上升/下降的下标,分母为序列长度的一半;a和b的系数相反。c=1的个数 / 序列长度。
|
||||
|
||||
- 有限带宽信号
|
||||
|
||||
- 波特率:每秒钟信号变化的次数,也称调制速率;比特率:每秒钟传送的二进制位数;若每个信号值可表示k位,则比特率是波特率的k倍
|
||||
|
||||
- 编码
|
||||
|
||||
<img src="images\编码.png" alt="编码" style="zoom:50%;" />
|
||||
|
||||
# 3. 传输介质
|
||||
|
||||
- 引导型:有线的e.g. 光纤;非导引型:不用线的e.g. 卫星微波
|
||||
- 光纤:光源发光二极管,接收端光敏二极管(响应时间1ns,所以传输速率限制1Gb/s);固有损耗:材料损耗,非固有损耗:杂质和结构不规则
|
||||
- 短波频率为3~30MHz
|
||||
|
||||
# 4. 无线与卫星通信
|
||||
|
||||
- 特点:延迟高(270ms)、损耗大、高纬度难覆盖、卫星数量限制
|
||||
|
||||
# 5. 多路复用技术
|
||||
|
||||
- 码分复用举例
|
||||
- A:(-1 -1 -1 +1 +1 -1 +1 +1) B:(-1 -1 +1 -1 +1 +1 +1 -1)正交,内积为0。
|
||||
- 收到M=(-1 +1 -3 +1 -1 -3 +1 +1),(A\*M)/8=1,A发了1;(B\*M)/8=-1,B发了0;若C\*M=0,则C没发。
|
||||
103
Review/第1章.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# 1. 什么是因特网
|
||||
|
||||
因特网=端+接入网+核心网
|
||||
|
||||
# 2. 网络边缘
|
||||
|
||||
- 端系统:主机(客户端和服务器)
|
||||
- 接入网:将端系统物理连接到其边缘路由器(第一台路由器)的网络(有线/无线)
|
||||
- 家庭:数字用户线(DSL)、电缆、光纤入户、5G
|
||||
- 企业:以太网、无线
|
||||
|
||||
# 3. 网络核心
|
||||
|
||||
- 分组交换:将报文(message)划分为长度L比特的分组(packet),以传输速率R分组传输到接入网,时延:L/R
|
||||
- 路由器必须收到整个分组后才能转发
|
||||
- 电路交换:每条链路为每对源和目的都分配不共享的电路资源
|
||||
- 频分复用和时分复用
|
||||
- 网络结构:
|
||||
- 一般用户连到ISP,ISP之间有IXP相连,内容提供商有自己的网络
|
||||
|
||||
# 4. 分组交换网中的时延、丢包和吞吐量
|
||||
|
||||
- 四种时延
|
||||
$$
|
||||
d_{nodal} = d_{proc} + d_{queue} + d_{trans} + d_{prop}
|
||||
$$
|
||||
|
||||
- $d_{nodal}$:总时延
|
||||
|
||||
- $d_{proc}$:处理时延
|
||||
|
||||
- $d_{trans}$:传输时延,取决于网卡等硬件
|
||||
$$
|
||||
d_{trans} = L / R
|
||||
$$
|
||||
|
||||
> $L$:分组长度(bits)
|
||||
>
|
||||
> $R$:链路带宽(bps)
|
||||
|
||||
- $d_{prop}$:传播时延,取决于传播介质
|
||||
$$
|
||||
d_{prop} = d / s
|
||||
$$
|
||||
|
||||
> $d$:物理链路长度(m)
|
||||
>
|
||||
> $s$:传播速度
|
||||
|
||||
- $d_{queue}$:排队时延,在输出链路上等待传输的时间
|
||||
|
||||
<img src="images\平均排队时延.png" alt="平均排队时延" style="zoom:25%;" />
|
||||
|
||||
当 $La/R$ 趋于 $0$ 时,平均排队延迟小;
|
||||
|
||||
当 $La/R$ 趋于 $1$ 时,平均排队延迟大;
|
||||
|
||||
当 $La/R$ 大于 $1$ 时,到达的分组数量超过可容纳范围,平均排队延迟无限大。
|
||||
|
||||
> $a$:平均分组到达率(系数,标量)
|
||||
|
||||
- 吞吐量
|
||||
|
||||
在一条传输路径上,总吞吐量由最小吞吐量的链路决定,即瓶颈链路。
|
||||
|
||||
> 链路(Link):相邻节点之间的连接
|
||||
>
|
||||
> 路径(Path):多条链路组成的连接
|
||||
|
||||
# 5. 协议层次及其服务模型
|
||||
|
||||
- ISO模型:应用层、表示层、会话层、运输层、网络层、数据链路层、物理层
|
||||
|
||||
- TCP/IP模型:
|
||||
|
||||
- **应用层**:网络应用(FTP,SMTP,HTTP,微信等)
|
||||
|
||||
传输单元称为报文(Message)
|
||||
|
||||
- **传输层**:在应用程序端点间传送数据(TCP,UDP)
|
||||
|
||||
传输单元称为分组(Segment),除去头部,剩下的有效载荷是Payload
|
||||
|
||||
- **网络层**:从源到目的传送数据报(IP,路由选择协议)
|
||||
|
||||
传输单元称为分组(Packet)
|
||||
|
||||
- **链路层**:网络相邻节点之间的数据传送
|
||||
|
||||
传输单元称为分组(Frame)
|
||||
|
||||
- **物理层**:比特传送,与实际传输介质相关
|
||||
|
||||
# 6. 面对攻击的网络
|
||||
|
||||
|
||||
|
||||
# 7. 计算机网络和因特网的历史
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
131
Review/第2章.md
Normal file
@@ -0,0 +1,131 @@
|
||||
# 1. 应用层协议原理
|
||||
|
||||
|
||||
|
||||
# 2. Web和HTTP
|
||||
|
||||
- HTTP连接
|
||||
|
||||
- 非持续连接HTTP
|
||||
- 在TCP上最多发送一个对象,然后关闭连接。下载多个对象要多次连接
|
||||
|
||||
- 持续连接HTTP
|
||||
- 如果网页上有多个资源在同一个服务器上,可以通过单个TCP连接发送
|
||||
|
||||
|
||||
- Web缓存器
|
||||
|
||||
安装Web缓存器可以减少接入互联网链接的利用率,重复请求由缓存器承担。
|
||||
$$
|
||||
{delay}_{\text{总}} = \alpha \times {delay}_{\text{缓存器响应}}+(1-\alpha)\times {delay}_{\text{初始服务器响应}} \approx (1-\alpha)\times {delay}_{\text{初始服务器响应}}
|
||||
$$
|
||||
|
||||
> $\alpha$:缓存命中率
|
||||
|
||||
# 3. 因特网中的电子邮件
|
||||
|
||||
- SMTP协议
|
||||
|
||||
<img src="D:\Courseware\Computer_Network\Review\images\STMP.png" alt="STMP" style="zoom: 25%;" />
|
||||
|
||||
用于邮件客户端 $\to$ 邮件服务器,或邮件服务器 $\to$ 邮件服务器发送邮件。
|
||||
|
||||
# 4. DNS:因特网的目录服务
|
||||
|
||||
- DNS:域名转IP。基于UDP。分布式,逐级向下查询:根DNS -> com DNS -> amazon.com DNS,递归查询,同时缓存
|
||||
|
||||
报文资源记录:(name,value,type,ttl(time to live))
|
||||
|
||||
# 5. P2P应用
|
||||
|
||||
- P2P文件分发
|
||||
|
||||
<img src="D:\Courseware\Computer_Network\Review\images\P2P.png" alt="P2P" style="zoom:25%;" />
|
||||
|
||||
使用P2P方法将$F$比特的文件分发到$N$个客户的用时:
|
||||
$$
|
||||
D_{P2P} \ge \max{\{F/u_s, F/d_{min}, NF/(u_s+\sum u_i)\}}
|
||||
$$
|
||||
|
||||
- $F/u_s$:服务器传输,至少发送一个副本,除以服务器最大发送速率
|
||||
|
||||
- $NF/(u_s + \sum u_i)$:客户接收的总和(总共必须下载$NF$比特)除以最大发送速率总和
|
||||
|
||||
- $F/d_{min}$:单个客户的接收速率,文件大小除以最小客户接收速率
|
||||
|
||||
- BitTorrent
|
||||
|
||||
- 下载:主机周期性地向每个对等方请求文件块列表,然后请求最稀缺的文件块。
|
||||
- 分享:主机每10秒评估前4名对等方,以最高速率向其发送;每30秒随机选择另1个对等方发送
|
||||
|
||||
# 6. 视频流和内容分发网
|
||||
|
||||
- 视频
|
||||
- 编码
|
||||
- 空间编码:单帧内像素冗余值只发送一次
|
||||
- 时间编码:只发送当前帧和上一帧的不同点
|
||||
- CBR编码速率固定;VBR编码速率随空间、时间编码量变化而变化
|
||||
- DASH:将视频在服务器上分块,客户端自己决定请求的时间、编码速率和服务器
|
||||
- 内容分发网(CND):在CDN节点上存储内容副本
|
||||
|
||||
# 7. 套接字编程:生成网络应用
|
||||
|
||||
- UDP
|
||||
|
||||
不连接,可能丢失或顺序错乱
|
||||
|
||||
```python
|
||||
# client
|
||||
serverName = 'hostIP'
|
||||
serverPort = 12000
|
||||
clientSocket = socket(AF_INET, SOCK_DGRAM)
|
||||
message = raw_input('xxx')
|
||||
clientSocket.sendto(message.encode(), (serverName, serverPort))
|
||||
modifiedMessage, serverAaddress = clientSocket.recvfrom(2048)
|
||||
clientSocket.close()
|
||||
# server
|
||||
serverName = 'hostIP'
|
||||
serverPort = 12000
|
||||
serverSocket = socket(AF_INET, SOCK_DGRAM)
|
||||
serverSocket.bind((serverName, serverPort))
|
||||
while True:
|
||||
message, clientAddress = serverSocket.recvfrom(2048)
|
||||
# 处理message -> modifiedMessage
|
||||
serverSocket.sendto(modifiedMessage.encode(), clientAddress)
|
||||
serverSocket.close()
|
||||
```
|
||||
|
||||
- TCP
|
||||
|
||||
连接,有序交付
|
||||
|
||||
```python
|
||||
# client
|
||||
serverName = 'hostIP'
|
||||
serverPort = 12000
|
||||
clientSocket = socket(AF_INET, SOCK_STREAM)
|
||||
clientSocket.connect((serverName, serverPort))
|
||||
message = raw_input('xxx')
|
||||
clientSocket.send(message.encode())
|
||||
modifiedMessage = clientSocket.recv(1024)
|
||||
clientSocket.close()
|
||||
# server
|
||||
serverName = 'hostIP'
|
||||
serverPort = 12000
|
||||
serverSocket = socket(AF_INET, SOCK_STREAM)
|
||||
serverSocket.bind((serverName, serverPort))
|
||||
serverSocket.listen(1)
|
||||
while True:
|
||||
connectionSocket, addr = serverSocket.accept()
|
||||
message = connectionSocket.recv(1024).decode()
|
||||
# 处理message -> modifiedMessage
|
||||
connectionSocket.send(modifiedMessage.encode())
|
||||
serverSocket.close()
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
147
Review/第3章.md
Normal file
@@ -0,0 +1,147 @@
|
||||
# 1. 运输层服务
|
||||
|
||||
|
||||
|
||||
# 2. 多路复用与多路分解
|
||||
|
||||
一个端口号可以支持多个TCP连接(分配不同的套接字)或接收多个UDP包
|
||||
|
||||
# 3. 无连接运输:UDP
|
||||
|
||||
- 检验和
|
||||
1. 求和(101 + 110 = 1011)
|
||||
2. 如果溢出,回卷,即把溢出位加到最低位(1 + 011 = 100)
|
||||
3. 取反(011)
|
||||
|
||||
# 4. 可靠数据传输原理
|
||||
|
||||
- 可靠数据传输协议
|
||||
|
||||
- rdt 1.0:没有误差和丢失
|
||||
|
||||
<img src="images\rdt1.0FSM.png" alt="rdt1.0FSM" style="zoom: 25%;" />
|
||||
|
||||
- rdt 2.0:有误差,无丢失
|
||||
|
||||
- 使用ACK/NAK,此ACK/NAK不会有差错
|
||||
|
||||
<img src="images\rdt2.0FSM.png" alt="rdt2.0FSM" style="zoom:25%;" />
|
||||
|
||||
- rdt 2.1:数据包和ACK都会出现误差,但不会丢失
|
||||
|
||||
- ACK/NAK和数据包都加上序号,用两个序号0和1轮流即可
|
||||
|
||||
<img src="images\rdt2.1FSM Sender.png" alt="rdt2.1FSM Sender" style="zoom:25%;" />
|
||||
|
||||
<img src="images\rdt2.1FSM Receiver.png" alt="rdt2.1FSM Receiver" style="zoom:25%;" />
|
||||
|
||||
- rdt 2.2:
|
||||
|
||||
- 只使用ACK,ACK序号告知最后一个正确的包(重复收到ACK则说明上一个包损坏,要重传)
|
||||
|
||||
<img src="images\rdt2.2FSM Sender.png" alt="rdt2.2FSM Sender" style="zoom:25%;" />
|
||||
|
||||
<img src="images\rdt2.2FSM Receiver.png" alt="rdt2.2FSM Receiver" style="zoom:25%;" />
|
||||
|
||||
- rdt 3.0:数据包和ACK都会出现误差或丢失
|
||||
|
||||
- 加定时器
|
||||
- 利用率:$U_{sender} = \frac{L/R}{RTT+L/R}$,$RTT$占比过高
|
||||
|
||||
<img src="images\rdt3.0FSM Sender.png" alt="rdt3.0FSM Sender" style="zoom:25%;" />
|
||||
|
||||
- 流水线可靠数据传输协议
|
||||
|
||||
- N个流水线并行,利用率:$U_{sender} = \frac{N\times L/R}{RTT+N\times L/R}$
|
||||
- GBN(回退N步)和SR(选择重传)
|
||||
|
||||
- 回退N步
|
||||
|
||||
- 序号为i的ACK表示i及之前的分组都收到了。窗口N要小于序列长度L(N<=L-1)
|
||||
- sender:
|
||||
- 定时器记录窗口中最早的已发送但未确认的包,一旦确认(收到序号为i的ACK)窗口就要向后滑动(到i+1处)并重置定时器
|
||||
- 定时器超时,就要重发窗口内所有的包,并重置定时器
|
||||
- receiver:
|
||||
- 只需要维护期望收到的包序号i:无论收到什么序号的包,都只发序号为i-1的ACK。收到正确序号就i+=1
|
||||
|
||||
<img src="images\GBN Sender.png" alt="GBN Sender" style="zoom:25%;" />
|
||||
|
||||
<img src="images\GBN Receiver.png" alt="GBN Receiver" style="zoom:25%;" />
|
||||
|
||||
<img src="images\GBN例子.png" alt="GBN例子" style="zoom:25%;" />
|
||||
|
||||
- 选择重传
|
||||
|
||||
- 窗口N要小于等于序列长度L的一半(N<=L/2)
|
||||
- sender:
|
||||
- 发送窗口内的所有包,并对所有包记录定时器。接收到第i个包及其前面的所有包的ACK时,将窗口移动到i+1位置
|
||||
- 如果窗口内某一包没收到ACK,定时器超时,则只重发该包
|
||||
- receiver:
|
||||
- 对每一接收到的包发送ACK并缓存,当第i个包及其前面的包都收到时,有序地交付第i个包及其前面还未交付的包
|
||||
|
||||
<img src="images\SR例子.png" alt="SR例子" style="zoom:25%;" />
|
||||
|
||||
# 5. 面向连接的运输:TCP
|
||||
|
||||
- TCP报文结构
|
||||
|
||||
以太网的标准:MTU最大传输单元(1500B) = TCP包头(20B)+ IP包头(20B) + 最大报文段长度MSS (1460B)
|
||||
|
||||
- 序号:报文段首字节的字节流编号(注意是字节编号,一个报文中含有多个字节)(初始字节流编号随机初始化)
|
||||
- ACK:期望从对方收到的下一个字节的序号(累积确认,即:回复ACK表示前面的包都收到了)
|
||||
- TCP没有规定如何处理无序报文段,实现者可以选择缓存或丢弃(一般选择缓存)
|
||||
|
||||
<img src="images\TCP报文结构.png" alt="TCP报文结构" style="zoom: 33%;" />
|
||||
|
||||
<img src="images\TCP传输过程.png" alt="TCP传输过程" style="zoom: 50%;" />
|
||||
|
||||
- TCP连接:三次握手
|
||||
|
||||
1. 第1次握手:建立连接时,客户端发送SYN包(其中定义了随机起始序列号seg=j)到服务器,并进入SYN SENT状态,等待服务确认;
|
||||
2. 第二次握手:服务器收到syn包,必须确认客户端的SYN(ack=j+1),同时自己也发送一个SYN包(定义服务端的随机起始序列号seg=k),即
|
||||
SYN+ACK包,此时服务器进入SYN RECV状态;
|
||||
3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED (TCP连接成功)状态,完成三次握手
|
||||
|
||||
- TCP断开连接:四次挥手
|
||||
|
||||
1. 第1次挥手:客户端发送一个FIN包(FIN标志位设为1,序列号为当前序列号j)给服务器,并将状态变为FIN_WAIT_1,表明它已发送连接终止请求。
|
||||
2. 第2次挥手:服务端收到FIN包,回复ACK(确认号为j+1),服务器此时进入CLOSE_WAIT状态。客户端收到该ACK后进入FIN_WAIT_2状态,等待服务器端的FIN包。
|
||||
3. 第3次挥手:服务器发送FIN包(FIN标志位设为1,序列号为当前序列号k)给客户端,状态变为LAST_ACK。
|
||||
4. 第4次挥手:客户端收到FIN包,回复ACK(确认号为k+1),并进入TIME_WAIT状态持续2个TTL(考虑到服务器可能没收到ACK,再次发FIN)。服务器收到ACK后,正式关闭连接。
|
||||
|
||||
- 往返时延和超时重传
|
||||
|
||||
- 估算RTT:指数加权移动平均(过去样本的影响以指数级速度递减):$EstimatedRTT = (1-\alpha)\times EstimatedRTT + \alpha \times SampleRTT$,其中$\alpha=0.125$为典型值
|
||||
- 估算SampleRTT与EstimatedRTT之间的差值有多大:$DevRTT = (1-\beta)\times DevRTT + \beta \times |SampleRTT-EstimatedRTT|$,通常$\beta=0.25$
|
||||
- 超时阈值计算:$TimeoutInterval = EstimatedRTT + 4\times DevRTT$
|
||||
|
||||
- TCP可靠数据传输
|
||||
|
||||
- 流水线发送报文段;累积确认;单个重传计时器(在最早的未确认报文段处计时)
|
||||
- 重传触发条件:超时;快速重传:对于相同数据,发送方收到3个ACK,则立即重传未确认的最小序号的报文段
|
||||
|
||||
- TCP流量控制:防止接收方的缓存溢出
|
||||
|
||||
- 接收方把rwnd放在报文首部,发送方限制未确认的报文段数量不超过该rwnd
|
||||
|
||||
# 6. 拥塞控制原理
|
||||
|
||||
- 原因:路由器缓冲区是有限的。导致:发送方超时重传,拥塞加重(且重传的包实际上有可能还在缓存里,是不必要的重传)
|
||||
- 解决方法:TCP拥塞控制(控制TTL);网络辅助拥塞控制(直接向目的主机发送拥塞情况)
|
||||
|
||||
# 7. TCP拥塞控制
|
||||
|
||||
- 加性增 乘性减 AIMD:如果没丢包,每个RTT,拥塞窗口+=MSS(最大报文段长度);如果丢包了,拥塞窗口*=0.5
|
||||
|
||||
- 慢启动:设置sstresh
|
||||
|
||||
1. 初始cwnd =1 MSS;每经过一个传输回合,cwnd*=2(指数增加);cwnd到达sstresh后,每经过一个传输回合cwnd+=1初始MSS(线性增加)
|
||||
2. 超时或3个冗余ACK:
|
||||
- Tahoe:$ssthresh=0.5 \times cwnd$,$cwnd=1\times MSS$,并重新开始慢启动过程
|
||||
- Reno快速恢复算法:收到3个冗余ACK后,$ssthresh=0.5\times cwnd$,$cwnd=ssthresh+3\times MSS=0.5\times cwnd+3\times MSS$
|
||||
|
||||
<img src="images\Tahoe和Reno.png" alt="Tahoe和Reno" style="zoom:50%;" />
|
||||
|
||||
- 吞吐量:$=cwnd/RTT$,假设丢包时窗长为W,则平均窗长为3/4W,则吞吐量为$\frac{3}{4}\frac{W}{RTT}$
|
||||
|
||||
- 网络层协助的拥塞控制:在IP数据报设置CE位通知目的主机,目的主机回复ACK时会在TCP数据报设置ECE位告知发送方
|
||||
62
Review/第4章.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# 1. 网络层概述
|
||||
|
||||
- 网络层中两个关键功能:
|
||||
- 转发:(数据平面)实际传输数据包。纳秒内操作
|
||||
- 路由:(控制平面)规划路径。包括传统路由算法(在路由器中实现,计算转发表,第5章)和软件定义网络SDN(服务器集中远程控制,第5章)。毫秒内操作
|
||||
|
||||
# 2. 路由器工作机理
|
||||
|
||||
- 最长前缀匹配:转发表存地址范围到链路接口号的影射。查找给定目标地址的转发表条目时,使用与目标地址匹配的最长地址前缀
|
||||
|
||||
- 交换
|
||||
|
||||
- 经内存交换:数据包复制到系统内存然后再转发,速度受内存带宽限制
|
||||
- 经总线交换:数据报通过共享总线从输入端口存储器到输出端口存储器,速度受总线带宽限制
|
||||
- 经互连网络交换:连接多处理器,将数据报碎片化为固定长度的单元,通过交换结构交换单元
|
||||
|
||||
<img src="images\路由器交换结构.png" alt="路由器交换结构" style="zoom: 50%;" />
|
||||
|
||||
- 排队:到达速率超过线路速度时进行缓存
|
||||
|
||||
- 输入端口排队:输入缓冲区溢出导致排队延迟和丢失;线路前部(HOL) 阻塞(队列前面的排队数据报阻塞,后面的数据报就堵住了,一个输出端口的阻塞可能导致多个输出端口阻塞)
|
||||
- 输出端口排队:可能输出缓存溢出导致丢失
|
||||
|
||||
- 缓存量计算:RTT * 链路容量C(单流或少流适合);或$\frac{RTT\times C}{\sqrt{N} }$,N为流的数量(适合多流)
|
||||
|
||||
- 调度:先进先出;设置优先级;分类,每个类轮流调度;加权的分类轮流调度
|
||||
|
||||
# 3. IP:互联网协议
|
||||
|
||||
- IP数据包格式
|
||||
|
||||
<img src="images\IP报文结构.png" alt="IP报文结构" style="zoom: 33%;" />
|
||||
|
||||
- 分片:网络链路具有最大可能的链路级帧,所以要将IP数据报分片
|
||||
|
||||
- e.g. 4000B(20B报头+3980B数据)的数据报拆成(20B+1480B)+(20B+1480B)+(20B+1020B)的形式。另外还需要设置offset=字节偏移量/8
|
||||
|
||||
- 子网:具有相同子网部分 IP地址,可以不靠中间路由器物理相互联系
|
||||
|
||||
- 地址表示:a.b.c.d/x,x是子网掩码,表示子网共同的IP有x位
|
||||
- 有限广播地址255.255.255.255,该报文会交付给相同子网中的所有主机(常用于DHCP);定向广播地址:将IP和子网掩码相与计算出网络号,然后子网掩码取反后与网络号或运算,即为广播地址,用于向特定子网内的所有设备发送广播
|
||||
|
||||
- DHCP:动态主机配置协议
|
||||
|
||||
1. 主机加入网络,255.255.255.255广播寻找DHCP服务器
|
||||
2. DHCP服务器广播回复该主机,提供一个IP
|
||||
3. 主机广播回复DHCP服务器,确认占用该IP
|
||||
4. DHCP服务器广播回复主机,同意主机占用该IP
|
||||
|
||||
还会提供第一跳路由器的地址、DNS 服务器的名称和 IP 地址、网络掩码
|
||||
|
||||
- NAT:网络地址转换
|
||||
|
||||
- 传出时:将内网主机的源(内网IP,Port)对外转换为路由器的源(外网IP,新Port)
|
||||
- 传入时:将外网主机的目的(路由器外网IP,新Port),转换回内网主机(内网IP,Port)
|
||||
|
||||
- IPv6:IP地址16字节。头部固定长度 40 字节,不允许分片
|
||||
|
||||
# 4. 通用转发和SDN
|
||||
|
||||
- OpenFlow:每个路由器都包含一个流表,该流表由逻辑集中式路由控制器计算和分发
|
||||
- 流表:匹配+动作转发表(e.g. 路由器匹配为最长的目标IP前缀,动作为转发链接;交换机匹配目标 MAC地址,动作为转发或洪泛)
|
||||
73
Review/第5章.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# 1. 网络层功能
|
||||
|
||||
- 单个路由控制平面:每个路由器中的单个路由算法组件在控制平面中相互交互以计算转发表
|
||||
- 逻辑集中式控制平面:一个独特的远程控制器与路由器中的本地控制代理(CA)交互,以计算转发表
|
||||
|
||||
# 2. 路由算法
|
||||
|
||||
- 链路状态路由算法:迪杰斯特拉
|
||||
|
||||
每次找未加入vis且最近的节点,将其加入vis,更新其相邻节点的最短距离
|
||||
|
||||
<img src="images\迪杰斯特拉problem.png" alt="迪杰斯特拉problem" style="zoom: 50%;" />
|
||||
|
||||
<img src="images\迪杰斯特拉ans.png" alt="迪杰斯特拉ans" style="zoom: 50%;" />
|
||||
|
||||
- 距离向量算法:$d_x(y)=\min_{v}\{c(x, v)+d_v(y)\}$,v为x的所有邻居,c是x到v的成本,$d_v(y)$是邻居 v 到目的地 y 的开销
|
||||
|
||||
- 当本地链路开销更改或收到邻居的消息,计算自己的向量表,如果向量表变化,告知每个邻居
|
||||
|
||||
- 坏消息传的慢,解决:毒性逆转:
|
||||
|
||||
如果y问z是否有到x的更好路径,但实际z是经过y才到x的(需要记录距离的数据来源)。所以z告诉y:z到x的距离为无穷大,y就相信z没有到x的路径,所以不会试图由z到x。之后,y到x的距离为60,z到x的距离更新为50(来源于x),y再由z更新到x的距离为51。
|
||||
|
||||
<img src="images\毒性逆转案例.png" alt="毒性逆转案例" style="zoom:33%;" />
|
||||
|
||||
|
||||
|
||||
# 3. 因特网中自治系统内部的路由选择:OSPF
|
||||
|
||||
- OSPF(最短路径优先)属于应用层,适用于规模较大的网络环境,使用链路状态算法,基于IP协议。路由器将 OSPF 链路状态通过IP协议泛洪到整个 AS 中的所有其他路由器
|
||||
- RIP计算路径的成本以跳数作为唯一的度量值,网络规模小。基于UDP协议。
|
||||
|
||||
|
||||
|
||||
# 4. ISP 之间的路由:BGP
|
||||
|
||||
- BGP边界网关协议(使用TCP协议,应用层)
|
||||
|
||||
- eBGP:从相邻的 AS 获取子网可访问性信息(红线)
|
||||
- iBGP:将可访问性信息传播到所有 AS 内部路由器(蓝色虚线)
|
||||
|
||||
<img src="images\eBGP和iBGP.png" alt="eBGP和iBGP" style="zoom:33%;" />
|
||||
|
||||
- BGP 路径通告:
|
||||
|
||||
- 3a通过eBGP(半永久性 TCP 连接)连接2c,AS3 向 AS2 承诺,它将向 X 转发数据报;
|
||||
- 2c通过iBGP通告AS2内的所有路由器该路径(AS3、X)
|
||||
- 2a通过eBGP连接1c,告知这条路径(AS2、AS3、X)
|
||||
- 如果1c能直接通过eBGP连接3a,1c可以学习路径(AS3,X)
|
||||
- 1c 根据策略选择路径,并通过 iBGP在 AS1 中通告路径
|
||||
- 1a、1b、1d 通过 iBGP 从 1c 了解 目的地 X:"通往 X 的路径经过 1c"
|
||||
|
||||
- 热土豆路由Hot Potato Routing:选择域内成本最低的本地网关,不用担心域间开销
|
||||
|
||||
# 5. SDN 控制平面
|
||||
|
||||
- SDN 控制器(网络操作系统):维护网络状态信息;通过北向 API 与“上层"的网络控制应用程序交互;通过南向 API 与“下层"网络交换机交互
|
||||
- **SDN 控制器的组件:网络控制应用程序的接口层(抽象API);全网状态管理层(网络链路、交换机、服务的状态:分布式数据库);通信层(SDN控制器与受控交换机之间的通信)**
|
||||
- **实例:ODL控制器、ONOS控制器**
|
||||
|
||||
- **Openflow:在控制器、交换机之间操作;用TCP交换信息(可加密);三类 OpenFlow 消息(控制器到交换机,异步(切换到控制器),同步(杂项))**
|
||||
|
||||
# 6. ICMP:因特网控制消息协议
|
||||
|
||||
- 由主机和路由器用于传达网络级信息
|
||||
- ICMP 消息包括路由器名称和 IP 地址
|
||||
|
||||
# 7. 网络管理和 SNMP
|
||||
|
||||
- 受管设备包含受管对象,其数据被收集到管理信息库 (MIB) 中
|
||||
|
||||
- 传达 MIB 信息、命令的两种方式:request和response;trap msg
|
||||
|
||||
64
Review/第6章.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# 1. 介绍、服务
|
||||
|
||||
- 链路层在网卡中实现
|
||||
|
||||
# 2. 错误检测、纠正
|
||||
|
||||
- 奇/偶校验:统计数据中1的个数,加上该位使得1的个数为奇/偶数;二维奇偶校验
|
||||
|
||||
- 校验和
|
||||
|
||||
- 循环冗余校验
|
||||
|
||||
e.g. 指定r=3为校验码长度,D=101110, d=6, G=1001,最终传输101110011
|
||||
|
||||
<img src="images\CRC校验.png" alt="CRC校验" style="zoom:33%;" />
|
||||
|
||||
得到数据与G做模2除运算,得到余数n,若n!=0,则第n位出错
|
||||
|
||||
# 3. 多路访问(MAC)协议
|
||||
|
||||
- 信道划分:TDMA(时分多址);FDMA(频分多址);CDMA(码分多址)
|
||||
- 随机接入 MAC 协议
|
||||
- 时隙 ALOHA(节点在时隙开始时进行传输)
|
||||
- 给定节点成功传输概率$p(1-p)^{N-1}$,存在节点传输成功概率$Np(1-p)^{N-1}$,求最大效率:令成功概率对p的导数为0,求出p关于N的表达式。N为无穷大时,求出极限为$1/e$(最大效率)
|
||||
|
||||
- 纯 (非时隙) ALOHA(节点不必在时隙开始时传输)
|
||||
- 给定节点成功传输概率$p(1-p)^{2(N-1)}$,同样方法求出最大效率为$1/2e$
|
||||
|
||||
- CSMA/CD 算法(以太网的 MAC 协议)
|
||||
- 检测到冲突将中止传输并发干扰信号;第m次碰撞中止后, 网卡二进制指数退避(从0123到2^m-1中随机选择K,等待K个时间片)
|
||||
- 例子:A和B在100Mbps广播信道上,传播时延为n比特时间,t=0时刻AB同时发帧,碰撞,A选择K=0退避,B选择K=1。比特时间t=1/100M=10ns。过程:(0)A和B开始传输;(n)A和B检测碰撞,开始发48比特时间拥塞信号;(n+48)A和B停止发拥塞信号;(2n+48)B的最后1bit拥塞信号到达A,A发现空闲;(2n+48+96)A等96bit时间确认信道空闲,开始重传;(n+48+512)B退避结束;(n+48+512+96)B等96bit时间确认空闲,开始重传
|
||||
- 效率:$\frac{1}{1+5t_{prop}/t_{trans}}$,$t_{prop}$=两个节点之间的最大可能延迟,$t_{trans}$=传输最大尺寸帧的时间
|
||||
|
||||
- 轮流MAC协议
|
||||
- 主节点邀请从节点依次传输;
|
||||
- 轮流传递令牌,在谁手里谁传输
|
||||
|
||||
|
||||
# 4. 局域网
|
||||
|
||||
- ARP
|
||||
- MAC 地址:48 位。ARP表映射(IP,MAC,TTL)
|
||||
- 同一局域网内查询:
|
||||
1. B 的 MAC 地址不在 A 的ARP 表中,A获取B的MAC:A 广播 ARP 查询数据包,指定目的MAC=FF-FF-FF-FF-FF-FF-FF,IP=B的IP
|
||||
2. B 接收 ARP 数据包,单播回复 A:目的MAC=A的MAC,在内容中说明自己的MAC
|
||||
- 跨局域网寻址:例子:A(111.111.111.111,74-29-9C-E8-FF-55) ——(111.111.111.110,E6-E9-00-17-BB-4B)路由器R(222.222.222.220,1A-23-F9-CD-06-9B)——B(222.222.222.222,49-BD-D2-C7-56-2A),A给B传输:
|
||||
1. A向R发送IP数据包(源IP:A,目标IP:B),裹上链路层帧首部(源MAC:A,目的MAC:R的左侧)
|
||||
2. R收到数据包,删除链路帧首部上传到IP层,IP层转发操作,IP数据包不变,加上链路层帧首部(源MAC:R的右侧,目的MAC:B)发给B
|
||||
- 以太网
|
||||
- 帧结构:在MAC层下面(物理层)为MAC帧添加前同步码(固定首7(10101010)尾1(10101011)字节值)用于唤醒接收适配器
|
||||
- 无连接、不可靠、MAC协议为无时隙CSMA/CD
|
||||
- 交换机
|
||||
- 交换表存(主机的 MAC 地址、到达主机的接口、TTL),交换机可以在转发的过程中自学习到表项
|
||||
- 虚拟局域网VLAN:限制广播域;增强局域网的安全性;灵活构建虚拟工作组;可以设置中继端口
|
||||
|
||||
# 5. 链路虚拟化:MPLS
|
||||
|
||||
- 是个路由协议。与IP路由不同点:IP转发决策仅根据目的IP,但MPLS可以由源IP和目的IP共同决定
|
||||
|
||||
# 6. 数据中心网络
|
||||
|
||||
- 负载均衡器(应用层路由),接收外部客户端请求,指导数据中心内部均衡负载,对外部透明
|
||||
|
||||
# 7. Web 请求生命周期中的一天
|
||||