草庐IT

计算机网络原理 谢希仁(第8版)第三章习题答案

进击的博仔 2023-04-18 原文

3-01 数据链路(即逻辑链路)与链路(即物理链路)有何区别? “链路接通了”与”数据链路接通了”的区别何在?

链路: 是一个结点到相邻节点的物理线路。
数据链路: 数据在线路上传输时,需要协议控制数据的传输,实现协议的硬件和软件以及链路组成了数据链路。
接通区别: “链路接通了”表示链路两端的结点交换机已经开机,物理连接已经能够传送比特流了,但是,数据传输并不可靠,在物理连接基础上,再建立数据链路连接,才是“数据链路接通了”。此后,由于数据链路连接具有检测、确认和重传功能,才使不太可靠的物理链路变成可靠的数据链路,进行可靠的数据传输当数据链路断开连接时,物理电路连接不一定跟着断开连接。

3-02 数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。

功能有:封装成帧、透明传输和差错检测。
优点:做成可靠的可以使数据链路层发现错误并尽早重传;
缺点:如果高层协议不可靠,那么虽然增加了可靠性,但降低了实时性。

3-03 网络适配器的作用是什么?网络适配器工作在哪一层?

适配器与局域网之间的通信是串行传输,适配器和计算机之间的通信是通过主板上的I/O总线以并行方式进行的。所以适配器的作用就是进行串行传输和并行传输的转换。此外还可以对数据进行缓存,实现以太网协议等。
工作在数据链路层和物理层。

3-04 数据链路层的三个基本问题(封装成帧、透明传输和差错检测)为什么都必须加以解决?

封装成帧: 在数据前后加上帧头和帧尾后,接收端接的数据链路层接收到物理层传来的比特流才能根据帧头帧尾识别一个帧。
透明传输: 防止数据中出现与帧定界符相同的比特组合导致出现帧定界错误,而在发送端数据中的帧定界符或前加入转义字符,在接收端把接收到数据中多余的转义字符去掉。这样就可以使数据无差错地通过数据链路层,即实现透明传输。
差错检验: 为了节约网络资源,使错误数据到达节点或主机的数据链路层就能被尽快检测到,而不是到达主机后,主机的高层软件进行检测。这样就能使错误数据尽少的占用通信资源。

3-05 如果在数据链路层不进行封装成帧,会发生什么问题?

无法确定帧的范围,无法识别帧。

3-06 PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不能使数据链路层实现可靠传输?

主要特点:

  • 简单:收到一个帧就进行CRC校验,如果校验正确,就收下,错误则丢弃。
  • 封装成帧:PPP协议规定特殊的字符作为帧定界符。
  • 透明性:PPP保证透明性。
  • 多种网络层协议:同一条物理链路支持多种网络层协议。
  • 多种类型链路:能在多种链路上运行。
  • 差错检验:对帧检验,丢弃错误帧。

PPP出错的帧不需要重传,所以不需要编号。

适用于用户计算机和ISP进行通信时的数据链路层协议。

有以下三点原因:

  1. 若使用能够实现可靠传输的数据链路层协议(如HDLC),开销就要增大。在数据链路层出现差错的概率不大时,使用比较简单的PPP协议较为合理。
  2. 假定我们采用了能实现可靠传输但十分复杂的数据链路层协议,然而当数据帧在路由器中从数据链路层上升到网络层后,仍有可能因网络授拥塞而被丢弃。因此,数据链路层的可靠传输并不能保证网络层的传输也是可靠的。
  3. PPP协议在帧格式中有帧检验序列FCS。对每一个收到的帧,PPP都要使用硬件进行CRC检验。若发现有差错,则丢弃该帧(一定不能把有差错的帧交付给上一层)。端到端的差错检测最后由高层协议负责。因此,PPP协议可保证无差错接受。

