计算机网络:自顶向下方法课后习题参考答案

计算机网络:自顶向下方法(第7版)资料下载地址

我把可能侵权的图片删除了,剩下的内容由我翻译整理,并且使用英文版参考答案的图片,应该不会涉及到侵权的问题了。当然了,如果哪里有侵犯版权或者错误欢迎发邮件给我,没有什么是侵犯别人合法权益的理由。

计算机网络:自顶向下方法,第7版

复习题和习题参考答案

版本时间:2016年12月

本文档包含Jim Kurose和Keith Ross编写的《计算机网络:自顶向下方法(第7版)》复习题和习题的参考答案。这些答案只对指导老师有效。请不要复制或者分发给其他人(即使是其他指导老师)。请不要在公共网络发布任何参考答案(当你看见此文档时已经违背了)。如果有需要,我们很乐意提供此参考答案(最新版)。

声明:这些年来,很多同学和同事帮助我们准备此参考答案。特别感谢Honggang Zhang,Rakesh Kumar,Prithula Dhungel和Vijay Annapureddy。同时也感谢提建议和修正错误的所有读者。

所有材料©1996-2016 由J.F.Kurose 和 K.W.Rose提供。版权所有。

中文版©2019-2021 由幽弥狂提供。版权没有。

说明

名称说明
译者幽弥狂
开始时间2019.10.6
当前版本2020.12.31
邮箱1768478912@qq.com
网址https://feater.top/book/compute-network-top-down-mothed-answer

1、此参考答案所有内容版权由原作者所有,本人为了方便考研复习提供简体中文版本的翻译。中文版是基于英文版,部分图片来自英文版。此文档的中文版权归本人所有,提供给需要的人使用。

2、阁下在获取到此文档的同时,应该同时获取到此文档的英文原版PDF。

3、阁下在使用本文档时,不得添加水印、删减或修改内容。

4、阁下在使用本文档时,请保留此页面和原版翻译的封面。

5、根据南京大学计算机845真题的考试要求,本文档只翻译第1-7章。根据网友需求,翻译第8章。

6、内容是通过金山词霸在线翻译,由我整理、校正和检查,使用时请注意。

7、我会根据校正情况添加必要的说明使用参考答案易用性上升。

8、当然,以上内容只是说说而已,你如果不遵守,我也不可能顺着网线去打你。

9、如果有侵权(对于原作者)或者其他的问题或者建议,欢迎联系我。

版本信息

  • 2020年12月31日
    修复版权问题细节

  • 2020年10月13日
    校正所有内容
    发布带书签版PDF结果文件,版本号2020.10.13

  • 2020年9月27日
    修正第二章复习题第26题中的错误

  • 2020年4月23日
    校正所有公式、图片、表格

  • 2020年4月10日
    校正第一章、第二章内容

  • 2020年4月8日
    创建参考答案博客

  • 2019年11月23日
    发布第二个发布版,版本号:V2.0.2019.11.23
    修复公式导出问题
    添加第八章内容

  • 2019年11月11日
    发布第一个发布版,版本号:V1.0.2019.11.11

  • 2019年10月6日
    创建文档

第一章

复习题1

1、(1)没有区别。根据书本内容,“主机”和“终端系统”是交换使用的。

(2)终端系统包括PC、工作站、网络服务器、邮件服务器、PDA、连接网络的游戏控制台等等。

(3)由(2)可知,网络服务器是终端系统。

2、来自维基百科:外交协议常用于描述一系列国家来往规则。这些构建完备和经过时间检验的规则可以使国家和人民生活和工作更简单。协议规则以人民准则为基础,其中的一部分已经作为现在等级地位的声明。

3、标准对于协议来说,可以让人们创建可以相互操作的网络系统和产品。

4、

a)通过电话线的拨号调制解调器:家庭

b)通过电话线的DSL(Digital Subscriber Line,数字用户线):家庭或小办公室

c)混合光纤同轴电缆:家庭

d)100M交换以太网:企业

e)无线网:家庭或企业

f)3G和4G:广域无线网

5、HFC带宽是由用户共享。下行通道中,所有的包都是由头端这一个单一源发出的。因此,下行通道中没有碰撞。

6、拨号、DSL、调制解调器、光纤到户

7、10Mbps、100Mbps、1Gbps、10Gbps

8、双绞线、光纤

9、拨号调制解调器:最高56Kbps,带宽专用

ADSL:下行最高24Mbps,上行最高2.5Mbps,带宽专用

HFC:下行最高42.8Mbps,上行最高30.7Mbps,带宽共享

FTTH:上行2-10M,下行10-20M,带宽不共享

10、现在最流行的无线网技术有两种:

(1)WiFi。用于无线局域网,无线用户从辐射范围为几十米的基站(例如无线接入点)传输数据包。基站连接无线网络,并为无线用户提供无线网服务。

(2)3G和4G大范围无线网。此系统通过电信服务商提供的基站,由蜂窝电话通过同一个无线设备传输数据。可以提供基站几十千米范围内的无线网络。

11、t0t_0时发送端主机开始传输数据,t1=L/R1t_1=L/R_1时发送端完成传输并且交换机收到完整的数据包(没有传播延时)。因为交换机在t1t_1时已收到完整包,那么t1t_1时交换机开始传输数据包至接收主机。t2=t1+L/R2t_2=t_1+L/R_2时交换机完成输出并且接收主机收到完整包(没有传播延时)。因此,端到端总延时是L/R1+L/R2L/R_1+L/R_2

12、电路交换网络可以在响应时间内保证一定量的端到端带宽。如今大部分分组交换网络(包括因特网)无法保证端到端带宽。FDM需要复杂的模拟硬件来将信号转换为合适的频率。

13、

a)2个用户,每个用户只需要一半的链接带宽;

b)既然每个用户传输时要求1Mpbs带宽,如果两个或者更少的用户同时传输,最多要求2Mbps。既然共享链路的可用带宽是2Mbps,那么传输前没有排队延时。如果有3个用户同时传输,带宽要求是3Mbps,其超过了共享链接可用带宽。这种情况下,连接之前会有排队延时。

d)一个用户传输的概率是0.2。

e)3个用户同时传输的概率是 (33)p3(1p)33=(0.2)3=0.008\binom{3}{3} p^{3} (1-p)^{3-3}=(0.2)^3=0.008 。因为所有用户都传输时队列会增加,队列增加(等于三个用户同时传输时的概率)的时间因素是0.008。

14、如果两个ISP不对等,那么当他们给对方发送流量时他们需要通过一个付费流量ISP提供商(中间商)来发送数据。通过直接对等传输,两个ISP可以减少给其他ISP提供商的费用。多个ISP可以通过网络交换点(IXP)(通常由它自己的交换机单独构建)作为汇合点来直接对等传输。ISP通过对连接至IXP的每一个ISP收取少量费用来盈利,当然利润取决于IXP发送或接收的流量数。

15、谷歌的私有网络连接了它大大小小的所有的数据中心。谷歌数据中心的流量通过它的私有网络而不是公共网络来传输。大多数的数据中心位于或靠近低级的ISP。因此,当谷歌向用户分发数据时,可以跳过高级的ISP。

是什么推动着这些内容提供商创建这些网络?首先,如果内容提供商使用更少的中间的ISP,它可以更容易控制用户体验。其次,通过减少至提供商的网络流量来节省成本。第三,如果ISP向利润率高的内容提供商收取高费用(在网络中立状态不适用的国家或地区),内容提供商可以避免额外成本。

16、延迟组件包括处理延迟、传输延迟、传播延迟、排队延迟。除了排队延迟是变量其他的都是固定的。

17、

a)1000km, 1Mpbs, 100bytes

b)100km, 1Mpbs, 100bytes

18、

a)10 msec

b)d/s

c)无关

d)无关

19、

a) 500kps

b) 64s

c) 100kps;320秒

20、终端系统A将大文件拆分为块。A通过添加文件头信息至每一个块来从文件生成多个数据包。数据包的头信息包含目标(终端系统B)IP地址。数据包交换机通过包中的目标IP地址来决定发送链接。考虑到包目标地址,包选择哪条路走和包选择哪条外链走的方法相似。

21、最大发送速率为500包/s,最大传输速率是350包/s。相对应的流量强度是500/350=1.43>1500/350=1.43>1。每次实验最终都会发生数据丢失;但由于传输的随机性,每一次实验的数据丢失发生的时间都是不同的。

22、五个功能是:错误控制、流控制、片段化和重组、多任务和连接设置。没错,在不同层这些功能可能重复。例如,不止一层提供错误功能。

23、网络协议的自顶向下的五层是:应用层、传输层、网络层、链路层和物理层。详见1.5.1节。

24、应用层报文:应用程序想发送和通过传输层的数据;

传输层段:由传输层生成并且封装有传输层头信息的应用层报文

网络层数据段:封装有网络层头信息的传输层段

链路层帧:封装有链路层头信息的网络层数据段

25、路由器处理网络、链路、物理层(第1到3层)。(实际上现代路由器有时担任防火墙、缓存组件和处理传输层)链路层交换机处理链路层和网络层(第1到2层)。主机处理所有的五层。

26、

a)病毒:需要一些人的交互来传播。比如邮件病毒。

b)蠕虫:不需要用户介入。受感染主机中的蠕虫会扫描IP地址和端口号来查找可感染的进程。

27、创建僵尸网络需要攻击者发现一些应用或系统的薄弱点(比如利用应用中可能存在的缓冲区溢出漏洞)。发现薄弱点后,黑客需要查找可攻击的主机。目标一般是已发现漏洞的一系列系统。僵尸网络中的任何系统都可以通过漏洞自动扫描它的环境和传播。这种僵尸网络的重要属性就是僵尸网络的起点可以远程控制和发送命令至僵尸网络中的所有结点的每一个节点(例如僵尸网络中的所有结点可以被黑客命令发送TCP SYN信息至目标,并将导致目标的TCP SYN溢出攻击)。

28、Trudy可以假装为Bob(反之亦然)并且部分或者完全修改Bob发送给Alice的信息。例如,她可以很容易的修改语句“Alice,我欠你1000美元”为“Alice,我欠你10000美元”。更进一步,Trudy甚至可以丢弃Bob发送给Alice的加密信息(反之亦然)。

问题1

P1、这个问题不止一个答案。很多协议都可以解决这个问题。下面是一个参考答案:

从ATM到服务器的信息

消息名称目的
HELO <userid>让服务器知道ATM机器中有卡片,ATM卡将用户ID传送给服务器
PASSWD <passwd>用户输入将发送给服务器的PIN(密码)
BALANCE用户请求平衡
WITHDRAWL <amount>用户请求取钱
BYE用户操作完成

从服务器至ATM机器的信息(显示)

消息名称目的
PASSWD要求用户输入密码PIN
OK最后一次请求操作 (PASSWD, WITHDRAWL) 正常
ERR最后一次请求操作 (PASSWD, WITHDRAWL) 错误
AMOUNT <amt>回应BALANCE请求
BYE用户操作结束,ATM显示欢迎界面

正确回应:

客户端服务器
HELO (userid)--------------> (检测userid是否有效)
<------------- PASSWD
PASSWD <passwd>--------------> (检测密码)
<------------- OK (密码OK)
BALANCE-------------->
<------------- AMOUNT <amt>
WITHDRAWL <amt>--------------> 检测是否有足够钱来取
<------------- OK
ATM 吐钞
BYE-------------->
<------------- BYE

钱不够的情况下:

客户端服务器
HELO (userid)--------------> (检测userid是否有效)
<------------- PASSWD
PASSWD <password>--------------> (检测password)
<------------- OK (password OK)
BALANCE-------------->
<------------- AMOUNT <amt>
WITHDRAWL <amt>--------------> 检测是否有足够钱来取
<------------- ERR (钱不够)
显示错误信息
不吐钱
BYE-------------->
<------------- BYE

P2、N(L/R)N * (L/R)时,第一个包到达目的地,第二个包存储在最后一个路由器中,第三个包存储在倒数第二个路由器中等等。N(L/R)+L/RN * (L/R)+L/R时,第二个包到达目的地,第三个包存储在最后一个路由器中等等。按照这个逻辑继续,我们可以看到在N(L/R)+(P1)(L/R)=(N+P1)(L/R)N * (L/R)+(P-1) * (L/R)=(N+P-1) * (L/R)时所有数据包到达目的地。

P3、

a)电路交换网,因为应用将以稳定速率,持续长时间运行,因此可以为其保留带宽。

b)不需要,传输速率总和小于链路容量。

P4、

a)在左上角的开关和右上角的开关之间,我们可以有4个连接。类似地,我们可以在其他3对相邻开关之间各有四个连接。因此,这个网络可以支持多达16个连接。

比如:

A 到 B :4 条

B 到 C :4 条

C 到 D :4 条

D 到 A :4 条

这 16 条可以同时连接。

b)我们可以通过右上角的开关通过4个连接,在左下角有4个通过开关的连接,总共有8个连接。

A 到 B :4 条

B 到 C :4 条

最多 8 条。

c)可以。对于A和C之间的连接,我们路由两个连接通过B,两个连接通过D。对于B和D之间的连接,我们路由两个连接通过A,两个连接通过C。这样,最多有4个连接通过任何链接。

A 到 B :2 条

B 到 A :2 条

A 到 D :2 条

B 到 C :2 条

P5、收费亭相距75公里,车辆以每小时100公里的速度传播。收费亭每12秒为一辆汽车提供服务。

a)有十辆车。第一个收费站服务这10辆车需要120秒钟,也就是2分钟。每辆汽车在到达第二个收费站之前都有45分钟的传播延迟(行驶75公里)。因此,在47分钟后的第二个收费站前,所有的汽车都排好了队。整个过程重复在第二个和第三个收费亭之间旅行。第三个收费站还需要2分钟才能为10辆车提供服务。因此,总的延迟时间是96分钟。

收费站将整个车队推向公路的时间为 d1=2mind_1 = 2min

两收费站之间距离 75 km,从一个收费站到另一个的时间 d2=0.75hd_2 = 0.75h

总时间 d=3d1+2d2=96mind = 3 d_1 + 2d_2 = 96 min

b)收费亭之间的延误为8 * 12秒加上45分钟,即46分钟36秒。总延迟是这一数额的两倍,加上8 * 12秒,即94分48秒。

d1=8/5/min=1.6mind^{'}_1 = 8辆/5辆/min = 1.6min

d=3d1+2d2=94.8mind' = 3 d^{'}_1+2d_2=94.8min

P6、

a) dprop=mssd_{prop} = \frac{m}{s} s

b) dtrans=LRsd_{trans} = \frac{L}{R} s

c) de2e=dprop+dtrans=m/s+L/Rd_{e2e}=d_{prop}+d_{trans}=m/s+L/R

d) 刚刚离开A

e) 第一位在链路上并且还没有到达B

f) 已经到达B

g) dprop=dtransd_{prop}=d_{trans}

m/s=L/Rm/s = L/R

m=Ls/R=120b(2.5108)m/s/56kbps=(5.36105)mm = Ls/R =120 b * (2.5 * 10^8) m/s / 56kbps =(5.36 * 10^5)m

P7、考虑数据包中的第一位。在传输此位之前,必须生成数据包。

主机 A 产生 56 字节的分组需要:56 * 8b/ 64kbps= 7ms

传输时延:56 * 8b/2Mbps = 0.224ms

总时间:7ms + 10ms + 0.224ms = 17.224ms

P8、

a) 3Mbps/150kbps = 20

b) p = 0.1

c) (120n)pn(1p)120n\binom{120}{n}p^n(1-p)^{120-n}

d) 1n=020(120n)pn(1p)120n1-\sum_{n=0}^{20}\binom{120}{n}p^n(1-p)^{120-n}

根据中心极限定理:令XjX_j为独立随机变量P(Xj=1)=pP(X_j=1)=p

P(21)=1P(j=1120Xj21)P(21或更多用户)=1−P(\sum_{j=1}^{120}X_j≤21)

P(j=1120Xj21)=P(j=1120Xj121200.10.991200.10.9)P(Z9/3.2869)=P(Z2.74)=0.997P(\sum_{j=1}^{120}X_j≤21)=P\left( \frac{\sum_{j=1}^{120}X_j-12}{\sqrt{120\cdot 0.1\cdot0.9}}\leq \frac{9}{\sqrt{120\cdot 0.1\cdot0.9}} \right )≈P(Z≤9/3.2869) \\ =P(Z≤2.74)=0.997

因此 P(21)0.003P(21或更多用户)≈0.003

P9、

a)N=1Gbps×100kbps=104N=1Gbps×100kbps=10^4

b)n=N+1M(Mn)pn(1p)Mn\sum_{n=N+1}^{M}\binom{M}{n}p^n(1-p)^{M-n}

P10、第一终端系统要求 L/R1L/R_1 将分组发送到第一链路;分组在 d1/s1d_1/s_1 中的第一链路上传播;分组交换机增加 dprocd_{proc} 的处理延迟;在接收到整个分组后,连接第一和第二链路的分组交换机要求 L/R2L/R_2 将该分组发送到第二链路;该分组通过 d2/s2d_2/s_2 中的第二链路传播。同样,我们可以找到第二个交换机和第三个链路:L/R3L/R_3dprocd_{proc}d3/s3d_3/s_3所造成的延迟。加上这五个延迟

Dtrans=L/R1+L/R2+L/R3D_{trans}=L/R_1+L/R_2+L/R_3

Dprop=d1/s1+d2/s2+d3/s3D_{prop}=d_1/s_1+d_2/s_2+d_3/s_3

Dprop=2dprocD_{prop}=2 ∗ d_{proc}

D=Dtrans+Dprop+DprocD=D_{trans}+D_{prop}+D_{proc}

D=6+6+6+20+16+4+3+3=64msD=6+6+6+20+16+4+3+3=64ms

P11、由于比特是立即发送的,所以分组交换机不引入任何延迟;特别是,它不引入传输延迟。因此,

dend2end=L/R+d1/s1+d2/s2+d3/s3d_{end2end}=L/R+d_1/s_1+d_2/s_2+d_3/s_3

对于问题10中的值,我们得到D=Dprop+L/R=20+16+4+6=46msD=D_{prop}+L/R=20+16+4+6=46ms

P12、到达的数据包必须首先等待链路发送4.5×1500字节=6750字节或54000比特。

由于这些比特是以2Mbps发送的,所以队列延迟为27毫秒。一般情况下,排队延迟为(nL+(Lx))/R(nL+(L-x))/R

有一个完整分组的排队时延为1500×8b×2Mbps=0.6ms1500×8b×2Mbps=0.6ms

4.5个分组的总排队时延为 4.50.6ms=2.7ms4.5 ∗ 0.6ms=2.7ms

P13、

a)第一个分组的排队时延为0, 第二个 L/RL/R,第三个 2L/R2L/R,第N个(N1)L/R(N-1)L/R

因此平均排队时延为(L/R+2L/R++(N1)L/R)/N=(N1)L/2R(L/R + 2L/R + … + (N-1)L/R)/N = (N-1)L/2R

b)当下一批N个分组到达时,上一批已经传完,因此平均排队时延为 (N1)L/2R(N-1)L/2R

P14、

a)传输延迟为L/RL/R 。总延迟是 ILR(1I)+LR=L/R1I\frac{IL}{R(1-I)}+\frac{L}{R}=\frac{L/R}{1-I}

