计算机网络(谢希仁 您所在的位置:网站首页 ourriskofcancerrises答案 计算机网络(谢希仁

计算机网络(谢希仁

2024-06-30 23:53| 来源: 网络整理| 查看: 265

5-01 试说明运输层在协议栈中的地位和作用。运输层的通信和网络层的通信有什么重要的区别?为什么运输层是必不可少的?

地位和作用:

从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能的最低层,当网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,都要使用协议栈中的运输层。

网络层和运输层通信的重要区别:

从IP层来说,通信的两端是两台主机,IP数据报的首部明确标志了这两台主机的IP地址。但实际上,真正进行通信的实体是在主机中的应用进程——是一台主机中的应用进程和另一台主机中的应用进程在交换数据(即通信)。

因此,IP协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付主机中的应用进程。

而运输层正是实现主机间进程通信的协议层,实现不同主机之间进程的“逻辑通信”(逻辑通信的意思是:从应用层来看,只要应用层报文交给下面的运输层,运输层就可以将这报文传送到对方的运输层。。好像这种通信就是沿水平方向直接传送数据,但事实上这两个运输层之间并没有一条水平方向的物理连接,数据的传送是经过多个层次传送的)

df30da4e49dd45e480fd3f2df3cafd44.png

为什么运输层必不可少:

正如前面所说的,真正通信的实体是主机之间的不同进程,因此,需要运输层将网络分组交付给进程,完成进程间的通信。除此之外,由于网络层的不可靠性,运输层还要对收到的报文进行差错检测,运输层的TCP协议还可以保证可靠传输。

5-02 网络层提供数据报或虚电路服务对上面的运输层有何影响? 

网络层提供的数据报或虚电路服务不影响上面的运输层的运行机制,但提供不同的服务质量。

网络层所提供的服务越多,传输层协议就可以做得越简单。

虚电路服务的思路是:可靠通信应当由网络来保证 。它规定属于同一条虚电路的分组按照同一路由进行转发,而且转发的方式总是按发送的顺序以此到达终点。这样做虽然使中间的网络节点造价比通信端点造价高,但这样能基本保证报文无差错、不丢失、不重复且按序地进行交付,因此运输层的协议就可以做得很简单。

数据报服务的思路是:可靠通信由用户主机来保证,它对运输层只提供简单灵活,无连接的,尽最大努力交付的数据报服务,是不可靠的通信。因此,若要保证通信的质量,要求主机有一个复杂的传输协议,这个协议就交给运输层。

(26条消息) 【计算机网络 (谢希仁) 习题题解】第5章 运输层 (1)——UDP_计算机网络第八版谢希仁课后答案第五章_今岁成蹊的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/HPP_CSDN/article/details/117250463

5-03 当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接还是无连接的?

这个问题得从不同层次来看:

若是运输层,TCP是面向连接的,为应用程序提供端到端的可靠传输服务。

若是IP层,IP是无连接的,是不可靠的传输,可能丢包、乱序等。

5-04 试画图解释运输层的复用。画图说明许多个运输用户复用到一条运输连接上,而这条运输连接又复用到IP数据报上。 

127e12ea6786482da644007676140548.png

 在一台主机中经常有多个应用进程分别和另一台主机中的多个应用进程通信。

在上图中,主机A的进程AP1和主机B的进程AP3通信,而此时,AP2也和对方的AP4通信。他们都可以用同一个运输层协议进行数据交换(当然要加上适当的首部),这表明运输层有个很重要的功能——复用。

复用——发送方不同的应用进程都可以使用同一个运输层协议传输数据

分用——接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程

IP层的复用和分用:发送方使用不同协议的数据都可以封装成IP数据报发送出去,而在接收方的IP层根据IP首部的协议字段进行分用,把剥去首部的数据交付应当接受这些数据的协议。

5-05 试举例说明有些应用程序愿意采用不可靠的UDP,而不愿意采用可靠的TCP。 

实时数据:

比如QQ聊天、视频播放平台哔哩哔哩等。在互联网上传输实时数据的分组时,有可能会出现差错甚至丢失。如果利用TCP协议对这些出错或丢失的分组进行重传,那么时延就会大大增加。因此,实时数据的传输在运输层就应采用用户数据报UDP协议。这就是意味着,对于实时数据的传输,我们宁可丢失少量分组,也不要等待太晚到达的分组。在连续的音频和视频数据流中,很少量的分组丢失对播放效果的影响不大,因而是可以容忍的。

另外,当网络出现拥塞时,TCP的拥塞控制就会让TCP的发送方放慢报文段的发送。可能有的应用程序就不愿意放慢其报文段的发送速度。

其次,可能有的应用程序不需要TCP的可靠传输,在上面这些情况下,就宁可使用UDP来传送。

21e6454df48d49a083273091123d4305.png

试举例说明有些应用程序愿意采用不可靠的 UDP,而不愿意采用__牛客网 (nowcoder.com)icon-default.png?t=N7T8https://www.nowcoder.com/questionTerminal/dbb080e409654ca683f37dfef88500d5

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

因为UDP首部的检验和字段,会检验首部和数据部分。

如果有差错,接收方会丢弃这个用户数据报;

但是也可以上交给应用层,但要附上出现了差错的警告。

5-07 如果应用愿意使用UDP完成可靠传输,这可能吗?请说明理由。

这是可能的,但这要由应用层自己来完成可靠传输。例如,应用层自己使用可靠传输协议。

底层不保证可靠传输,又想实现可靠传输,这就只能将可靠传输交付上层来实现了。

计网|计算机网络传输层(运输层)一些必须要懂的重难点课后习题整理(一) - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/402864699

5-08 为什么说UDP是面向报文的,而TCP是面向字节流的?

UDP是面向报文的:发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对用用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这意味着,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一整个报文。所以说UDP是面向报文传输的。

TCP是面向字节流:TCP中的“流”指的是流入到进程或从进程流出的字节序列。虽然应用程序和TCP的交互是一次一个数据块(大小不等),但是TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。

48ec83be4f7a4685a6266ea07bb73898.png

5-09 端口的作用是什么?为什么端口号要划分为三种?

我们知道,通信的实体是主机之间的进程。在单个计算机中的进程是用进程标识符来标志的,但是在互联网中,计算机的操作系统种类很多,不同的操作系统又使用不同格式的进程标识符。为了使运行在不同操作系统上的计算机中的进程能够相互通信,就必须用统一的方法对应用进程进行标志。

但是,将一个特点机器上运行的特定进程,指明为互联网上通信的最后终点时不可行的。这是因为进程是动态的程序,进程的创建和撤消都是动态的,通信的一方几乎无法知道和识别对方机器上的进程。另外,我们往往需要利用目的主机提供的功能来识别终点,但是不一定要知道这个服务器的功能是由目的主机的哪一个进程实现的。

因此,端口就应运而生了。在应用层和运输层之间的界面上,设置一个特殊抽象的“门”,应用层中的应用要通过运输层发送到互联网,就必须通过这个“门”,这个“门”就是端口。

简而言之,端口的作用就是对TCP/IP体系的应用进程进行统一的标志,使运行在不同操作系统的计算机的应用进程能够互相通信。

将端口号分为3类是因为:避免端口号重复,无法区分应用进程。二是因特网上的计算机通信都是采用C/S方式,在客户发起通信请求时,必须知道服务器的端口,对于一些主要  的应用程序,必须让所有用户知道。

端口的作用是什么?为什么端口号要划分为三种?__牛客网 (nowcoder.com)icon-default.png?t=N7T8https://www.nowcoder.com/questionTerminal/2698c6c392cd47f0abf7954dabb22f36?page=1&onlyReference=false#:~:text=%E7%AB%AF%E5%8F%A3%E7%9A%84%E4%BD%9C%E7%94%A8%E6%98%AF%E5%AF%B9TCP%2FIP%E4%BD%93%E7%B3%BB%E7%9A%84%E5%BA%94%E7%94%A8%E8%BF%9B%E7%A8%8B%E8%BF%9B%E8%A1%8C%E7%BB%9F%E4%B8%80%E7%9A%84%E6%A0%87%E5%BF%97%EF%BC%8C%E4%BD%BF%E8%BF%90%E8%A1%8C%E4%B8%8D%E5%90%8C%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%9A%84%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E5%BA%94%E7%94%A8%E8%BF%9B%E7%A8%8B%E8%83%BD%E5%A4%9F%E4%BA%92%E7%9B%B8%E9%80%9A%E4%BF%A1%E3%80%82,%E6%8A%8A%E7%AB%AF%E5%8F%A3%E5%88%92%E5%88%86%E4%B8%BA3%E7%B1%BB%E6%98%AF%E5%9B%A0%E4%B8%BA%EF%BC%9A%E9%81%BF%E5%85%8D%E7%AB%AF%E5%8F%A3%E5%8F%B7%E9%87%8D%E5%A4%8D%EF%BC%8C%E6%97%A0%E6%B3%95%E5%8C%BA%E5%88%86%E5%BA%94%E7%94%A8%E8%BF%9B%E7%A8%8B%E3%80%82

5-10 试说明运输层中伪首部的作用。

伪首部并不是UDP用户数据报真正的首部,只是在计算检验和时,临时添加在UDP用户数据包前面,得到一个UDP用户数据报。

检验和就是按照这个临时的UDP用户数据报来计算的。这个伪首部既不向下传送也不向下递交,仅仅是为了计算检验和。

344dd271a9c74437ae5d1f0600563ab8.png

5-11 某个应用进程使用运输层的用户数据报UDP,然后继续向下交给IP层后,又封装成IP数据报。既然都是数据报,是否可以跳过UDP而直接交给IP层?哪些功能UDP提供了但IP没有提供?

不可以。

IP数据报承担了主机寻址功能,可以找到目的主机,却无法找到目的进程,分组还是停留在网络节点中,而无法到达通信实体。

UDP提供了对进程的分用和复用功能,以及对数据报的差错检测。

5-12 一个应用程序用UDP,到了IP层把数据报再划分为4个数据报片发送出去。结果前两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传UDP,而IP层仍然划分为4个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的站能否将这两次传输的4个数据报片组装成完整的数据报?假定目的站第一次收到的后两个数据报片仍然保存在目的站的缓存中。

不行。

重传时,IP数据报的标识字段会有另一个标识符,只有标识符相同的IP数据报片才能组装成一个IP数据报。

5-13 一个UDP用户数据报的数据字段为8192字节。在链路层要使用以太网来传送。试问应当划分为几个IP数据报片?说明每个IP数据报的数据字段长度和片偏移字段的值。 

已知UDP数据报的数据字段为8192字节,再加上UDP的首部,一共8200字节。每个MAC帧数据部分的最大长度为1500,除去IP数据报的固定首部20字节,可知IP数据报的数据部分为1480字节。

应当划分为:

                               8200/1480 = 5...800

因此应当划分为6个IP数据报片,每个数据报片的数据字段长度和片偏移如下:

① 1500字节(加首部20字节) 片偏移为:0

② 1500字节                              片偏移为1480/8 = 185 

③ 1500字节                              片偏移为2960/8 = 370

④ 1500字节                              片偏移为4440/8 = 555

⑤ 1500字节                              片偏移为5920/8 = 740

⑥  820 字节                              片偏移为7400/8 = 925

 5-14 一个UDP用户数据报的首部的十六进制表示是:06 32 00 45 00 1C E2 17.试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发给服务器还是从服务器发送给客户?使用UDP这个服务器程序是什么?

根据UDP的首部组成:

344dd271a9c74437ae5d1f0600563ab8.png

可知,

源端口: 0*16^3+6*16^2+3*16+2*16^0 = 1586(十进制)

目的端口: 0*16^3+0*16^2+4*16+5*16^0 = 69(十进制)

用户数据报总长度:0*16^3+0*16^2+1*16+12*16^0 = 28(十进制)

数据部分长度 = 总长度 - 首部长度 = 20(字节)

目的端口为692190字节,则设置初始拥塞窗口为cwnd = 2xSMSS字节,且不能超过2个报文段

若SMSS>1095字节且SMSS



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有