计算机网络 第一章 习题答案

谢希仁《计算机网络(第八版)》第一章课后习题解答,包括电路交换与分组交换时延计算、五层协议体系结构、发送时延与传播时延、链路比特数等。

— 目录 / Contents

说明:1-28严格按题意:接收方收完文件最后一个比特,不是发送方收到ACK。

1-10

题目:要传送的报文共 xx (bit)。从源点到终点共经过 kk 段链路,每段链路传播时延 d(s)d(\text{s}),数据率 b(bit/s)b(\text{bit/s})。电路交换建立时间 s(s)s(\text{s})。分组交换分组长度 p(bit)p(\text{bit}),忽略首部、排队、处理时延。求分组交换时延小于电路交换时延的条件。

解

  1. 电路交换总时延 电路交换 = 连接建立时间 + 报文发送时延 + 全程传播时延
T电路=s+xb+kdT_{\text{电路}} = s + \frac{x}{b} + kd
  1. 分组交换总时延 分组数量:n=xpn=\dfrac{x}{p} 源主机把全部分组推上链路的总发送时延 xb\dfrac{x}{b}; 最后一个分组还要经过中间 k−1k-1 台交换机,每台交换机发送分组需要 pb\dfrac{p}{b}; 全程传播时延 kdkd。
T分组=xb+(k−1)pb+kdT_{\text{分组}}=\frac{x}{b}+(k-1)\frac{p}{b}+kd
  1. 令 T分组<T电路T_{\text{分组}} < T_{\text{电路}}
xb+(k−1)pb+kd<s+xb+kd\frac{x}{b}+(k-1)\frac{p}{b}+kd < s+\frac{x}{b}+kd

消去同类项,得到条件:

(k−1)pb<s\boldsymbol{\frac{(k-1)p}{b} < s}

物理含义:分组在中间交换机上额外的发送总时间,小于电路交换建立连接耗费的时间。

1-11

题目:报文长度xx bit,分组总长度(p+h)(p+h) bit,pp是分组的数据部分,hh为首部。经过kk段链路,链路速率b bit/sb\ \text{bit/s},忽略传播、排队时延。求使总时延最小的分组数据长度pp。

解 分组数目:n=xpn=\dfrac{x}{p} 总时延公式:

T=xp⋅p+hb+(k−1)⋅p+hb=p+hb(xp+k−1)T = \frac{x}{p}\cdot\frac{p+h}{b}+(k-1)\cdot\frac{p+h}{b} =\frac{p+h}{b}\left(\frac{x}{p}+k-1\right)

展开:

T=1b[x+(k−1)p+xhp+h(k−1)]T=\frac1b\left[ x + (k-1)p + \frac{xh}{p}+h(k-1) \right]

对变量pp求导,令导数等于0,求极小值:

dTdp=1b[(k−1)−xhp2]=0\frac{dT}{dp}=\frac1b\left[(k-1)-\frac{xh}{p^2}\right]=0 (k−1)=xhp2  ⟹  p=xhk−1(k-1)=\frac{xh}{p^2}\implies \boldsymbol{p=\sqrt{\frac{xh}{k-1}}}

结论:分组数据部分长度取 p=xhk−1\boldsymbol{p=\sqrt{\dfrac{xh}{k-1}}} 时总时延最小。

1-12

题目:互联网边缘部分与核心部分的特点、工作方式。

  1. 边缘部分:所有连接在互联网上的主机。
    • 特点:供用户直接使用,用来进行通信和资源共享。
    • 工作方式:两类,客户/服务器(C/S) 和 P2P对等方式。
  2. 核心部分:大量路由器。
    • 特点:为边缘主机提供连通性,实现分组交换。
    • 工作方式:路由器采用存储转发分组交换,收到完整分组,查路由表,转发分组。

1-15

题目:网络利用率达到90%,估算当前网络时延是最小时延的多少倍。 公式:排队论,时延 D=D01−UD=\dfrac{D_0}{1-U} D0D_0:网络空闲时的最小时延;UU:信道利用率。

DD0=11−U=11−0.9=10\frac{D}{D_0}=\frac{1}{1-U}=\frac{1}{1-0.9}=10

答案:网络时延是最小时延的 10倍。 说明:信道利用率越高,排队时延急剧增大。

1-17

题目:收发两端距离1000 km,信号传播速率 v=2×108 m/sv=2\times10^8\ \text{m/s}。计算发送时延、传播时延。 传播时延:t传播=距离v=1000×1032×108=0.005 s=5 ms\displaystyle t_{\text{传播}}=\frac{\text{距离}}{v}=\frac{1000\times10^3}{2\times10^8}=0.005\ \text{s}=5\ \text{ms}