b)以L/RL/R为函数:

x=L/RL/R(1I)=x/(1ax)x = L/R: L/R(1-I) = x/(1-ax)

函数经过原点,在x=1/ax = 1/a处趋于无穷

P15、 μ=R/Lμ = R/L 所以 L/R(1I)=1/μaL / R(1-I) = 1 /μ-a

P16、

N = 10 + 1 = 11个分组

d=10ms+1/100s=0.02sd = 10ms + 1/100s = 0.02s

a=N/d=11/0.02=550/sa = N/d = 11/0.02 = 550分组/s

P17、

a)有Q节点(源主机和Q-1路由器)。设dprocqd_{proc}^{q}表示q节点处的处理延迟。设RqR^q为第q个链路的传输速率,则dprocq=L/Rqd_{proc}^{q}=L/R^q

dprocqd_{proc}^{q}是穿越q个链路的传播延迟。然后

dend2end=q=1Q[dprocq+dtransq+dpropq]d_{end2end}=\sum_{q=1}^{Q}\begin{bmatrix}d_{proc}^{q}+d_{trans}^{q}+d_{prop}^{q}\end{bmatrix}

b)设dqueueqd_{queue}^{q}是结点q的排队延迟。那么

dend2end=q=1Q[dprocq+dtransq+dpropq+dqueueq]d_{end2end}=\sum_{q=1}^{Q}\begin{bmatrix}d_{proc}^{q}+d_{trans}^{q}+d_{prop}^{q}+d_{queue}^{q}\end{bmatrix}

P18、在Linux上,您可以使用以下命令

1
traceroute www.targethost.com 

在Windows命令提示符中,可以使用

1
tracert www.targethost.com 

在这两种情况下,您将得到三个延迟测量。对于这三个测量,你可以计算平均和标准差。在一天中的不同时间重复实验,并对任何变化发表评论。

下面是一个示例解决方案:

图1

图2

圣地亚哥超级计算机中心与www.poly.edu之间的追踪显示:

a)在三个小时中,往返时间的平均(平均)分别为71.18毫秒、71.38毫秒和71.55毫秒。标准偏差分别为0.075、0.21ms、0.05ms。

b)在本例中,跟踪器在三个小时中的每一个路径上都有12个路由器。不,在任何一个小时内路径都没有改变。

c)跟踪数据包从源到目的地通过四个ISP网络。是的,在这个实验中,最大的延迟发生在相邻ISP之间的窥视接口上。

图3

图4

追踪网址:www.stella-Net.net(法国)至www.poly.edu(美国)。

d)该三小时的平均往返延误时间分别为87.09毫秒、86.35毫秒及86.48毫秒。标准偏差分别为0.53 ms、0.18 ms、0.23 ms。在本例中,三个小时中的每一个路径上都有11个路由器。
不,在任何一个小时内路径都没有改变。Traceroute数据包将三个ISP网络从源传送到目的地。
是的,在这个实验中,最大的延迟发生在相邻ISP之间的窥视接口上。

P19、范例:

图5

从法国的两个不同城市到美国的纽约市

a)从法国的两个不同城市到美国的同一目的地东道国,有七个联系是共同的,包括跨大西洋连接。

图6

图7

b)在法国的一个城市和德国的另一个城市到美国同一个东道国的示踪剂的例子中,三个联系是共同的,包括跨大西洋的联系。

图8

从美国同一地主地到中国两个不同城市的追踪,

c)五个链接在这两个追踪器中是常见的。这两种示踪剂在到达中国之前有分歧

P20、

min{Rs,Rc,RM}min{\{R_s, R_c, \frac{R}{M}\}}

P21、仅使用一条,最大吞吐量由:

max{min{R11,R21,...,RN1},min{R12,R22,...,RN2},...,min{R1M,R2M,...RMM}}max\{min\{R_{1}^{1},R_2^1,...,R_N^1\},min\{R_1^2,R_2^2,...,R_N^2\},...,min\{R_1^M,R_2^M,...R_M^M\}\}

使用M条:k=1Mmin{R1k,R2k,...,RNk}\sum_{k=1}^{M}min\{R_1^k,R_2^k,...,R_N^k\}

P22、不丢包概率为1p1-p,N个路由器,因此总的不丢包概率ps=(1p)Np_s=(1−p)^N

在客户端成功接收数据包之前需要执行的传输数是具有成功概率psp_s的几何随机变量。因此,所需传输的平均次数为:1/ps1/ps。然后,所需重传的平均次数为:1/ps11/p_s-1

P23、

a)L/RsL/R_s

b)可能,因为第二个分组(用P2表示)可能在第一个分组(P1)被推出之前到达;

P1被完全推出的时间 t1=L/Rs+L/Rc+dpropt_1 = L/R_s + L/R_c + d_{prop}

P2到达路由器的时间 t2=2L/Rs+dprop+Tt_2 = 2L/R_s + d_{prop} + T

要求t2>t1t2 > t1:即 T>L/RcL/RsT > L/R_c - L/R_s

因此T至少是L/RcL/RsL/R_c - L/R_s

P24、40兆字节=40 * 1012 * 8位。因此,如果使用专用链接,则需要40 * 1012 * 8/(100 * 106)=3200000秒=37天。但是有了 联邦快递(呵呵)的通宵递送,你可以保证数据在一天内到达,而且它的成本应该低于100美元。

P25、

a)tprop=20000km/2.5108m/s=0.08st_{prop} = 20000km / 2.5*10^8m/s = 0.08s

Rtprop=1.6105bitsR * t_{prop} = 1.6 * 10^5 bits

b)1.6105bits1.6 * 10^5bits

c)链路上的最大比特数量

d)20000km/1.6105=125m20000km / 1.6 * 10^5 = 125m这比足球场长(正规足球场场地:长105米、宽68米)

e)s/Rs/R

P26、

s/R=20000kms/R = 20000km

R=12.5MbpsR = 12.5Mbps

P27、

a) Rdprop=8107bR * d_{prop} = 8 * 10^7 b

b) 8107b8 * 10^7b是不对的,因为文件为8105b8 * 10^5b

c) s/R=0.25ms/R = 0.25m

P28、

a)ttrans+tprop=0.48st_{trans} + t_{prop} = 0.48s

b)20(ttrans+tprop)=20(0.02+0.08)s=2s20 * (t_{trans}+t_{prop})=20 * (0.02+0.08)s=2s

c)分解一个文件需要更长的时间来传输,因为每个数据包及其相应的确认包都会添加它们自己的传播延迟。

P29、

a) dprop=36000km/(2.4108)=0.15sd_{prop} = 36000km / (2.4 * 10^8) = 0.15s

b) Rdprop=10Mbps0.15s=1.5106bitsR * d_{prop}=10Mbps * 0.15s=1.5 * 10^6bits

c) 60s10Mbps=6108bits60s * 10Mbps = 6 * 10^8 bits

P30、假设乘客和他/她的行李对应到达协议栈顶部的数据单元。当旅客办理登机手续时,他/她的行李会被检查,并在行李和车票上贴上标签。这是在行李层中添加的附加信息,如果图1.20允许行李层在发送方实现服务或分离乘客和行李,然后将它们重新统一(希望如此!)在目的地那边。当乘客经过安检时,通常会在车票上加盖额外的印章,表示乘客通过了安全检查。这些信息用于确保(例如,通过以后对安全信息的检查)人员的安全转移。

P31、

a)8106/2Mbps=4s8 * 10^6 / 2Mbps = 4s

3 * 4s= 12s

b)

1104 b/2Mbps=5103s1 * 10^4\ b / 2Mbps = 5 * 10^{-3}s

25103s=102s2 * 5 * 10^{-3}s = 10^{-2}s

c)(800+31)0.5102=4.01s(800 + 3 - 1) * 0.5 * 10^{-2} = 4.01s比 (a) 快非常多

d)便于检测错误并重传;不分段的大包容易使路由器缓存不足导致丢包;

e)分组需要排序;需加上首部信息;

P32、是的,Applet中的延迟对应于问题31中的延迟。对于分组交换和消息交换,传播延迟都会影响整个端到端延迟。

P33、有F/SF/S包。每个包S=80位。在第一路由器接收最后一个数据包的时间是S+80R×FS\frac{S+80}{R}\times \frac{F}{S}秒。此时,第一个F/S2F/S-2分组位于目的地,F/S1F/S-1分组位于第二路由器。最后一个数据包随后必须由第一个路由器和第二个路由器发送,每一个传输都需要S+80R\frac{S+80}{R}秒。因此,发送整个文件的延迟为S+80R×(FS+2)\frac{S+80}{R}\times (\frac{F}{S}+2),以计算导致最小延迟的S值,延迟为:ddxdelay=0S=40F\frac{\mathrm{d} }{\mathrm{d} x}delay=0 \Rightarrow S=\sqrt{40F}

P34、电路交换电话网络和因特网在“网关”连接在一起。当Skype用户(连接到Internet)呼叫普通电话时,通过电路交换网在网关和电话用户之间建立电路。Skype用户的语音通过互联网以数据包的形式发送到网关。在网关处,对语音信号进行重构,然后通过电路发送。另一方面,语音信号通过电路交换网络发送到网关。网关对语音信号进行分组,并将语音分组发送给Skype用户。

第二章

复习题2

R1、网址:http;
文件传输:ftp;
远程登录:Telnet;
电子邮件:smtp;
BitTorrent文件共享:BitTorrent协议

R2、网络体系结构是指将通信过程组织成多个层次(例如,五层互联网体系结构)。另一方面,应用程序体系结构是由应用程序开发人员设计的,它决定了应用程序的广泛结构(例如,客户机-服务器或P2P)。

R3、发起通信的进程是客户端;等待联系的进程是服务器。

R4、没有。在P2P文件共享应用程序中,接收文件的对等方通常是客户端,发送文件的对等方通常是服务器。

R5、目标主机的IP地址和目标进程中套接字的端口号。

R6、你会用UDP。使用UDP,事务可以在一次往返时间(RTT)内完成-客户端将事务请求发送到UDP套接字,服务器将应答发送回客户端的UDP套接字。对于TCP,至少需要两个RTT-一个用于设置TCP连接,另一个用于客户机发送请求,用于服务器发送回复。

R7、例如,使用Google文档进行远程文字处理就是一个这样的例子。但是,由于Google文档在Internet上运行(使用TCP),因此没有提供定时保证。

R8、

a)可靠的数据传输:TCP在客户端和服务器之间提供可靠的字节流,但UDP没有。

b)保证一定的吞吐量值,也不保证数据将在规定的时间内交付:都不

c)保证数据将在规定的时间内交付:都不

d)保密(通过加密):都不

R9、SSL在应用层运行。SSL套接字从应用层接收未加密的数据,对其进行加密,然后将其传递给TCP套接字。如果应用程序开发人员希望使用SSL增强TCP,则必须在应用程序中包含SSL代码。

R10、如果两个通信实体在相互发送数据之前先交换控制包,则协议使用握手。SMTP在应用层使用握手,而HTTP不使用握手。

R11、与这些协议相关联的应用程序要求以正确的顺序接收所有应用程序数据,并且不存在间隔。TCP提供此服务,而UDP不提供此服务。

R12、当用户第一次访问站点时,服务器将创建一个唯一的标识号,在其后端数据库中创建一个条目,并将此标识号作为cookie编号返回。此cookie编号存储在用户的主机上,并由浏览器管理。在每次后续访问(和购买)期间,浏览器将cookie编号发送回站点。因此,站点知道这个用户(更准确地说,是这个浏览器)访问该站点的时间。

R13、网络缓存可以让同一局域网内用户主机所连接的所需内容与用户“更接近”。网络缓存可以减少所有人的延迟对象,甚至没有缓存的对象,因为缓存减少了链接上的流量。

R14、默认情况下,Telnet在Windows 7中不可用。若要使其可用,请转到“控制面板”、“程序和功能”、“打开或关闭Windows功能”、“检查Telnet客户端”。要启动Telnet,在Windows命令提示符中,发出以下命令

1
>telnet webserverver 80

其中“webserver”是一些webserver。发出命令后,您已经在客户端telnet程序和Web服务器之间建立了TCP连接。然后输入HTTPGET消息。举例如下:

图9

由于此Web服务器中的index.html页面自2007年5月18日(星期五)09:23:34格林尼治时间(GMT)以来未被修改,上述命令于2007年5月19日在沙特发布,服务器返回“304未修改”。注意,前4行是用户输入的GET消息行和头行,接下来的4行(从HTTP/1.1 304开始,未修改)是来自Web服务器的响应。

R15、几个流行的消息应用程序列表:WhatsApp、Facebook Messenger、微信和Snapchat。这些应用程序使用与SMS不同的协议。

R16、该消息首先通过HTTP从Alice的主机发送到她的邮件服务器。然后,Alice的邮件服务器通过SMTP向Bob的邮件服务器发送消息。然后Bob通过POP3将消息从他的邮件服务器传输到他的主机。

R17、

ActionEvent
Received:from 65.54.246.203 (EHLO bay0-omc3-s3.bay0.hotmail.com) (65.54.246.203) by mta419.mail.mud.yahoo.com with SMTP; Sat, 19 May 2007 16:53:51 -0700
Received:from hotmail.com ([65.55.135.106]) by bay0-omc3-s3.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.2668); Sat, 19 May 2007 16:52:42 - 0700
Received:from mail pickup service by hotmail.com with Microsoft SMTPSVC; Sat, 19 May 2007 16:52:41 -0700
Message-ID:<BAY130-F26D9E35BF59E0D18A819AFB9310@phx.gbl>
Received:from 65.55.135.123 by by130fd.bay130.hotmail.msn.com with HTTP; Sat, 19 May 2007 23:52:36 GMT
From:"prithula dhungel" <prithuladhungel@hotmail.com>
To:prithula@yahoo.com
Bcc:-
Subject:Test mail
Date:Sat, 19 May 2007 23:52:36 +0000
Mime-Version:1.0
Content-Type:Text/html; format=flowed
Return-Path:prithuladhungel@hotmail.com

表:接收到的邮件标题示例

Received:此标头字段指示SMTP服务器发送和接收邮件的顺序,包括相应的时间戳。

在本例中,有4个“接收:”标题行。这意味着邮件在发送到收件人的邮箱之前通过5个不同的SMTP服务器传递。最后(第四)“接收:”标头指示从发件人的SMTP服务器到服务器链中的第二个SMTP服务器的邮件消息流。发送方的SMTP服务器位于地址65.55.135.123,链中的第二个SMTP服务器为by130fd.bay130.hotmail.msn.com

第三个“接收:”标头表示从链中的第二个SMTP服务器到第三个服务器的邮件消息流,依此类推。

最后,第一个“接收:”标头指示从第四个SMTP服务器到链中的最后一个SMTP服务器(即接收方的邮件服务器)的邮件消息流。

Message-id:邮件编号为BAY 130-F26D9E35BF59E0D18A819AFB9310@phx.gbl(由bay0-omc3-s3.bay0.hotmail.com提供)。Message-id是邮件系统首次创建消息时分配的唯一字符串。

From:这表示邮件发件人的电子邮件地址。在给定的示例中,发件人为prithuladhungel@hotmail.com

To:该字段指示邮件接收方的电子邮件地址。在本例中,接收方为prithula@yahoo.com

主题:这将给出邮件的主题(如果发件人指定的话)。在此示例中,发件人指定的主题为“测试邮件”

日期:发件人发送邮件的日期和时间。在这个例子中,发件人于2007年5月19日(格林尼治时间23:52:36)发送了邮件。

MIME版本:用于邮件的MIME版本。在这个例子中,它是1.0。

内容类型:邮件正文中内容的类型。在这个例子中,它是“text/html”。

返回路径:如果该邮件的接收方希望回复发件人,则指定发送邮件的电子邮件地址。发件人的邮件服务器也使用它来返回邮件守护进程错误消息的不可交付邮件消息。在这个例子中,返回路径是prithuladhungel@hotmail.com

R18、通过下载和删除,用户从POP服务器检索其消息后,消息将被删除。这给游牧用户带来了一个问题,他们可能希望从许多不同的机器(办公PC、家庭PC等)访问消息。在下载和保存配置中,在用户检索消息后不会删除消息。这也可能不方便,因为每次用户从新机器检索存储的消息时,所有未删除的消息都将传输到新机器(包括非常旧的消息)。

R19、是的,组织的邮件服务器和Web服务器可以具有与主机名相同的别名。MX记录用于将邮件服务器的主机名映射到其IP地址。

R20、您应该能够使用.edu电子邮件地址查看发送方的IP地址。但是,如果用户使用Gmail帐户,您将无法看到发件人的IP地址。

R21、Bob也没有必要为Alice提供块。Alice必须是Bob的前4位邻居,Bob才能向她发送块;即使Alice在30秒的间隔内向Bob提供块,也可能不会发生这种情况。

R22、回想一下,在BitTorrent中,一个对等点选择一个随机的对等点,并乐观地在短时间内解除该对等点的阻塞。因此,Alice最终会被她的一个邻居解除阻塞,在此期间,她会从邻居那里收到数据块。

R23、P2P文件共享系统中的覆盖网络由参与文件共享系统的节点和节点之间的逻辑链接组成。如果A和B之间有一个半永久的TCP连接,则从节点A到节点B有一个逻辑链路(图论术语中的“边缘”)。覆盖网络不包括路由器。

R24、一种服务器布局理念称为Enter Deep,它通过在全世界的ISP中部署服务器集群,深入到Internet服务提供商的接入网中。目标是减少延迟,提高终端用户和CDN服务器之间的吞吐量。另一种理念是将ISP带回家,在较小数量的站点上构建大型CDN服务器集群,并通常将这些服务器集群放置在IXP(Internet Exchange Point)中。这带来了居家设计典型的结果是较低的维护和管理成本,与进入深度的设计理念。

R25、除了与网络相关的因素之外,还有一些重要的因素需要考虑,例如负载平衡(客户端不应指向过载集群)、日效应、网络中DNS服务器之间的变化、很少访问视频的可用性有限以及需要缓解流行视频内容可能产生的热点。

参考论文(我猜你不会看,就删了

另一个需要考虑的因素是ISP交付成本-可以选择集群,以便使用特定的ISP来承载CDN到客户端的通信,同时考虑到ISP和集群运营商之间的契约关系中的不同成本结构。

R26、对于UDP服务器,没有欢迎套接字,来自不同客户端的所有数据都通过这个套接字进入服务器。对于TCP服务器,有一个欢迎套接字,每次客户端启动到服务器的连接时,都会创建一个新的套接字。因此,为了支持n个同时连接,服务器需要n+1个套接字。

R27、对于TCP应用程序,一旦客户端被执行,它就会尝试启动与服务器的TCP连接。如果TCP服务器没有运行,则客户端将无法建立连接。对于UDP应用程序,客户端在执行时不会立即启动连接(或尝试与UDP服务器通信)。

Back to Index

问题2

P1、F T F F F

P2、短消息服务(SMS)是一种允许移动电话之间通过蜂窝网络发送和接收短信的技术。一个SMS消息可以包含140个字节的数据,它支持国际语言。消息的最大大小可以是160个7位字符、140个8位字符或70个16位字符。SMS通过SS#7协议的移动应用部分(MAP)实现,短消息协议由3 GPP TS 23.0403 GPP TS 23.041定义。此外,MMS(多媒体消息传递服务)扩展了原始文本消息的功能,并支持发送照片、更长的文本消息和其他内容。

iMessage是苹果公司开发的即时通讯服务。iMessage支持通过蜂窝数据网络或WiFi发送到IOS设备和Mac的文本、照片、音频或视频。苹果的iMessage基于专有的二进制协议APN(Apple Push Notification Service)。
WhatsApp Messenger是一种即时通讯服务,支持iOS、Android、手机和黑莓等多种移动平台。WhatsApp用户可以通过蜂窝数据网络或WiFi相互发送无限的图像、文本、音频或视频。WhatsApp使用XMPP协议(可扩展消息传递和存在协议)。

iMessage和WhatsApp与SMS不同,因为它们使用数据计划发送消息,并且在TCP/IP网络上工作,而SMS使用我们从无线运营商购买的短信计划。此外,iMessage和WhatsApp支持发送照片、视频、文件等,而原始短信只能发送短信。最后,iMessage和WhatsApp可以通过WiFi工作,但SMS不能。

P3、应用层协议:DNS和HTTP

传输层协议:UDP用于DNS;TCP用于HTTP

P4、

a)文档请求是http://gaia.cs.umass.edu/cs453/index.html。host:字段表示服务器的名称,/cs453/index.html表示文件名。

