Skip to content

2020 network exam

一(10 分)

因特网以分层的方式组织协议以及实现这些协议的网络硬件和软件,取得了巨大成功,请回答以下问题

(1)右图是 TCP/IP 协议的结构图,请在图中自底向上填写各层次的名称

L5 应用层
L4 传输层
L3 网络层
L2 链路层
L1 物理层

(2)请列举三种常用的 L2 层网络设备

网络交换机,网桥,网卡

(3)请简述 L3 层的功能

网络层负责将数据报从源主机传到目标主机,负责逻辑地址(IP)的处理和寻址,负责维护路由算法。

(4)网络通信可以有电路交换和分组交换的方式,比较这两种方式的差异

  • 电路交换的链路一次只能维护一条连接,而分组交换可以完成多个连接的通信。
  • 电路交换存在资源预留,每条连接控制。分组交换不预留资源,对每个数据包进行控制
  • 电路交换比较稳定,分组交换可能丢包或拥塞
  • 电路交换有通信建立的时延,分组交换主要是排队时延,靠 IP 地址寻址发送,没有动态时延。

二(15 分)

image.png|400

如图,令总线以太网上挂接 \(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 的原理,并解释为何该机制不适用于无线网络

  1. CSMA/CD 在发送报文的时候同时检测信道能量
  2. 检测到信道空闲,传输。
    1. 如果发生碰撞,传到 4
  3. 如果信道忙,则等待直到空闲
  4. 侦测到碰撞,发送 jam signal,退避。
    1. 则选择一个随机量退避。在该帧经历了一连串的 \(n\) 次碰撞后,节点随机地从 \(\{ 0,1,2,\dots,2^{n-1}\}\) 中选择一个 \(K\) 值,并等待 \(K\times 512 \;比特时间\)
  5. 从 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 为

image.png|400

注:以太网帧格式和 IP 首部格式如下 image.png|400

Pasted image 20250402104503|500

解答 - 每 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的原理

  1. 虚拟隧道
    • VPN 在公网上创建一条加密的“隧道”连接,将用户与学校的内部网络安全地连通。
    • 传输的所有数据都会通过加密算法处理,防止被窃听或篡改。
  2. 身份认证
    • 用户在连接 VPN 时需要输入账号和密码,学校通过认证服务器(如 RADIUS、LDAP)验证用户身份,确保合法访问。
  3. 地址分配
    • 成功连接后,VPN 服务器会为用户分配一个与学校内部网相同的 IP 地址,让用户的设备“逻辑上”处于学校的内网中。
  4. 数据加密与解密
    • 数据在发送前会被加密,经过公网传输后,VPN 服务器或客户端再解密,保证数据的机密性和完整性。

(3)假如某实验室使用 NAT 来解决 IP 地址不够用的问题。你希望检测 NAT 后的主机数量。假设每台主机都访问了 NJU 的主页,并且你抓取到了所有主机传输的数据报文。请简述一种方案来检测 NAT 后不同主机的数量。

NAT 的标识号是顺序增长的,是连续的。所以我们可以将所有报文标识号顺序排列的放到一个集合中,然后数出这个集合的元素个数,即 NAT 后的主机数量。

(4)假如实验室建立了防火墙,希望禁止内部机器访问 web 网络。请简述如何建立防火墙规则。

  • 首先获取到实验室的内网 IP 范围,比如 192.168.0。0/24
  • 然后配置规则:
    • 限制的是 web 网络,即 https 和 http,端口为 80443
    • 规则类型:阻止(Deny)。
    • 协议:TCP(Web 流量通常使用 TCP)。
      • 源地址范围:实验室内部 IP 地址范围。
      • 目标端口:80 和 443。
  • 即在 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的路由表

image.png|400

Destination Next-Hop Distance
V v 2
W w 4
X x 3
Y x 4
Z x 6
#### (2) 如果网络链路代价发生了改变,例如 yz 之间的链路代价从 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
  • 第二轮未满足的用户只有 r1r2, \(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 个时隙,缓冲区可容纳无限长的队列。

image.png|600

假设 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 点发生了什么事件?

image.png|400

  • D 点 cwnd 减半,说明收到了多个 dupACK 而侦测到丢包。
    • 快重传/快恢复
  • F 点发生了严重丢包事件(超时)
    • 结束拥塞避免阶段,进入慢启动重启阶段

(4)TCP 协议要对 RTT 值进行估算。假设 Estimated RTT 初始值为 100ms\(\alpha=0.25\),获得 4 个测量样本 SampleRTT 分别为 106ms,80ms,120ms,102ms,计算得到更新的 Estimate RTT

公式:

\[ \text{Estimated RTT}=(1-\alpha)\text{Old Estimated RTT}+\alpha \times \text{Sample 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的作用在于为非对称加密的公钥提供身份背书,防止中间人攻击,简化信任关系的建立,从而实现安全的密钥分配和通信。