计算机网络习题——第5章 运输层_9、运输层的通信和网络层的通信有什么重要的区别?为什么运输层是必不可少的?-程序员宅基地

技术标签: 网络  网络协议  计算机网络  

5-01运输层在协议栈中的地位和作用。运输层的通信和网络层的通信有什么重要的区别?为什么运输层是必不可少的?
运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务。
运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信(面向主机,承担路由功能,即主机寻址及有效的分组交换)。
各种应用进程之间通信需要“可靠或尽力而为”的两类服务质量,必须由运输层以复用和分用的形式加载到网络层。

5-03当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是无连接的。
都是。这要在不同层次来看,在运输层是面向连接的,在网络层则是无连接的。

5-05试举例说明有些应用程序愿意采用不可靠的UDP,而不愿意采用可靠的TCP。
VOIP:由于语音信息具有一定的冗余度,人耳对VOIP数据报损失由一定的承受度,但对传输时延的变化较敏感。有差错的UDP数据报在接收端被直接抛弃,TCP数据报出错则会引起重传,可能带来较大的时延扰动。因此VOIP宁可采用不可靠的UDP,而不愿意采用可靠的TCP。

5-06 接收方收到有差错的UDP用户数据报时应如何处理?
丢弃,不接收。

5-09端口的作用是什么?为什么端口号要划分为三种?
端口的作用是对TCP/IP体系的应用进程进行统一的标志,使运行不同操作系统的计算机的应用进程能够互相通信。
熟知端口,数值一般为0~1023。标记常规的服务进程;
登记端口号,数值为1024~49151,标记没有熟知端口号的非常规的服务进程。

5-14一个UDP用户数据报的首部的十六进制表示是:06 32 00 45 00 1C E2 17。试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器还是从服务器发送给客户?使用UDP的这个服务器程序是什么?
06 32是源端口 十六进制转十进制6*162+3*161+2*160=1586;
00 45是目的端口 十六进制转十进制4*161+5*160=69;
00 1c是用户数据包的总长度=16+12=28;
数据部分长度为:28-首部长度=28-8=20;
由于目的端口69<1023是熟知端口(服务器端使用的端口号),因此该UDP数据报是从客户发给服务器的,程序是TFFTP。

5-16在停止等待协议中如果不使用编号是否可行?为什么?
分组和确认分组都必须进行编号,才能明确哪个分则得到了确认。

5-17在停止等待协议中,如果收到重复的报文段时不予理睬(即悄悄地丢弃它而其他什么也不做)是否可行?试举出具体例子说明理由。
超时重传
收到重复帧不确认相当于确认丢失

5-19试证明:当用n比特进行分组的编号时,若接收窗口等于1(即只能按序接收分组),则仅在发送窗口不超过2n-1时,连续ARQ协议才能正确运行。窗口单位是分组。
习题 5-19

5-21假定使用连续ARQ协议,发送窗口大小是3,而序号范围是[0,15],而传输媒体保证在接收方能够按序收到分组。在某一时刻,在接收方,下一个期望收到的序号是5。试问:
(1)在发送方的发送窗口中可能出现的序号组合有哪些?
序号到4为止的分组都已收到。若这些确认都已到达发送方,则发送窗口的范围是[5,7],假定所有的确认都丢失了,发送方没有收到这些确认。这时,发送窗口应为[2,4]。因此,发送窗口可以是[2,4],[3,5],[4,6],[5,7]中的任何一个。
(2)接收方已经发送出的、但在网络中(即还未到达发送方)的确认分组可能有哪些?说明这些确认分组是用来确认哪些序号的分组。
接收方期望收到序号5的分组,说明序号为2,3,4的分组都已收到,并且发送了确认。对序号为1的分组的确认肯定被发送方收到了,否则发送方不可能发送4号分组。可见,对序号2,3,4的分组的确认有可能仍滞留在网格中。这些确认是用来确认序号为2,3,4的分组。

5-23主机A向主机B连续发送了两个TCP报文段,其序号分别是70和100。试问:
(1)第一个报文段携带了多少字节的数据?

第一个报文段的数据序号是70到99,共30字节的数据。
(2)主机B收到第一个报文段后发回的确认中的确认号应当是多少?
确认号应为100。当报文被接受后排序到99,希望接收第100个字节,所以发送确认号100。
(3)如果B收到第二个报文段后发回的确认中的确认号是180,试问A发送的第二个报文段中的数据有多少字节?
第三个报文段的数据序号是100到179,共80字节的数据。
(4)如果A发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文段到达后向A发送确认。试问这个确认号应为多少?
70,第一个报文没有收到,就不会对后续报文进行确认。b希望a重传序列号为70的报文,所以发送确认号为70。

