一、电路交换&分组交换
考虑一个应用程序以稳定的速率传输数据(例如,发送方每 k 个时间单元产生一个 N 比特 的数据单元,其中 k 较小且固定)。另外,当这个应用程序启动时,他将连续运行相当长的 一段时间。回答下列问题: a、是分组交换网还是电路交换网更为合适这种应用? 电路交换网,因为应用将以稳定速率,持续长时间运行,因此可以为其保留带宽,可保证应用程序以稳定的速率接收数据 b、假定使用了分组交换网,并且该网中的所有流量都来自如上所述的这种应用程序,此外, 假定该应用程序数据传输速率的总和小于每条链路的各自容量。需要某种形式的拥塞控制吗?为什么? 不需要,应用程序数据传输速率总和小于每条链路容量 考虑两台主机 A 和 B 由一条速率为 Rbps 的链路连接,假定这两台主机相隔 m 米,该链路的传输速率为 s m/s 主机 A 向 B 发送长度为 L 比特的分组 a、用 m 和 s 来表示传播时延 因为传播时延是在连路上的时间,所以是距离/传输速度=m/s b、用 L 和 R 来确定该分组的传输时间 分组传输时间=分组大小/链路速率=L/R c、忽略处理和排队时延,得出端到端时延的表达式 端到端时延=分组处理时间+传播时延=L/R+m/s d、假定主机 A 在时刻 t=0 开始传输该分组,在时刻 t=dtrans,该分组的最后一个比特在什 么地方? dtrans时,最后一个比特刚刚离开主机A e、假定 dprop 大于 dtrans,在时刻 dtrans,该分组的第一个比特在何处 dprop>dtrans,代表第一个比特在链路上 f、假定 dprop 小于 dtrans,在时刻 dtrans,该分组的第一个比特在何处 已经到达主机B g、假定 s=2.5x10^8,L=120 比特,R=56kbps,求出使 dprop 等于 dtrans 的距离 m 要求传播时延=传输时延,即m/s=L/R,代入计算可以知道m=536KM 假定用户共享一条 3Mbps 的链路,又设每个用户传输时要求 150kbps ,但是每个用户仅有 10% 的时间传输 (参见 1. 3 节关于分组交换与电路交换的对比的讨论) a、当时用电路交换时,能够支持多少用户? 电路交换独占某一部分链路(时分或频分),要求链路充分利用,则为3mbps/150kbps=20 b、假定使用分组交换,求出给定用户正在传输的概率 分组交换不需要独占某一部分链路,故P=0.1 a、假定有 N 个分组同时到达一条当前没有分组传输或排队的链路。每个分组长为 L,链路传输速率为 Rc,对 N 个分组而言,其平均排队时延是多少? 第一个分组的排队时延为 0, 第二个 L/R, 第三个 2L/R,第 N 个 (N-1)L/R,因此平均排 队时延为 (L/R + 2L/R + … + (N-1)L/R) / N = (N-1)L/2R b、现在假定每隔 LN/R 秒有 N 个分组同时到达链路。一个分组的平均排队时延是多少? 当下一批 N 个分组到达时,上一批已经传完,因此平均排队时延为 (N-1)L/2R 假定两台主机 A 和 B 相隔 20000km,由一条直接的 R =2Mbps 的链路相连 假定跨越该链路 的传播速率是 2.5x108 m/s a、计算带宽-时延积 Rxtprop tprop = 20000km / 2.5*10^8m/s = 0.08s;R * tprop = 1.6 * 105 b b、考虑从主机 A 到主机 B 发送一个 800000 比特的文件。假定该文件作为一个大的报文连续发送。在任何给定的时间,在链路上具有的比特数量最大值是多少? 就是带宽-时延积=160000bits c、给出带宽-时延积的一种解释。 链路上的比特数量最大值 d、在该链路上一个比特的宽度(以米计)是多少?它比一个足球场更长吗? 宽度 = 链路长度/带宽延迟乘积=20 000km/160 000 bits = 125 m e、根据传播速率 s、带宽 R 和链路 m 的长度,推导出一个比特宽度的一般表示式 s/R 在包括因特网的现代分组交换网中,源主机将长应用层报文(如一个图像或音乐文件)分段为较小的分组并向网络发送。接收方则将这些分组重新装配为初始报文,我们称这个过程为报文分段。图1-27 显示了一个报文在报文不分段或报文分段情况下的端到端传输。考虑一个长度为8x10^6比特的报文,他在图1-27中从源发送到目的地。假定在该图中的每段链路是 2Mbps 忽略传播、排队和处理时延 a、考虑从源到目的地发送该报文且没有报文分段 从源主机到第一台分组交换机移动报文需要多长时间?记住,每台交换机均使用存储转发分组交换,从源主机移动该报文到目的主机需要长时间? 第一个分组交换需要的时间为=报文大小/链路速率= 8 * 10^6 / 2 * 10^6 sec = 4 sec 源主机到目的主机有三段链路,需要时间为 3 * 4 = 12 sec b、现在假定该报文被分段为800个分组,每个分组10000比特长 从源主饥移动第一个分组到第一台交换机需要多长时间?从第一台交换机发送第一个分组到第二台交换机,从源主机发送第二个分组到第一台交换机各需要多长时间?什么时候第二个分组能被第一台交换机全部收到? 从源主机发送第一个分组到第一台交换机1 * 10^4 / 2 * 10^6 sec = 5 m sec 从第一台交换机发送第一个分组到第二台交换机时间 = 从源主机发送第二个分组到第一台交换机时间 = 2 * 5 m sec = 10 m sec c、当进行报文分段时,从源主机向目的主机移动该文件需要多长时间?将该结果与( a) 的答案进行比较并解释之 第一个分组到达目的地时,花费的时间为 5 m sec * 3 = 15 m sec,之后,每隔 5 秒将会有一个分组被接收,一共有 800 个分组 ,除去第一个分组,传输该文件所需要的时间为 15 m sec + 799 * 5 msec = 4.01 sec。 d、除了减小时延外,使用报文分段还有什么原因? 便于检测错误并重传;不分段的大包容易使路由器缓存不足导致丢包; e、讨论报文分段的缺点 分组需要排序;需加上首部信息
二、拥塞控制
UDP TCP使用反码来汁算它们的检验和。假设你有下面3个比特字节::01010011, 01100110, 01110100。这些8比特字节和的反码是多少?(注意到尽管 UDP TCP使用16比特的字来计算检验和,但对于这个问题,你应该考虑8比特和)。写出所有工作过程。UDP为什么要用该和的反码,即为什么不直接使用该和呢?使用该反码方案,接收方如何检测出差错? 比特的差错将可能检测不出来吗? 比特的差错呢? 首先,来计算一下反码 01010011+01100110+01110100=00101110 取反得到00101110 检测的时候,只需要检测当前的三个字节相加取反(即计算当前的检验和)与发送过来的检验和是否相等,如果不相等则证明发生了错误。但是如果有偶数个错误就有可能发送忽略,比方说第一个字节和第二个字节的相同位发生了错误,此时相加的结果不会有影响。 考虑我们改正协议rdt2.0的动机。试说明如图3-57所示的接收方与如图3-11所示的发送方运行时,接收方可能会引起发送方和接收方进入死锁状态,即双方部在等待不可能发生的事件。 首先来看看发送方,发送方开始处于等待上面的调用1的状态,而此时接收者处于等待下面的1的状态。 然后,发送方发送序列号为1的数据包,并进入等待ack或nak1状态 如果,接收方接收到了序列号为1的数据包,将会发送一个ACK,并进入从下面等待0的状态,等待序列号为0的数据包 此时,如果ack损坏或者丢失,那么发送方将会持续发送序列号为1的数据包,而此时接收方在等待序列号为0的数据包,所以会进行nak操作 此时,进入死锁 考虑一个GBN协议,其发送方窗口为4,序号范围为1024。假设在时刻t,接收方期待的下一个有序分组的序号是k。假设媒体不会对报文重新排序。回答以下问题: a、在t时刻,发送方窗口内的报文序号可能是多少?论证你的回答 在这里的窗口长度为N=4,假设接收方已经接收到分组k-1,并且已经对该分组以及之前的所有分组进行了确认。如果所有这些确认信息都已经被发送方接收,那么发送方的窗口是[k, k+N-1]。接下来假设所有这些ACK都没有被发送方接收。在这种情况下,发送方的窗口包含k-1和直到包括k-1之前的N的分组.因此发送方的窗口是[k-N, k-1]。因此,发送方的窗口大小是4,并且从[k-N, k+N-1]中的某个数开始。 b、在t时刻,在当前传播回发送方的所有可能报文中, ACK字段的所有可能值是多少?论证你的回答 这就是第二种情况,即发送了[k-4,k-1]的分组,并正在等待这些分组对应的ACK。因为如果是第一种情况,说明此时已经成功发送了之前窗口内的所有分组,而当前窗口内的分组还没有开始发送,所以不存在等待的ACK,此时相当于是接收方在等待发送方。 对下面的问题判断是非,并简要地证实你的回答: a、对于 SR 协议,发送方可能会收到落在其当前窗口之外的分组的 ACK 是对的,因为如果发生了超时,此时会自动默认为分组已经丢失,而可能并没有丢失,只是由于链路速率问题,对应的ACK没有到达。简单地讲就是,如果第一次超时后重发了分组,而在重发之后收到了分组的ACK,此时会移动窗口,但是第二次分组(重发)的ACK还没有到达。 b、对于 GBN 协议,发送方可能会收到落在其当前窗口之外的分组的 ACK 是对的,因为GBN是回退N步的窗口,也可能发生因为超时导致第二次分组(重发)的ACK在窗口移动之后到达 c、当发送方和接收方窗口长度都为1时,比特交替协议与 SR 协议相同 是对的,因为此时比特交替协议中不存在一个顺序的概念,因为只有一个数据包 d、当发送方和接收方窗口长度都为1时,比特交替协议与 GBN 协议相同 是对的,因为此时比特交替协议中不存在一个顺序的概念,因为只有一个数据包,即此时SR协议和GBN协议是等效的 主机A和B经一条TCP连接通信,并且主机B已经收到了来自A的最长为126字节的所有字节。假定主机A随后向主机B发送两个紧接着的报文段。第一个和第二个报文段分别包含了80字节和40字节的数据。在第一个报文段中,序号是127,源端口号是302,目的地端口号是80。无论何时主机B接收到来自主机A的报文段,它都会发送确认。 a、在从主机A发往B的第二个报文段中,序号、源端口号和目的端口号各是什么? 在TCP中,报文段的序号为最小字节的序号,也就是说,第二个报文段的序号为127+80=207,同理,如果还有第三个报文段,则第三个报文段的序号为207+40=247。而源端口号和目的端口号都是一致的,即302和80 b、如果第一个报文段在第二个报文段之前到达,在第一个到达报文段的确认中,确认号、源端口号和目的端口号各是什么? TCP报文的确认号是下一个期待报文(有序)的报文序号,也就是说,第一个报文序号为127,他的下一个报文是207,所以第一个到达报文的确认号为207,源端口号为302,目的端口号为80 c、如果第二个报文段在第一个报文段之前到达,在第一个到达报文段的确认中,确认号是什么? TCP报文的确认号是下一个期待报文(有序)的报文序号,由于第二个报文段在第一个之前到达,此时是一个无序的状态,他需要先得到第一个报文段以得到一个有序的状态,再期待下一个报文段,所以,确认号不是下一个报文段的247,而是第一个报文段的序号127。 d、假定由A发送的两个报文段按序到达 。第一个确认丢失了而第二个确认在第一个超时间隔之后到达。画出时序图,显示这些报文段和发送的所有其他报文段和确认 (假设没有其他分组丢失)。对于图上每个报文段,标出序号和数据的字节数量;对于你增加的每个应答,标出确认号 就是三个阶段 首先是发送,和正常接收,此时会返回两个ACK,确认号分别是207和247 然后由于207的确认迟迟不到,所以触发了超时条件,会重新发送一个127,而接收方接收到127后,发现已经存在,说明127的ACK发生了丢失,但由于207已经到了,所以就继续顺延,发送一个127的ACK,但其中的确认号是下一个期待报文序号247 考虑图 3-58 假设 TCP Reno是一个经历如上所示行为的协议。回答下列问题 在各种情况中,简要地论证你的回答 a. 指出TCP慢启动运行时的时间间隔 慢启动窗口长度是指数型增长,所以很明显,有两次,分别是[1,6]和[23,26] b. 指出TCP拥塞避免运行时的时间间隔 拥塞避免窗口长度是线性增长的,所以很明显,有两次,分别是[6,16]和[17,22] c. 在第16个传输轮回之后,报文段的丢失是根据3个冗余 ACK 还是根据超时检测出来的? 因为第16个时并没有降到1重新开始,所以很明显是3个冗余ACK造成的 d. 在第22个传输轮回之后,报文段的丢失是根据3个冗余 ACK 还是根据超时检测出来的? 因为第22个时从1重新开始,所以很明显是超时检测出来的 e. 在第1个传输轮回里,sstbresh的初始值设置为多少? 第1个轮回中,慢启动最大到32,然后一点一点向上增加,所以这个时候ssthresh的初始值应该为32,直到第6个轮回后才开始发生改变 f. 在第18个传输轮回里,ssthresh的值设置为多少? 第18个轮回是在发生了冗余ACK之后,发生了减半,即从42到21,然后继续进行拥塞避免算法,在一点点增加,如果从17开始计算,则18的时候为22;如果从18开始计算,那么应该为21 g. 在第24个传输轮回里,ssthresh的值设置为多少? 第24个轮回是发生了超时之后,此时阈值减半,超时发生在第22轮,此时阈值为29.丢包减半后重新开始,此时不会影响阈值,所以阈值一直为14 h. 在哪个传输轮回内发送第70个报文段 [1,6]是指数发送,即分别是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.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63;然后进入指数增加状态,所以第70个分组是在第7轮发送的 i. 假定在第26个传输轮回后,通过收到3个冗余ACK检测出有分组丢失,拥塞的窗口长度和ssthresh 的值应当是多少? 第26个时已经进行了三次+1操作,然后容易会设置为当前的一般,即阈值为4,窗口长度为7 j. 假定使用 TCP Tahoe (而不是TCP Reno),并假定在第16个传输轮回收到3个冗余ACK。在第19个传输轮回,ss Lhresh 和拥塞窗口长度是什么? tahoe与reno的区别是tahoe没有快速恢复,如果是冗余ACK,也会将窗口大小置为1重新慢启动。阈值为21,窗口大小为4 k. 再次假设使用TCPTahoe,在第22个传输轮回有一个超时事件。从第17个传输轮回到第22个传输轮回(包括这两个传输轮回) ,一共发送了多少分组? 这里面是一个指数增加的过程,超时导致从1开始重启,所以 17轮 1包(慢启动状态) 18轮 2包 19轮 4包 20轮 8包 21轮 16包 22轮 21包(仍然是慢启动状态,但由于不能超过阈值,所以就只能取到阈值) 综上,为1+2+4+8+16+21=52包
三、网络层
书中我们使用了术语面向连接服务来描述运输层,使用了术语连接服务来描述网络层,为何有这样微妙的差异? 简单地讲,就是因为运输层使用了网络层所提供的连接服务。在运输层中,他将每一台电脑看成一个对象,运输层所需要只是调用网络层封装好的函数,在任意两个对象之间请求建立连接,而不需要知道连接具体是如何建立的;网络层则需要接收运输层的请求,并在两个具体的电脑对象之间依靠现有的物理链路尝试建立连接,并传输运输层想要传输的数据。所以说运输层是面向连接的,而网络层是负责连接服务的。 考虑具有前缀128.119.40.128/26的一个子网。给出能被分配给该网络的一个IP地址(形式为xxx.xxx.xxx.xxx)的例子。假定一个ISP拥有形式为128.119.40.64/26的地址块。假定它要从该地址块生成4个子网,每块具有相同数量的IP地址。这4个子网(形式a.b.c.d/x)的前缀是什么? 前缀不变,后6位比特可变,故IP地址范围为128.119.40.128 ~ 128.119.40.191 由于需要产生四个子网,每个子网需要具有相同的IP地址数,所以只需要从后6位比特中选择高2位作为划分的前缀,每个子网可以有16个IP地址 四个字网的前缀为:128.119.40.64/28、128.119.40.80/28、128.119.40.96/28、128.119.40.112/28 考虑向具有700字节MTU的一-条链路发送–个2400字节的数据报。假定初始数据报标有标识号422。将会生成多少个分片?在生成相关分片的数据报中的各个字段中的值是多少? 由于IP数据报的首部字节为20,故每个数据字段的最大大小=700-20=680,所以需要(2400-20)/680=>4个数据报。其中最后一个数据报不满。 标志号:均为422 长度:前三个都是700,最后一个为2400-20-3*680+20=360字节 偏移量:0/85/170/255 flag:前3个的flag为1,最后一个为0 考虑下面的网络。对于标明的链路费用,用Dijkstra最短路径算法计算出从x到所有网络节点的最短路径。通过计算一个类似于表4-3的表,说明该算法是如何工作的。 首先将x作为根节点,将x的最直接的关联点y、z、v、w加入到表中 然后,从y、z、v、w中选择最近的v,将其作为第一跳转点,进行路径长度更新 以此类推,得到上表 从结点x到结点t的最少费用为7,路径为xvt 从结点x到结点u的最少费用为6,路径为xvu 从结点x到结点v的最少费用为3,路径为xv 从结点x到结点w的最少费用为6,路径为xw 从结点x到结点y的最少费用为6,路径为xy 从结点x到结点z的最少费用为8,路径为xz 考虑下图所示的网络。假设每个节点初始时知道到每个邻居的费用。考虑距离向量算法,并给出节点z的距离表表项。 距离向量法,首先需要得到所有的点的一张二维相连表,即初始表格,如下 然后,选择最小的uv线路进行更新,将v点接入后,得到更新后的表格 然后,选择y点进行更新,得到更新后的表格,以此类推
四、链路层
假设某分组的信息内容是比特模式1110 0110 1001 1101,并且使用了偶校验方案。在采用二维奇偶校验方案的情况下,包含该检验比特的字段的值是什么?你的回答应该使用最小长度检验和字段。 首先,确定二维奇偶校验表格 有偶数个1则为0,否则为1。 考虑5比特生成多项式,G=10011,并且假设D的值为1010101010。R的值是什么。 由CRC得到r=b(G)-1=4 故R=0100 注意是异或操作即可 前面讲过,使用CSMA/CD协议,适配器在碰撞之后等待K512比特时间,其中K是随机选取的。对于K=100,对于一个10Mbps的广播信道,适配器返回到第二步要等多长时间?对于100Mbps的广播信道来说呢? **K=100,对于10MBPS。时间为100 512/10^6=5.12ms K=100,对于100MBPS。时间为100*512/10^7=0.512ms** 假设结点A和结点B在相同的10Mbps广播信道上,并且这两个结点的传播时延为245比特时间。假设A和B同时发送以太网帧,帧发生了碰撞,然后A 和B在CSMA/CD算法中选择不同的K值。假设没有其他结点处于活跃状态,来自A和B的重传会碰撞吗?为此,完成下面的例子就足以说明问题了。假设A和B在t=0比特时间开始传输。他们在t=245比特时间都检测到了碰撞。假设KA=0,KB=1。B会将它的重传调整到什么时间?A在什么时间开始发送?(注意:这些结点在返回第2步之后,必须等待一个空闲信道,参见协议)A的信号在什么时间到达B呢?B在它预定的时刻抑制传输吗? 考虑强化碰撞的概念,,当发送数据的站检测到了碰撞,除了立即停止发送数据外,还要继续发送 32 比特或 48 比特的人为干扰信号,以便让所有用户都知道现在已经发生了碰撞。以及帧间最小间隔的概念,以太网规定帧间最小间隔为 9.6 μs,即 96 比特时间. 这里取碰撞时间分别为32与48 可以看到,不管是32比特下(789+96=885>863)还是48比特下(805+96=901>879),都不会发生再碰撞 现在考虑习题P14中地图5-33。对主机A、两台路由器和主机F的各个接口提供MAC地址和IP地址。假定主机A向主机F发送一个数据报。当在下列场合传输该帧时,给出在封装该IP数据报的帧中的源和目的MAC地址: 1、从A到左边的路由器; 2、从左边的路由器到右边的路由器; 3、从右边的路由器到F 还要给出到达每个点时封装在该帧中的IP数据报中的源和目的IP地址 (i):从 A 到左边的路由器 源 MAC 地址: AA-AA-AA-AA-AA-AA 源 IP 地址: 192.168.1.1 (A 的 ip) 目的 MAC 地址: 11-11-11-11-11-11 目的 IP 地址: 192.168.3.2(F 的 ip) (ii):从左边的路由器到右边的路由器 源 MAC 地址: 22-22-22-22-22-22 源 IP 地址: 192.168.1.1(A 的 IP) 目的 MAC 地址: 33-33-33-33-33-33 目的 IP 地址: 192.168.3.2(F 的 ip) (iii):从右边的路由器到 F 源 MAC 地址: 44-44-44-44-44-44 源 IP 地址: 192.168.1.1(A 的 IP) 目的 MAC 地址: FF-FF-FF-FF-FF-FF 目的 IP 地址: 192.168.3.2(F 的 ip) 简单地讲,就是MAC地址直接指向下一个路由器,IP地址指向终点目的主机 在某网络中标志为A到F的6个结点以星形与一台交换机连接,考虑在该网络环境中某个正在学习 的交换机的运行情况。假定: 该交换机表初始为空。显示在这些事件的前后该交换机表的状态。对于每个事件,指出在其上面转发传输的帧的链路,并简要地评价你的答案。 1、B向E发送一个帧; 交换机记录B的MAC地址与到达的端口;由于交换机表为空,故向A、C、D、E、F 都发送此帧 2、E向B回答一个帧; 交换机记录B的MAC地址与到达的端口;由于交换机表有B的MAC地址,故只向B转发 3、A向B发送一个帧; 交换机记录A的MAC地址与到达的端口;由于交换机表有B的MAC地址,故只向B转发 4、B向A回答一个帧 交换机保持表的内容不变;由于已知A的MAC地址,故只向A转发