b)浏览器正在运行HTTP1.1版本,就像第一对之前所指出的那样。

c)浏览器正在请求持久连接,如连接所示:保持-活动。

d)这是刁钻的问题。此信息不包含在任何地方的HTTP消息中。因此,仅看HTTP消息的交换就无法区分这一点。您需要从IP数据报(承载承载HTTPGET请求的TCP段)中获得信息来回答这个问题。

e)Mozilla/5.0。服务器需要浏览器类型信息将同一对象的不同版本发送到不同类型的浏览器。

P5、

a)状态代码200和短语ok表示服务器能够找到文档成功。答复于2008年3月7日星期二提供格林威治标准时间12:39:45。

b)上一次修改index.html文档是在2005年12月10日星期六18:27:46 格林尼治时间。

c)返回的文档中有3874个字节。

d)返回文件的前五个字节是:<!doc。服务器同意持久连接,如connection:Keep Alive字段所示。

P6、

a)在RFC 2616的第8节中讨论了持久连接(这一点的真正目的问题是让你检索并阅读一份RFC)。RFC第8.1.2和8.1.2.1节表示客户机或服务器可以向另一个表明它是将关闭永久连接。它通过包含连接令牌来实现“关闭”在http请求/回复的连接头字段中。

b)http不提供任何加密服务。

c)(来自RFC 2616)“使用持久连接的客户端应该限制同时维护到给定服务器的连接。单用户客户端与任何服务器或代理服务器的连接不应超过2个。”

d)是。(来自RFC 2616)在服务器决定关闭“空闲”连接的同时,客户端可能已经开始发送新请求。从服务器的角度来看,连接是在空闲时关闭的,但从客户端的角度来看,请求正在进行中。

P7、获取IP地址的总时间为RTT1+RTT2+...+RTTnRTT_1+RTT_2+...+RTT_n

一旦知道IP地址,RTT0RTT_0就会经过以建立TCP连接,而另一个RTT0RTT_0则会经过以请求和接收小对象。总响应时间为2RTT0+RTT1+RTT2+...+RTTn2RTT_0+RTT_1+RTT_2+...+RTT_n

P8、

a)RTT1+RTT2+...+RTTn+2RTT0+82RTT0=18RTT0+RTT1+...+RTTnRTT_1+RTT_2+...+RTT_n+2RTT_0+8 \cdot 2RTT_0=18RTT_0+RTT_1+...+RTT_n

b)RTT1+RTT2+...+RTTn+2RTT0+22RTT0=6RTT0+RTT1+...+RTTnRTT_1+RTT_2+...+RTT_n+2RTT_0+2 \cdot 2RTT_0=6RTT_0+RTT_1+...+RTT_n

c)与流水线的持久连接。这是HTTP的默认模式。RTT1+RTT2+...+RTTn+2RTT0+RTT0=3RTT0+RTT1+...+RTTnRTT_1+RTT_2+...+RTT_n+2RTT_0+RTT_0=3RTT_0+RTT_1+...+RTT_n

持续连接,没有流水线,没有并行连接。RTT1+RTT2+...+RTTn+2RTT0+8RTT0=10RTT0+RTT1+...+RTTnRTT_1+RTT_2+...+RTT_n+2RTT_0+8RTT_0=10RTT_0+RTT_1+...+RTT_n

P9、

a)在链路或速率R上传输大小为L的对象的时间是L/RL/R,平均时间是对象的平均大小除以RR

δ=(850000bits)/(15000000bits/sec)=0.0567sec\delta= (850000 bits)/(15000000 bits/sec) = 0.0567 sec

链路上的流量强度由βδ=(16/)(0.567/)=0.907\beta \delta=(16个请求/秒)(0.567秒/请求)=0.907表示。因此,平均访问延迟为(0.567)/(10.907)0.6(0.567秒)/(1-0.907)≈0.6秒。因此,总的平均响应时间为0.6秒+3秒=3.6秒。

b)由于60%60\%的请求在机构网络中得到满足,接入链路上的业务强度降低了60%60\%。因此,平均访问延迟为(0.0567)/[1(0.4)(0.907)]=0.089(0.0567秒)/[1-(0.4)(0.907)]=0.089秒。如果请求由缓存满足(发生概率为0.6),则响应时间大约为零;如果缓存丢失,平均响应时间为0.089秒+3秒=3.089秒(40%的时间内都有发生)。因此,平均响应时间为(0.6)(0秒)(0.4)(3.089秒)=1.24秒。因此,平均响应时间从3.6秒缩短到1.24秒。

P10、请注意,每个下载的对象都可以完全放入一个数据包中。让TpT_p表示客户端和服务器之间的单向传播延迟。

首先考虑使用非持久连接的并行下载。并行下载将允许10个连接共享150bits/sec带宽,每个带宽仅15bits/se。因此,接收所有对象所需的总时间由下式给出:

(200/150+Tp+200/150+Tp+200/150+Tp+100000/150+Tp)(200/(150/10)+Tp+200/(150/10)+Tp+200/(150/10)+Tp+100000/(150/10)+Tp)=73777+8Tp()\begin{aligned} (200/150+T_p+200/150+T_p+200/150+T_p+100000/150+T_p) \\ (200/(150/10)+T_p+200/(150/10)+T_p+200/(150/10)+T_p+100000/(150/10)+T_p) \\ =73777+8 * T_p(秒) \end{aligned}

现在,考虑持久的HTTP连接。所需的总时间由下式给出:

(200/150+Tp+200/150+Tp+200/150+Tp+100000/150+Tp)+10(200/150+Tp+100000/150+Tp)=7351+24Tp()\begin{aligned} (200/150+T_p+200/150+T_p+200/150+T_p+100000/150+T_p) \\ +10 * (200/150+T_p+100000/150+T_p) \\ =7351+24 * T_p (秒) \end{aligned}

假设光速是300106m/sec300 * 10^6 m/sec,然后Tp=10/(300106)=0.03T_p=10/(300 * 10^6)=0.03微秒。TpT_p因此与传输延迟相比是可忽略的。

因此,我们看到,持久性HTTP的速度并不显著比(小于1%)并行下载的非持久性案例快。

P11、

a)是的,因为Bob有更多的连接,他可以获得更大的链路带宽份额。

b)是的,Bob仍然需要执行并行下载;否则,他将获得比其他四个用户更少的带宽。

P12、Server.py

1
2
3
4
5
6
7
8
9
10
from socket import * 
serverPort=12000
serverSocket=socket(AF_INET,SOCK_STREAM)
serverSocket.bind(('',serverPort))
serverSocket.listen(1)
connectionSocket, addr = serverSocket.accept()
while 1:
sentence = connectionSocket.recv(1024)
print 'From Server:', sentence, '\n'
serverSocket.close()

P13、SMTP中的MAIL FROM:的邮件是从SMTP客户端发送的标识发件人的邮件将邮件消息发送到SMTP服务器。

发件人:在邮件消息本身不是SMTP邮件,而不是邮件正文中的一行。

P14、SMTP使用仅包含一行来标记邮件正文的结束。http使用“内容长度标题字段”来表示消息正文的长度。

不,HTTP不能使用SMTP使用的方法,因为HTTP消息可以是二进制数据,而在SMTP中,消息主体必须是7位的ASCII格式。

P15、MTA代表邮件传输代理。主机将消息发送给MTA。然后,该消息遵循一系列MTA以到达接收者的邮件阅读器。我们看到这个垃圾邮件遵循一个MTA链。诚实的MTA应该报告它收到消息的位置。请注意,在此消息中,“asusus-4b96([58.88.21.177])不报告它收到电子邮件的位置。由于我们假定只有发端人是不诚实的,所以“asusus-4b96([58.88.21.177])必须是发起人。

P16、uidl缩写“唯一ID列表”。当POP3客户端发出uidl命令时,服务器用唯一的消息ID来响应于在该服务器中存在的所有消息的用户的邮箱。此命令对“下载并保持”是有用的。通过维护文件该列表列出了在较早的会话期间检索到的消息,客户端可以使用Urel用于确定服务器上的哪些消息已被看到的命令。

P17、

a)

1
2
3
4
5
6
7
8
C: dele 1
C: retr 2
S: (blah blah …
S: ………..blah)
S: .
C: dele 2
C: quit
S: +OK POP3 server signing off

b)

1
2
3
4
5
6
C: retr 2
S: blah blah …
S: ………..blah
S:
C: quit
S: +OK POP3 server signing off

c)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
C: list
S: 1 498
S: 2 912
S:
C: retr 1
S: blah …..
S: ….blah
S:
C: retr 2
S: blah blah …
S: ………..blah
S:
C: quit
S: +OK POP3 server signing off

P18、

a)对于给定的域名输入(如ccn.com)、IP地址或网络管理员名称,whois数据库可用于定位相应的注册服务器、whois服务器、DNS服务器等。

b)NS4.YAHOO.COM,网址:www.Registry er.comNS1.MSFT.NET,网址:ww.Registry er.com

c)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Local Domain: www.mindspring.com
Web servers : www.mindspring.com
207.69.189.21, 207.69.189.22,
207.69.189.23, 207.69.189.24,
207.69.189.25, 207.69.189.26,
207.69.189.27, 207.69.189.28
Mail Servers : mx1.mindspring.com (207.69.189.217)
mx2.mindspring.com (207.69.189.218)
mx3.mindspring.com (207.69.189.219)
mx4.mindspring.com (207.69.189.220)
Name Servers: itchy.earthlink.net (207.69.188.196)
scratchy.earthlink.net (207.69.188.197)


www.yahoo.com
Web Servers: www.yahoo.com (216.109.112.135, 66.94.234.13)
Mail Servers: a.mx.mail.yahoo.com (209.191.118.103)
b.mx.mail.yahoo.com (66.196.97.250)
c.mx.mail.yahoo.com (68.142.237.182, 216.39.53.3)
d.mx.mail.yahoo.com (216.39.53.2)
e.mx.mail.yahoo.com (216.39.53.1)
f.mx.mail.yahoo.com (209.191.88.247, 68.142.202.247)
g.mx.mail.yahoo.com (209.191.88.239, 206.190.53.191)
Name Servers: ns1.yahoo.com (66.218.71.63)
ns2.yahoo.com (68.142.255.16)
ns3.yahoo.com (217.12.4.104)
ns4.yahoo.com (68.142.196.63)
ns5.yahoo.com (216.109.116.17)
ns8.yahoo.com (202.165.104.22)
ns9.yahoo.com (202.160.176.146)


www.hotmail.com
Web Servers:www.hotmail.com (64.4.33.7, 64.4.32.7)
Mail Servers: mx1.hotmail.com (65.54.245.8, 65.54.244.8, 65.54.244.136)
mx2.hotmail.com (65.54.244.40, 65.54.244.168, 65.54.245.40)
mx3.hotmail.com (65.54.244.72, 65.54.244.200, 65.54.245.72)
mx4.hotmail.com (65.54.244.232, 65.54.245.104, 65.54.244.104)
Name Servers: ns1.msft.net (207.68.160.190)
ns2.msft.net (65.54.240.126)
ns3.msft.net (213.199.161.77)
ns4.msft.net (207.46.66.126)
ns5.msft.net (65.55.238.126)

d)YahooWeb服务器有多个IP地址www.yahoo.com(216.109.112.135,66.94.234.13)

e)职业技术大学的地址范围:128.230.0.0-128.230.255.255

f)攻击者可以使用whois数据库和nslookup工具来确定目标机构的IP地址范围、DNS服务器地址等。

g)通过分析攻击数据包的源地址,受害者可以使用whois获取攻击所来自的域的信息,并可能通知源域的管理员。

P19、

a)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
The following delegation chain is used for gaia.cs.umass.edu
a.root-servers.net
E.GTLD-SERVERS.NET
ns1.umass.edu(authoritative)
First command:
dig +norecurse @a.root-servers.net any gaia.cs.umass.edu
;; AUTHORITY SECTION:
edu. 172800 IN NS E.GTLD-SERVERS.NET.
edu. 172800 IN NS A.GTLD-SERVERS.NET.
edu. 172800 IN NS G3.NSTLD.COM.
edu. 172800 IN NS D.GTLD-SERVERS.NET.
edu. 172800 IN NS H3.NSTLD.COM.
edu. 172800 IN NS L3.NSTLD.COM.
edu. 172800 IN NS M3.NSTLD.COM.
edu. 172800 IN NS C.GTLD-SERVERS.NET.
Among all returned edu DNS servers, we send a query to the first one.
dig +norecurse @E.GTLD-SERVERS.NET any gaia.cs.umass.edu
umass.edu. 172800 IN NS ns1.umass.edu.
umass.edu. 172800 IN NS ns2.umass.edu.
umass.edu. 172800 IN NS ns3.umass.edu.
Among all three returned authoritative DNS servers, we send a query to the first one.
dig +norecurse @ns1.umass.edu any gaia.cs.umass.edu
gaia.cs.umass.edu. 21600 IN A 128.119.245.12

b)

1
2
3
4
The answer for google.com could be:
a.root-servers.net
E.GTLD-SERVERS.NET
ns1.google.com(authoritative)

P20、我们可以定期拍摄本地DNS服务器中DNS缓存的快照。该组织在DNS缓存中出现最频繁的Web服务器是最流行的服务器。这是因为如果更多的用户对Web服务器感兴趣,那么DNS请求就会对此感兴趣服务器更频繁地由用户发送。因此,该Web服务器将出现在DNS中缓存更频繁。

关于完整的测量研究,见(我猜你不会看)。

P21、是的,我们可以在本地DNS服务器中使用DIG查询该网站。例如,dig cnn.com将返回查找CNN.com的查询时间。如果CNN.com几秒钟前刚刚被访问,那么CNN.com的条目将缓存在本地DNS缓存中,因此查询时间为0毫秒。否则,查询时间很长。

P22、在计算客户端-服务器分发的最小分发时间时,我们使用以下公式:

dcs=max{NF/usF/dmin}d_{cs}=max\{NF/u_s,F/d_{min}\}

同样地,在计算P2P分发的最小分发时间时,我们使用以下公式:

Dp2p=max{F/usF/dminNF/(us+i=1Nui)}D_{p2p}=max\{F/u_s,F/d_{min},NF/(u_s+\sum_{i=1}^{N}u_i)\}

其中$F=15Gbit=15*1024Mbits $

us=30Mbpsu_s=30 Mbps

dmin=di=2Mbpsd_{min}=d_i=2 Mbps

其中300Kbps=300/1024Mbps300 Kbps=300/1024 Mbps

Client Server

N
101001000
300 Kbps768051200512000
u700 Kbps768051200512000
2 Mbps768051200512000

Peer to Peer

N
101001000
300 Kbps76802590447559
u700 Kbps76801561621525
2 Mbps768076807680

P23、

a)考虑一种分发方案,其中服务器以us/Nu_s/N的速率并行地向每个客户端发送文件,注意此速率低于客户端的每个下载速率,因为假设我们us/Ndminu_s/N≤d_{min}。因此,每个客户端也可以以us/Nu_s/N的速率接收,因为每个客户端以us/Nu_s/N的速率接收,每个客户端接收整个文件的时间是F/(us/N)=NF/usF/(u_s/N)=NF/u_s。由于所有客户端都在NF/usNF/u_s中接收文件,所以总的分发时间也是NF/usNF/u_s

b)考虑一种分发方案,其中服务器并行地向每个客户端发送文件,速率为dmind_{min}。注意,聚合速率N dminN\ d_{min}小于服务器的链接速率我们,因为假设我们us/Ndminu_s/N≥d_{min}。由于每个客户端以dmind_{min}的速率接收,每个客户端接收整个文件的时间是F/dminF/d_{min}。因为所有客户端都在这段时间内接收文件,所以整个分发时间也是F/dminF/d_{min}

c)从2.6条我们知道 DCS>=max{NF/us,F/dmin}D_{CS}>=max\{NF/u_s,F/d_{min}\}

假设us/N<=dminu_s/N<=d_{min}。那么我们可以从上面的等式得到 DCS>=NF/usD_{CS}>=NF/u_s

但是我们从a)可以得到DCS<=NF/usD_{CS}<=NF/u_s

结合两个公式:DCS=NF/usD_{CS}=NF/u_s,当us/N<=dminu_s/N <=d_{min}

那么当us/N>=dminu_s/N>=d_{min},可以得到DCS=F/dminD_{CS}=F/d_{min}

P24、

a)定义u=u1+u2+....+uNu=u_1+u_2+....+u_N。假设us<=(us+u)/Nu_s<=(u_s+u)/N

将文件划分为N个部分,第i部分具有大小(ui/u)F(u_i/u)F。服务器传输第i部分对等i的速率ri=(ui/u)usr_i=(u_i/u)u_s。请注意,r1+r2+...+rN=usr_1+r_2+...+r_N=u_s,聚合服务器速率不超过服务器的链路速率。也具有每个对等I以速率rir_i将其接收的比特转发到N1N-1个对等点中的每一个。最大对等I的转发速率是(N1)ri(N-1)r_i。我们有

(N1)ri=(N1)(usui)/u<=ui(N-1)r_i=(N-1)(u_su_i)/u<=u_i

其中最后一个不等式来自上一个方程。因此,节点I的总转发速率小于它的链路速率uiu_i

在此分配方案中,对等点i以合计速率接收比特

ri+j<>irj=usr_{i}+\sum_{j<>i}{r_j}=u_s

因此,每个对等点接收F/usF/u_s中的文件。

b)再定义u=u1+u2+....+uNu=u_1+u_2+....+u_N。假设us>=(us+u)/Nu_s>=(u_s+u)/N

定义ri=ui/(N1)r_i=u_i/(N-1)rN+1=(usu/(N1))/Nr_{N+1}=(u_s-u/(N-1))/N

在此分发方案中,文件被分成N+1个部分。服务器发送位从第i部分到第i个对等点(i=1,…N)在速率rir_i。每个对等i转发该比特以速率rir_i到达其它N1N-1对等体中的每一个。此外,服务器发送位来自(N+1)st(N+1)^{st}部分以速率rN+1r_{N+1}到达N个对等端中的每一个。对等端不转发来自(n+1)st(n+1)^{st}部分。

