计算机网络第三章习题(谢希仁)

数据链路层

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

  1. 链路: 指的是两个结点之间的物理线路,链路的传输介质有双绞线、同轴电缆、光纤、微波等。分为有线和无线链路。

  2. 数据链路:在链路的基础的上,给加上一些必要的通信协议来控制数据的传输。现在常用的方法是网络适配器(网卡)来实现这些协议。一般适配器都包含数据链路层和物理层这两层的功能。

  3. 电路接通了:表明物理连接已经能够传送比特流,但是数据传输并不可靠。

  4. 数据链路接通了:在物理连接的基础上,再建立数据链路连接。数据链路连接具有检测、确认和重传功能,使不可靠的物理链路变为可靠的物理链路,进行可靠的数据传输,当数据链路断开时,物理链路不一定跟着断开。

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

功能

  1. 链路管理:负责建立、维护和释放数据链路层的连接。
  2. 封装成帧: 给IP数据报加上帧开始、帧结束,就确定了帧的界限。
  3. 透明传输:数据链路层对上层协议隐藏了数据传输的细节,使得上层协议在发送或接受收据时,感觉不到数据链路层的存在。
    传输的过程中,IP数据报里面可能会出现帧结束符,如果出现的话,给前面加入转义字符。
  4. 差错控制:在数据传输过程中数据可能由于信号的干扰或者别的原因,导致数据不正确,使用差错控制是为了确保数据的正确性。 一般使用的CSC检验的方法。(可能也会出现问题)
  5. 流量控制:调节发送方的数据发送速率,以适应接收方的接收能力,防止数据丢失或缓冲区溢出。

优点和缺点

  1. 数据链路层做成可靠的链路层,就表示从源主机到目的主机的整个通信路径中的每一段链路的通信都是可靠的。这样做的优点是可以使网络中的某个结点及早发现传输中出了差错,因而可以通过数据链路层的重传来纠正这个差错。

如果数据链路层不是做成可靠的链路层,那么当网络中的某个结点发现收到的帧有差错时(不管数据链路层是否做成是可靠的,这个检查差错的步骤总是要有的),就仅仅丢弃有差错的帧,而并不通知发送结点重传出现差错的帧。只有当目的主机的高层协议(例如,运输层协议TCP)发现了这个错误时,才通知源主机重传出现差错的数据, 但这时已经较迟了,可能要重传较多的数据(包括没有出差错的数据),对网络资源有些浪费。

但是,有时高层协议使用的是不可靠的传输协议UDP。UDP并不要求重传有差错的数据。在这种情况下,如果数据链路层做成是可靠的链路层,那么在某些情况下这并不会带来更多 的好处(例如,当高层传送实时音频或视频信号时)。换言之,增加了可靠性,牺牲了实时性,有时反而是不合适的。

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

网络适配器的作用:

  1. 进行数据串行传输和并行传输的转换;
  2. 对数据进行缓存,对接收速率进行匹配;
  3. 对接收的数据进行差错检测;
  4. 跟主机当中的存储器、CPU等部件进行协调;
  5. 实现以太网协议,如数据的封装、发送、地址的检查、接收、有效判断、校验等等。

一般网络适配器包含物理层和数据链路层,通常工作在物理层和数据链路层。

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

  1. 封装成帧就是在一段数据的前后分别添加首部和尾部(在首部和尾部里面有许多必要的控制信息)这样就构成了一个帧,接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
  2. 透明传输就是上层交下来的数据,不管是什么形式的比特组合,都必须能够正确传送。由于帧的开始和结束的标记是使用专门指明的控制字符,因此,所传输的数据中的任何比特组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。数据链路层不应当对要传送的数据提出限制,即不应当规定某种形式的比特组合不能 够传送。
  3. 如果数据链路层没有差错检测 那么当目的主机收到其他主机发送来的数据时,在交给高层后,如果应用程序要求收到的数据必须正确无误,那么目的主机的高层软件可以对收到的数据进行差错检测。如果发现数据中有差错,就可以请求源主机重传这些数据。这样做就可以达到正确接收数据的目的。但这种工作方式有一个很大的缺点,就是一些在传输过程中出现了错误的数据(请注意,这些已经是没有用处的数据)还会继续在网络中传送,这样就浪费了网络的资源。例如,源主机到目的主机的路径中共有20个结点。在传送数据时,第一个结点就检测出了差错。如果数据链路层有差错检测的功能,就可以把这个有差错的帧丢弃,以后就不再传送了。否则这个没有用处的帧还要在网络上继续传送,还要陆续通过后面19个结点,这就造成了网络资源的浪费。
    像网络设备也会对帧进行检验,只不过比较简单,如果发现帧长度不对,会把该帧丢弃。这些节点通常不会像发送端和接收端那样对帧内容进行深入的差错检测。

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