5-30设TCP使用的最大窗口为65535字节,而传输信道不产生差错,带宽也不受限制。若报文段的平均往返时间为20ms,问所能得到的最大吞吐量是多少?
在发送时延可忽略的情况下,最大数据率=最大窗口*8/平均往返时间=65535*8/20=26.2Mb/s。

5-31通信信道带宽为1Gb/s,端到端时延为10ms。TCP的发送窗口为65535字节。试问:可能达到的最大吞吐量是多少?信道的利用率是多少?
往返时延等于两倍的端到端传播时延,即20ms=0.02s;
发送时延等于窗口数据量除以带宽,即65535*8/109秒;
TCP每发送一个窗口,需要进行等待确认信息回来,所以每发送完一个窗口,最快需要经过一个往返时延才可以发送下一个窗口(确认信息很小不考虑发送时延),所以在一个传输轮次中,包含一个发送时延和一个往返时延,而传输的数据量是一个窗口的大小(这里不考虑TCP、IP首部和帧的构成)。
所以最大吞吐量为一个窗口的大小除以一个传输轮次的时间,即65535*8/(65535*8/109+0.02)=25.54Mb/s。
信道利用率为25.54Mb/s/1000Mb/s=2.55%。

5-37在TCP的拥塞控制中,什么是慢开始、拥塞避免、快重传和快恢复算法?这里每一/种算法各起什么作用?“乘法减小”和“加法增大”各用在什么情况下?

慢开始:
在主机刚刚开始发送报文段时可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以分组注入到网络的速率更加合理。我们还要指出,慢开始的“慢”并不是指cwnd的增长速率慢,而是指在TCP开始发送报文段时先设置cwnd=1,使得发送方在开始时只发送一个报文段(目的是试探一下网络的拥塞情况),然后再逐渐增大cwnd,这当然比设置大的cwnd值一下子把许多报文段注入到网络中要“慢得多”。这对防止网络出现拥塞是一个非常好的方法。

拥塞避免:
当拥塞窗口值大于慢开始门限时,停止使用慢开始算法而改用拥塞避免算法。拥塞避免算法使发送的拥塞窗口每经过一个往返时延RTT就增加一个MSS的大小。

快重传算法:
发送端只要一连收到三个重复的ACK即可断定有分组丢失了,就应该立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时。

快恢复算法:
当发送端收到连续三个重复的ACK时,就重新设置慢开始门限ssthresh。与慢开始不同之处是拥塞窗口cwnd不是设置为1,而是设置为ssthresh。若收到的重复的AVK为n个(n>3),则将cwnd设置为ssthresh。若发送窗口值还容许发送报文段,就按拥塞避免算法继续发送报文段。若收到了确认新的报文段的ACK,就将cwnd缩小到ssthresh乘法减小。

乘法减小:
是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值ssthresh设置为当前的拥塞窗口值乘以0.5。当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入到网络中的分组数。

加法增大:
是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个往返时间),就把拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。

5-38设TCP的ssthresh的初始值为8(单位为报文段)。当拥塞窗口上升到12时网络发生了超时,TCP使用慢开始和拥塞避免。试分别求出第1轮次到第15轮次传输的各拥塞窗口的大小。你能说明拥塞窗口每一次变化的原因吗?
(1)TCP连接初始化时,cwnd=1;
(2)执行慢开始算法,使用慢开始算法后,每经过一个传输轮次(transmission round),拥塞窗口cwnd就加倍。随后的窗口大小为2,4,8;
(3)当cwnd=8=ssthresh,进入了拥塞避免阶段,拥塞避免算法的思路是让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是像慢开始阶段那样加倍增长。其窗口大小依次为9,10,11,12,直到12发生拥塞;
(4)更新ssthresh=6。进入慢开始,设置cwnd=1,重复(2),慢开始阶段窗口依次为1,2,4,6,进入拥塞避免阶段窗口大小依次为7,8,9;
所以,第1次到第15次传输的各拥塞窗口大小依次为1,2,4,8,9,10,11,12,1,2,4,6,7,8,9。

5-39TCP的拥基窗口cwnd大小与传输轮次n的关系如下所示:

cwnd 1 2 4 8 16 32 33 34 35 36 37 38 39
n 1 2 3 4 5 6 7 8 9 10 11 12 13
cwnd 40 41 42 21 22 23 24 25 26 1 2 4 8
n 14 15 16 17 18 19 20 21 22 23 24 25 26

