2020 network exam
一(10 分)¶
因特网以分层的方式组织协议以及实现这些协议的网络硬件和软件,取得了巨大成功,请回答以下问题
(1)右图是 TCP/IP 协议的结构图,请在图中自底向上填写各层次的名称¶
L5 | 应用层 |
---|---|
L4 | 传输层 |
L3 | 网络层 |
L2 | 链路层 |
L1 | 物理层 |
(2)请列举三种常用的 L2 层网络设备¶
网络交换机,网桥,网卡
(3)请简述 L3 层的功能¶
网络层负责将数据报从源主机传到目标主机,负责逻辑地址(IP)的处理和寻址,负责维护路由算法。
(4)网络通信可以有电路交换和分组交换的方式,比较这两种方式的差异¶
- 电路交换的链路一次只能维护一条连接,而分组交换可以完成多个连接的通信。
- 电路交换存在资源预留,每条连接控制。分组交换不预留资源,对每个数据包进行控制
- 电路交换比较稳定,分组交换可能丢包或拥塞
- 电路交换有通信建立的时延,分组交换主要是排队时延,靠 IP 地址寻址发送,没有动态时延。
二(15 分)¶
如图,令总线以太网上挂接 \(n\) 个等距离间隔的主机站点,其中 A
是第一个站点,D
是最后一个站点,总线数据率为 10M bps
,总线长度为 500m
,信号传播速度为 250m/us
,假设一个数据帧的长度为 8000 bit
¶
(1)计算 A 节点发送一帧的传输时延¶
传输时延是主机将数据报从主机“发射”到链路的过程。
transport delay = 8000bit/10x10^6bps = 8x10^(-4)s=800us
(2 ) 计算从 A 到 D 的传播时延¶
propagation delay= 500m/250m/us=2us
(3) 若两个站点的发送间隔过短,它们将不能侦测对方而帧会互相碰撞。站点在发送过程中监测总线,从发送第一个比特开始计时,到站点发现碰撞,最坏情况需要多少秒?¶
最坏情况是 A
发送的第一个 bit 到达 D
的前一瞬间,D
也试图发送,碰撞 detected,其广播这个 jam signal
告诉 A
。
总时间:
-
1st bit 到达
D
500m/250m/us=2us
-
jam signal
传输到A
500/250m/us=2us
-
最坏情况总共需要
4us
(一个 RTT)- 联想最小帧长问题,就是在一个 RTT 内,不能传输结束,否则就监测不到碰撞)
(4)简述以太网 CSMA/CD 的原理,并解释为何该机制不适用于无线网络¶
- CSMA/CD 在发送报文的时候同时检测信道能量
- 检测到信道空闲,传输。
- 如果发生碰撞,传到
4
- 如果发生碰撞,传到
- 如果信道忙,则等待直到空闲
- 侦测到碰撞,发送 jam signal,退避。
- 则选择一个随机量退避。在该帧经历了一连串的 \(n\) 次碰撞后,节点随机地从 \(\{ 0,1,2,\dots,2^{n-1}\}\) 中选择一个 \(K\) 值,并等待 \(K\times 512 \;比特时间\)。
- 从 1 开始重复
为什么不适用无线网络 - 无线网络隐藏终端问题,所以并不确定是谁发送了报文,难以检测碰撞 - 无线网络是半双工网络,不能同时传输并侦测碰撞信息。 因为此,所以无线网络选择 CSMA/CA
(5)数据传输使用循环冗余校验码(CRC),假设生成多项式为 G = 10011
,待传输数据为 D = 1011101001
, 求解其 CRC 码¶
三(10 分)¶
如图是某公司的网络,其中 \(S_{1},S_{2},S_{3},S_{4}\) 是交换机,数字表示其端口号,\(R\) 是路由器¶
(1)在该公司的局域网中,如果存在环路,会产生什么问题?如何解决该问题?¶
- 如果存在环路,会发生广播风暴问题。
- 解决该问题,可以通过路径毒化。
- 即在采取距离向量 DV 方法的路由算法系统中,毒化某些路径
- 具体来说是标记某路径的距离非常大
(2 )假设一开始所有交换机的转发表都为空,各交换机通过自动地址学习来配置转发表。网络中经过以下几次数据传输,A->D, D->A, B->G, G->B, A->H, H->A
假设传输开始前,E
开启了 Wireshark 进行抓包,则 E
能抓到哪些数据传输的报文?¶
- 分析
- A 到 D
- A 传输 D,S1 学习了 A 的 LAN 地址,广播这个包。
- S3 收到这个包,学习了 A 的 LAN 地址,广播这个包,
- S2 收到这个包,学习了 A 的 LAN 地址,广播
- E 收到 1st 包,是 S2 广播的 A->D 的包
- D 收到包。
- R 学习 A 的地址,广播
- S4 学习 A 的地址
- D 到 A
- D 发送包
- S2 学习 D 的 LAN,广播
- E 收到 2nd 包,是 S2 广播的 D ->A
- S3 学习 D 的 LAN
- R 学习 D 的 LAN
- S4 学习 D 的 LAN
- S1 学习 D 的 LAN
- A 收到
- 同理
- B->G
- E 收到广播的B 到 G 的包。
S1,S2,S3,R,S4
均学习 B 的 LAN
- G 到 B
- E 收到广播的 G 到 B 的包
- A 到 H
- E 收到广播的 A 到 H 的包
- H 到 A
- 由于 A 的地址 S3已经知道,所以 S3 不会再广播这个包(洪泛),所以 E 收不到这个包。
(3 )假设 G
访问了一个 Web 主页,H
用抓包工具抓到该 HTTP 请求对应的数据包。下面所示为 G 进行 Web 请求的 1 个以太网帧前 80 个字节的 16 进制以及 ASCII 码内容。请填写¶
- G 的 IP 地址为:
- G 所访问的网站的 IP 地址为
- G 的 MAC 地址为
- G 的默认网关的 MAC 地址为
- 该IP 包的载荷长度为
- 该IP 包的 TTL 为
注:以太网帧格式和 IP 首部格式如下
解答
- 每 byte字节是 8bit 位
- wireshark 是按字节显示的,如 c5
就是一个字节 1100 0101
- 依次看就行了。
- 前 6+6+2=14
bytes 都是以太网头部
- 包括 Address 和 type
- type
: 0800
,IP 类型
- version
- 版本为 4
- 定位到 Source Address,到 0x 0a 02 80 64
- 即 10.2.128.100
- Dst address 0x 40 aa 62 20
- 即 64.170.98.32
- MAC 地址
- G
的 MAC 地址
- 00:15:c5:c1:5e:28
- G 的默认网关的 MAC 地址
- 00:21:27:21:51:ee
- IP 包的载荷长度
- 0x01ef
- 长度为 1*16^2+14*16+6=486
- TTL
0x80
=128
四(15 分)¶
某学校计算机系拟建设以太网和无线局域网,以满足用户的上网需求。根据你学习到的网络知识,请回答以下问题:¶
(1)假如计算机系拥有形式为 202.119.32.64/26
的地址块,想要分给 3 个实验室搭建子网,要求分别支持 10、30、6 台机器上网,请给出每个子网的 CIDR 表达¶
`64=0100 0000`,/26,则前两位前缀必须是`01`
- 30 台机器,即
2^5
,可以分配202.119.32.64/27
,有 5 位可划分- 64=
0100 0000
- 10 台机器,即
2^4=16
202.119.32.96/28
- 由于一个是
...010|0 0000/27
- 一个是
...0110|0000/28
- 所以不存在和 30 台机器的冲突
- 6 台机器,即
2^3=8
202.110.32.112/29
- 二进制是
...01110|000/29
- 也不存在前缀冲突 综上所述,三个子网
202.119.32.64/27
202.119.32.96/28
202.110.32.112/29
(2)由于疫情影响,希望支持学生在异地通过 Internet 进入学校网络访问学术资源,可以通过什么技术实现?请简述其原理。¶
可以采用 VPN 技术。VPN 技术是利用 ssh 隧道等加密方式直接建立和学校网络的通信,然后学校会为学生分配一个虚拟的 IP 地址,逻辑上作为其内网。其通讯通过加密,既保证学生可以访问学校网络,也保证了学校学术资源的安全性和私密性。 以下是 GPT 对 VPN 的讲解
VPN的原理¶
- 虚拟隧道
- VPN 在公网上创建一条加密的“隧道”连接,将用户与学校的内部网络安全地连通。
- 传输的所有数据都会通过加密算法处理,防止被窃听或篡改。
- 身份认证
- 用户在连接 VPN 时需要输入账号和密码,学校通过认证服务器(如 RADIUS、LDAP)验证用户身份,确保合法访问。
- 地址分配
- 成功连接后,VPN 服务器会为用户分配一个与学校内部网相同的 IP 地址,让用户的设备“逻辑上”处于学校的内网中。
- 数据加密与解密
- 数据在发送前会被加密,经过公网传输后,VPN 服务器或客户端再解密,保证数据的机密性和完整性。
(3)假如某实验室使用 NAT 来解决 IP 地址不够用的问题。你希望检测 NAT 后的主机数量。假设每台主机都访问了 NJU 的主页,并且你抓取到了所有主机传输的数据报文。请简述一种方案来检测 NAT 后不同主机的数量。¶
NAT 的标识号是顺序增长的,是连续的。所以我们可以将所有报文标识号顺序排列的放到一个集合中,然后数出这个集合的元素个数,即 NAT 后的主机数量。
(4)假如实验室建立了防火墙,希望禁止内部机器访问 web 网络。请简述如何建立防火墙规则。¶
- 首先获取到实验室的内网 IP 范围,比如
192.168.0。0/24
- 然后配置规则:
- 限制的是 web 网络,即 https 和 http,端口为
80
和443
- 规则类型:阻止(Deny)。
- 协议:TCP(Web 流量通常使用 TCP)。
- 源地址范围:实验室内部 IP 地址范围。
- 目标端口:80 和 443。
- 限制的是 web 网络,即 https 和 http,端口为
-
即在 TCP 层面限制,如果目标端口是 80 和 443 (HTTP, HTTPS) 则限制转发。
-
注释
- 这使你想到:UDP 可能突破防火墙,不安全。
(5)假如一台主机 A
想知道同一局域网的另一台主机 B
的 MAC 地址,请问如何实现?¶
采用 ARP 机制。
- A
会发送 ARP request,dst IP 是 B
的 IP,这是一个广播请求
- 然后这个请求会经过路由转发等过程“洪泛”到所有主机。
- 其他主机收到,发现不是自己的 IP,就丢弃。
- B
收到之后,确认是自己的 IP,会填写自己的 MAC 地址,目标 MAC 填写 A
的 MAC
- 然后发送 ARP reply 包
- 路由器已经经过了地址学习,所以可以正确转发 A
的目标包。
- A
收到 B
的地址后,写入自己的缓存。
经过这一切后,A
就知道了 B
的 MAC 地址。
五(10 分)¶
如图是一个计算机网络的带权图表示,边上的数字代表路由代价。¶
(1)假如使用最小代价路由算法,请填写节点 u的路由表
¶
Destination | Next-Hop | Distance |
---|---|---|
V | v | 2 |
W | w | 4 |
X | x | 3 |
Y | x | 4 |
Z | x | 6 |
#### (2) 如果网络链路代价发生了改变,例如 y 到 z 之间的链路代价从 2 变成了 100 ,请描述 RIP 协议和 OSPF 协议分别如何更新路由信息,并比较其优缺点。 |
- RIP 协议:
- y 到 z 的链路代价从 2 变成 100,y 首先会更新自己的路由表,发现发生变化后,将这个更新信息洪泛出去
- y 的邻居收到更新信息,更新自己的路由向量,发给自己的邻居。
- 稳定后,就建立了新的路由表
-
OSPF 协议
- y 更新自己的 OSPF Database,然后根据 OSPF Database 信息封装新的 OSPF lsu 包多播出去。
- 网络中的其他节点收到这个 lsu 包,更新自己的 OSPF 数据库,并重新运行 Dijkstra 算法计算全局最优路由
-
RIP
- 优点:部署简单
- 缺点:收敛速率慢
- OSPF
- 优点:收敛速度快
- 缺点:复杂
(3) 自治域之间的路由采用什么协议?该协议是如何检测环路的?¶
自治域(AS)之间的路由采用 BGP 协议。 BGP 协议运行过程,当进入一个新的 AS 之后,会将其独特的标识号加入到 AS 路由信息中,形成一个路由路径。这样,如果访问一个新的 AS,查找 AS 路由路径,发现其已经出现过,则检测到了环路。
六(10 分)¶
为了设计一个高效公平的传输层协议,需要考虑很多问题。请根据所学的知识,回答以下问题。¶
(1)假如数据传输采用停止-等待协议。发送方和接收方之间的通信链路带宽为 1Gbps,传输时延为 15ms,数据包大小为 8000bit ,计算在该链路上的最大吞吐量是多少?为了提升吞吐量,有何办法?¶
最大吞吐量
一个 8000bit
的数据包压入链路时间:t1=8000bit/1Gbps=8*10^-6s=8us
收到一个 ACK 才会发下一个包,RTT=2x15ms=30ms
1s 内传输的包数量:
1/8us+30ms =33
故最大吞吐量约为 33*8000bit=267Kb
提升吞吐量: - 用更高级的滑动窗口协议如 SR,提高信道利用率 - 降低传输时延 - 提高带宽
(2)如图所示,链路带宽 \(C=20\),有三个流 \(r_{1},r_{2},r_{3}\) 分别请求带宽为 \(15,10,4\), 应如何为每个流分配带宽,使得满足 Max-Min Fairness¶
- 第一轮 \(n=3\)
R1=C/3=6.67
,- 优先分配需求最小的
r3
x3=0,x3+R1>4
分配4
- 剩余
16
r2
x2=0,x2+R1<10
,分配6.67
- 分配
6.67
,剩余9.33
r1
x1=0,x1+R1<15
,分配6.67
- 剩余
2.66
- 第二轮未满足的用户只有
r1
和r2
, \(n=2\), 剩余R2=1.66/2=1.33
- 分配
r2
- 分配
1.33
x2=x2+R2=8
- 分配
- 分配
r1
- 分配
1.33
x1=x1+R2=8
- 分配
- 分配
- 最后结果
流 | 带宽 |
---|---|
r1 | 8 |
r2 | 8 |
r3 | 4 |
(3) 下图为数据分组到达-服务-离开的示意图。假设每个分组的服务时间为 1 个时隙,缓冲区可容纳无限长的队列。¶
假设 FIFO 服务,请写出分组 2-7
离开队列的时间
分组 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
离开时间 | 1 | 2 | 3 | 4 | 6 | 5 | 7 |
- 分析
- 3 和 4 到达,1 离开队列,2 开始处理,
pending (2,3,4)
- 2 离开,3 开始处理,6 到达 ,
pending(3,4,6)
- 3 离开,4 开始处理,5 和 7 到达,
pending (4,6,5,7)
- 4 离开,6 开始处理,无到达,
pending(6,5,7)
- 6 离开,5 开始处理,到达 8,9,
pending(5,7,8,9)
- 5 离开,7 开始处理,无到达,
pending(7,8,9)
- 7 离开,8 开始处理,10 到达,
pending(8,9,10)
- 8 离开,9 开始处理,11,12 到达 ,
pending(9,10,11,12)
- 9 离开,10 开始处理,无到达,
pending(10,11,12)
- 10 离开,11 开始处理,无到达,
pending(11,12)
- 11 离开,12开始处理,无到达,
pending(12)
- 12 离开
(4) 同上题,假设优先权服务,假设奇数编号的是高优先权,偶数编号的事低优先权,请写出分组 2-7
离开队列的时间。¶
分组 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
离开时间 | 1 | 3 | 2 | 7 | 4 | 8 | 5 |
- 分析 | |||||||
1. 3 和 4 到达,1 离开队列,pending (3,2,4) ,3 开始处理 |
|||||||
2. 3 离开,6 到达 , pending(2,4,6) ,2 开始处理 |
|||||||
3. 2离开,5 和 7 到达, pending (5,7,4,6) , 5 开始处理, |
|||||||
4. 5 离开,无到达, pending(7,4,6) ,7开始处理, |
|||||||
5. 7 离开,到达 8,9,pending(9,4,6,8) ,9 开始处理, |
|||||||
6. 9 离开,无到达,pending(4,6,8) ,4 开始处理 |
|||||||
7. 4离开,10 到达,pending(6,8,10) ,6 开始处理 |
|||||||
8. 6 离开,11,12 到达 , pending(11,6,8,10,12) ,11 开始处理 |
|||||||
9. 11 离开,无到达,pending(6,8,10,12) ,6 开始处理 |
|||||||
10. 6 离开,无到达,pending(8,10,12) ,8 开始处理 |
|||||||
11. 8 离开,无到达,pending(10,12) ,10 开始处理 |
|||||||
12. 10离开,无到达,pending(12) ,12 开始处理 |
|||||||
13. 12 离开 |
七(15 分)¶
根据所学的 TCP 协议知识,回答以下问题:¶
(1)描述 TCP 拥塞控制在慢启动和拥塞避免阶段分别使用什么拥塞窗口调整策略。¶
- 慢启动
cwnd=cwnd+MSS
每 ack- 每个 RTT 都翻一倍,是指数级别的增长
- 拥塞避免
cwnd=cwnd+MSS/cwnd
- 线性增长
(2)在高速网络中,在拥塞避免阶段,使用上述拥塞窗口调整策略有何缺点?¶
窗口试探过于保守,很久才能试探到窗口边界,导致大量带宽浪费
(3)如图为 TCP 的拥塞窗口变化图,请问:在 D 点发生了什么事件?在 F 点发生了什么事件?¶
- D 点 cwnd 减半,说明收到了多个 dupACK 而侦测到丢包。
- 快重传/快恢复
- F 点发生了严重丢包事件(超时)
- 结束拥塞避免阶段,进入慢启动重启阶段
(4)TCP 协议要对 RTT 值进行估算。假设 Estimated RTT
初始值为 100ms
,\(\alpha=0.25\),获得 4 个测量样本 SampleRTT
分别为 106ms,80ms,120ms,102ms
,计算得到更新的 Estimate RTT
¶
公式:
EstimatedRTT_1=0.75*100+0.25*106=101.5
EstimatedRTT_2=0.75*101.5+0.25*80=96.125
EStimatedRTT_3=0.75*96.125+0.25*120=102.09375
EstimatedRTT_4=0.75*102.09375+0.25*102=102.0703125
(5) 结合 TCP 头部格式说明三次握手连接建立过程,指出交互过程头部关键域的变化。¶
- 客户端发送 SYN,服务器接收
- 字段:
SYN=1
,表示连接SEQ=X
,随机量ACK=0
- 端口为 dst port 的服务器管理请求
- 服务器切换状态为 SYN_RECV, 创建子 sock 管理连接,根据 TCP 头中的记录客户端的端口。
- 字段:
- 服务器发送 SYN+ACK
- 字段
SYN=1
ACK=1
服务器表示自己已经收到了dst PORT
填写 1 中客户端的src PORT
- 客户端接收
ACK
,知道了服务端已经同意连接
- 字段
- 客户端发送
ACK
- 字段
- `SYN=0
dst PORT
:改为服务器子 sock 的端口
- 服务器接收到
ACK
, 链接建立,握手完成。
- 字段
八(15 分)¶
考虑 Alice 进行网上购物的安全通信场景,回答:¶
1)假设 Alice 的公钥是(\(N_A=33,e_A=7\)),试推导一种可能的私钥¶
\(N_{A}=3\times 11\), \(p=3,q=11\), 则欧拉函数 \(\Phi=(p-1)(q-1)=20\) 找到小于 \(\Phi\) 且是 \(e_{A}\) 的模反元素,比如 \(3\) 私钥可以是(\(N_{A}=33,\) \(d=3\))
2)用 Alice 的私钥加密数字 8,写出其加密过程和加密后的结果¶
\(C=(M^{d})\bmod N_{A}=8^{3} \bmod33=17\)
3)假如 Alice 要发送一个网上订单,如何保证该订单的完整性和可认证性¶
- 完整性:可以引入 CRC 校验、奇偶校验等校验技术检验报文的完整性
- 可认证性:用自己的公钥加密,同时订单接收方分发有私钥,可以认证。
4)假如 Alice 访问的网上银行页面要求安装一个数字证书,该证书包含了银行的公钥,请问如何知道该数字证书未被篡改?¶
- 数字证书有 CA 机构的认证,具体原理是 CA 根据自己的私钥和证书内容加密
- 所以 Alice 可以用银行的公钥解密数字证书,如果解密出来的内容正确则数字证书未被篡改
5)在使用非对称加密技术后,为了安全地分配密钥,为什么仍然需要可信任的权威机构(CA)?¶
- 非对称加密仍然可能面对中间人攻击,即其可以拦截分发的公钥,然后建立通信。所以我们需要确定发送公钥者的权威身份,这就需要 CA 了。
- 总结来说,CA的作用在于为非对称加密的公钥提供身份背书,防止中间人攻击,简化信任关系的建立,从而实现安全的密钥分配和通信。