服务器的聚合发送速率

r1++rN+NrN+1=u/(N1)+usu/(N1)=usr_1+…+r_N+Nr_{N+1}=u/(N-1)+u_s–u/(N-1)=u_s

因此,服务器的发送速率不超过其链路速率。第一对等点的总发送速率为(N1)ri=ui(N-1)r_i=u_i

因此,每个对等点的发送速率不超过其链路速率。在此分配方案中,对等点i以合计速率接收比特。

ri+rN+1+j<>irj=u/(N1)+(usu/(N1))/N=(us+u)/Nr_i+r_{N+1}+\sum_{j<>i}{rj}=u/(N-1)+(u_s-u/(N-1))/N=(u_s+u)/N

因此,每个对等端接收NF/(us+u)NF/(u_s+u)中的文件。

(为了简单起见,我们忽略了为i=1...n1i=1,...,n_1。我们现在在这里提供了。假设δ=(us+u)/N\delta=(u_s+u)/N为分配时间。对于i=1...,ni=1,...,n,第i个文件部分是FiriδF_i=r_i \delta比特。(N+1)st(N+1)^{st}文件部分是FN+1rN+1δF_{N+1}=r_{N+1} \delta(bits)。它是直接显示F1+...FN+1=FF_1+...F_{N+1}=F。)

c)本部的解决办法与第17©条的解决办法相似。我们从2.6节中得知

Dp2p>=max{F/usNF/(us+u)}D_{p2p}>=max\{F/u_s,NF/(u_s+u)\}

结合了a)和b)给出了预期的结果。

P25、在覆盖网络中存在N个节点。n(n1)/2n(n-1)/2边。

P26、是的。只要有足够的对等人留在蜂群中,他的第一个索赔就可能是可能的。足够长的时间。Bob可以总是通过乐观的非阻塞来接收数据对等端。

他的第二次索赔也是真实的。他可以在每个主机上运行客户端,让每个客户端“免费乘坐,”并将收集的chunks从不同的主机合并为单个文件。他甚至可以编写一个小的调度程序,使不同的主机请求不同的chunks文件。这实际上是P2P网络中的一种Sybil攻击。

P27、

a)n文件,假设我们通过将视频版本与音频版本按质量和速率的顺序配对来进行一对一的匹配。

b)2N个文件。

P28、

a)如果首先运行TCPClient,则客户端将尝试与TCP连接不存在的服务器进程。将不进行TCP连接。

b)UDPClient不与服务器建立TCP连接。因此,一切如果第一次运行udpClient,则应正常工作,然后运行udpServer,然后键入一些输入键盘。

c)如果使用不同的端口号,则客户端将尝试建立TCP连接错误的进程或不存在的进程。会出现错误。

P29、在原始程序中,UDPClient在创建端口时未指定端口号插座。在这种情况下,代码允许底层操作系统选择端口号。使用附加行,在执行UDPClient时,使用端口创建UDP套接字5432号。

UDPServer需要知道客户端端口号,以便它可以将数据包发回给正确的客户端套接字。查看UDPServer,我们看到客户端端口号不“硬连线”进入服务器代码;相反,UDPServer确定客户端端口号通过解开从客户端接收的数据报。因此,UDP服务器将与任何客户端端口号,包括5432。因此,UDPServer不需要已修改。

之前:

客户端 套接字=X(由OS选择)

服务器 套接字=9876

之后:

客户端 套接字=5432

P30、是的,您可以配置许多浏览器来打开到网站的多个同时连接。优点是您可以更快地下载该文件。缺点是您可能占用了带宽,从而大大减缓了共享相同物理链接的其他用户的下载速度。

P31、对于远程登录(telnet和ssh)之类的应用程序,面向字节流的协议是非常自然的,因为应用程序中没有消息边界的概念。当用户键入一个字符时,我们只需将该字符放到TCP连接中即可。在其他应用程序中,我们可能会发送一系列在它们之间具有固有边界的消息。例如,当一个SMTP邮件服务器向另一个SMTP邮件服务器连续发送多个电子邮件时。由于TCP没有指示边界的机制,所以应用程序必须自己添加指示,以便应用程序的接收方能够区分一条消息和另一条消息。如果将每条消息放入一个不同的udp段中,则接收端将能够在没有任何指示的情况下,区分各种讯息、申请。

P32、要创建Web服务器,我们需要在主机上运行Web服务器软件。许多供应商出售Web服务器软件。然而,当今最流行的Web服务器软件是Apache,它是开放的源并且是自由的。多年来,它一直受到开源社区的高度优化。

Back to Index

第三章

复习题3

R1、

a)将此协议称为简单传输协议(STP)。在发送方,STP从发送进程接受不超过1196字节的数据块、目标主机地址和目标端口号。STP在每个块中添加一个4字节的头,并将目标进程的端口号放在这个标头中。然后,STP将目标主机地址和结果段提供给网络层。网络层将段传送到目标主机上的STP。STP然后检查段中的端口号,从段中提取数据,并将数据传递给由端口号标识的进程。

b)段现在有两个头字段:源端口字段和目标端口字段。在发送方,STP接受不超过1192字节的数据块、目标主机地址、源端口号和目标端口号。STP创建一个段,其中包含应用程序数据、源端口号和目标端口号。然后,它将段和目标主机地址提供给网络层。在接收到段后,接收主机上的STP给出应用程序的应用程序数据和源端口号。

c)不,传输层不需要在核心中做任何事情;传输层“存活”在最终系统中。

R2、

a)在寄信时,家庭成员必须将信件本身、目的地住所的地址和收件人的姓名交给代表。委托将收件人的姓名清楚地写在信函的顶部。然后,委托将信放入信封中,并在信封上写入目标住宅的地址。然后,代表将这封信交给地球的邮件服务部门。在接收方,委托收到来自邮件服务的信函,从信封中取出信件,并记下在信件顶部写的收件人姓名。然后,代表将这封信交给具有此名称的家庭成员。

b)不,邮件服务部门不必打开信封;它只检查信封上的地址。

R3、源端口号y和目标端口号x。

R4、应用程序开发人员可能不希望其应用程序使用TCP的拥塞控制,这会在拥塞时限制应用程序的发送速率。通常,IP电话和IP视频会议应用程序的设计者选择在UDP上运行他们的应用程序,因为他们希望避免TCP的拥塞控制。另外,有些应用程序不需要TCP提供的可靠数据传输。

R5、由于大多数防火墙都被配置为阻止UDP通信,因此使用TCP进行视频和语音通信可以让通信通过防火墙。

R6、是的。应用程序开发人员可以将可靠的数据传输放到应用层中协议。然而,这需要大量的工作和调试。

R7、是的,两个段将指向同一个套接字。对于每个接收到的段,在套接字接口上,操作系统将为进程提供IP地址,以确定各个段的来源。

R8、对于每个持久连接,Web服务器创建一个单独的“连接套接字”。每个连接套接字被标识为具有四个元组:(源IP地址、源端口号、目标IP地址、目标端口号)。当主机C接收和IP数据报,它检查数据报/段中的这四个字段确定哪个套接字应该通过TCP段的有效负载。因此,来自A和B的请求通过不同的套接字。这两个参数的标识符用于目标端口的套接字具有80;但是,这些套接字的标识符源IP地址的不同值。与UDP不同,传输层通过时TCP段对应用程序进程的有效负载,它不指定源IP地址,因为这是由套接字标识符隐式指定的。

R9、接收机需要序列号来确定到达的数据包是包含新数据还是是重传。

R10、处理通道中的损失。如果在该分组的计时器持续时间内未接收到发送分组的ACK,则假定该分组(其ACK或NACK)已丢失。因此,分组被重传。

R11、在RDT 3.0协议中仍然需要计时器。如果知道往返时间,那么唯一的优势是,发送方肯定知道数据包或数据包的ACK(或Nack)已经丢失,而实际情况是,在计时器过期后,ACK(或Nack)可能仍在发送方的途中。然而,要检测丢失,对于每个包,一个持续时间不变的定时器仍然需要在发送者。

R12、

a)丢包造成一段时间后,所有五个包都被重传。

b)由于Go-Back-N使用累积数据,ACK的丢失没有触发任何重传承认。

c)发送方无法发送第六个分组,因为发送窗口大小固定为5。

R13、

a)当分组丢失时,接收的4个分组被缓冲接收器。完成后超时,发送方重新发送丢失的数据包,接收方传送缓冲的数据包数据包以正确的顺序应用。

b)接收器为丢失的ACK发送了重复ACK。

c)发送窗口大小固定为5时,发送方无法发送第六数据包当分组丢失时,返回-N重传所有的分组,而选择性地重传所有的分组。仅重发丢失的数据包。在丢失确认的情况下,选择性重复发送重复ACK,并有GO-BACK-N使用的累积确认,不需要重复ACK。

R14、假假真假真假假

R15、

a) 20 bytes

b) ack number = 90

R16、3段。第一段:SEQ=43,ack=80;第二段:SEQ=80,ack=44;第三段;seq=44,ack=81

R17、R/2

R18、false,它设置为拥塞窗口的当前值的一半。

R19、让X=RTTFE,Y=RTTBEX=RTT_{FE},Y=RTT_{BE}和ST=搜索时间。考虑以下时序图。

图10

客户端和服务器(后端)之间使用代理(前端)之间的TCP数据包交换图。

从这个图中我们可以看到,总时间是4X+Y+ST=4RTTFE+RTTBE+4X+Y+ST=4*RTT_{FE}+RTT_{BE}+搜索时间

Back to Index

问题3

R1、

source port numbersdestination port numbers
a) A→S46723
b) B→S51323
c) S→A23467
d) S→B23513

e) Yes.

f) No.

P2、假设主机A、B和C的IP地址分别为a、b、c。(请注意,a、b、c各不相同)。

主机A:源端口=80,源IP地址=b,目标端口=26145,目标IP地址=a

到主机C,左进程:源端口=80,源IP地址=b,目标端口=7532,目标IP地址=c

到主机C,右进程:源端口=80,源IP地址=b,目标端口=26145,目标IP地址=c。

P3、注意,如果溢出,请绕一圈。

1
2
3
4
5
6
7
8
9
   1 0 1 1 1 0 0 1
+ 0 1 1 0 0 1 1 0
------------------
0 1 0 1 0 0 1 1

0 1 1 1 0 1 0 0
+ 1 0 1 1 1 0 0 1
-----------------
0 0 1 0 1 1 1 0

补码为: 1 1 0 1 0 0 0 1

为了检测错误,接收方添加四个单词(三个原始单词和校验和)。如果和包含一个零,接收器知道有一个错误。所有的一位错误都会被检测到,但是两位错误可以不被检测到(例如,如果第一个单词的最后一个数字被转换为0,第二个单词的最后一个数字被转换为1)。

P4、

a)将这两个字节相加得到11000001。取一个人的补给量就等于00111110。

b)把这两个字节相加,等于01000000;补码等于10111111。

c)第一个字节=01010100;第二个字节=01101101。

P5、不,接收方不能完全确定没有发生任何位错误。这是因为计算数据包的校验和的方式。如果包中两个16位字的对应位(相加在一起)是0和1,那么即使这些位分别翻转到1和0,和仍然保持不变。因此,接收方计算的1s补码也将是相同的。这意味着,即使存在传输错误,校验和也将进行验证。

P6、假设发送方处于“从上面等待呼叫1”状态,而接收方(作业问题中显示的接收方)处于“从下面等待1”状态。发送方发送一个序列号为1的数据包,并转换为“等待ACK或NAK 1”,等待ACK或NAK。现在假设接收方正确地接收序列号为1的数据包,发送一个ACK,然后转换为状态“从下面等待0”,等待序列号为0的数据包。但是,ACK已损坏。当rdt2.1发送方获得损坏的ACK时,它用序列号1重新发送数据包。然而,接收方正在等待序列号为0的数据包,并且(如家务问题所示)总是在没有得到序列号为0的数据包时发送NAK。因此,发送方将始终发送一个序列号为1的数据包,而接收方将始终锁定该数据包。也不会从那个州前进。

P7、要想最好地回答这个问题,首先考虑一下为什么我们需要序列号。我们看到发送方需要序列号,以便接收方能够判断数据包是否是已经接收到的数据包的副本。在ACK的情况下,发送方不需要这个信息(即ACK上的序列号)来判断是否检测到重复的ACK。对于rdt3.0接收器来说,一个重复的ACK是显而易见的,因为当它接收到原始ACK时,它会转换到下一个状态。重复的ACK不是发送方需要的ACK,因此被rdt3.0发送方忽略。

P8、协议rdt3.0的发送方与协议2.2的发送方不同,因为已经添加了超时。我们已经看到,超时的引入增加了在发送方到接收方数据流中重复数据包的可能性。然而,协议rdt2.2中的接收方已经可以处理重复的数据包。(如果接收方发送丢失的ACK,然后发送方重新传输旧数据,则RDT2.2中的接收方重复出现)。因此,协议rdt2.2中的接收器也将作为协议rdt3.0中的接收器工作。

P9、假设协议已经运行了一段时间。发送方处于“从上等待呼叫”状态(左上角),接收方处于“从下等待0”的状态。下图显示了损坏的数据和损坏的ACK的场景。

图11

P10、在这里,我们添加一个计时器,它的值大于已知的往返传播延迟。我们将超时事件添加到“等待ACK或NAK 0”和“等待ACK或NAK 1”状态。如果发生超时事件,则重新发送最近发送的数据包。让我们看看为什么这个协议仍将与rdt2.1接收器一起工作。

  • 假设超时是由丢失的数据包引起的,即发送方到接收方通道上的数据包。在这种情况下,接收机从未接收到先前的传输,并且从接收机的角度来看,如果接收到超时重传,它看起来与接收到的原始传输完全相同。
  • 假设现在一个ACK丢失了。接收器最终会在超时时重新发送数据包。但是,重传与ACK被混淆时的动作完全相同。因此,发送者的反应与损失是一样的,就像混乱的ACK一样。RDT2.1接收器已经可以处理混淆的ACK的情况。

P11、如果删除了该消息的发送,发送和接收侧将死锁,等待永远不会发生的事件。以下是一种场景:

  • sender发送pkt0,输入“等待ACK0状态”,等待数据包返回来自接收机
  • 接收器处于“从下面等待0”状态,接收到损坏的数据包来自发送方。假设它不发送任何信息,只需重新输入“等待0”处于“下”状态。

现在,ender正在等待来自接收机的某种类型的ACK,并且接收机等待数据包形成发送方-死锁!

P12、该协议仍在工作,因为如果重新传输将是如果接收到错误的分组实际上已经丢失(并且从接收机的观点来看,它从不知道这些事件中的哪一个发生,如果有的话)。

为了解决这个问题背后的更微妙的问题,一个必须允许过早的发生超时。在这种情况下,如果分组的每个额外副本被确认并且每个副本接收的额外ACK导致要发送的当前分组的另一个额外拷贝,发送分组N的次数将随着N接近无穷大而不受限制地增加。

P13、

图12

P14、在仅NAK协议中,只有当接收到分组x+1时,接收方才检测丢包x。也就是说,接收器接收x-1,然后x+1,只有当接收到x+1时,接收器才会意识到x被忽略了。如果x的传输和x+1的传输之间存在很长的延迟,那么在只使用NAK协议下,需要很长时间才能恢复x。

另一方面,如果数据经常被发送,那么以NAK为唯一方案的恢复可能会很快发生。此外,如果错误很少发生,那么Naks只是偶尔被发送(当需要时),并且ACK永远不会被发送-NAK中的反馈大大减少-仅在ACK的情况下才发送。

P15、发送数据包需要12微秒(或0.012毫秒),作为15008/109=121500*8/10^9=12微秒。为了使发送者在98%98\%的时间里忙碌,我们必须使用util=0.98=(0.012n)/30.012util=0.98=(0.012n)/30.012或n大约2451个数据包。

P16、是。这实际上会导致发送方向通道发送大量流水线数据。

是。这里有一个潜在的问题。如果数据段丢失在通道中,那么RDT3.0的发送方将不会重新发送这些段,除非应用程序中有一些从丢失中恢复的额外机制。

P17、

图13

P18、在我们的解决方案中,发送方将等待接收到一对消息(seqnum和seqnum+1)的ACK,然后再转到下一对消息。数据包有一个数据字段,并携带两位序列号.也就是说,有效序列号为0、1、2和3。(注意:您应该考虑为什么1位序列号空间0,1在下面的解决方案中不能工作。)ACK消息携带他们正在确认的数据包的序列号。

发送方和接收方的FSM如图2所示。请注意,发送方状态记录:(i)当前对未收到ACK,(ii)接收到用于seqnum(仅)的ACK,或接收到用于seqnum 1的ACK(仅)。在这个图中,我们假设seqnum最初为0,并且发送者已经发送了第一个两个数据消息(获取要进行的事情)。发送方和接收方的时间线跟踪从丢失的数据包中恢复如下所示:

图14

图15

图2:问题的发送方和接收方(3.18)

SenderReceiver
make pair (0,1)
send packet 0
Packet 0 drops
send packet 1
receive packet 1
buffer packet 1
send ACK 1
receive ACK 1
(timeout)
resend packet 0
receive packet 0
deliver pair (0,1)
send ACK 0
receive ACK 0

P19、这个问题是简单停止和等待协议(rdt3.0)上的一个变化。由于信道可能丢失消息,并且由于发送方可能重新发送其中一个接收方已经接收到的消息(要么由于过早超时,要么由于另一个接收方尚未正确接收数据),因此需要序列号。在rdt3.0中,0位序列号在这里就足够了。

发送方和接收方FSM如图3所示。在此问题中,发送方状态指示发送方是否从B(仅)、从C(仅)或从非C或B接收到ACK。接收方状态指示接收方正在等待哪个序列号。

图16

图17

P20、

图18

图4:3.18的接收端FSM

发送方FSM完全相同,如图3.15中的文本所示

P21、由于A-to-B信道可能丢失请求消息,A将需要超时并且重新发送其请求消息(能够从丢失中恢复)。因为信道延迟是可变的且未知,可能A将发送重复的请求(即,重新发送已经被b)接收到的请求消息。为了能够检测重复请求消息,协议将使用序列号。1位序列数量将足以用于停止和等待类型的请求/响应协议。A(请求者)有4个状态:

  • “从上面等待请求0。”在这里,请求者正在等待一个呼叫以请求数据单元。当接收到上述请求时,它发送一个请求消息R0,到B,启动计时器,并向“等待D0”状态过度。当在“等待来自以上的请求0“状态,A忽略从B收到的任何东西。
  • “等D0”在这里,请求者正在等待来自B的D0数据消息。定时器总是在这种状态下运行。如果计时器过期,A将发送另一条R0消息,重新启动定时器并保持此状态。如果从B接收到D0消息,A将停止时间并传输到“从上面等待请求1”状态。如果A在此状态下接收D1数据消息,则忽略它。
  • “等待上面的请求1。”在这里,请求者再次等待来自上面的呼叫来请求一个数据单元。当它从上面接收到一个请求时,它向B发送一个请求消息R1,启动一个定时器并转换到“等待D1”状态。当处于“等待上述请求1”状态时,A会忽略从B接收的任何内容。
  • “等待D1”。在这里,请求者正在等待来自B的d1数据消息。定时器总是在这种状态下运行。如果计时器过期,A将发送另一条R1消息,重新启动定时器并保持此状态。如果从B接收到D1消息,A将停止定时器并传输到“从上面等待请求0”状态。如果A在此状态下接收到D0数据消息,则忽略它。

