2018期末
三
问题解答:
- 子网 IP 地址分配
- 子网 B:需要至少 100 个地址,分配为
192.168.0.0/25,可用地址范围192.168.0.1-192.168.0.126(126 个可用地址)。 - 子网 A:需要至少 30 个地址,分配为
192.168.0.128/27,可用地址范围192.168.0.129-192.168.0.158(30 个可用地址)。 - 子网 C:剩余地址段
192.168.0.160-192.168.0.255,分配为192.168.0.160/26,可用地址范围192.168.0.161-192.168.0.222(62 个可用地址),最大化子网 C 的地址容量。
- 子网 B:需要至少 100 个地址,分配为
其实这一问吧我觉得应该按照BCA的顺序分配,我们估计一下C的子网的前缀就好了
2. 无线信道的额外特性
- 共享介质,易冲突;
- 易受干扰和信号衰减;
- 半双工通信;
- 动态信道质量(如多径效应)。
-
隐蔽终端问题及缓解方法
- 问题:两个终端因不在彼此通信范围内而同时向同一接收方发送数据,导致冲突。
- 缓解方法:使用 RTS/CTS 协议,通过握手预留信道,避免冲突。
-
NAT 工作原理(以 TCP 为例)
- 内网主机发送 TCP 包时,NAT 路由器将私有 IP 和端口映射为公有 IP 和端口,并维护映射表;
- 外网响应包根据映射表转换回私有 IP 和端口,转发给内网主机。
-
NAT 对 P2P 应用的影响
- NAT 隐藏内网主机的真实 IP,导致对等方无法直接建立连接;
- 需依赖中继服务器(如 STUN/TURN)或 NAT 穿透技术(如 UPnP)实现通信。
四
(1)iBGP 和 eBGP 的作用
- iBGP(内部BGP):用于同一自治系统(AS)内的路由器之间交换路由信息
- eBGP(外部BGP):用于不同AS之间的路由信息交换
五
(1)ssthresh随传输周期的变化图像
初始时,ssthresh=32。
- 周期1-15:处于慢启动阶段,
cwnd从1增长到32,此时ssthresh保持32不变。 - 周期16:首次拥塞事件(如3个重复ACK),
ssthresh减半至16,cwnd也减半至16。 - 周期17-22:进入拥塞避免阶段,
cwnd线性增长至26。 - 周期23:第二次拥塞事件(超时),
ssthresh减半至13,cwnd重置为1。 - 周期24-25:再次进入慢启动,
cwnd从1增长至8,ssthresh保持13不变。
(2)两次拥塞窗口减小的原因
-
第一次减小(周期16):
- 原因:收到3个重复ACK,触发快重传。
- 结果:
ssthresh设为当前cwnd(32)的一半(16),cwnd也减半至16。
-
第二次减小(周期23):
- 原因:超时事件(Timeout),表明严重拥塞或丢包。
- 结果:
ssthresh设为当前cwnd(42)的一半(21),cwnd重置为1。
(3)不同减小策略的原理
-
快重传(3个重复ACK):
- 策略:
cwnd减半(变为ssthresh的一半),进入拥塞避免阶段。 - 原理:轻度拥塞,仅部分数据包丢失,保留部分窗口以快速恢复。
- 策略:
-
超时(Timeout):
- 策略:
cwnd重置为1,重新开始慢启动。 - 原理:严重拥塞或链路故障,需保守试探网络状态。
- 策略:
(4)TCP对真实RTT的估计方法及不选重传RTT的原因
-
估计方法:
TCP使用加权平均法计算平滑RTT(SRTT)和方差(RTTVAR):\[\text{SRTT}_\text{new} = \alpha \cdot \text{SRTT}_\text{old} + (1-\alpha) \cdot \text{sample\_RTT} \]\[\text{RTTVAR}_\text{new} = \beta \cdot \text{RTTVAR}_\text{old} + (1-\beta) \cdot | \text{sample\_RTT} - \text{SRTT}_\text{old} | \]其中\(\alpha \approx 0.9\),\(\beta \approx 0.75\)。
-
不选重传RTT的原因:
重传报文的RTT可能因队列延迟或网络抖动失真,无法准确反映当前网络状态,易导致超时阈值误判。
(5)RTT估计收敛性证明
假设真实RTT为\(R\),初始估计为\(S_0\)。每次更新公式为:
\[S_{n+1} = \alpha S_n + (1-\alpha) R
\]
展开递推式:
\[S_n = \alpha^n S_0 + (1-\alpha^n) R
\]
当\(n \to \infty\)时,\(\alpha^n \to 0\),故\(S_n \to R\)。
结论:无论初始值如何,估计值最终收敛到真实RTT。
(6)拥塞控制与流量控制的区别
| 特性 | 拥塞控制 | 流量控制 |
|---|---|---|
| 目标 | 防止网络过载,全局优化 | 限制发送速率,保护接收方缓冲区 |
| 机制 | 调整cwnd(拥塞窗口) |
接收方通告窗口(rwnd) |
| 作用范围 | 网络层(全网) | 端到端(应用层协议) |
| 触发条件 | 丢包、超时、重复ACK | 接收方缓冲区满 |
| 核心算法 | 慢启动、拥塞避免、快重传 | 滑动窗口机制 |
总结:拥塞控制关注网络资源利用,流量控制保障端到端可靠性。
六
(1)HTTP 如何体现 TCP “全双工” 特性
TCP 的全双工特性允许通信双方同时发送和接收数据。HTTP 基于 TCP,其全双工特性体现在:
- 双向通信:客户端发送 HTTP 请求后,无需等待响应完全到达即可继续发送后续请求(尤其在 HTTP/2 中通过多路复用实现)。
- 并行传输:在持久连接中,客户端和服务器可以交替发送请求与响应,且两者独立进行,无需按严格顺序等待。
(2)HTTP 的 PUT 与 POST 方法的异同
- 相同点:
- 两者均可用于创建或修改资源。
- 不同点:
- 幂等性:PUT 是幂等的(多次操作结果一致),POST 非幂等。
- URL 语义:PUT 要求客户端指定完整资源路径(如
/users/123),直接替换目标资源;POST 的 URI 通常指向资源集合(如/users),由服务器决定新资源路径。 - 用途:PUT 用于更新或完整替换资源,POST 用于提交数据(如创建资源)。
(3)DNS 负载均衡算法设计
需求:根据服务器处理速率(1:2:3)分配请求,实现加权轮询。
算法步骤:
- 定义权重列表
weights = [1, 2, 3],总权重sum_weights = 6。 - 维护一个计数器
current_index,初始为 0,记录当前分配的服务器索引。 - 维护一个数组
counters,记录每个服务器已分配的请求数,初始为[0, 0, 0]。 - 每次收到请求时:
- 遍历服务器列表,找到第一个未达到权重要求的服务器(
counters[i] < weights[i])。 - 分配请求到该服务器,并增加其计数器:
counters[i] += 1。 - 若所有服务器均达到权重要求,重置
counters = [0, 0, 0],重新开始分配。
- 遍历服务器列表,找到第一个未达到权重要求的服务器(
伪代码示例:
weights = [1, 2, 3]
current_index = 0
counters = [0, 0, 0]
def get_server():
while True:
for i in range(len(weights)):
if counters[i] < weights[i]:
counters[i] += 1
return servers[i]
counters = [0, 0, 0] # 重置计数器

浙公网安备 33010602011771号