(1) 数据长度 107 bit10^7\ \text{bit},速率 100 kbit/s100\ \text{kbit/s}

t发送=107100×103=100 s,t传播=0.005 st_{\text{发送}}=\frac{10^7}{100\times10^3}=100\ \text{s},\quad t_{\text{传播}}=0.005\ \text{s}

(2) 数据长度 103 bit10^3\ \text{bit},速率 1 Gbit/s=109 bit/s1\ \text{Gbit/s}=10^9\ \text{bit/s}

t发送=103109=1 μs,t传播=0.005 st_{\text{发送}}=\frac{10^3}{10^9}=1\ \mu\text{s},\quad t_{\text{传播}}=0.005\ \text{s}

结论

  • 发送时延:取决于数据长度、发送速率,和距离无关;
  • 传播时延:取决于传输距离、介质传播速率,和数据长度无关;
  • 远距离链路,传播时延占主导;低速传输大数据时,发送时延占主导。

1-18

题目:信号传播速率 v=2.3×108 m/sv=2.3\times10^8\ \text{m/s},媒体长度ll,数据速率1 Mbit/s、10 Gbit/s。

媒体中的比特数 = 传播时延 × 数据率 =lv⋅R=\dfrac{l}{v}\cdot R

介质长度1 Mbit/s10 Gbit/s
(1) 10 cm =0.1 m0.1×1062.3×108≈4.35×10−4 bit\dfrac{0.1\times10^6}{2.3\times10^8}\approx\boldsymbol{4.35\times10^{-4}\ \text{bit}}0.1×10102.3×108≈4.35 bit\dfrac{0.1\times10^{10}}{2.3\times10^8}\approx\boldsymbol{4.35\ \text{bit}}
(2) 100 m100×1062.3×108≈0.435 bit\dfrac{100\times10^6}{2.3\times10^8}\approx\boldsymbol{0.435\ \text{bit}}100×10102.3×108≈434.78 bit\dfrac{100\times10^{10}}{2.3\times10^8}\approx\boldsymbol{434.78\ \text{bit}}
(3) 100 km =10510^5 m105×1062.3×108≈434.78 bit\dfrac{10^5\times10^6}{2.3\times10^8}\approx\boldsymbol{434.78\ \text{bit}}105×10102.3×108≈4.35×106 bit\dfrac{10^5\times10^{10}}{2.3\times10^8}\approx\boldsymbol{4.35\times10^{6}\ \text{bit}}
(4) 5000 km =5×1065\times10^6 m5×106×1062.3×108≈21739.13 bit\dfrac{5\times10^6\times10^6}{2.3\times10^8}\approx\boldsymbol{21739.13\ \text{bit}}5×106×10102.3×108≈2.17×108 bit\dfrac{5\times10^6\times10^{10}}{2.3\times10^8}\approx\boldsymbol{2.17\times10^{8}\ \text{bit}}

含义:链路媒体中可以容纳的比特数量,即链路比特容量。

1-24

题目:试述具有五层协议的网络体系结构的要点,包括各层的主要功能。(自底向上)

  1. 物理层:传输比特流;定义接口机械、电气、功能、规程特性;实现比特的透明传输。
  2. 数据链路层:把比特封装成帧;相邻节点差错检测;相邻两点间可靠传输帧;流量控制。
  3. 网络层:分组交换,路由选择;IP寻址;异构网络互联;拥塞控制;传送分组。
  4. 运输层:端到端进程通信;复用与分用。TCP:面向连接、可靠;UDP:无连接,不可靠。
  5. 应用层:直接为应用进程提供服务;HTTP、DNS、FTP等应用协议。

1-28

原题:假定要在网络上传送1.5 MB的文件。设分组长度为1 KB,往返时间RTT = 80 ms。传送数据之前还需要有建立TCP连接的时间,这时间是 2×RTT=160 ms2\times \text{RTT}=160\ \text{ms}。试计算在以下几种情况下接收方收完该文件的最后一个比特所需的时间。

