《计算机网络课程》 第五章 作业与思考 作业题 1. 一个数据报网络允许路由器在必要的时候丢弃数据包...
تم الإنشاء في: ٢٢ يونيو ٢٠٢٥
تم الإنشاء في: ٢٢ يونيو ٢٠٢٥
《计算机网络课程》
第五章 作业与思考
作业题
思考题
pythonimport sympy as sp p=sp.symbols('p') expr = p + 2*p*(1-p) + 3*(1-p)**2 sp.expand(expr) p**2 - 3*p + 3
pythonnodes = ['A','B','C','D','E','F'] edges = {('A','B'):12, ('B','C'):3, ('C','D'):5, ('A','E'):6, ('E','C'):8, ('E','F'):7, ('F','D'):2, ('B','F'):9} # make undirected edge_cost = {} for (u,v),c in edges.items(): edge_cost.setdefault(u,{})[v]=c edge_cost.setdefault(v,{})[u]=c # distance vector iterative dist = {u:{v:(0 if u==v else (edge_cost[u][v] if v in edge_cost[u] else math.inf)) for v in nodes} for u in nodes} next_hop = {u:{v:(None if v==u else (v if v in edge_cost[u] else None)) for v in nodes} for u in nodes} def iterate(dist): changed=False for u in nodes: for v in nodes: if v==u: continue best = dist[u][v] best_nh = next_hop[u][v] for n,cost in edge_cost[u].items(): if dist[n][v] + cost < best: best = dist[n][v] + cost best_nh = n if best < dist[u][v]: dist[u][v]=best next_hop[u][v]=best_nh changed=True return changed iters=0 while iterate(dist): iters+=1 print(iters) # show A print(dist['A']) print(next_hop['A'])
下面给出《计算机网络课程》第五章“作业题”和“思考题”的参考答案与推导过程,全部使用中文说明,便于直接学习、核对与复习。如有符号或格式要求,可再告诉我。
设主机→源路由器、源路由器→目标路由器、目标路由器→目标主机各算一跳。两台路由器独立丢包,主机链路不丢包。
事件 | 概率 | 本次尝试经历跳数 |
---|---|---|
第 1 个路由器丢包 | p | 1 |
第 1 个路由器成功、第 2 个丢包 | (1-p)p | 2 |
两个路由器都成功 | (1-p)² | 3 |
(a) 每次尝试的平均跳数
(b) 平均尝试次数
一次尝试成功概率 。尝试次数服从几何分布:
(c) 每个成功数据包平均耗费的跳数
网络边 (带权):
text(A,B,12) (B,C,3) (C,D,5) (A,E,6) (E,C,8) (E,F,7) (F,D,2) (B,F,9)
A 的初始路由表
目的网 | 代价 | 下一跳 |
---|---|---|
B | 12 | B |
E | 6 | E |
第一次与邻居 (B,E) 交换后:
目的网 | 代价 | 下一跳 | 说明 |
---|---|---|---|
B | 12 | B | 直接链路 |
E | 6 | E | 直接链路 |
C | 6+8 = 14 | E | A→E→C |
F | 6+7 = 13 | E | A→E→F |
D | ∞ | – | 暂未知 |
再交换一次后即稳定(共 2 轮),因为新矢量继续传递可得到
,代价 6+7+2 = 15:
目的网 | 代价 | 下一跳 |
---|---|---|
B | 12 | B |
C | 14 | E |
D | 15 | E |
E | 6 | E |
F | 13 | E |
掩码 /20,主机位 12 位 ⇒ 每个子网可用主机
部门 | 需主机数 | 选用前缀 | 可用主机 | 子网地址 |
---|---|---|---|---|
计算机学院 | ≥1500 | /21 | 2046 | 178.32.0.0/21 |
电气电子学院 | ≥500 | /23 | 510 | 178.32.8.0/23 |
行政办公楼 | ≥500 | /23 | 510 | 178.32.10.0/23 |
文史学院 ① | ≥50 | /26 | 62 | 178.32.12.0/26 |
文史学院 ② | ≥50 | /26 | 62 | 178.32.12.64/26 |
文史学院 ③ | ≥50 | /26 | 62 | 178.32.12.128/26 |
文史学院 ④ | ≥50 | /26 | 62 | 178.32.12.192/26 |
理由:
四段 /21 网络:
text57.6.96.0/21 57.6.104.0/21 57.6.112.0/21 57.6.120.0/21
第三字节 96,104,112,120 连续且均为 8 的倍数,能组成一个块长
地址的 /19 网络。
结果:57.6.96.0/19。
无需拆分原 /17:在路由表中新增更长前缀
(例如 29.18.60.0/22)指向新出口即可,基于 最长前缀匹配,
这 1024 个地址会走新路径,其余仍由 /17 处理。
目标地址 | 命中前缀 | 下一跳 |
---|---|---|
(a) 192.53.40.7 | 192.53.40.0/23 | 路由器 1 |
(b) 135.46.58.15 | 135.46.56.0/22 | 接口 0 |
(c) 135.46.52.2 | 无更具体匹配 | 默认 → 路由器 2 |
虚电路是否需要路由表?
需要,但形式不同。每台交换节点维护 VCI→(出接口, 新 VCI) 的映射表,而非完整目标地址 → 下一跳表。分组携带虚电路号,由交换节点查表快速转发。
虚电路 vs 数据报
特性 | 虚电路 | 数据报 |
---|---|---|
建链 | 需连接建立阶段 | 无需 |
转发开销 | 小(查 VCI) | 大(查完整地址) |
可靠性 | 可保证顺序、拥塞控制 | 自行保证 |
失败恢复 | 重新建链慢 | 路由可绕行快 |
适用 | ATM、MPLS | IP |
项 | 距离向量 (DV) | 链路状态 (LS) |
---|---|---|
交换内容 | 到各目的的距离 | 自身与邻居链路状态 |
视图 | 无全局拓扑 | 构造全网拓扑 |
计算 | 贝尔曼-福德 | Dijkstra |
问题 | 计数到无穷 | —— |
收敛速度 | 较慢 | 较快 |
分级路由优势 & IP 实现
NAT 转换过程与流数量上限
ARP 跨网段
ICMP 用于网络探测的原因
随机传感器网络模拟思想
随机在 内生成 K 个节点坐标。
构建图:两节点距离 ≤ r 视为连边。
孤立点概率:统计度为 0 的节点数 / K,多次 Monte-Carlo 取平均。
不可达节点:对每次实验从汇聚点(假设顶点 (0,0))做 BFS/DFS,标记未被访问的节点。
可用 Python / MATLAB 生成随机点、计算欧氏距离矩阵并分析连通性。若需要完整代码示例,可以再告诉我。
如需对某一题深入推导、验证数值,或查看模拟源码,请随时提出!