数据供应商(B)仅有两种状态:

  • 在此状态下的“发送D0。”,B继续响应收到的R0消息。发送D0,然后保持在该状态。如果B收到R1消息,则它知道其D0消息已正确接收。因此它丢弃该D0数据(由于它已在另一侧收到),然后过渡到“发送D1”状态,其中它将使用d1来发送下一个请求的数据块。
  • “发送D1”在这种状态下,B继续通过发送D1来响应接收到的R1消息,然后保持这种状态。如果B接收到R1消息,则它知道其D1消息已被正确接收,从而传输到“发送D1”状态。

P22、

a)这里我们的窗口大小为n=3。假设接收机接收到分组k-1,并且已经将该分组和所有其它之前的分组进行了分组。如果所有这些ACK都已被由发送方接收,则发送方的窗口为[k,k+n-1]。假设下一个没有在发送方接收到ACK。在第二种情况下,发送方S窗口包含k-1和n个分组,并包括k-1。因此,发送者的窗口是这样的,[K-N,K-1]。通过这些参数,“发件人”窗口的大小为3,并开始在范围[K-N,K]的某处。

b)如果接收机正在等待分组k,则它已经接收(和被处理)分组k-1和N-1个分组。如果尚未收到这些N个ACK中的任何一个,发送方,然后可以传播具有[k-n,k-1]值的ACK消息由于发送方发送了数据包[k-n,k-1],所以必须是这样的情况:发送方已经接收到用于k-n-1的ACK。一旦接收机发送了ACK,对于k-n-1,它将永远不会发送小于k-n-1的ACK。因此,飞行中的ACK值的范围可以从k-n-1到k-1。

P23、为了避免图3.27中的场景,我们希望避免接收方窗口的前缘(即具有“最高”序列号的窗口)在序列号空间中环绕,并与后面的边缘(发送方窗口中具有“最低”序列号的窗口)重叠。也就是说,序列号空间必须足够大,以适应整个接收方窗口和整个发送方窗口,而不存在这种重叠条件。因此-我们需要确定接收方和发送方窗口在任何给定时间都可以覆盖多大的序列号。

假设接收者等待的最低序列号是包m,在这种情况下,它的窗口是[m,m+w-1],它已经接收到(并加进)包m-1和之前的w-1包,其中w是窗口的大小。如果发送方尚未接收到这些wACK中的任何一个,则值为[m-w,m-1]的ACK消息可能仍在传播。如果发送方没有收到带有这些ACK号的ACK,那么发送方的窗口将是[m-w,m-1]。

因此,发送方窗口的下边缘为m-w,接收者窗口的前缘为m+w-1。为了使接收方窗口的前缘不与发送方窗口的后缘重叠,序列号空间必须因此,足够大以容纳2w序列号。也就是说,序列号空间必须至少是窗口大小的两倍,k>=2wk>=2w

P24、

a)真。假设发送方具有3的窗口大小并且在t0t_0发送分组1、2、3。在t1(t1>t0)t_1(t_1>t_0)接收机ACK1、2、3。在t2(t2>t1)t_2(t_2>t_1)发送方超时,并且重新连接1、2、3。在t3t_3,接收机接收重复并重新确认1、2,3、在t4t_4,发送方接收到在t1t_1发送的接收机并使其前进的ACK。窗口至4、5、6。在t5t_5,发送方接收在t2t_2发送的接收机的ACK1、2、3。这些棚屋在窗户外面。

b)真。实质上与(a)中相同的情形。

c)真。

d)真。请注意,具有1、SR、GBN和交替位协议的窗口大小功能等同。窗口大小1排除了无序分组的可能性(在窗口内)。累积ACK仅仅是普通ACK,这种情况,因为它只能指窗口内的单个分组。

P25、

a)考虑在传输协议上发送应用消息。使用TCP,应用程序将数据写入连接发送缓冲区,TCP将抓取字节必须在TCP段中放置一个消息;TCP可能会或多或少地发送消息而不是在段中的单个消息。另一方面,UDP封装在无论应用程序给出什么,都会分段;因此,如果应用程序提供UDP应用消息,此消息将是UDP段的有效负载。因此,对于UDP,应用程序对数据段中的数据进行了更多控制。

b)由于流量控制和拥塞控制,TCP由于流量控制和拥塞控制,可能会有显著的延迟从应用程序向其发送缓冲器写入数据直到数据被指定给网络层。UDP由于流控制而没有延迟,拥塞控制。

P26、共有232=42949672962^{32}=4294967296个可能的序列。

a)序列号不随每个段增加一个。相反,它会增加发送的数据字节数。因此,MSS的大小是无关的-从A到B发送的最大大小文件就是可以表示为2324.19GBytes2^{32}≈4.19GBytes的字节数。

b)分段数为[232536]=8012999.66\left [ \frac{2^{32}}{536} \right ]=8012999.66字节的标头添加到每个段中,总共生成528857934字节的标头。传输的字节总数为232+528857934=4.824×1092^{32}+528857934=4.824\times10^9字节。因此,在155Mbps链路上传输文件需要249秒。

P27、

a)在从主机A到B的第二段中,序列号为207,源端口号为302,目的端口号为80。

b)如果所述第一段在所述第二到达段之前到达,则在所述第一到达段的确认中,所述确认号为207,所述源端口号为80,所述目的端口号为302。

c)如果第二段到达第一段之前,在第一个到达段的确认中,确认号为127,表示它仍在等待字节127和以后。d)

d)

图19

P28、由于链路容量只有100 Mbps,所以主机A的发送速率最多可达100 Mbps。不过,主机A向接收缓冲区发送数据的速度比主机B从缓冲区中删除数据的速度要快。接收缓冲区的填充速率约为40 Mbps。当缓冲区已满时,主机B通过设置RcvWindow=0向主机A发送停止发送数据的信号。然后主机A停止发送,直到接收到RcvWindow>0的TCP段为止。主机A将作为RcvWindow值的函数反复停止并开始发送从主机B接收。平均而言,主机A向主机发送数据的长期速率b作为此连接的一部分,不超过60Mbps。

P29、

a)服务器使用特定的初始序列号(从源和目的地IP和端口的散列中获取)来抵御SYN洪水攻击。

b)不,攻击者不能通过向目标发送和ACK数据包来创建半开放或完全打开的连接。半开连接是不可能的,因为在建立完整连接之前,使用SYNcookie的服务器不会维护任何连接的连接变量和缓冲区。为了建立完全开放的连接,攻击者应该从攻击者那里知道与(伪造的)源IP地址对应的特定初始序列号。这个序列号需要每个服务器使用的“秘密”编号。由于攻击者不知道这个秘密号码,她无法猜测初始序列号。

c)不,服务器可以简单地在计算这些初始序列号时加上时间戳,并为这些序列号选择一个存活值,即使攻击者重播,也可以丢弃过期的初始序列号。

P30、

a)如果超时值是固定的,则发送方可能会过早超时。因此,一些包即使没有丢失也被重新传输.

b)如果估计超时值(就像TCP所做的那样),那么增加缓冲区大小肯定有助于提高该路由器的吞吐量。但可能有一个潜在的问题。排队延迟可能非常大,类似于场景1中所示。

P31、

DevRTT=(1beta)DevRTT+betaSampleRTTEstimatedRTTEstimatedRTT=(1alpha)EstimatedRTT+alphaSampleRTTTimeoutInterval=EstimatedRTT+4DevRTT\begin{aligned} DevRTT=(1-beta)*DevRTT+beta*|SampleRTT-EstimatedRTT| \\ EstimatedRTT=(1-alpha)*EstimatedRTT+alpha*SampleRTT \\ TimeoutInterval=EstimatedRTT+4*DevRTT \end{aligned}

获取第一个SampleRTT 106ms后:

DevRTT=0.755+0.25106100=5.25msEstimatedRTT=0.875100+0.125106=100.75msTimeoutInterval=100.75+45.25=121.75ms\begin{aligned} DevRTT=0.75*5+0.25*|106-100|=5.25ms \\ EstimatedRTT=0.875*100+0.125*106=100.75ms \\ TimeoutInterval=100.75+4*5.25=121.75ms \end{aligned}

获取120ms后:

DevRTT=0.755.25+0.25120100.75=8.75msEstimatedRTT=0.875100.75+0.125120=103.16msTimeoutInterval=103.16+48.75=138.16ms\begin{aligned} DevRTT=0.75*5.25+0.25*|120–100.75|=8.75ms \\ EstimatedRTT=0.875*100.75+0.125*120=103.16ms \\ TimeoutInterval=103.16+4*8.75=138.16ms \end{aligned}

获取140ms后:

DevRTT=0.758.75+0.25140103.16=15.77msEstimatedRTT=0.875103.16+0.125140=107.76msTimeoutInterval=107.76+415.77=170.84ms\begin{aligned} DevRTT=0.75*8.75+0.25*|140–103.16|=15.77ms \\ EstimatedRTT=0.875*103.16+0.125*140=107.76ms \\ TimeoutInterval=107.76+4*15.77=170.84ms \end{aligned}

获取90ms后:

DevRTT=0.7515.77+0.2590107.76=16.27msEstimatedRTT=0.875107.76+0.12590=105.54msTimeoutInterval=105.54+416.27=170.62ms\begin{aligned} DevRTT=0.75*15.77+0.25*|90–107.76|=16.27ms \\ EstimatedRTT=0.875*107.76+0.125*90=105.54ms \\ TimeoutInterval=105.54+4*16.27=170.62ms \end{aligned}

获取115ms后:

DevRTT=0.7516.27+0.25115105.54=14.57msEstimatedRTT=0.875105.54+0.125115=106.72msTimeoutInterval=106.72+414.57=165ms\begin{aligned} DevRTT=0.75*16.27+0.25*|115–105.54|=14.57ms \\ EstimatedRTT=0.875*105.54+0.125*115=106.72ms \\ TimeoutInterval=106.72+4*14.57=165ms \end{aligned}

P32、

a)EstimatedRTT(n)EstimatedRTT^{(n)}表示第n个样本后估计的RTT值。

EstimatedRTT(4)=xSampleRTT1+(1x)[xSampleRTT2+(1x)[xSampleRTT3+(1x)SampleRTT4]]=xSampleRTT1+(1x)xSampleRTT2+(1x)2xSampleRTT3+(1x)3xSampleRTT4\begin{aligned} EstimatedRTT^{(4)}= \\ x SampleRTT_1+(1-x)[x SampleRTT_2+(1-x)[x SampleRTT_3+(1-x)SampleRTT_4]]= \\ x SampleRTT_1+(1-x)x SampleRTT_2+(1-x)^2x SampleRTT_3+(1-x)^3x SampleRTT_4 \end{aligned}

b)EstimatedRTT(n)=xj=1n1(1x)j1SampleRTTj+(1x)n1SampleRTTnEstimatedRTT^{(n)}=x\sum_{j=1}^{n-1}(1-x)^{j-1}SampleRTT_j+(1-x)^{n-1}SampleRTT_n

c)EstimatedRTT()=x1xj=1n1(1x)jSampleRTTj=19j=19jSampleRTTjEstimatedRTT^{(\infty)}=\frac{x}{1-x}\sum_{j=1}^{n-1}(1-x)^{j}SampleRTT_j=\frac{1}{9}\sum_{j=1}^{\infty}\cdot 9^jSampleRTT_j

赋予过去样本的权重呈指数衰减。

P33、让我们来看看如果TCP为重新传输的段度量SampleRTT会发生什么错误。假设源发送数据包P1,P1的计时器过期,然后源发送P2,即同一数据包的新副本。此外,假设源度量P2(重发数据包)的SampleRTT。最后,假设在发送P2后不久,对P1的确认到达。源将错误地将此确认视为P2的确认,并计算不正确的SampleRTT值。

让我们看看如果TCP为重新传输的段度量SampleRTT,可能会发生什么错误。假设源发送数据包P1,P1的计时器过期,然后源发送P2,即同一数据包的新副本。此外,假设源度量P2(重发数据包)的SampleRTT。最后,假设在发送P2后不久,对P1的确认到达。源将错误地将此确认视为P2的确认,并计算不正确的SampleRTT值。

P34、在任何给定的时间t,sendBase-1是发送方知道的最后一个字节的序列号,发送方知道该字节已在接收方正确地、有序地接收到。如果管道中有确认,则接收方在时间t处实际接收的最后一个字节(正确和有序)可能更大。因此

SendBase1<=LastByteRcvdSendBase-1<=LastByteRcvd

P35、当在时间t,发送者接收具有值y的确认时,发送者知道确保接收器接收到所有通过Y-1的所有信息。实际最后一个字节如果是,则在时间t处的接收器处接收(正确地和有序地)可以是更大的。SendBase或在管道中是否有其他确认。因此,

y1<=LastByteVCDy-1<=LastByteVCD

P36、假设分组N、N+1和N+2被发送,并且分组N被接收和确认。如果分组N+1和N+2沿着端到端路径(即,在顺序N+2,N+1),则分组N_2的接收将为N生成重复ACK,并且在仅等待第二重复ACK的策略下触发重传用于重传。通过等待三重重复ACK,必须是两个假设分组N、N1和N2被发送的情况,并且分组N被接收和确认。如果分组N1和N2沿着端到端路径(即,在顺序N+2,N+1),则分组N_2的接收将为N生成重复ACK,并且在仅等待第二重复ACK的策略下触发重传用于重传。通过等待三重重复ACK,必须在正确接收到分组N之后的TWT的情况,而没有接收到N1。设计者三重重复ACK方案可能认为等待两个数据包(而非等待1个数据包)是在需要时触发快速重传之间的正确权衡,但不在分组重新排序的情况下提前重传。

P37、

a)GOBACKN:A总共发送9个段。它们最初被发送段1、2、3、4、5和随后重新发送段2、3、4和5。B发送8个ACK。它们是4个带有序号1和4个ACK的ACK序列号2、3、4和5。选择性重复:A总共发送6个段。它们最初被发送段1、2、3、4、5和随后重新发送段2。B派5个ACK。它们是序列号1、3、4、5的4个ACK。有一个人序列号为2的ACK。TCP: A总共发送6个段。它们最初被发送段1、2、3、4、5和随后重新发送段2。B派5个ACK。它们是具有序列号2的4个ACK。有一个ACK序列号6。请注意,TCP始终发送带有预期序列的ACK编号。

b)TCP。这是因为TCP使用快速重传而不等待,直到超时。

P38、正确,发送数据总是接近cwnd/RTT。

P39、如果到达率超过图3.46(b)中的R/2R/2,则到达的总到达速率队列超过队列的容量,导致由于到达速率而导致的损失增加增加。当到达速率等于R/2R/2时,每3个分组中的1个离开。队列是重传。随着损失的增加,甚至更大的分组部分离开队列将是重传。假定最大偏离率其中一个会话的队列是R/2R/2,并且假定第三或更多个会话将随着到达速率的增加而传输,成功递送数据的吞吐量可以不会增加到外面。在类似的推理之后,如果有一半的数据包离开了队列是重传,每个会话的输出分组的最大速率是R/2R/2,则其最大值为(R/2)/2R/4(R/2)/2或R/4

P40、

a)TCP 缓慢启动在以[1,6]和[23,26]的间隔

b)TCP拥塞避免以间隔[6,16]和[17,22]运行

c)第16次传输循环后,数据包丢失由三重复制识别ACK。如果超时,则拥塞窗口大小将下降到1。

d)第22次传输循环后,由于超时而检测到段丢失,因此,拥塞窗口大小设置为1。

e)阈值最初是32,因为它处于慢启动停止的窗口大小,并且拥塞避免开始。

f)当分组丢失时阈值被设置为拥塞窗口的值的一半。已检测到。当在传输循环16期间检测到丢失时,拥塞Windows的大小为42。因此在第18传输循环期间阈值为21。

g)当分组丢失时阈值被设置为拥塞窗口的值的一半。已检测到。当在传输循环22期间检测到丢失时,拥塞Windows的大小为29。因此,在第24轮传输中阈值为14(取下下限为14.5)。

h)在第1次传输循环期间,数据包1被发送;数据包2-3在第2次发送中发送传输循环;数据包4-7在第3传输循环中发送;数据包8-15在第4个传输回合中发送;数据包16-31在第5个传输中发送数据包32-63在第6个传输回合中发送;数据包64-96被发送在第7次传输循环中。因此,在第7发送循环中发送分组70。

i)阈值将设置为拥塞窗口(8)的当前值的一半。出现丢失和拥塞窗口将设置为新的阈值3MSS。因此,阈值和窗口的新值分别为4和7。

j)阈值为21,拥塞窗口大小为1。

k)圆形17,1个分组;圆形18,2个分组;圆形19,4个分组;圆形20,8个分组;第21轮,16个分组;第22轮,21个分组。因此,总数是52。

P41、参见图5。在图5(a)中,线性减小与损耗之间的比率连接1和连接2与线性增加的比率相同:单位。在这种情况下情况下,吞吐量永远不会离开AB线段。在图5(b)中,连接1和连接2之间的线性减少是2:1。即,每当有丢失时,连接1将其窗口减少两倍连接2。我们认为,最终,在足够的损失和随后的增加之后,连接1的吞吐量将变为0,并且将分配全部链路带宽连接2。

图20

P42、如果tcp是一个停止和等待协议,那么超时间隔加倍就足够作为拥塞控制机制了。然而,TCP使用流水线(因此不是停止和等待协议),它允许发送方有多个未确认的未确认段。超时间隔的加倍不会阻止tcp发送者向网络发送大量第一时间传输的数据包,即使端到端路径非常拥挤。因此,当出现网络拥塞的迹象时,需要一种拥塞控制机制来阻止“从上面的应用程序接收到的数据流”。

P43、在此问题中,由于接收器的接收,在溢出接收器中没有危险,缓冲区可以保存整个文件。而且,因为没有丢失和确认,在计时器过期之前返回,TCP拥塞控制不会限制发送方。但是,主机A中的进程不会连续将数据传递到套接字,因为发送缓冲区将快速填满。发送缓冲区已满,进程将通过以平均速率的数据或RSR\ll S

P43、

a) 1 RTT增加到7 MSS,2 RTTs增加到8 MSS,3 RTTS增加到9 MSS,4 RTTs增加到10 MSS,5 RTTs增加到11 MSS,6 RTTS增加到12 MSS。

b)在第一次RTT中发送 6 MSS;在第二次RTT中7 MSS被发送;在第三次RTT中8 MSS被发送;在第四次RTT中9 MSS被发送;在第5次RTT中10 MSS被发送;在第六次RTT中发送11 MSS。因此,到RTT时,发送了6+7+8+9+10+11=51 MSS。因此,我们可以说,6 RTT的平均吞吐量为(51MSS)/(6RTT)=8.5MSS/RTT(51 MSS)/(6 RTT)=8.5MSS/RTT

P44、

a)丢失率L是在分组数量上丢失的分组的数目和已发送的比率。在一个周期中,丢失了1个数据包。在一个周期中发送的分组的数目

