跳转至

计算机网络第三次作业

北京邮电大学 2023212723 吴宇锴


第一题 P2

  • 源端口:80,目的端口:26145,源IP:B, 目的IP:C
  • 源端口:80,目的端口:7532,源IP:B, 目的IP:C
  • 源端口:80,目的端口:26145,源IP:B, 目的IP:A

第二题 P3

  • 8bit字节和=100101101,溢出的一位加到第零位,得到00101110,取反后得到11010001。

  • 直接使用字节和可能因为进位溢出而丢失部分信息,而反码通过将溢出位加到第零位再取反保留了更多信息。

  • 接收方将所有数据(包括校验和)按相同方式计算和。如果结果全为1(即反码和为11111111),说明数据正确;否则存在错误。
  • 如果有1比特差错,会导致最终的结果不全为1,可以检测出来。
  • 如果有2比特差错,假设相同位1变0,0变1,那么将会检测不出。

第三题 P5

不能,正如上一题所说的,2比特差错,或者说偶数比特差错,有可能检测不出来。因此接收方不能确信没有出现过比特差错。


第四题 P6

当接收方的ACK在传输过程中损坏或丢失时,接收方等待下一个包,但是发送方由于没有收到ACK而一直发上一个包,导致双方都进入死锁状态。


第五题 P14

  • 当发送方偶尔发送数据时,使用仅NAK的协议更好,因为数据发送频率低,丢包或出错概率较小,NAK仅在丢包或出错时触发,减少了确认消息的数量,节省网络资源。另外,发送方无需为每个数据包维护ACK计时器,降低了协议的复杂度与资源开销。
  • 当发送方传输大量数据且丢包率低时,使用仅NAK的协议仍然更优。因为在低丢包率的场景下,NAK的触发次数较少,避免了大量ACK的数据传输。另一方面,发送方可以持续发送数据而无需等待ACK,能提高吞吐量。

第六题 P15

发送一个分组进入 \(1\text{Gbps}\) 链路所需时间为: $$ t_{trans} = \frac{L}{R} = \frac{8\times15\text{bit/pkt}}{10^9\text{bit/s}}=1.2\times10^{-5}\text{s} $$ 为使信道利用率超过 \(90\%\), $$ U_{sender} = \frac{n\times t_{trans}}{\text{RTT} + t_{trans}} = \frac{0.012n}{30.012} \ge 90\% $$ 解得 \(n \ge 2251\)

即窗口长度需要大于等于2251。


第七题 P31

  • 得到106ms后:

  • \(DevRTT = 0.75 \times 5 + 0.25 \times |106 - 100| = 5.25\) ms

  • \(EstimatedRTT = 0.875 \times 100 + 0.125 \times 106 = 100.75\) ms
  • \(TimeoutInterval = 100.75 + 4 \times 5.25 = 121.75\) ms

  • 得到120ms后:

    • \(DevRTT = 0.75 \times 5.25 + 0.25 \times |120 - 100.75| = 8.75\) ms
    • \(EstimatedRTT = 0.875 \times 100.75 + 0.125 \times 120 = 103.16\) ms
    • \(TimeoutInterval = 103.16 + 4 \times 8.75 = 138.16\) ms
  • 得到140ms后:

    • \(DevRTT = 0.75 \times 8.75 + 0.25 \times |140 - 103.16| = 15.77\) ms
    • \(EstimatedRTT = 0.875 \times 103.16 + 0.125 \times 140 = 107.76\) ms
    • \(TimeoutInterval = 107.76 + 4 \times 15.77 = 170.84\) ms
  • 得到90ms后:

    • \(DevRTT = 0.75 \times 15.77 + 0.25 \times |90 - 107.76| = 16.27\) ms
    • \(EstimatedRTT = 0.875 \times 107.76 + 0.125 \times 90 = 105.54\) ms
    • \(TimeoutInterval = 105.54 + 4 \times 16.27 = 170.62\) ms
  • 得到115ms后:

    • \(DevRTT = 0.75 \times 16.27 + 0.25 \times |115 - 105.54| = 14.57\) ms
    • \(EstimatedRTT = 0.875 \times 105.54 + 0.125 \times 115 = 106.72\) ms
    • \(TimeoutInterval = 106.72 + 4 \times 14.57 = 165\) ms

第八题 P33

当发送端第一次发送报文,等待ACK,超时后重传,假设在此时启动计时,当发送端接收到ACK后结束计时,但此时接收到的ACK可能是第一次发送报文的返回ACK,因此重传报文的sampleRTT计算有误。所以要避免测量重传报文段的sampleRTT。


第九题 P40

​ a. 慢启动时间为0\~6与23\~26,每隔一个轮回窗口长度翻倍。

​ b. 拥塞避免的时间为6\~16与17\~22,窗口长度线性增长。

​ c. 是根据三个冗余ACK测出的,否则窗口长度会降低到1。

​ d. 第22个传输轮回后是根据超时检测出的,因为窗口长度降低到1。

​ e. ssthresh的初始值设置为32,因为窗口 长度到32时开始拥塞避免。

​ f. 在第16个传输轮回检测到丢包,ssthresh设置为42的一半,也就是21。

​ g. 在第22个传输轮回检测到丢包,ssthresh设置为29的一半下取整,也就是14.

​ h. 窗口长度[1,2,4,8,16,32,33,34,...],取一个前缀和,得到[1,3,7,15,31,64,100,...],在第7个传输回合超过70,因此在第7个回合发送第70个报文段。

​ i. ssthressh变成一半的窗口长度,也就是4,窗口长度变成ssthresh+3,也就是7。

​ j. 如果是TCP Tahoe,在第17回合变成1,18回合变成2,19回合变成4。ssthressh为21。

​ k. 17~21轮,共31个分组,22轮21个分组,共52个分组。


第十题 P54

考虑窗口长度从 \(W/2\) 增加到 \(W\) 的过程,传输的总报文段数为: $$ \begin{aligned} s &= \frac{W}{2} + \frac{W}{2} \times (1+\alpha) + \cdots + \frac{W}{2} \times (1+\alpha)^{\lfloor \log_{1+\alpha} 2 \rfloor} \ &\approx W \times \frac{2\alpha + 1}{2\alpha} \end{aligned} $$ 丢包率为: $$ \begin{aligned} L &= \frac{1}{s} \ &= \frac{2\alpha}{W \times (2\alpha + 1)} \end{aligned} $$ 所需时间为: $$ RTT \times \lfloor log_{\alpha+1}{2} \rfloor $$ 与TCP的平均吞吐无关。