2018期末

问题解答:

  1. 子网 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 的地址容量。

其实这一问吧我觉得应该按照BCA的顺序分配,我们估计一下C的子网的前缀就好了
2. 无线信道的额外特性

  • 共享介质,易冲突;
  • 易受干扰和信号衰减;
  • 半双工通信;
  • 动态信道质量(如多径效应)。
  1. 隐蔽终端问题及缓解方法

    • 问题:两个终端因不在彼此通信范围内而同时向同一接收方发送数据,导致冲突。
    • 缓解方法:使用 RTS/CTS 协议,通过握手预留信道,避免冲突。
  2. NAT 工作原理(以 TCP 为例)

    • 内网主机发送 TCP 包时,NAT 路由器将私有 IP 和端口映射为公有 IP 和端口,并维护映射表;
    • 外网响应包根据映射表转换回私有 IP 和端口,转发给内网主机。
  3. 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)两次拥塞窗口减小的原因

  1. 第一次减小(周期16)

    • 原因:收到3个重复ACK,触发快重传
    • 结果ssthresh设为当前cwnd(32)的一半(16),cwnd也减半至16。
  2. 第二次减小(周期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)分配请求,实现加权轮询。
算法步骤

  1. 定义权重列表 weights = [1, 2, 3],总权重 sum_weights = 6
  2. 维护一个计数器 current_index,初始为 0,记录当前分配的服务器索引。
  3. 维护一个数组 counters,记录每个服务器已分配的请求数,初始为 [0, 0, 0]
  4. 每次收到请求时:
    • 遍历服务器列表,找到第一个未达到权重要求的服务器(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]  # 重置计数器  
posted @ 2025-05-27 21:05  最爱丁珰  阅读(20)  评论(0)    收藏  举报