(1)试画出如图5-25所示的拥塞窗口与传输轮次的关系曲线。
关系曲线(2)指明TCP工作在慢开始阶段的时间间隔。
(2)慢开始时间间隔:[1,6]和[23,26]。
(3)指明TCP工作在拥塞避免阶段的时间间隔。
(3)拥塞避免时间间隔:[6,16]和[17,22]。
(4)在第16轮次和第22轮次之后发送方是通过收到三个重复的确认还是通过超时检测到丢失了报文段?
(4)在第16轮次之后发送方从新门限值开始,是通过收到三个重复的确认检测到丢失的报文段。
在第22轮次之后发送方启动慢开始,是通过超时检测到丢失的报文段。
(5)在第1轮次、第18轮次和第24轮次发送时,门限ssthresh分别被设置为多大?
(5)在第1轮次发送时,门限 ssthresh 被设置为32。
在第18轮次发送时,门限ssthresh被设置为发生拥塞时的一半,即21。
在第24轮次发送时,门限ssthresh是13。
(6)在第几轮次发送出第70个报文段?
(6)第70报文段在第7轮次发送出。
(7)假定在第26轮次之后收到了三个重复的确认,因而检测出了报文段的丢失,那么拥塞窗口cwmd 和门限ssthresh应设置为多大?
(7)拥塞窗口cwnd 和门限ssthresh应设置为8的一半,即4。

5-49下面是以十六进制格式存储的一个UDP首部:
CB84000D001C001C 试问:
(1)源端口号是什么?

CB84是源端口 十六进制转十进制 12*163+11*162+8*16+4=52100。
(2)目的端口号是什么?
000D是目的端口 十六进制转十进制 13*160=13。
(3)这个用户数据报的总长度是多少?
001C是用户数据报的总长度 16+12=28。
(4)数据长度是多少?
数据部分长度为:28-首部长度=28-8=20。
(5)这个分组是从客户到服务器方向的,还是从服务器到客户方向的?
目的端口号是13(熟知端口),分组是从客户到服务器。
(6)客户进程是什么?
Daytime。

5-52UDP和IP的不可靠程度是否相同?请加以解释。
UDP用户数据报的校验和既校验UDP用户数据报的首部又校验整个的UDP用户数据报的数据部分,而IP数据报的校验和仅仅校验IP数据报的首部。UDP用户数据报的校验和还增加了伪首部,即还校验了下面的IP数据报的源IP地址和目的IP地址。

5-74流量控制和拥塞控制的最主要的区别是什么?发送窗口的大小取决于流量还是拥塞控制?
拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提:网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。
流量控制:指点对点通信量的控制,是端到端的问题。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
发送窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。如果再考虑到接收方的接收能力,那么发送窗口还可能小于拥塞窗口。
发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减少一些,以减少注入到网络中的分组数。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36949278/article/details/125799132

智能推荐

JavaScript学习笔记_curry函数未定义-程序员宅基地

文章浏览阅读343次。五种原始的变量类型1.Undefined--未定义类型 例:var v;2.String -- ' '或" "3.Boolean4.Number5.Null--空类型 例: var v=null;Number中:NaN -- not a number非数本身是一个数字,但是它和任何数字都不相等,代表非数,它和自己都不相等判断是不是NaN不能用=_curry函数未定义

兑换码编码方案实践_优惠券编码规则-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏17次。兑换码编码设计当前各个业务系统,只要涉及到产品销售,就离不开大大小小的运营活动需求,其中最普遍的就是兑换码需求,无论是线下活动或者是线上活动,都能起到良好的宣传效果。兑换码:由一系列字符组成,每一个兑换码对应系统中的一组信息,可以是优惠信息(优惠券),也可以是相关奖品信息。在实际的运营活动中,要求兑换码是唯一的,每一个兑换码对应一个优惠信息,而且需求量往往比较大(实际上的需求只有预期_优惠券编码规则

c语言周林答案,C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt...-程序员宅基地

文章浏览阅读45次。C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt* * 4.1 选择结构程序设计 4.2 循环结构程序设计 4.3 辅助控制语句 第四章 结构化程序设计 4.1 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的: 如果你在家,我去拜访你 如果考试不及格,要补考 如果遇到红灯,要停车等待 第四章 结构化程序设计 在现实生活中,需要进行判断和选择的情况..._在现实生活中遇到过条件判断的问

幻数使用说明_ioctl-number.txt幻数说明-程序员宅基地

文章浏览阅读999次。幻数使用说明 在驱动程序中实现的ioctl函数体内,实际上是有一个switch{case}结构,每一个case对应一个命令码,做出一些相应的操作。怎么实现这些操作,这是每一个程序员自己的事情。 因为设备都是特定的,这里也没法说。关键在于怎样组织命令码,因为在ioctl中命令码是唯一联系用户程序命令和驱动程序支持的途径 。 命令码的组织是有一些讲究的,因为我们一定要做到命令和设备是一一对应的,利_ioctl-number.txt幻数说明

ORB-SLAM3 + VScode:检测到 #include 错误。请更新 includePath。已为此翻译单元禁用波浪曲线_orb-slam3 include <system.h> 报错-程序员宅基地

文章浏览阅读399次。键盘按下“Shift+Ctrl+p” 输入: C++Configurations,选择JSON界面做如下改动:1.首先把 “/usr/include”,放在最前2.查看C++路径,终端输入gcc -v -E -x c++ - /usr/include/c++/5 /usr/include/x86_64-linux-gnu/c++/5 /usr/include/c++/5/backward /usr/lib/gcc/x86_64-linux-gnu/5/include /usr/local/_orb-slam3 include 报错

「Sqlserver」数据分析师有理由爱Sqlserver之十-Sqlserver自动化篇-程序员宅基地

文章浏览阅读129次。本系列的最后一篇,因未有精力写更多的入门教程,上篇已经抛出书单,有兴趣的朋友可阅读好书来成长,此系列主讲有理由爱Sqlserver的论证性文章,希望读者们看完后,可自行做出判断,Sqlserver是否真的合适自己,目的已达成。渴望自动化及使用场景笔者所最能接触到的群体为Excel、PowerBI用户群体,在Excel中,我们知道可以使用VBA、VSTO来给Excel带来自动化操作..._sqlsever 数据分析

随便推点

智慧校园智慧教育大数据平台(教育大脑)项目建设方案PPT_高校智慧大脑-程序员宅基地

文章浏览阅读294次,点赞6次,收藏4次。教育智脑)建立学校的全连接中台,对学校运营过程中的数据进行处理和标准化管理,挖掘数据的价值。能:一、原先孤立的系统聚合到一个统一的平台,实现单点登录,统一身份认证,方便管理;三、数据共享,盘活了教育大数据资源,通过对外提供数。的方式构建教育的通用服务能力平台,支撑教育核心服务能力的沉淀和共享。物联网将学校的各要素(人、机、料、法、环、测)全面互联,数据实时。智慧校园解决方案,赋能教学、管理和服务升级,智慧教育体系,该数据平台具有以下几大功。教育大数据平台底座:教育智脑。教育大数据平台,以中国联通。_高校智慧大脑