3-07 要发送的数据为1101011011。采用CRC的生成多项式是 P ( X ) = X 4 + X + 1 P(X)=X^4 + X + 1 P(X)=X4+X+1。试求应添加在数据后面的余数。

数据在传输过程中最后一个1变成了0,问接收端能否发现?
若数据在传输过程中最后两个1都变成了0,问接收端能否发现?
采用CRC检验后,数据链路层的传输是否就变成了可靠的传输?

除数为10011(冗余码四位),被除数为11010110110000,得余数1110。余数应该添加到数据后作为冗余码。
能,添加冗余码后的数据除以除数的余数不为0。
能,原因同上。
不是,数据链路层只能保证无差错接收,对于有差错的帧只是丢弃,并不能保证可靠传输。

3-08 要发送的数据为101110。采用CRC生成多项式是 P ( X ) = X 3 + 1 P(X)=X^3 + 1 P(X)=X3+1,试求应添加在数据后面的余数。

011

3-09 一个PPP帧的数据部分(用十六进制写出)是7D 5E FE 27 7D 5D 7D 5D 65 7D 5E。试问真正的数据是什么(用十六进制写出)

(1)当信息字段中出现0x7E字节转变为2字节序列(0x7D,0x5E)
(2)当信息字段中出现一个0x7D字节转变为2字节序列(0x7D,0x5D)
7E FE 27 7D 7D 65 7E

3-10 PPP协议使用同步传输技术传送比特串0110111111111100。试问经过零比特填充后变成怎样的比特串?若接收端收到的PPP帧的数据部分是0001110111110111110110,问删除发送端加入的零比特后变成怎样的比特串?

填充后:011011111011111000
填充前:00011101111111111110

3-11 试分别讨论一下各种情况在什么条件下是透明传输,在什么条件下不是透明传输。(提示:请弄清什么是“透明传输”,然后考虑能否满足其条件。)
(1)普通的电话通信。
(2)电信局提供的公用电报通信。

3-12 PPP协议的工作状态有哪几种?当用户要使用PPP协议和ISP建立连接进行通信需要建立哪几种连接?每一种连接解决什么问题?