W2+(W2+1)+...+W=n=0W/2(W2+n)=(W2+1)W2+W/2(W/2+1)2=W24+W2+W28+W4=38W2+34W\begin{aligned} \frac{W}{2}+\left ( \frac{W}{2} +1\right )+...+W= \\ \sum_{n=0}^{W/2}(\frac{W}{2}+n)= \\ \left ( \frac{W}{2}+1 \right )\frac{W}{2}+\frac{W/2(W/2+1)}{2}= \\ \frac{W^2}{4}+\frac{W}{2}+\frac{W^2}{8}+\frac{W}{4}= \\ \frac{3}{8}W^2+\frac{3}{4}W \end{aligned}

因此,损失率是:138W2+34W\frac{1}{\frac{3}{8}W^2+\frac{3}{4}W}

b)如果W足够大,38W234W\frac{3}{8}W^2\gg \frac{3}{4}W。因此,L8/3W2L\approx 8/3W^2或者W83LW\approx \sqrt{\frac{8}{3L}}

因此可以有平均传输速率:3483LMSSRTT=1.22MSSRTTL\frac{3}{4}\sqrt{\frac{8}{3L}}\frac{MSS}{RTT}=\frac{1.22 \cdot MSS}{RTT\cdot\sqrt{L}}

P46、

a)让w表示在段中测量的最大窗口大小。然后,wMSS/RTT=10Mbpsw * MSS/RTT=10Mbps,如果最大发送速率超过链路,数据包将被丢弃容量。因此,我们拥有W15008/0.15=10106W * 1500 * 8/0.15=10 * 10^6,因此W约为125个片段。

b)当拥挤窗口大小在W/2 WW/2~W之间变化时,平均窗口大小为0.75W=94(93.75)0.75W=94(上限为93.75)。平均吞吐量为9415008/0.15=7.52Mbps94 * 1500 * 8/0.15=7.52 Mbps

c)当数据包丢失时,W变为W/2,即125/2=62。(12562)0.15=9.45(125-62) * 0.15=9.45秒,因为RTT的数量(此TCP连接将其窗口大小从62增加到125)为63。回想一下,每个RTT窗口的大小都会增加一个。

P47、设w表示最大窗口大小。让S表示缓冲区大小。为了简单起见,假设TCP发送器以圆形的方式发送数据包,每个循环对应于RTT。如果窗口大小达到W,则会发生丢失。那么,发送方将其拥塞窗口大小减半,等待W/2的ACK在其开始再次发送数据段之前未完成的数据包。为了确保链路始终支持发送数据,我们需要让链路忙发送数据期间w/(2c)w/(2 * c)(这是发送方等待ACK的时间间隔W/2未完成数据包)。因此,S/C必须不小于W/(2C)W/(2 * C),即SW/2S>=W/2

让TP表示发送器和接收器之间的单向传播延迟。当窗口大小达到最小w/2w/2且缓冲区为空时,我们需要确保链接也在忙发送数据。因此,我们必须具有W/2/(2TP)CW/2/(2TP)>=C,因此,W/2>=C2TPW/2>=C * 2TP

因此,S>=C2TPS>=C * 2TP

P48、

a)让W表示最大窗口大小。当最大发送速率达到链路容量时,当数据包丢弃时,WMSS/RTT=10GbpsW * MSS/RTT=10 Gbps。因此,我们有W15008/0.15=10109W * 1500 * 8/0.15=10 * 10^9,然后W=125000段。

b)当拥塞窗口大小在W/2到W之间变化时,平均窗口大小为0.75W=93750。平均吞吐量为93750 * 1500 * 8/0.1=7.5Gbps。

c) 93750/2 * 0.15/60=117分钟。为了加快窗口增长的速度,我们可以将窗口大小增加一个更大的值,而不是在每个RTT中只增加一个窗口大小。针对这一问题,本文提出了一些协议,如ScalableTCP或高速TCP。

P49、当TCP的平均吞吐量B由下式给出时

B=1.22MSSRTTLB=\frac{1.22 \cdot MSS}{RTT \cdot \sqrt{L}}

我们知道,

L=(1.22MSS/(BRTT))2L=(1.22\ast MSS/(B\ast RTT))^2

由于在两个连续的分组丢失之间,由TCP发送的1/L分组因此,发送方T=(1/L)MSS/BT=(1/L) * MSS/B。因此,我们发现T=BRTT22/(1.222ms)T=B*RTT22/(1.222 * ms),即T是B的函数.

P50、C1与C2的主要区别在于C1的RTT仅为C2的一半。因此,C1在50毫秒后调整其窗口大小,而C2在100毫秒后调整其窗口大小。假设无论何时发生丢失事件,C1在50毫秒后接收,C2在100毫秒后接收。我们还得到了以下TCP简化模型。在每个RTT之后,连接决定是否应该增加窗口大小。对于C1,我们计算前50毫秒链路中的平均总发送速率。如果该速率超过链路容量,则假设C1检测丢失并缩小其窗口大小。但是对于C2,我们计算了前100毫秒链路中的平均总发送速率。如果该速率超过链路容量,则假设C2检测丢失并缩小其窗口大小。请注意,在最后50毫秒内的平均发送速率可能高于链路容量,但最后100毫秒内的平均发送速率小于或等于链路容量,那么在这种情况下,我们假设C1将经历丢失事件,而C2不会。

下表描述了基于上述假设的窗口大小和发送速率的演变。

C1C2
时间(秒)窗口大小(在下一个50毫秒内发送的段数)平均数据发送速率(每个段)第二=窗口/0.05)窗口尺寸(编号。第页的分段在下一个发送下100毫秒)平均数据发送速率(段每秒,=Window/0.1)
010200(在[0-50]秒内)10100(在[0-50]秒内)
505(减小窗口大小作为avg。在最后50毫秒内向链路发送的总速率为300=200 100)100(在[50-5100]秒内)100(在[50-5100]秒内)
1002(减少了窗口大小作为AVG。总发送至最后链接50毫秒为200=100100)405(减少了窗口大小作为AVG。总发送至最后链接100毫秒为250==(200100)/2+(100+100)/250
1501(减少了窗口大小作为AVG。总发送至最后链接50毫秒为90=(4050)2050
2001(不再减少,因为窗口大小已经是1)202 (减少窗口大小作为AVG。发送总数截至2008年12月31日的链接在最后 100毫秒 80= (4020)/2 (5050)/2)20
2501(不再减少,因为窗口大小已经是1)2020
3001(不再减少,因为窗口大小已经是1)201(减少了窗口大小作为AVG。总发送至最后链接100毫秒为40==(2020)/2(2020)/2)10
35024010
400120110
45024010
5001(减少了窗口大小作为AVG。总发送上次连接到链接的速率50毫秒为50=(4010)20110
55024010
600120110
65024010
700120110
75024010
800120110
85024010
900120110
95024010
1000120110

基于上表,我们发现,在1000msec后,C1"s和C2"的窗口大小均为1段。

b)在长期运行中,C1的带宽份额大约是C2的两倍,因为C1具有较短的RTT,仅是C2的一半,因此C1可以将其窗口大小调整两次,快速ASC2。如果我们看上面的表,我们可以每隔200毫秒看到一个周期,例如,850msec至1000msec(含)。在一个周期内,C1的发送速率(40+20+40+20)=120,它是由发送C2给出的三倍大(10+10+10+10)=40。

P51、

a)类似于上一个问题,我们可以在下表中计算它们随时间变化的窗口大小。在2200毫秒后,C1和C2的窗口大小都是相同的。

C1C2
时间(秒)窗口大小在下一个100毫秒内发送的段数量数据发送速度(每秒分段=Window/0.1)窗口大小在下一个100毫秒内发送的段)数据发送速度(每秒分段,=Window/0.1)
015150 (in [0-100]msec]10100 (in [0-100]msec)
100770550
200330220
300110110
400220220
500110110
600220220
700110110
800220220
900110110
1000220220
1100110110
1200220220
1300110110
1400220220
1500110110
1600220220
1700110110
1800220220
1900110110
2000220220
2100110110
2200220220

b)是的,这是由于TCP的AIMD算法,而且这两个连接具有相同的RTT。

c)是的,从上表可以清楚地看出这一点。它们的最大窗口大小为2.

d)不,这种同步将无助于提高链路利用率,因为这两个连接在最小窗口和最大窗口大小之间充当一个单一连接振荡。因此,该链接没有得到充分利用(回想一下,我们假设这个链接没有缓冲区)。中断同步的一种可能方法是在链路中添加一个有限的缓冲区,并在缓冲区溢出之前将数据包随机丢弃到缓冲区中。这将导致不同的连接在不同的时间削减其窗口大小。主动队列管理(AQM)技术有很多种,如RED(随机早期检测)、PI(比例积分AQM)、AVQ(AdaptiveVirtualQueue)和REM(随机指数标记)等。

P52、请注意,W表示最大窗口大小。首先,我们可以找到在TCP期间间隔期间发送的段总数将其窗口大小从W/2更改为并包括W。这通过以下方式给出:

S=W/2(W/2)*(1个单位)(W/2)*(1个单位)2(w/2) * (1\%)3(&C)..(w/2)*(1\%)kK。待修改

我们发现K=log(1%)2K=log(1\%)2,然后S=w(2/1)/(2))S=w*(2/1)/(2))

损耗率L由下式给出:L=1/s=(2%)/(w(2/1))L=1/s=(2\%)/(w*(2/1))。TCP用于将其窗口大小从W/2增加到W的时间由下式给出:kRTT(log(1%)2)RTTk*RTT=(log(1\%)2)*RTT,这显然与TCP的平均吞吐量无关。

注意,TCP的平均吞吐量由下式给出:b=MSSS/((k1)RTT)=MSS/(L(k1)RTT)b=MSS*S/((k1)*RTT)=MSS/(L*(k1)*RTT)

请注意,这与具有平均吞吐量的tcp不同:B=1.22MSSRTTLB=\frac{1.22 \cdot MSS}{RTT \cdot \sqrt{L}},其中L的平方根出现在分母中。

P53、让我们假设1500字节的数据包和100ms的往返时间。从TCP吞吐量方程B=1.22MSSRTTLB=\frac{1.22 \cdot MSS}{RTT \cdot \sqrt{L}}

我们已经有了10Gbps=22(15008)/(.1SRQT(L))10Gbps=22*(1500*8位)/(.1秒*SRQT(L)),或sqrt(l)=14640/(109)=0.00001464sqrt(l)=14640位/(10^9位)=0.00001464,或L=2.141010L=2.14*10(-10)

P54、在t2使用cwnd和ss阈值的早期值的一个优点是,tcp将不必经历缓慢的启动和拥塞避免以提高在t1处获得的吞吐量值。使用这些值的一个缺点是它们可能不再准确。特别是,如果路径在T1和T2之间变得更加拥挤,发送方将向已经(更多)拥挤的路径发送一个大窗口的段值。

P55、

a)服务器将其对y的响应。

b)服务器可以确定客户端确实在Y上。如果是在某个其他服务器上地址欺骗Y,SYNACK将被发送到地址Y,并且主机中的TCP将不发送TCPACK段。即使攻击者要发送适当定时的TCPACK段,它将不知道正确的服务器序列号(因为服务器使用随机初始序列数字。

P56、

a)参考下图,我们认为总延迟是

RTT+RTT+S/R+RTT+S/R+RTT+12S/R=4RTT+14S/RRTT+RTT+S/R+RTT+S/R+RTT+12S/R=4RTT+14S/R

b)类似地,在这种情况下的延迟是:RTT+RTT+S/R+RTT+S/R+RTT+S/R+RTT+8S/R=5RTT+11S/RRTT+RTT+S/R+RTT+S/R+RTT+S/R+RTT+8S/R=5RTT+11S/R

c)类似地,在这种情况下的延迟是:RTT+RTT+s/r+RTT+14s/r=3RTT+15s/rRTT+RTT+s/r+RTT+14s/r=3RTT+15s/r

图21

Back to Index

第四章

复习题4

R1、网络层数据包是一种数据报.路由器根据数据包的IP(第3层)地址转发数据包。链路层交换机根据分组的MAC(第2层)地址转发分组.

R2、数据平面的主要功能是转发数据包,转发数据报从它们的输入链路到它们的输出链路。例如,数据平面S输入端口执行终止传入物理链路的物理层功能在路由器处,执行链路层功能以在另一个路由器上与链路层互操作传入链路的一侧,并在输入端口上执行查找功能。

控制平面的主要功能是路由,即确定数据包从源到目的地的路径。控制平面负责执行路由协议,响应连接的上下链路,与远程控制器通信,并执行管理功能。

R3、路由和转发之间的主要区别在于转发是路由器S将分组从其输入接口传送到其输出接口的本地动作,和转发发生在非常短的时标(通常为几纳秒),并且因此通常以硬件实现。路由是指网络范围确定数据包从来源接收到的端到端路径的过程目的地。路由发生在更长时间的时标上(通常是秒),以及通常用软件实现。

R4、路由器内的转发表的作用是保存条目以确定即将通过切换转发到达数据包的输出链路接口织物。

R5、Internet网络层的服务模式是尽力而为的服务.使用该服务模型,无法保证按发送顺序接收数据包,无法保证其最终交付,不能保证端到端的延迟,也没有最小的带宽保证。

R6、输入端口、交换结构和输出端口在硬件中实现,因为它们的数据报处理功能对于软件实现来说太快了。传统路由器内部的路由处理器使用软件来执行路由协议,维护路由表和附加的链路状态信息,并计算路由器的转发表。此外,SDN路由器中的路由处理器还依赖于与远程控制器通信的软件,以便接收转发表条目并将它们安装在路由器的输入端口中。

数据平面通常由于需要快速而在硬件中实现例如以纳秒时标处理。控制平面通常在软件并以毫秒或秒时间工作,例如用于执行路由协议、响应向上或向下的附加链路,与远程控制器通信,并执行管理功能。

R7、利用阴影复制,在每个输入端口处本地地进行转发查找,而无需调用集中式路由处理器。这种分散的方法避免在路由器内的单个点创建查找处理瓶颈。

R8、基于目的地的转发意味着到达路由器的数据报将仅基于数据报的最终目的地转发到输出接口。广义转发意味着除了它的最终目的地之外,其他因素当路由器确定输出时,还考虑与数据报关联数据报的接口。软件定义的网络采用广义转发,例如,转发决策可以基于数据报的TCP/UDP源或目的端口号,除了其目的IP地址之外。

R9、路由器使用最长的前缀匹配来确定如果数据包的目标地址与转发表中的两个或多个条目匹配,数据包将被转发到哪个链路接口。也就是说,数据包将被转发到与数据包的目的地具有最长前缀匹配的链路接口。

R10、通过存储器进行切换;通过总线进行切换;通过互连网络进行切换。只要所有分组都被转发到不同的输出端口,互连网络就可以并行地转发分组。

R11、如果数据包到达交换矩阵的速率超过交换矩阵速率,则数据包需要在输入端口排队。如果此速率不匹配仍然存在,队列会变得更大和更大,并最终溢出输入端口缓冲区,从而导致数据包丢失。如果交换结构速度至少为N,则可以消除分组丢失输入线速度快,其中N为输入端口的数量。

R12、假设输入和输出线路速度相同,如果数据包到达单个输出端口的速率超过线路速度,则仍可能发生丢包。如果这种速率不匹配仍然存在,队列将变得越来越大,并最终溢出输出端口缓冲区,从而导致数据包丢失。请注意,提高开关结构的速度并不能防止此问题的发生。

R13、HOL阻塞:有时在输入端口队列中首先排队的数据包必须必须等待,因为它想要的输出端口没有可用的缓冲区空间被转发。当发生这种情况时,第一分组后面的所有分组被阻塞,即使它们的输出队列具有容纳它们的空间。发生HOL阻塞发生在输入端口处。

R14、(本问题中的一个错误:第一个问号应改为句号)。只有FIFO才能确保所有数据包按照到达的顺序离开。

R15、例如,携带网络管理信息的分组应当接收优先于常规用户流量。另一个示例是实时语音IP分组可能需要在非实时流量(如电子邮件)上接收优先级。

R16、(问题中的一个错误:不同的→差异)

与RR,所有服务类被同等对待,也就是说,没有任何服务类比任何其他服务类具有优先级。对于WFQ,服务类被不同的对待,也就是说,每个类在任何时间间隔内都可以接收到不同的服务量。当WFQ的所有类都具有相同的服务权重时,WFQ与RR是相同的。

R17、IP数据报中的8位协议字段包含关于目的地主机应该将段传递给哪个传输层协议的信息。

R18、生存时间。

R19、没有。IP报头校验和只计算IP数据包的IP报头字段的校验和,这些字段与IP数据报的传输层段部分不共享公共字节。

R20、IP数据报片段的重新组装是在数据报的目标主机中完成的。

R21、是,每个接口都有一个地址。

R22、11011111 00000001 00000011 00011100

R23、略

R24、8接口;3个转发表。

R25、50%的间接费用。

R26、通常,无线路由器包括DHCP服务器。DHCP用于为5台PC和路由器接口分配IP地址。是的,无线路由器也使用NAT,因为它只从ISP获得一个IP地址。

R27、路由聚合意味着ISP使用单个前缀为多个网络做广告。路由聚合很有用,因为ISP可以使用这种技术向Internet的其他部分宣传ISP拥有的多个网络的单一前缀地址。

R28、即插即用或Zeroconf协议意味着该协议能够自动配置主机的网络相关方面,以便将主机连接到网络中。

R29、网络中的设备的私有网络地址指的是仅对该网络内的那些设备有意义。具有私有数据的数据报网络地址不应存在于较大的公共Internet中,因为私有网络地址可能由他们自己的许多网络设备使用专用网络。

R30、IPv6具有固定长度的报头,其中不包括IPv4的大部分选项标题可以包括。即使IPv6报头包含两个128位地址(源和目标IP地址)整个报头的固定长度为40字节只有。几个领域在精神上是相似的。流量等级,有效载荷长度,下一个 IPv6的报头和跳限分别与服务类型、数据报相似长度,上层协议和在IPv4中生活的时间。

R31、是的,因为整个IPv6数据报(包括头字段)都封装在IPv4数据报中。

R32、转发有两个主要操作:匹配和操作。通过基于目的地的转发,路由器的匹配操作只查找待转发数据报的目标IP地址,路由器的操作操作包括将数据包发送到交换结构到指定的输出端口。使用广义转发,可以在协议栈中不同层上与不同协议相关联的多个报头字段上进行匹配,该操作可以包括将包转发到一个或多个输出端口,跨多个输出接口进行负载均衡,重写报头值(如NAT),故意阻塞/丢弃数据包(如防火墙),将数据包发送到特殊服务器以供进一步处理和操作,等等。

R33、基于目的地的转发的转发表中的每个条目仅包含IP报头字段值和数据包的输出链路接口(匹配IP报头字段值)将被转发。流表的每个条目OpenFlow包括一组报头字段值,输入分组将匹配的一组计数器,这些计数器被更新为数据包与流表匹配条目,以及数据包与流表条目匹配时要采取的一组操作。

R34、“匹配加动作”是指路由器或交换机试图在流表中有某些条目的包的一些报头值之间找到匹配,然后根据该匹配,路由器决定将该数据包转发到哪个接口,甚至决定对该分组进行更多的操作。在基于目的地的转发分组交换机的情况下,路由器只尝试在流表条目与到达数据包的目标IP地址之间找到匹配,并且决定将该数据包转发到哪个接口。在SDN的情况下,可以匹配许多字段,例如IP源地址、TCP源端口和源MAC地址;还可以采取许多操作,例如转发、删除和修改字段值。