编程5大算法总结--概念加实例_算法概念实例-程序员宅基地

文章浏览阅读9.5k次,点赞2次,收藏27次。分治法,动态规划法,贪心算法这三者之间有类似之处,比如都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。但其实这三者之间的区别还是蛮大的。贪心是则可看成是链式结构回溯和分支界限为穷举式的搜索,其思想的差异是深度优先和广度优先一:分治算法一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两_算法概念实例

随笔—醒悟篇之考研调剂_考研调剂抑郁-程序员宅基地

文章浏览阅读5.6k次。考研篇emmmmm,这是我随笔篇章的第二更,原本计划是在中秋放假期间写好的,但是放假的时候被安排写一下单例模式,做了俩机试题目,还刷了下PAT的东西,emmmmm,最主要的还是因为我浪的很开心,没空出时间来写写东西。  距离我考研结束已经快两年了,距离今年的考研还有90天左右。  趁着这个机会回忆一下青春,这一篇会写的比较有趣,好玩,纯粹是为了记录一下当年考研中发生的有趣的事。  首先介绍..._考研调剂抑郁

SpringMVC_class org.springframework.web.filter.characterenco-程序员宅基地

文章浏览阅读438次。SpringMVC文章目录SpringMVC1、SpringMVC简介1.1 什么是MVC1.2 什么是SpringMVC1.3 SpringMVC的特点2、HelloWorld2.1 开发环境2.2 创建maven工程a>添加web模块b>打包方式:warc>引入依赖2.3 配置web.xml2.4 创建请求控制器2.5 创建SpringMVC的配置文件2.6 测试Helloworld2.7 总结3、@RequestMapping注解3.1 @RequestMapping注解的功能3._class org.springframework.web.filter.characterencodingfilter is not a jakart

gdb: Don‘t know how to run. Try “help target“._don't know how to run. try "help target".-程序员宅基地

文章浏览阅读4.9k次。gdb 远程调试的一个问题:Don't know how to run. Try "help target".它在抱怨不知道怎么跑,目标是什么. 你需要为它指定target remote 或target extended-remote例如:target extended-remote 192.168.1.136:1234指明target 是某IP的某端口完整示例如下:targ..._don't know how to run. try "help target".

c语言程序设计教程 郭浩志,C语言程序设计教程答案杨路明郭浩志-程序员宅基地

文章浏览阅读85次。习题 11、算法描述主要是用两种基本方法:第一是自然语言描述,第二是使用专用工具进行算法描述2、c 语言程序的结构如下:1、c 语言程序由函数组成,每个程序必须具有一个 main 函数作为程序的主控函数。2、“/*“与“*/“之间的内容构成 c 语言程序的注释部分。3、用预处理命令#include 可以包含有关文件的信息。4、大小写字母在 c 语言中是有区别的。5、除 main 函数和标准库函数以..._c语言语法0x1e