PPP协议的工作状态有链路静止(Link Dead) 、链路建立(Link Establish)、鉴别(Authenticate)、网络层协议(Network ProtocoD 、链路打开(Link Open)、链路终止(Link Terminate) 六种。

第一种是物理层连接,为数据链路层连接建立条件;第二种是数据链路层连接,即建立LCP连接。
建立LCP连接又分为 3 个阶段:鉴别、网络层协议、链路打开。
鉴别:双方进行认证,成功则进入网络层协议状态。失败的到链路终止状态。
网络层协议:配置网络层的传输协议。
链路打开:两个端点可以发送PPP分组。

3-13 局域网的主要特点是什么?为什么局域网采用广播通信方式而广域网不采用呢?

特点:

  • 覆盖范围小,站点数目有限;
  • 具有较高的数据率、更低的时延和更低的误码率。

因为局域网内广播成本较小,对链路资源的占用较少,但广域网覆盖范围大,通过广域网广播会占用较多的通信资源。

3-14 常用的局域网的网络拓扑有哪些种类?现在最流行的是哪种结构?为什么早期的以太网选择总线拓扑结构而不是星形拓扑结构,但现在却改为使用星形拓扑结构?

常用的有星形网、环形网和总线网。
现在最流行的是星形网。
当时人们都认为有源器件容易出故障,不容易出故障的又太贵;无源的总线结构更加可靠,但实践证明,连接有大量站点的总线式以太网很容易出现故障,而现在专用的ASIC芯片的使用可以讲星形结构的集线器做的非常可靠,因此现在的以太网一般都使用星形结构的拓扑。

3-15 什么叫做传统以太网?以太网有哪两个主要标准?

10Mbit/s的以太网
DIX Ethernet V2 标准与 IEEE 的 802.3 标准

3-16 数据率为10Mb/s的以太网在物理媒体上的码元传输速率是多少码元/秒?

以太网使用曼彻斯特编码,数据率为10Mb/s表明在编码前每秒发送10M个码元,编码后一个码元变为两个,所以一秒发送20M个码元,即码元速率为20M码元/s。

3-17 为什么LLC子层的标准已制定出来了但现在却很少使用?

3-18 试说明10BASE-T中的“10”、“BASE”和“T”所代表的意思。

10BASE-T中的“10”表示信号在电缆上的传输速率为10MB/s,“BASE”表示电缆上的信号是基带信号,“T”代表双绞线星形网,但10BASE-T的通信距离稍短,每个站到集线器的距离不超过100m。

3-19 以太网使用的CSMA/CD协议是以争用方式接入到共享信道。这与传统的时分复用TDM相比优缺点如何?

在网络负荷较轻时,CSMA/CD协议下任何站都可以发送,信道利用率高。而TDM下每个站都分配固定时隙,会有大量比例的时隙浪费,信道利用率就比较低。
网络负荷较重时,CSMA/CD协议下容易引起碰撞,经常发生重传,而TDM下每个站均匀分配时隙,不会发生碰撞。

3-20 假定1km长的CSMA/CD网络的数据率为1Gb/s。设信号在网络上的传播速率为200000km/s。求能够使用此协议的最短帧长。

CSMA/CD的功能之一是冲突检测,其耗时最长为端到端传播时延的两倍。
对于1km电缆,单程传播时间为1km/200000km=5为微秒,来回路程传播时间为10微秒,为了能够按照CSMA/CD工作,最小帧的发射时间不能小于10微秒,以Gb/s速率工作,10微秒可以发送的比特数等于10000,因此,最短帧是10000位或1250字节长

3-21 什么叫做比特时间?使用这种时间单位有什么好处?100比特时间是多少微秒?

比特时间是发送一比特多需的时间,它是数据率的倒数,便于建立信息长度与发送延迟的关系“比特时间”换算成“微秒”必须先知道数据率是多少,如数据率是10Mb/s,则100比特时间等于10微秒。

3-22 假定在使用CSMA/CD协议的10Mb/s以太网中某个站在发送数据时检测到碰撞,执行退避算法时选择了随机数r=100。试问这个站需要等待多长时间后才能再次发送数据?如果是100Mb/s的以太网呢?

10Mb/s下,争用期: 51.2 μ s 51.2\mu s 51.2μs,要等待: 100 × 51.2 μ s = 5.12 m s 100\times51.2\mu s =5.12ms 100×51.2μs=5.12ms
100Mb/s下,争用期: 5.12 μ s 5.12\mu s 5.12μs,要等待: 0.512 m s 0.512ms 0.512ms

3-23 公式 S m a x = T 0 T 0 + τ = 1 1 + a S_{max} = \frac{T_0}{T_0 +\tau} = \frac{1}{1+a} Smax=T0+τT0=1+a1表示,以太网的极限信道利用率与连接在以太网上的站点数无关。能否由此推论出:以太网的利用率也与连接在以太网的站点数无关?请说明你的理由。

不能,极限利用率是一种理想情况,各个站不会碰撞。真实利用率会碰撞,而且也有争用期。前提条件不同,无法推出。

3-24 假定站点A和B在同一个10Mb/s以太网网段上。这两个站点之间的传播时延为225比特时间。现假定A开始发送一帧,并且在A发送结束之前B也发送一帧。如果A发送的是以太网所容许的最短的帧,那么A在检测到和B发生碰撞之前能否把自己的数据发送完毕?换言之,如果A在发送完毕之前并没有检测到碰撞,那么能否肯定A所发送的帧不会和B发送的帧发生碰撞?(提示:在计算时应当考虑到每一个以太网帧在发送到信道上时,在MAC帧前面还要增加若干字节的前同步码和帧定界符)

  1. 10Mb/s的以太网段上最短帧长512bit,加上8字节的首部和尾部共有576bit。
  2. B只能在A发送后225比特内发送,假设A发送时间为 t = 0,B发送时间为 t1 = x( 0 < x < 225),225 比特时间时 B 会检测到碰撞,并停止发送。
  3. A 在 225 + x 比特时间后检测到碰撞,此时才发送了225 + x 比特,由于 0 < x < 225,所以 225 < 225 + x < 450 比特,所以不能发送完。

3-25 在上题中的站点A和B在t=0时同时发送了数据帧。当t=255比特时间,A和B同时检测到发生了碰撞,并且在t=255+48=273比特时间完成了干扰信号的传输。A和B在CSMA/CD算法中选择不同的r值退避。假定A和B选择的随机数分别是rA=0和rB=1。试问A和B各在什么时间开始重传其数据帧?A重传的数据帧在什么时间到达B?A重传的数据会不会和B重传的数据再次发生碰撞?B会不会在预定的重传时间停止发送数据?

争用期:512 比特时间,A的重传时间: t A = 273 t_A =273 tA=273,B 的重传时间: t B = 273 + 512 = 785 t_B = 273 + 512 = 785 tB=273+512=785
A立即检测信道,信道在传输干扰信号,直到 t = 273 + 225 = 498 t = 273 + 225 = 498 t=273+225=498时信道空闲,等待 96 比特时间开始发送。在 t = 498 + 96 + 225 = 819 t = 498 + 96 + 225=819 t=498+96+225=819时,A的第一个比特到达B。
如果 B 在 785 785 785 785 + 96 = 881 785 + 96=881 785+96=881 时间内B检测不到 A 的信号,B就会在 881 时发送,但B在819检测到A的信号,所以不会发送数据。

3-26 以太网上只有两个站,它们同时发送数据,产生了碰撞。于是按截断二进制指数退避算法进行重传。重传次数记为i,i=1,2,3,……。试计算第1次重传失败的概率、第2次重传的概率、第3次重传失败的概率,以及一个站成功发送数据之前的平均重传次数I。

重传取值集合: [ 0 , 1 , 2 , . . . ( 2 k − 1 ) ] [0, 1, 2, ... (2^k-1)] [0,1,2,...(2k1)] k = M i n [ 重传次数, 10 ] k=Min[重传次数,10] k=Min[重传次数,10]

  1. 集合{0, 1},概率: 2 4 = 50 % \frac{2}{4}=50\% 42=50%
  2. 25%
  3. 12.5%

P[第i次重传成功] = P[第一次重传失败] x P[第一次重传失败] x P[第三次重传失败] x … x P[第i-1次重传失败] x P[第i次重传成功]
P[第一次重传成功] = 0.5
P[第二次重传成功] = 0.5 × 0.75 = 0.375 0.5\times0.75=0.375 0.5×0.75=0.375
P[第三次重传成功] = 0.5 × 0.25 × 0.875 = 0.1094 0.5\times0.25\times0.875=0.1094 0.5×0.25×0.875=0.1094
P[第四次重传成功] = 0.5 × 0.25 × 0.125 × 0.9375 = 0.0146 0.5\times0.25\times0.125\times0.9375=0.0146 0.5×0.25×0.125×0.9375=0.0146
平均重传次数:0.5 + 2 x 0.375 + 3 x 0.1094 + 4 x 0.0146 + … = 1.64

3-27 有10个站连接到以太网上。试计算一下三种情况下每一个站所能得到的带宽。(1)10个站都连接到一个10Mb/s以太网集线器;(2)10个站都连接到一个100Mb/s以太网集线器;(3)10个站都连接到一个10Mb/s以太网交换机。

1Mb/s、10Mb/s

假设一个接口速率10Mb/s,那么就是10Mb/s;
假设交换机总宽带10Mb/s,那么就是1Mb/s。

3-28 10Mb/s以太网升级到100Mb/s、1Gb/S和10Gb/s时,都需要解决哪些技术问题?为什么以太网能够在发展的过程中淘汰掉自己的竞争对手,并使自己的应用范围从局域网一直扩展到城域网和广域网?

换线,争用期改为5.12us,帧最小间隔0.96us。

3-29 以太网交换机有何特点?用它怎样组成虚拟局域网?

特点:

  1. 接口数量多;
  2. 端口与主机或交换机相连,全双工工作;
  3. 具有并行性,联通一台交换机上的端口,多对主机同时工作;
  4. 相互通信的主机都独占传输媒体,无碰撞地传输数据;
  5. 端口具有存储器,端口繁忙时可缓存。
  6. 即插即用,自学习建立交换表。
  7. 转发速率高,采用专用的结构芯片,硬件转发。

虚拟局域网是由以太网交换机连接的局域网段构成的与物理位置无关的逻辑组,同一个VLAN发送的帧中都有明确的标识符表示这个帧属于哪个VLAN。

3-30 在图3-30 中,某学院的以太网交换机有三个接口分别和学院三个系的以太网相连,另外三个接口分别和电子邮件服务器、万维网服务器以及一个连接互联网的路由器相连。图中的A,B和C都是100Mbit/s以太网交换机。假定所有的链路的速率都是100Mbit/s,并且图中的9台主机中的任何一个都可以和任何–个服务器或主机通信。试计算这9台主机和两个服务器产生的总的吞吐量的最大值。为什么?


交换机具有并行性,联通一台交换机上的端口,多对主机同时工作,所以9台主机的吞吐量为900Mbit/s,两台服务器为200Mbit/s,所以共为1100Mbit/s。

3-31 假定在图3-30中的所有链路的速率仍然为100 Mbit/s,但三个系的以太网交换机都换成为100Mbit/s的集线器。试计算这9台主机和两个服务器产生的总的吞吐量的最大值。为什么?

集线器不能并行工作,三台集线器最大吞吐量300Mbit/s,两台服务器200Mbit/s,共500Mbit/s。

3-32 假定在图3-30中的所有链路的速率仍然为100 Mbit/s,但所有的以太网交换机都换成为100Mbit/s的集线器。试计算这9台主机和两个服务器产生的总的吞吐量的最大值。为什么?

所有设备都连接到一个集线器上,最大吞吐量就是集线器的最大数据率,为100Mbit/s。

3-33 在图3-31中,以太网交换机有6个端口,分别接到5台主机和一个路由器。

下面表中动作一栏中,表示先后发送了4个帧。假定在开始时,以太网交换机的交换表是空的。把表中的项目填完。

动作交换表状态向哪些端口转发帧说明
A发送帧给D添加表项(A,1)所有发送前空表,发送后存入A的MAC地址和端口1
D发送给A添加表项(D,4)A向表中添加D的MAC地址和端口4
E发送帧给A添加表项(E,5)A向表中添加E的MAC地址和端口2
A发送给E不变E交换表保持不变

有关计算机网络原理 谢希仁(第8版)第三章习题答案的更多相关文章

  1. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  2. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  3. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  4. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  5. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  6. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  7. arrays - 计算数组中的匹配元素 - 2

    给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at

  8. ruby - 尝试比较两个文本文件,并根据信息创建第三个 - 2

    我有两个文本文件,master.txt和926.txt。如果926.txt中有一行不在master.txt中,我想写入一个新文件notinbook.txt。我写了我能想到的最好的东西,但考虑到我是一个糟糕的/新手程序员,它失败了。这是我的东西g=File.new("notinbook.txt","w")File.open("926.txt","r")do|f|while(line=f.gets)x=line.chompifFile.open("master.txt","w")do|h|endwhile(line=h.gets)ifline.chomp!=xputslineendende

  9. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  10. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

随机推荐