根据已知条件:

  • 文件大小:1.5 MB=1.5×1024=1536 KB1.5\ \text{MB}=1.5\times1024=1536\ \text{KB},分组大小1 KB1\ \text{KB} → 总分组数 N=1536N=1536
  • RTT=80 ms\text{RTT}=80\ \text{ms},单程传播时延 tp=RTT2=40 mst_p=\dfrac{\text{RTT}}{2}=40\ \text{ms}
  • TCP握手建立连接耗时:2RTT=160 ms2\text{RTT}=160\ \text{ms}(握手完成之后A才开始发送数据)
  • 1 KB=1024×8=8192 bit1\ \text{KB}=1024\times8=8192\ \text{bit};发送速率 10 Mbit/s=107 bit/s10\ \text{Mbit/s}=10^7\ \text{bit/s}
  • 单个分组发送时延:ttx=8192107=0.8192 mst_{\text{tx}}=\dfrac{8192}{10^7}=0.8192\ \text{ms}
  • 全部分组连续发送总发送时延:Ttx=1536×0.8192=1258.2912 msT_{\text{tx}}=1536\times 0.8192=1258.2912\ \text{ms}

核心原理:主机A把比特推上链路的时刻 ≠ B收到比特的时刻。比特进入链路起点后,还需要单程传播时延tpt_p跑完链路,才能到达接收方B。

(1) 数据发送速率为10 Mbit/s,数据分组可以连续发送

分组流水线连续发送,不需要等待ACK。 A在2RTT2\text{RTT}握手完成后,不间断发送所有分组; 在时刻 2RTT+Ttx2\text{RTT}+T_{\text{tx}},A将最后一个比特推上链路; 再加上单程传播时延,B收到最后比特。

T=2RTT+Ttx+tp=160+1258.2912+40=1458.29 ms\begin{align*} T &= 2\text{RTT}+T_{\text{tx}}+t_p \\ &=160 + 1258.2912 + 40 \\ &=\boldsymbol{1458.29\ \text{ms}} \end{align*}

(2) 数据发送速率为10 Mbit/s,但每发送完一个分组后要等待一个RTT时间才能再发送下一个分组

每发完1个分组,等待1个RTT,才能发下一组;一共1536个分组,中间等待15351535个RTT。 A发出最后一个分组的时刻 = 握手时间 + 所有分组发送时间 + 1535×RTT1535\times\text{RTT} 之后再加单程传播时延,B收到最后比特。

T=2RTT+N⋅ttx+(N−1)⋅RTT+tp=160+1258.2912+1535×80+40=124258.29 ms\begin{align*} T &= 2\text{RTT}+N\cdot t_{\text{tx}} + (N-1)\cdot\text{RTT}+t_p \\ &=160 + 1258.2912 + 1535\times 80 + 40 \\ &=\boldsymbol{124258.29\ \text{ms}} \end{align*}

(3) 数据发送速率极快,可以不考虑发送数据所需的时间。但规定在每一个RTT往返时间内只能发送20个分组

含义:A必须收到上一批分组的ACK(等待完整RTT),才能发送下一批分组。 每批20个分组。批次数量 ⌈1536/20⌉=⌈76.8⌉=77\lceil 1536/20\rceil=\lceil76.8\rceil=77 批。

  • 第1批:握手结束时刻(2RTT2\text{RTT})发送
  • 第mm批:2RTT+(m−1)×RTT2\text{RTT}+(m-1)\times\text{RTT} 发送
  • 第77批(最后一批)发送时刻:2RTT+76×RTT2\text{RTT}+76\times\text{RTT}

发送完最后一批分组后,比特经过单程传播时延到达B:

T=2RTT+76×RTT+tp=78×80+40=6280 ms\begin{align*} T &= 2\text{RTT}+76\times\text{RTT}+t_p \\ &=78\times 80 + 40 \\ &=\boldsymbol{6280\ \text{ms}} \end{align*}

(4) 数据发送速率极快,可以不考虑发送数据所需的时间。慢启动:第n个RTT发送2n−12^{n-1}个分组

前nn轮发送总分组数:Sn=2n−1S_n=2^n-1 S10=210−1=1023S_{10}=2^{10}-1=1023(前10个RTT一共发出1023个分组) 剩余分组:1536−1023=5131536-1023=513,在第11个RTT发送。

第11批分组发送时刻:2RTT+10×RTT2\text{RTT}+10\times\text{RTT} 再加单程传播时延,B收到最后比特:

T=2RTT+10×RTT+tp=12×80+40=1000 ms\begin{align*} T &= 2\text{RTT}+10\times\text{RTT}+t_p \\ &=12\times80 +40 \\ &=\boldsymbol{1000\ \text{ms}} \end{align*}

1-30

题目:有一个点对点链路,长度为20000 km。数据的发送速率是1 kbit/s,要发送的数据有100 bit。数据在此链路上的传播速率为2×108 m/s2\times10^8\ \text{m/s}。假定我们可以看见在线路上传输的比特,试画出我们看到的线路上的比特(画两张图,一张是在100 bit刚刚发送完时,另一张是再经过0.05 s后)。