R35、可以在OpenFlow 1.0通用转发中匹配的IP数据报中的三个示例头字段是IP源地址、TCP源端口和源MAC地址。三个无法匹配的字段是:TTL字段、数据报长度字段、标头校验和(依赖于TTL字段)。

Back to Index

问题4

P1、

(A)发送给主机H3的数据是通过接口3转发的

目标地址链接接口
H33

b)否,因为转发规则仅基于目标地址。

P2、

a)否,您只能在共享总线上一次发送一个数据包。

b)否,如文本中所述,一次只能进行一次内存读取/写入。共享系统总线。

c)否,在这种情况下,必须在相同的输出总线上在相同的输出总线上发送这两个数据包。同样的时间,这是不可能的。

P3、

a)(n1)d(n-1)d

b)(n1)d(n-1)d

c)0

P4、所需的最小时隙数为3,调度如下。

插槽1:在顶部输入队列中发送X,在中间输入队列中发送Y。

插槽2:在中间输入队列中发送X,在底部输入队列中发送Y,

插槽3:在底部输入队列中发送Z。

实际上,基于一个非空输入队列永远不空闲的假设,第一个时隙总是由在顶部输入队列中发送X和在中间或底部输入队列中发送Y组成,而在第二个时隙中,我们总是可以多发送两个数据报,最后一个数据报可以在第三时间时隙发送。

注意:实际上,如果底部输入队列中的第一个数据报是X,那么最坏的情况是需要4个时隙。

P5、

a)

前缀匹配链路接口
11100000 000
11100000 010000001
11100002
11100001 13
否则3

b)第一个地址的前缀匹配是第5条目的:链路接口3第二个地址的前缀匹配是3nd条目:链路接口2第三个地址的前缀匹配是第4条目的:链路接口3

P6、

Destination Address RangeLink Interface
00000000
through0
00111111
01000000
through1
01011111
01100000
through2
01111111
10000000
through2
10111111
11000000
through3
11111111

接口0的地址数量=26=642^6=64

接口1的地址数量=25=322^5=32

接口2的地址数量=26+25=64+32=962^6+2^5=64+32=96个。

接口3的地址数量=26=642^6=64

P7、

Destination Address RangeLink Interface
11000000
through(32个地址)0
11011111
10000000
through(64个地址)1
10111111
11100000
through(32个地址)2
11111111
00000000
through(128个地址)3
01111111

P8、

1
2
3
223.1.17.0/26 
223.1.17.128/25
223.1.17.192/28

P9、

Destination AddressLink Interface
200.23.16/210
200.23.24/241
200.23.24/212
otherwise3

P10、

Destination AddressLink Interface
11100000 00 (224.0/10)0
11100000 01000000 (224.64/16)1
1110000 (224/8)2
11100001 1 (225.128/9)3
otherwise3

P11、任何IP地址在128.119.40.128至128.119.40.191范围内

四个同等大小的子网:128.119.40.64/28,128.119.40.80/28,128.119.40.96/28, 128.119.40.112/28.

P12、从214.97.254/23开始, 可能的分配是:

a) 子网A: 214.97.255/24 (256 addresses)

子网B: 214.97.254.0/25 - 214.97.254.0/29 (128-8 = 120 addresses)

子网C: 214.97.254.128/25 (128 addresses)

子网D: 214.97.254.0/31 (2 addresses)

子网E: 214.97.254.2/31 (2 addresses)

子网F: 214.97.254.4/30 (4 addresses)

b)为了简化解决方案,假设没有数据报将路由器接口作为最终目的地。此外,标号D,E,F分别用于右上、下和左上的内部子网。

Router 1

Longest Prefix MatchOutgoing Interface
11010110 01100001 11111111Subnet A
11010110 01100001 11111110 0000000Subnet D
11010110 01100001 11111110 000001Subnet F

Router 2

Longest Prefix MatchOutgoing Interface
11010110 01100001 11111111 0000000Subnet D
11010110 01100001 11111110 0Subnet B
11010110 01100001 11111110 0000001Subnet E

Router 3

Longest Prefix MatchOutgoing Interface
11010110 01100001 11111111 000001Subnet F
11010110 01100001 11111110 0000001Subnet E
11010110 01100001 11111110 1Subnet C

P13、纽约大学理工学院的IP地址块为:

NetRange:128.238.0.0-128.238.255.255

CIDR:128.238.0.0/16

斯坦福大学IP地址块为:

NetRange:171.64.0.0-171.67.255.255

CIDR:171.64.0.0/14

华盛顿大学IP地址块为:

NetRange:140.142.255.255

CIDR:140.142.0.0/16

不,OWIS服务不能用于确切地确定特定IP地址的地理位置。

www.maxmin.com用于确定纽约大学理工学院、斯坦福大学和华盛顿大学网络服务器的位置。

纽约大学理工学院Web服务器的位置是

图22

Web服务器斯坦福大学的位置是

图23

麻萨诸塞大学网络服务器的位置

图24

P14、每个片段中数据字段的最大大小=680(因为有20个字节的IP报头)。因此,所需的片段数240020680=4\left \lceil \frac{2400-20}{680} \right \rceil =4。每个片段将具有识别号422。除最后一个片段外,每个片段的大小为700个字节(包括IP报头)。最后一个数据报的大小为360字节(包括IP报头)。这4个片段的偏移量为0,85,170,255。前三个片段中的每一个都有标志=1;最后一个片段将有标志=0。

P15、MP3文件大小=500万字节。假设数据是在TCP段中携带的,每个TCP段也有20个字节的标头。然后,每个数据报可以携带1500-40=1460字节的MP3文件。

需要的数据报数为5×1061460\left \lceil \frac{5 \times 10^6}{1460} \right \rceil=3425。除了最后一个数据报之外,所有的数据报都是1500字节;最后的数据报是960+40=1000字节。注意,这里没有碎片–源主机不会创建大于1500个字节的数据报,并且这些数据报小于链接的MTU。

P16、

a) 家庭地址:192.168.1.1、192.168.1.2、192.168.1.3,路由器接口为192.168.1.4

b)

NAT Translation Table
WAN SideLAN Side
24.34.112.235, 4000192.168.1.1, 3345
24.34.112.235, 4001192.168.1.1, 3346
24.34.112.235, 4002192.168.1.2, 3445
24.34.112.235, 4003192.168.1.2, 3446
24.34.112.235, 4004192.168.1.3, 3545
24.34.112.235, 4005192.168.1.3, 3546

P17、

a)由于所有IP数据包都发送到外部,所以我们可以使用数据包嗅探器记录NAT后面的主机生成的所有IP数据包。由于每个主机都生成一个具有序列号的IP数据包序列,并且有一个不同的(很可能是从一个大空间中随机选择的)初始标识号(ID),因此我们可以将具有连续ID的IP数据包分组到一个集群中。集群的数量是NAT背后的主机数量。

有关更多实用算法,请参阅以下论文(我打赌你不会看,所以我删了)。

b)但是,如果这些识别号码不是按顺序分配的,而是随机分配的,则a)部分中所建议的技术将无法工作,因为在嗅探数据中不会出现集群。

P18、想出这样的技术是不可能的。为了在Arnold和Bernard之间建立一个直接的TCP连接,Arnold或Bob必须启动到另一个连接。但是覆盖Arnold和Bob的NAT丢弃了从WAN端到达的SYN数据包。因此,无论是Arnold还是Bob,如果它们都落后于NAT,就无法启动到对方的TCP连接。

P19、

S2 Flow Table
MatchAction
Ingress Port = 1; IP Src = 10.3..; IP Dst = 10.1..Forward (2)
Ingress Port = 2; IP Src = 10.1..; IP Dst = 10.3..Forward (1)
Ingress Port = 1; IP Dst = 10.2.0.3Forward (3)
Ingress Port = 2; IP Dst = 10.2.0.3Forward (3)
Ingress Port = 1; IP Dst = 10.2.0.4Forward (4)
Ingress Port = 2; IP Dst = 10.2.0.4Forward (4)
Ingress Port = 4Forward (3)
Ingress Port = 3Forward (4)

P20、

S2 Flow Table
MatchAction
Ingress Port = 3; IP Dst = 10.1..Forward (2)
Ingress Port = 3; IP Dst = 10.3..Forward (2)
Ingress Port = 4; IP Dst = 10.1..Forward (1)
Ingress Port = 4; IP Dst = 10.3..Forward (1)

P21、

S1 Flow Table
MatchAction
IP Src = 10.2..; IP Dst = 10.1.0.1Forward (2)
IP Src = 10.2..; IP Dst = 10.1.0.2Forward (3)
IP Src = 10.2..; IP Dst = 10.3..Forward (1)
S3 Flow Table
MatchAction
IP Src = 10.2..; IP Dst = 10.3.0.6Forward (1)
IP Src = 10.2..; IP Dst = 10.3.0.5Forward (2)
IP Src = 10.2..; IP Dst = 10.1..Forward (3)

P22、

S2 Flow Table
MatchAction
IP Src = 10.1.0.1; IP Dst = 10.2.0.3Forward (3)
IP Src = 10.1.0.1; IP Dst = 10.2.0.4Forward (4)
IP Src = 10.3.0.6; IP Dst = 10.2.0.3Forward (3)
IP Src = 10.3.0.6; IP Dst = 10.2.0.4Forward (4)
S2 Flow Table
MatchAction
IP Src =....; IP Dst = 10.2.0.3; port = TCPForward (3)
IP Src =....; IP Dst = 10.2.0.4; port = TCPForward (4)
S2 Flow Table
MatchAction
源IP =....; 目标IP = 10.2.0.3Forward (3)
S2 Flow Table
Match行为
源IP= 10.1.0.1; 目标IP = 10.2.0.3; port = UDPForward (3)

Back to Index

第五章

复习题5

R1、每个路由器控制意味着一个路由算法在每个路由器中运行;转发和路由功能在每个路由器内都受到约束。每个路由器都有一个路由组件,它与其他路由器中的路由组件通信,以计算其转发表的值。在这种情况下,我们说网络控制和数据平面是以单一方式实现的,因为每个路由器作为一个独立的实体来实现自己的控制和数据平面。

R2、逻辑集中控制是指逻辑中央路由控制器计算和分配每个路由器使用的转发表,而每个路由器不计算其转发表,这与每个路由器控件不同。在逻辑集中控制的情况下,数据平面和控制平面在单独的设备中实现;控制平面在中央服务器或多个服务器上实现,数据平面在每个路由器中实现。

R3、集中式路由算法通过使用关于网络的完整的全局知识来计算源和目的地之间的最小成本路径。该算法需要对所有节点之间的连通性和所有链路的代价有完整的了解。实际计算可以在一个站点上运行,也可以在每个路由器的路由组件中复制。一种分布式路由算法通过路由器以迭代的、分布式的方式计算租赁成本路径.使用分散算法,任何节点都没有关于所有网络链路成本的完整信息。每个节点开始时只知道自己直接连接链路的成本,然后通过与其相邻节点进行计算和信息交换的迭代过程,节点逐渐计算出到达目的地或一组目的地的最小成本路径。

OSPF协议是集中式路由算法的一个例子,BGP协议是分布式路由算法的一个例子。

R4、链路状态算法:使用完整的、全局的网络知识来计算源和目的地之间的最小成本路径。距离向量路由:最小成本路径的计算是以迭代的、分布式的方式进行的。节点只知道它应该向其转发数据包的邻居,以便沿着成本最低的路径到达给定的目的地,以及该路径从自身到目的地的成本。

R5、计数-无穷大问题是指距离矢量路由的问题。所需的问题意味着需要很长的时间用于距离矢量路由算法,当链路成本增加时收敛。例如,考虑三个网络节点X、Y和Z。最初假定链路代价是C(x,y)=4,C(x,z)=50,并且C(y,z)=1。距离矢量路由算法的结果是Z的X的路径是Z→Y→X,成本为5(=4+1)。当链路(x,y)的成本从4增加到60时,它将花费44次迭代来运行节点Z的距离矢量路由算法,实现其对X的新的最小成本路径通过其直接链路到X,因此Y也将通过Z实现对X的最低成本路径。

R6、没有。每个AS都具有在AS中路由的管理自主权。

R7、政策:在屁股中,政策问题占主导地位。重要的是,源自给定的流量不能通过另一个特定的AS。类似地,一个给定的可能想要控制它在其他驴之间的过境流量。在AS内部,所有事物名义上都处于相同的管理控制之下,因此政策在选择路线方面所起的作用要小得多。

规模:路由算法及其数据结构处理大量网络路由的能力是跨网络路由中的一个关键问题。在AS中,可伸缩性不太受关注。首先,如果单个管理域变得太大,则始终可以将其划分为两个ASS,并在两个新ASS之间执行互选路由。

性能:由于路由非常面向策略,所以使用的路由的质量(例如性能)往往是次要关注的(也就是说,满足某些策略标准的较长或更昂贵的路由很可能被选择在较短但不符合该标准的路由上)。事实上,我们看到,在驴中,甚至没有与路线相关的成本(除了作为跳数)的概念。然而,在一个单一的地方,这种策略关注点就不那么重要了,这使得路由能够更多地关注在路由上实现的性能水平。

R8、假的。

使用ospf,路由器将其链路状态信息广播到它所属的自治系统中的所有其他路由器,而不仅仅是它的邻近路由器。这是因为使用OSPF,每个路由器都需要构造一个完整的AS拓扑图,然后本地运行Dijkstra的最短路径算法来确定它对所有其他节点的最小代价路径。

R9、OSPF自治系统中的一个区域是指一组路由器,其中每个路由器向同一组中的所有其他路由器广播其链路状态。OSPF可以分层配置成多个区域,每个区域运行自己的OSPF链路状态路由算法。在每个区域内,一个或多个区域边界路由器负责在区域外路由数据包。基于扩展性的考虑,引入了Area的概念,即我们希望为大规模OSPF建立分层路由,而区域是分层路由的重要组成部分。

R10、子网是较大网络的一部分;子网不包含路由器;其边界由路由器和主机接口定义。前缀是CDIR地址的网络部分;它以A.B.C.D/x形式写成;前缀包括一个或多个子网。当路由器在BGP会话中通告前缀时,它在前缀中包含许多BGP属性。在BGP术语中,前缀及其属性是BGP路由(或简单地说是路由)。

R11、路由器使用AS-Path属性来检测和防止循环广告;它们还使用它在多个路径中选择相同的前缀。下一跳属性表示沿通告路径的第一个路由器的IP地址(在接收到广告的外部)到给定的前缀。配置时配置它的转发表,路由器使用下一跳属性。

R12、第1级ISP B可能不会携带其他两个一级ISP之间的过境流量,例如A和C,B与它们有对等协议。为了执行这一政策,ISP B不会向通过C的A路做广告,也不会向经过A的C路做广告。

R13、假的。

BGP路由器可以选择不将自己的标识添加到接收到的路径中,然后将新路径发送到其所有邻居,因为bgp是一种基于策略的路由协议。在下面的场景中可能会发生这种情况。接收路径的目的地是其他路径,而不是BGP路由器的AS,而BGP路由器不想充当传输路由器。

R14、通信层通过OpenFlow等协议负责SDN控制器与受控网络设备之间的通信。通过这一层,SDN控制器控制远程SDN启用交换机、主机或其他设备的操作,并且设备将本地观察到的事件(例如,指示链路故障的消息)与控制器通信。

网络范围的状态管理层提供关于网络主机、链路、交换机和其他SDN控制设备的最新信息.控制器还维护各种受控设备的流表的副本。

网络控制应用层代表SDN控制平面的大脑.该层的应用程序使用SDN控制器提供的API来指定和控制网络设备中的数据平面。例如,路由网络控制应用程序可能确定源和目的地之间的端点路径.另一个网络应用程序可能执行访问控制。

R15、我将在SDN的网络控制应用层实现一个新的路由协议,因为这是一个路由协议决定源和目的地之间端到端路径的层。

R16、下面是通过SDN控制器从控制器南行到被控制设备的消息类型的列表。这些消息的接收方是一个受控的数据包交换机。

  • 配置。此消息允许控制器查询和设置交换机的配置参数。
  • 修改-状态。控制器使用此消息添加/删除或修改交换机流表中的条目,并设置开关端口属性。
  • 阅读状态。此消息由控制器用于从交换机的流表和端口收集统计信息和计数器值。
  • 发送包。此消息由控制器用于发送特定的数据包在受控开关上的指定端口。

网络控制应用程序(作为发送者)也会通过北向接口向控制器发送消息,例如,在控制器的状态管理层中读取/写入网络状态和流表的消息。

R17、从受控设备到控制器的两种消息类型:

  • 流删除消息.它的目的是通知控制器,流表项已被删除,例如,通过超时或接收到的修改状态消息的结果。
  • 端口-状态消息.其目的是将港口状态的变化通知控制器。

从控制器到受控设备的两种消息类型:

  • 修改-状态。其目的是添加/删除或修改交换机流表中的条目,并设置开关端口属性。
  • 读状态。其目的是收集统计数据和计数器值,以查询交换机的流表和端口。

R18、服务抽象层允许内部网络服务应用程序相互通信。它允许控制器组件和应用程序相互调用对方的服务,并订阅它们生成的事件。该层还为通信层中特定的底层通信协议(包括OpenFlow和SNMP)提供了统一的抽象接口。

R19、Echo回复(至Ping),类型0,代码0

目标网络不可达,类型3,代码0

目标主机不可达,类型3,代码1。

源抑制(拥塞控制),类型4代码0。

R20、ICMP警告消息(类型11代码0)和无法到达的目标端口ICMP消息(类型3代码3)。

R21、管理服务器是一个应用程序,通常有一个人在循环中,运行在网络操作中心的集中网络管理站中。它控制网络管理信息的收集、处理、分析和/或显示。在管理服务器中启动操作以控制网络行为,网络管理员使用管理服务器与网络设备交互。

托管设备是驻留在托管网络上的一段网络设备(包括其软件)。托管设备可能是主机、路由器、交换机、中间盒、调制解调器、温度计或其他网络连接的设备.

网络管理代理是在托管设备中运行的进程,该进程与管理服务器通信,在管理服务器的命令和控制下在托管设备上采取本地操作。

管理信息库(MIB)收集与托管网络中的那些托管对象相关联的信息。MIB对象可以是计数器,例如由于IP数据报报头中的错误而丢弃在路由器上的IP数据报的数量,或者在主机上接收到的UDP段的数量,或者诸如特定设备是否正常工作的状态信息。

R22、GetRequest是从管理服务器发送给代理的消息,用于在代理的托管设备上请求一个或多个MIB对象的值。SetRequest是管理服务器用于在托管设备中设置一个或多个MIB对象的值的消息。

R23、SNMP陷阱消息是作为对设备的管理服务器需要通知的托管设备上发生的事件的响应而生成的。它用于将导致MIB对象值更改的异常情况(例如,向上或向下的链接接口)通知管理服务器。

Back to Index

问题5

P1、

y-x-u,y-x-v-u,y-x-w-u,y-x-w-v-u,

y-w-u,y-w-v-u,y-w-x-u,y-w-x-v-u,y-w-v-x-u,

y-z-w-u,y-z-w-v-u,y-z-w-x-u,y-z-w-x-v-u,y-z-w-v-x-u,

P2、

