zoukankan      html  css  js  c++  java
  • 计算机网络原理 课后题3


    第一章 :https://blog.csdn.net/weixin_42835409/article/details/107481832

    第二章: https://blog.csdn.net/weixin_42835409/article/details/107486191

    第三章: https://blog.csdn.net/weixin_42835409/article/details/107494509

    第四章: https://blog.csdn.net/weixin_42835409/article/details/107510967

     

    第五章: https://blog.csdn.net/weixin_42835409/article/details/107532318

    第六章: https://blog.csdn.net/weixin_42835409/article/details/107539747

    第七章: https://blog.csdn.net/weixin_42835409/article/details/107552585

    第八章: https://blog.csdn.net/weixin_42835409/article/details/107555576


     

    第三章 传输层

    1.实现可靠传输的主要措施有那些?这些措施主要用于解决那些问题? P98

    1)差错检测:利用差错编码实现数据包传输过程中的比特差错检测。
    2)确认:接收方向发送方反馈接收状态。
    3)重传:发送方重新发送接收方没有正确接收的数据。
    4)序号:确保数据按序提交。
    5)计时器:解决数据丢失问题。

    2.UDP与TCP分别如何实现复用分解? P94

    UDP套接字:<目的IP地址,目的端口号>

    TCP套接字:<源IP地址,源端口号,目的IP地址,目的端口号>

    3.请画出TCP报文段结构,并简要说明个字段的主要作用。 P113

    1)源端口号与目的端口号字段分别占16位,标识发送该报文段的源端口和目的端口,用于多路复用/分解来自或送到上层应用的数据。
    2)序号字段与确认序号字段分别占32位。TCP的序号是对每个应用层数据的每个字节进行编号,因此每个TCP报文段的序号是该段所封装的应用层数据的第一个字节的序号。确认序号是期望从对方接收数据的字节序号,即该序号对应的字节尚未收到,该序号之前的字节已全部正确接收。也就是说,TCP采用累计确认机制。
    3)首部长度字段占4位,指出TCP段的首部长度,以4字节位计算单位。例如该字段值为5时,表示TCP段的首部长度为20字节。当该字段取值最大值15时,表示TCP段的最大首部长度,60字节。可见TCP段的选项字段最多为40字节。
    4)保留字段占6位,为今后使用,目前值为0。
    5)URG、ACK、PSH、RST、SYN和FIN字段各占1位,共占6位,为6位标志位(字段)。
    6)接收窗口字段占16位,用于向对方通告接收窗口大小,表示接收方愿意接收的应用层数据字节数量,其值是本端接收对方数据的缓存剩余空间,用于实现TCP的流量控制。
    7)校验和字段占16位,校验和字段检验的范围类似于UDP,包括TCP伪首部、TCP首部和应用层数据3部分,计算方法与UDP校验和计算方法相同。
    8)紧急指针字段占16位,该字段只有URG=1时才有效。它指出在本TCP报文段中紧急数据共有多少个字节,即指出紧急数据最后一个字节在数据中的位置。
    9)选项字段的长度可变。TCP最初只规定了一种选项,即最大段长度MSS,用于对方TCP通告其缓存能够接收的数据段的最大长度时MSS个字节。
    10)填充字段:长度位0~3字节,取值全0,其目的时为了使整个首部长度是4字节的整数倍。

    4.TCP为何采用三次握手来建立连接,若采用二次握手可以吗?为什么? P115

    原因:

    1)TCP之所以采用三次握手建立连接,是为了确保连接双方彼此完全清楚对方状态,从而保证可靠、稳定地建立连接;

    2)同时,通过三次握手建立连接还可以有效预防过期、失效的连接请求到达后,导致无效连接的建立。

    若采用二次握手:

    3)因为网络存在数据丢失,第二次握手控制段可能丢失,这样主动发起连接的一方由于没有收到第二次握手控制段,则无法建立连接,而接受连接建立的一方则认为连接已建立,从而出现无效链接。

    4)另外,二次握手建立连接,也无法避免失效连接请求。

    5.请说明TCP建立连接与断开连接的过程,并给出主要状态转移。 P116

    (1)建立连接:

    ①过程:

    ②状态转移:

    (2)断开连接:

    ①过程:

    ②状态转移:

    6.TCP如何保证可靠数据传输? P119

    7.请分别简述GBN协议和SR协议的工作过程。 P105

    (1)GBN协议:回退N步(Go-Back-N)

    ①如果发送方收到一个ACK,窗口滑动后仍有已发送但未被确认的分组,则定时器重新启动;如果没有已发送但未被确认的分组,该定时器终止。

    ②因为接收窗口Wr=1,所以GBN接收方只能接收当前接收窗口中序号所指向的分组,未按序到达的分组或者某个分组差错,接收方丢弃该分组,并为最近按序接收的分组重新发送ACK。

    (2)SR协议:选择重传(Selective Repeat)

    ①增加接收方缓存能力(接收窗口>1),缓存正确到达但失序的分组,

    ②仅要求发送方重传未被接收方确认的分组,等缺失分组到达后一并向上层按序提交。

    8.请说明TCP滑动窗口机制,对比TCP滑动窗口与GBN协议的异同。 P103  

    (1)TCP滑动窗口机制:

    实质上就是将可靠数据传输的工作过程,抽象到分组序号空间,即发送方确保分组按序发送,接收方确保分组按序提交。发送方和接收方个维护一个窗口,分别称为发送窗口Ws和接收窗口Wr。

    (2)异同:

    ①TCP滑动窗口的实际应用首先就是停等协议,这时接受方的窗口和发送方的窗口大小都是1。发送方这时自然发送每次只能发送一个,并且必须等待这个数据包的ACK,才能发送下一个。在效率上比较低,带宽利用率明显较低,不过在网络环境较差,或是带宽本身很低的情况下,还是适用的。

    ②TCP发送方仅需要维持已发送过但未被确认的最小序号和下一个要发送的字节的序号就可以了,这一点和GBN一致。

    ③GBN定时器过期之后发送方会重传未被确认的最小序号之后的数据段,这样很可能会造成重发大量分组,导致占用带宽,分组冗余,反而不如停等协议。

    9.TCP与UDP的主要区别是什么? P110

    (1)TCP提供面向连接、可靠、有序、字节流传输服务,UDP提供无连接、不可靠的数据报尽力传输服务。

    (2)TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付,但使用UDP的应用仍然可以通过在应用程序自身中建立可靠传输机制来实现可靠数据传输。

    (3)TCP是面向字节流的,把应用程序交付的数据看成是一连串的无结构的字节流。UDP是面向报文的,不保证将该报文送达到目的接收进程,即便送达,也可能是乱序到达的。

    (4)UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低。

    (5)每一条TCP连接只能是点到点的;UDP支持一对一、一对多、多对一和多对多的交互通信。

    (6)TCP首部开销20字节;UDP的首部开销小,只有8个字节。

    (7)TCP对系统资源要求较多,UDP对系统资源要求较少。

    (8)TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

    10.TCP如何实现拥塞控制? P124

    慢启动

    拥塞避免

    快速重传

    快速恢复

    11.假设甲乙双方采用GBN协议发送报文段,甲已经发送了编号为0~7的报文段。当计时器超时时,若甲只收到0号和3号报文段的确认,则甲需要重发的报文段是哪些? P105

    答:4、5、6、7

    解析:由于收到了3号报文段的确认,所以确认3号之前的已被接收,需要重新发送4、5、6、7号号报文段。

    12.主机甲乙通过128 kbit/s 卫星信道互连,采用滑动窗口协议发送数据,链路单向传播时延为 250 ms, 分组长度为 1000 字节。不考虑确认分组的开销,为使信道利用率不小于80%,分组序号的位数至少要达到多少位? P108

    ①换算:

    R=128 kbit/s=1.28×10^5 bit/s

    L=1000 B=1000×8 bit

    单向RTT:250ms=0.25s

    ②公式:

    信道利用率公式:

       

    发送一个分组的传输时延:

          

    ③计算:

    tseg=L/R=(1000×8)/(1.28×10^5)=0.0625s

    tseg+RTT=0.0625+0.25×2=0.5625s

    若信道利用率不小于80%:(若ACK分组很小,可忽略其发送时间 tACK)

    Usender=(Ws×0.0625)/0.5625=80%

    Ws=7.2

    所以滑动窗口协议的窗口大小Ws至少为8个;

    8+Wr≤2^k

    Wr至少为1,则k至少为4。

    ④结果:

    答:分组序号的位数至少要达到4位。

    13.若甲乙之间已建立一条TCP连接,拥塞控制处于拥塞避免阶段,阈值为 8 MSS,当甲的拥塞窗口大小为 24 MSS 时发生了超时,则甲的拥塞窗口和阈值将分别调整为多少? P125

    拥塞窗口调整为1,阈值调整为24 /2 =12

    14.主机甲与主机乙之间已建立一个TCP连接,主机甲向主机乙发送了两个连续的TCP段,分别包含300字节和500字节的有效载荷,第一个段的序列号为200,主机乙正确接收到两个段后,发送给主机甲的确认序列号是多少? P119

    确认序列号=原始序列号+TCP段长度

    第一个段的确认序列号:200+300=500

    第二个段的确认序列号:500+500=1000

    答:主机乙正确接收到两个段后,发送给主机甲的确认序列号是1000。

    15.主机甲与主机乙之间已建立一个TCP连接,主机甲向主机乙发送了3个连续的TCP报文段,分别包含300字节、400字节和500字节的有效载荷,第3个段的序号为900。若主机乙仅正确接收到第1个和第3个报文段,则主机乙发送给主机甲的确认序号是多少? P121

    题意为第二个传失败了,只传成功第一个,要求出第一个的确认序列号:

    第三段的序号为900,所以第二段的原始序号为900-400=500;

    (第一段的原始序列号为500-300=200;

    第一段的确认序列号为200+300=500,两者相等)

    答:主机乙发送给主机甲的确认序号是500。

    16. 主机甲与主机乙之间已建立一个TCP连接,双方持续有数据传输,且数据无差错与丢失。若甲收到1个来自乙的TCP报文段,该段的序号为1913、确认序号为2046、有效载荷为100字节,则甲立即发送给乙的TCP报文段的序号和确认序号分别是多少? P121

    2046,2013

    解析:甲发送给乙的TCP报文段序号即为乙发送给甲的确认序号2046;甲发送给乙的确认序号即为乙发送给甲的序号1913+有效载荷的数据100。

    17. 主机甲与主机乙之间已建立一个TCP连接,甲始终以MSS=1 KB大小的报文段发送数据,并一直有数据发送;乙每收到一个报文段都会发出一个接收窗口为10KB的确认段。若甲在t时刻发生超时时拥塞窗口为 8KB,则从t时刻起,不在发生超时的情况下,经过10个RTT后,甲的发送窗口是多少? P125

    10KB

    解析:在t时刻发生超时,说明网络拥塞很严重,发送方需要调整来减少向网络中发送数据的速率和数量,需要从慢启动阶段开始。调整后的阈值Threshold=CongWin/2=8KB/2=4KB;拥塞窗口CongWin=1;发送窗口的增加分为两种情况CongWin<Threshold时和CongWin>Threshold时;发送窗口=阈值,在此之前是乘性增加,之后是线性增加;当发送窗口=接收窗口时,之后按接收窗口大小发送,而接收窗口始终为10KB。

    18. 主机甲与主机乙之间已建立一个TCP连接,TCP最大段长度为1000字节。若主机甲的当前拥塞窗口为4000字节,此时主机甲向主机乙连续发送两个最大段后,成功收到主机乙发送的对第一个段的确认,确认段中通告的接收窗口大小为2000字节,则随后主机甲还可以继续向主机乙发送的最大字节数是多少? P125

    1000字节

    解析:连续发送两个1000字节,仅成功收到对第一个段的确认-接收窗口大小为2000字节,其中一个段还未确认,这个段需要占用1000字节的接收窗口,2000字节的接收窗口还有1000字节,所以甲还可以向乙发送的最大字节数是1000字节。

  • 相关阅读:
    leetcode 13. Roman to Integer
    python 判断是否为有效域名
    leetcode 169. Majority Element
    leetcode 733. Flood Fill
    最大信息系数——检测变量之间非线性相关性
    leetcode 453. Minimum Moves to Equal Array Elements
    leetcode 492. Construct the Rectangle
    leetcode 598. Range Addition II
    leetcode 349. Intersection of Two Arrays
    leetcode 171. Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/txge/p/13973603.html
Copyright © 2011-2022 走看看