数据链路层在收到数据时,就无法知道对方传送的数据中哪些是数据,哪些是信息,甚至数据中有没有差错也不清楚(因为无法进行差错检测)。

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

特点

只检测差错,如果有差错就会丢弃,而不是去改正;也不使用序号;不进行流量控制;可同时支持多种网络层协议。

为什么不使用帧编号 ?

因为帧的编号是为了出错时可以有效地重传,而PPP并不需要实现可靠传输。

适用情况

PPP协议适用于用户使用拨号电话线接入因特网的情况。

为什么 PPP 协议不能使数据链路层实现可靠传输 ?

因为PPP没有编号和确认机制,这样就必须靠上层的协议(有编号和重传机制)才能保证数据传输正确无误,这样就会使数据的传输效率降低。

是出于以下考虑:

  1. 若使用能够实现可靠传输的数据链路层协议(如HDLC),开销就要增大。在数据链路层出现差错的概率不大时,使用比较简单的PPP协议较为合理。

  2. 在因特网环境下,PPP的信息字段放入的数据是IP数据报。假定我们采用了能实现可靠传输但十分复杂的数据链路层协议,然而当数据帧在路由器中从数据链路层上升到网络层后,仍有可能因网络授拥塞而被丢弃。因此,数据链路层的可靠传输并不能保证网络层的传输也是可靠的。

  3. PPP协议在帧格式中有帧检验序列FCS安段。对每一个收到的帧,PPP都要使用硬件进行CRC检验。若发现有差错,则丢弃该帧(一定不能把有差错的帧交付给上一层)。端到端的差错检测最后由高层协议负责。因此,PPP协议可保证无差错接受。

7. 要发送的数据为 1101011011。采用CRC 的生成多项式是 P(X)=X^4+X+1。试求应添加在数据后面的余数。数据在传输过程中最后一个1变成了 0,问接收端能否发现?若数据在传输过程中最后两个1都变成了0,问接收端能否发现?采用CRC 检验后,数据链路层的传输是否就变成了可靠的传输?

增加的余数

  1. 根据生成多项式可以发现 除数为: 10011
  2. 给发送数据后面增加比除数少一个0 即为:1101 0110 1100 00
  3. 用 1101 0110 1100 00 除以 10010 进行异或运算 得到余数为 1110

1变为0,接收端能否发现

利用 1101011010 1110进行除法时,最后余数为 0011,所以接收端可以发现。

最后两个1变为0,接收端能否发现

利用 1101011000 1110 进行除法时,最后余数为0101,余数不为0,所以接收端可以发现。

采用CRC 检验后,数据链路层的传输是否就变成了可靠的传输

不会,因为 CRC检验只是检验帧是否出错,如果出错的话,会把该帧进行丢弃,没有重传机制,所以数据链路层的传输不是可靠传输。

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

  1. 根据生成多项式可以得到除数为 1001
  2. 给被发送的数据后面加上四个零,即为 101110 1001
  3. 然后用上一步的除以 1001 得 余数为 011

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

  1. 根据信息字段出现的每一个0X7E变为(0X7D,0X5E)
  2. 如果出现一个0X7D的字节,则变为两个字节(0X7D,0X5D)
  3. 如果出现控制字符的话,给前面加入0X7D即可。
    所以最后得到的结果是 7E FE 27 7D 7D 65 7E

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

遇到5个1后面填充1个0,填充后字符串如下:0110111110111 11000

收到 0001110111110111110110 把连续5个1后面的0去除,即为00011101111111111110

最近更新

  1. TCP协议是安全的吗?

    2024-01-26 08:22:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-26 08:22:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-26 08:22:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-26 08:22:02       18 阅读

热门阅读

  1. 8-Docker网络命令之connect

    2024-01-26 08:22:02       29 阅读
  2. 将本地项目通过git上传到仓库

    2024-01-26 08:22:02       35 阅读
  3. leetcode560和为k的子数组

    2024-01-26 08:22:02       39 阅读
  4. 基于Skywalking开发分布式监控(一)

    2024-01-26 08:22:02       30 阅读
  5. 苹果笔记本(MAC)常用快捷键

    2024-01-26 08:22:02       29 阅读
  6. SpringBoot引入缓存提高单次查询数据效率

    2024-01-26 08:22:02       27 阅读
  7. sql查看指定时间段的数据

    2024-01-26 08:22:02       30 阅读
  8. C#凹多边形求内心

    2024-01-26 08:22:02       30 阅读
  9. CGAL内置的边塌陷算法代码解析

    2024-01-26 08:22:02       27 阅读
  10. 关闭windows自动更新的6种方法

    2024-01-26 08:22:02       33 阅读