解 链路长度 L=20000 km=2×107 mL=20000\ \text{km}=2\times10^7\ \text{m} 传播时延:tprop=Lv=2×1072×108=0.1 s\displaystyle t_{\text{prop}}=\frac{L}{v}=\frac{2\times10^7}{2\times10^8}=0.1\ \text{s} 发送时延:ttx=1001000=0.1 s\displaystyle t_{\text{tx}}=\frac{100}{1000}=0.1\ \text{s}

  1. t=0.1 st=0.1\ \text{s},100bit刚刚发送完毕 发送时延等于传播时延。第一个比特刚好到达链路终点,整条20000km链路刚好被100bit均匀填满。

整条链路从头到尾均匀分布100bit。

t=0.1s 链路被100bit填满

  1. 再过0.05s,t=0.15 st=0.15\ \text{s} 比特向前传播距离:s=v×0.05=2×108×0.05=107 m=10000 kms=v\times0.05=2\times10^8\times0.05=10^7\ \text{m}=10000\ \text{km}。 比特队列整体前移10000km。前50bit已经抵达接收主机离开链路;链路后半段10000km内存在50bit。

链路前半段10000km空白;后半段10000km分布50bit。

t=0.15s 前50bit已到达,链路只剩后50bit

1-34

题目:主机A向主机B发送一个长度为10710^7比特的报文,中间要经过两个节点交换机,即一共经过三段链路。设每段链路的传输速率为2 Mbit/s。忽略所有的传播、处理和排队时延。

(1) 报文交换

A把报文传送到第一个节点交换机的时间(发送时延):

t=1072×106=5 st=\frac{10^7}{2\times10^6}=5\ \text{s}

报文交换每段链路必须完整收到报文再转发,三段链路总时间:

T=3×5=15 sT=3\times5=\boldsymbol{15\ \text{s}}

(2) 分组交换,报文划分为1000个等长分组,忽略分组首部

单个分组长度:1071000=104 bit\dfrac{10^7}{1000}=10^4\ \text{bit} 单个分组发送时延:tg=1042×106=0.005 s\displaystyle t_g=\frac{10^4}{2\times10^6}=0.005\ \text{s}

  • A把第一个分组传到第一个交换机:0.005 s\boldsymbol{0.005\ \text{s}}
  • 第一个分组从A传到B,经过三段链路:3×0.005=0.015 s3\times0.005=\boldsymbol{0.015\ \text{s}}
  • 全部1000个分组(流水线传输):
T=0.015+999×0.005=5.01 sT=0.015 + 999\times0.005=\boldsymbol{5.01\ \text{s}}

(3) 优缺点对比

  • 报文交换:优点:无需分组首部,额外开销小;缺点:总时延大,交换机缓存压力巨大,出错需要重传整个大报文。
  • 分组交换:优点:流水线传输,总时延更小;分组独立转发,故障仅重传单个分组;缺点:每个分组需要增加首部,带来额外开销,接收端需要重组分组。

1-35

题目:主机A向主机B连续传送一个600000 bit的文件。A和B之间有一条带宽为1 Mbit/s的链路相连,距离为5000 km,在此链路上的传播速率为2.5×108 m/s2.5\times10^8\ \text{m/s}。求链路上比特数目的最大值、每比特宽度;若每比特宽度等于整条链路长度,求发送速率。

解 传播时延:

tprop=5000×1032.5×108=0.02 st_{\text{prop}}=\frac{5000\times10^3}{2.5\times10^8}=0.02\ \text{s}
  1. 链路上最大比特数 = 带宽 × 传播时延
N=R×tprop=1×106×0.02=20000 bitN=R\times t_{\text{prop}}=1\times10^6\times0.02=\boldsymbol{20000\ \text{bit}}
  1. 每比特的宽度:链路总长度 / 链路上比特数
W=5000 km20000 bit=0.25 km/bit=250 m/bitW=\frac{5000\ \text{km}}{20000\ \text{bit}}=\boldsymbol{0.25\ \text{km/bit}=250\ \text{m/bit}}
  1. 每比特宽度等于整条链路长度5000km 每比特宽度公式:W=vR  ⟹  R=vW\displaystyle W=\frac{v}{R}\implies R=\frac{v}{W}
R=2.5×1085000×103=50 bit/sR=\frac{2.5\times10^8}{5000\times10^3}=\boldsymbol{50\ \text{bit/s}}