x to z:

x-y-z,x-y-w-z,

x-w-z,x-w-y-z,

x-v-w-z,x-v-w-y-z,

x-u-w-z,x-u-v-w-u-z

x-u-v-w-z,x-u-v-w-y-z

z to u:

z-w-u,

z-w-v-u,z-w-x-u,z-w-v-x-u,z-w-x-v-u,z-w-y-x-u,z-w-y-x-v-u,

z-y-x-u,z-y-x-v-u,z-y-x-w-u,z-y-x-w-y-u,z-y-x-v-w-u,

z-y-w-v-u,z-y-w-x-u,z-y-w-v-x-u,z-y-w-x-v-u,z-y-w-y-x-u,z-y-w-y-x-v-u

z to w:

z-w,z-y-w,z-y-x-w,z-y-x-v-w,z-y-x-u-w,z-y-x-u-v-w,z-y-x-v-u-w

P3、

stepNN^{'}D(t),p(t)D(u),p(u)D(v),p(v)D(w),p(w)D(y),p(y)D(z),p(z)
0x\infty\infty3,x6,x6,x8,x
1xv7,v6,v3,x6,x6,x8,x
2xvu7,v6,v3,x6,x6,x8,x
3xvuw7,v6,v3,x6,x6,x8,x
4xvuwy7,v6,v3,x6,x6,x8,x
5xvuwyt7,v6,v3,x6,x6,x8,x
6xvuwytz7,v6,v3,x6,x6,x8,x

P4、

a)

stepNN^{'}D(x),p(x)D(u),p(u)D(v),p(v)D(w),p(w)D(y),p(y)D(z),p(z)
0x\infty2,t4,t\infty7,t\infty
1xv\infty2,t4,t5,u7,t\infty
2xvu7,v2,t4,t5,u7,t\infty
3xvuw7,v2,t4,t5,u7,t\infty
4xvuwy7,v2,t4,t5,u7,t15,x
5xvuwyt7,v2,t4,t5,u7,t15,x
6xvuwytz7,v2,t4,t5,u7,t15,x

b)

stepNN^{'}D(x),p(x)D(t),p(t)D(v),p(v)D(w),p(w)D(y),p(y)D(z),p(z)
0x\infty2,u3,u3,u\infty\infty
1xv\infty2,u3,u3,u9,t\infty
2xvu6,v2,u3,u3,u9,t\infty
3xvuw6,v2,u3,u3,u9,t\infty
4xvuwy6,v2,u3,u3,u9,t14,x
5xvuwyt6,v2,u3,u3,u9,t14,x
6xvuwytz6,v2,u3,u3,u9,t14,x

c)

stepNN^{'}D(x),p(x)D(u),p(u)D(t),p(t)D(w),p(w)D(y),p(y)D(z),p(z)
0v3,v3,v4,v4,v8,v\infty
1vx3,v3,v4,v4,v8,v11,x
2vxu3,v3,v4,v4,v8,v11,x
3vxut3,v3,v4,v4,v8,v11,x
4vxutw3,v3,v4,v4,v8,v11,x
5vxutwy3,v3,v4,v4,v8,v11,x
6vxutwyz3,v3,v4,v4,v8,v11,x

d)

stepNN^{'}D(x),p(x)D(u),p(u)D(v),p(v)D(t),p(t)D(y),p(y)D(z),p(z)
0w6,w3,w4,w\infty\infty\infty
1wu6,w3,w4,w5,u\infty\infty
2wuv6,w3,w4,w5,u12,v\infty
3wuvt6,w3,w4,w5,u12,v\infty
4wuvtx6,w3,w4,w5,u12,v14,x
5wuvtxy6,w3,w4,w5,u12,v14,x
6wuvtxyz6,w3,w4,w5,u12,v14,x

e)

stepNN^{'}D(x),p(x)D(u),p(u)D(v),p(v)D(w),p(w)D(t),p(t)D(z),p(z)
0y6,y\infty8,y\infty7,y12,y
1yx6,y\infty8,y12,x7,y12,y
2yxt6,y9,t8,y12,x7,y12,y
3yxtv6,y9,t8,y12,x7,y12,y
4yxtvu6,y9,t8,y12,x7,y12,y
5yxtvuw6,y9,t8,y12,x7,y12,y
6yxtvuwz6,y9,t8,y12,x7,y12,y

f)

stepNN^{'}D(x),p(x)D(u),p(u)D(v),p(v)D(w),p(w)D(y),p(y)D(t),p(t)
0z8,z\infty\infty\infty12,z\infty
1zx8,z\infty11,x14,x12,z\infty
2zxv8,z14,v11,x14,x12,z15,v
3zxvy8,z14,v11,x14,x12,z15,v
4zxvyu8,z14,v11,x14,x12,z15,v
5zxvyuw8,z14,v11,x14,x12,z15,v
6zxvyuwt8,z14,v11,x14,x12,z15,v

P5、

uvxyz
v\infty\infty\infty\infty\infty
x\infty\infty\infty\infty\infty
z\infty62\infty0
uvxyz
v103\infty6
x\infty3032
z75250
uvxyz
v10335
x43032
z65250
uvxyz
v10335
x43032
z65250

P6、这个问题的措辞有点含糊。我们的意思是,“第一次运行算法时的迭代次数”(也就是说,假设节点最初拥有的唯一信息是其最近的邻居的成本)。我们假设该算法是同步运行的(即,在一个步骤中,所有节点同时计算它们的距离表,然后交换表)。

在每次迭代时,节点与其邻居交换距离表。因此,如果您是节点A,而您的邻居是B,则B的所有邻居(它们都是您的一两跳)在一次迭代后(即B告诉他们它对您的成本后)将知道一到两个跳到您的最短代价路径。

d是网络的“直径”-网络中任何两个节点之间最长的无环路路径的长度。使用上面的推理,经过d-1迭代后,所有节点都将知道d或更少跳到所有其他节点的最短路径代价。由于任何大于d跳的路径都会有循环(因此比去掉循环的路径花费更大),该算法最多会在d-1迭代中收敛。

旁白:如果DV算法是由于链路成本的变化而运行的,则在收敛之前,所需迭代次数不存在先验界,除非还指定了链路成本的约束。

P7、

a)Dx(w)=2,Dx(y)=4,Dx(u)=7Dx(w) = 2, Dx(y) = 4, Dx(u) = 7

b)首先考虑如果c(xy)c(x,y)发生变化会发生什么。如果c(xy)c(x,y)变大或变小(只要c(xy)>=1c(x,y)>=1),那么从x到u的最小成本路径仍然至少要花费7。因此c(xy)c(x,y)的改变(如果c(xy)>=1)c(x,y)>=1)不会使x通知其邻居。

如果c(xy)=σ<1c(x,y)=\sigma`<`1,那么最小成本的路径现在通过y,并有成本σ+6\sigma+6

现在考虑如果c(xw)c(x,w)改变。如果c(xw)=ε<=1c(x,w)=\varepsilon<=1,那么u的最小成本路径将继续通过w,其成本将更改为5+ε5+\varepsilon; x将通知它的邻居这个新的成本。如果c(xw)=σ>6c(x,w)=\sigma>6,那么最小成本路径现在经过y并花费了11;x将再次通知它的邻居这个新成本。

c)链路成本c(xy)c(x,y)(以及只要c(xy)>=1c(x,y)>=1)中的任何更改都不会导致x通知其邻居关于u的新的最小成本路径。

P8、

结点x表

xyz
x034
y\infty\infty\infty
z\infty\infty\infty
xyz
x034
y306
z460

结点y表

xyz
x\infty\infty\infty
y306
z\infty\infty\infty
xyz
x034
y306
z460

结点z表

xyz
x\infty\infty\infty
y\infty\infty\infty
z460
xyz
x034
y306
z460

P9、不,这是因为降低链路成本不会导致循环(由该链路的两个节点之间的下一跳关系引起)。将两个节点连接到一个链路相当于将链路重量从无限降到有限权。

P10、在每一步中,节点距离向量的每一次更新都是基于Bellman-Ford方程,即只减少距离向量中的这些值。价值没有增加。如果没有更新,则不会发送消息。因此,D(X)是不增加的。由于这些代价是有限的,那么最终距离向量将稳定在有限的步骤。

P11、a)

Router zInforms w, Dz(x)=\infty
Informs y, Dz(x)=6
Router wInforms y, Dw(x)=\infty
Informs z, Dw(x)=5
Router yInforms w, Dy(x)=4
Informs z, Dy(x)=4

b) 是的,会有一个数不胜数到无穷大的问题。下表显示了路由收敛过程。假设在t0时间发生链路成本更改。在时间T1,y更新其距离向量并通知邻居w和z。在下表中,“\to”表示“通知”。

timet0t1t2t3t4
Z\to w, Dz(x)=\inftyNo change\to w, Dz(x)=\infty
\toy, Dz(x)=6\toy, Dz(x)=11
W\toy, Dw(x)=\infty\toy, Dw(x)=\inftyNo change
\toz,Dw(x)=5\toz,Dw(x)=10
Y\tow, Dy(x)=4\tow, Dy(x)=9No change\tow, Dy(x)=14
\toz, Dy(x)=4\toz, Dy(x)=\infty\toz, Dy(x)=\infty

我们看到w,y,z在计算路由器x的开销时形成一个循环。如果我们继续上面表中所示的迭代,那么在T27,z通过它与x的直接联系检测到它对x的最小成本是50。在T29,w通过z得知它对x的最小成本为51。在t30,y将其最小成本更新为52(通过w)。最后,在T31,没有更新,路由是稳定的。

timet27t28t29t30t31
Z\tow, Dz(x)=50via w, \infty
\toy, Dz(x)=50via y, 55
via z, 50
W\toy, Dw(x)=\toy, Dw(x)=51via w, \infty
\toz, Dw(x)=50\toz, Dw(x)= \inftyvia y, \infty
via z, 51
Y\tow, Dy(x)=53\tow, Dy(x)= \inftyvia w, 52
\toz, Dy(x)= \infty\toz, Dy(x)= 52via y, 60
via z, 53

c)切断y和z之间的连接。

P12、由于在BGP、循环中从AS到目的地都提供了完整的路径信息检测是简单的-如果BGP对等体接收到包含自己的AS号的路由AS路径,然后使用该路由将导致环路。

P13、选择的路径不一定是最短的路径.回顾一下,在路线选择过程中有许多问题需要考虑。由于经济原因,较长的无环路路径很可能比较短的无环路路径更可取。例如,AS可能更愿意将流量发送给一个邻居,而不是另一个距离较短的邻居。

P14、

a) eBGP

b) iBGP

c) eBGP

d) iBGP

P15、

a)I1,因为这个接口开始从1D到网关路由器1c的最低成本路径。

b)I2。这两种路由都有相等的路径长度,但I2开始的路径有最近的下一跳路由器。

c)一.1。I1开始具有最短路径的路径。

P16、C迫使B在东海岸将所有B的流量移交给D的方法之一是C只在东海岸通过其东海岸凝视点登出其到D的路线。

P17、

图25

在上述解决方案中,X不知道AC链路,因为X没有接收到包含AC链路的w或y的广告路由(即,X在到达目的地的路径上没有接收包含A和AS C的广告。

P18、BitTorrent文件共享和Skype P2P应用程序。考虑一个BitTorrent文件共享网络,其中对等点1、2和3分别位于存根网络W、X和Y中。由于BitTorrent的文件共享机制,使得Peer 2有可能从Peer 1中获取数据块,然后将这些数据块转发到3,这相当于最终被发送到存根网络Y的B转发数据。

P19、A应该建议B两条路线,A-W和A-V。

A应该只向C建议一条路线,A-V。

C作为路径接收:B-A-W、B-A-V、A-V。

P20、由于Z想要传输Y的流量,Z将以这种方式向Y发送路由广告。这样,当Y有一个发送到可以通过Z到达的IP的数据报时,Y将可以选择通过Z发送该数据报。但是,如果Z将路由转发到Y,Y可以将这些路由重登到X。因此,在这种情况下,Z无法阻止从X到Z的传输。

P21、请求响应模式通常会有更多的开销(以交换消息的数量来衡量),原因有几个。首先,经理收到的每一条信息都需要两条消息:投票和响应。陷阱只向发送方生成一条消息。如果管理器只希望在发生条件时才得到通知,那么轮询的开销就会更大,因为许多轮询消息可能表明等待条件尚未发生。陷阱只在条件发生时生成消息。

在发生事件时,陷阱还会立即通知经理。使用轮询,管理器需要等待半个轮询周期(平均),从事件发生到经理(通过其轮询消息)发现事件已经发生。

如果丢失了陷阱消息,托管设备将不会发送其他副本。如果一个投票消息或它的响应丢失了,经理就会知道已经丢失了一条消息(因为答复永远不会到达)。因此,如果需要,经理可以重新投票。

P22、通常,最需要网络管理的时间是在压力时,网络可能会严重拥挤,数据包正在丢失。在TCP上运行SNMP时,TCP的拥塞控制将导致SNMP在网络管理器需要发送SNMP消息时退出并停止发送消息。

Back to Index

第六章

复习题6

R1、交通方式,如汽车、公共汽车、火车、汽车。

R2、虽然每个链路保证通过链路发送的IP数据报将在链路的另一端无错误地被接收,但不能保证IP数据报将以适当的顺序到达最终目的地。使用IP,同一TCP连接中的数据报可以在网络中采取不同的路由,从而导致出现故障。仍然需要TCP以正确的顺序向应用程序的接收端提供字节流。此外,IP可能由于路由循环或设备故障而丢失数据包。

R3、帧:IP和TCP中也有帧;链路访问;可靠传递:TCP中也有可靠的传递;流控制:TCP中也有流控制;错误检测:IP和TCP中也有错误检测;错误更正;全双工:TCP也是全双工。

R4、当一个节点正在发送时,它将开始从另一个节点接收一个分组,这将发生冲突。

R5、时隙ALOHA:1、2和4(时隙ALOHA仅部分分散,因为它要求所有节点中的时钟是同步的)。令牌环:1,2,3,4。

R6、在第5次碰撞之后,适配器从0,1,2,…中选择31。它选择4的概率是1/32。等待204.8微秒。

R7、在民意测验中,讨论领袖一次只允许一个参与者说话,每个参与者都有机会以一种循环的方式交谈。对于象征性的戒指,没有讨论的领导者,但有葡萄酒杯,参与者轮流持有。只有当参与者拿着酒杯时,才允许参与者说话。

R8、当节点发送帧时,节点必须等待帧在整个环周围传播,然后节点才能释放令牌。因此,如果L/RL/Rtpropt_{prop}小,那么协议就会效率低下。

R9、2482^{48}个MAC地址;2322^{32}个IPv4地址;21282^{128}个IPv6地址。

R10、C的适配器将处理这些帧,但是适配器不会将数据报传递到协议栈中。如果使用LAN广播地址,则C的适配器将处理帧并将数据报传递到协议栈。

R11、在广播帧中发送ARP查询,因为查询主机没有将哪个适配器地址对应于所述IP地址。对于响应,发送节点知道应该将响应发送到的适配器地址,因此不需要发送广播帧(必须由LAN上的所有其他节点处理)。

R12、不可能。每个LAN都有自己的一组不同的适配器,每个适配器都有一个唯一的LAN地址。

R13、这三种以太网技术具有相同的帧结构。

R14、2(内部子网和外部因特网)

R15、在802.1Q中有一个12位的VLAN标识符。因此,可以支持212=40962^{12}=4096个VLAN。

R16、我们可以把N个开关串在一起。第一个也是最后一个交换机将使用一个端口进行中继;中间的N-2交换机将使用两个端口。因此,端口总数为2+2(N2)=2N22+2(N-2)=2N-2端口。

Back to Index

问题6

P1、

1
2
3
4
5
1 1 1 0 1 
0 1 1 0 0
1 0 0 1 0
1 1 0 1 1
1 1 0 0 0

P2、假设我们从初始的二维奇偶矩阵开始:

1
2
3
4
0 0 0 0 
1 1 1 1
0 1 0 1
1 0 1 0

由于在第2行第3栏中出现了一些错误,第2行和第3列的奇偶校验现在在下面的矩阵中是错误的:

1
2
3
4
0 0 0 0 
1 1 0 1
0 1 0 1
1 0 1 0

现在假设第2行、第2列和第3列有一个位错误。第2行的奇偶校验现在是正确的!列2和3的奇偶校验是错误的,但是我们不能检测错误发生在哪一行!

1
2
3
4
0 0 0 0
1 0 0 1
0 1 0 1
1 0 1 0

上述示例显示,可以检测到双比特错误(如果没有纠正)。

P3、

1
2
3
4
5
6
7
8
9
10
11
12
13
  01001100 01101001 
+ 01101110 01101011
------------------------------
10111010 11010100
+ 00100000 01001100
------------------------------
11011011 00100000
+ 01100001 01111001
-----------------------------
00111100 10011010 (溢出,然后绕过去)
+ 01100101 01110010
------------------------------
10100010 00001100

和的补码是: 01011101 11110011

P4、a) 要计算网络检验值,我们将16位量的值加起来:

1
2
3
4
5
6
7
00000001 00000010 
00000011 00000100
00000101 00000110
00000111 00001000
00001001 00001010
-------------------------
00011001 00011110

和补码为:11100110 11100001
b) 要计算网络检验值,我们将16位量的值加起来:

1
2
3
4
5
6
7
01000010 01000011 
01000100 01000101
01000110 01000111
01001000 01001001
01001010 01001011
-------------------------
10011111 10100100

和补码为:01100000 01011011

c) 要计算网络检验值,我们将16位量的值加起来

1
2
3
4
5
6
7
01100010 01100011 
01100100 01100101
01100110 01100111
01101000 01101001
01101010 01101011
-------------------------
00000000 00000101

和补码为:11111111 11111010

P5、如果我们将10011分为1010101010 0000,我们可以得到1011011100,剩余R=0100。注意G=10011是CRC-4-ITU标准。

P6、

a)我们得到1000110000,剩余R=0000。

b)我们得到0101010101,剩余R=1111.

c)我们得到1011010111,剩余R=1001.

P7、

a)在不失去通用性的情况下,假设ith位被翻转,其中0<=i<=d+r10<= i <= d+r-1并假设最不重要的位是第0位。单比特错误意味着接收到的数据为K=D2R XOR R2iK=D * 2R\ XOR\ R2 i。很明显,如果我们把K除以G,那么提醒不是零。通常情况下,如果G包含至少两个1,则总是可以检测到单个比特错误。

b)这里的关键洞见是G可以被11(二进制数)除以,但任何奇数的1‘s不能除以11。因此,奇数位错误的序列(不一定是连续的)不能除以11,因此不能被G除以G。

P8、a)

E(p)=NP(1p)N1E(p)=NP(1-p)^{N-1}

E(p)=N(1p)N1Np(N1)(1p)N2=N(1p)N2((1p)p(N1))E'(p)=N(1-p)^{N-1}-Np(N-1)(1-p)^{N-2}=N(1-p)^{N-2}((1-p)-p(N-1))

b)

E(p)=N1N(11N)N1=(11N)N1=(11N)N11NE(p^\ast )=N\frac{1}{N}(1-\frac{1}{N})^{N-1}=(1-\frac{1}{N})^{N-1}=\frac{(1-\frac{1}{N})^N}{1-\frac{1}{N}}