大学计算机复习资料

更新时间:2023-04-16 09:52:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

答:从通信和信息处理的角度来看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。运输层为应用进程之间提供端到端的逻辑通信。

网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。

运输层必不可少,因为:

( 1 )真正进行通信的实体是在主机中的进程,是两个主机的进程进行数据交换,而不是单纯的两个主机之间的通信,运输层正是实现主机进程之间的通信。

( 2 )运输层提供了复用和分用功能,使发送方不同的应用进程可以使用同一个运输层协议传送数据,而接收方的运输层可以把数据正确交付到目的应用进程。

( 3 )运输层还提供了对收到报文进行差错检测的功能。

( 4 )此外,运输层还向高层用户屏蔽了下面网络核心的细节,使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。所以运输层是必不可少的。

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

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

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

答:都是。这要在不同层次来看,在运输层是面向连接的,在网络层则是无连接的。

5-04、试用画图解释运输层的复用。画图说明许多个运输

用户复用到一条运输连接上,而这条运输连接有复用到IP 数据报上。

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

答:如IP电话、实时视频会议等。由于语音信息具有一定的冗余度,人耳对VOIP数据报损失由一定的承受度,但对传输时延的变化较敏感。因此这两种服务都要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延。

有差错的UDP数据报在接收端被直接抛弃,TCP数据报出错则会引起重传,可能带来较大的时延扰动。

因此IP电话、实时视频会议等宁可采用不可靠的UDP,而不愿意采用可靠的TCP。

(本题与5-15题相似)

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

答:发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。

接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除

首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。

发送方TCP对应用程序交下来的报文数据块,视为无结构的字节流(无边界约束,可分拆/合并),但维持各字节的顺序。

接收方TCP对 IP 层交上来的TCP报文段,在去除首部后就视为无结构的字节流(可将多个报文段合并),再按与发送方相同的字节顺序交付给上层的应用进程,一次交付一个报文数据块。

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

答:加上 UDP 的 8 字节首部,IP层的数据字段为8200字节。以太网的MTU 为1500字节。假设IP层采用默认首部,即20字节。那么应划分为8200/ (1500-20),为6片。前5片是1480字节。第6片是800字节。片偏移字段分别是:0,185, 370, 555, 740, 925。

解析:

IP包分片的相关知识见课本P127~128。

0, 1480, 1480*2,1480*3,1480*4,1480*5 (与上面的片偏段字段各个数字差8倍,想想为什么?)

5-14、一UDP用户数据报的首部的十六进制表示是:06 32 00 45 00 1C E2 17。试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器还是从服务器发送给客户?使用 UDP 的这个服务器程序是什么? (注:考试时若考此题会提供P194的图5-5) 答:源端口1586(十六进制的06 32, 6*162+3*161+5*160=1586),

目的端口69(十六进制的00 45, 4*16^1+5*16^0=69),UDP用户数据报总长度28(十六进制的00 1C,

1*161+12*160=28)字节,数据部分长度20字节。

此UDP用户数据报是从客户发给服务器(因为目的端口号<1023,是熟知端口)、服务器程序是TFFTP。

解析:

1、任意进制转换为十进制,用的是“权值相加法”。原理是:以十进制为例,我们知道345=3*103+4*101+5*100。同理,二进制的(1101)2=1*23+1*22+0*21+1*20=(8+4+1)10 =(13)10,十六进制的(12E)16=1*162+2*161+14*160=(302)16,十六进制数E相当于十进制的14。

第1、2字节为0632(注意:是十六进制),高位的0去掉,得(632)16= 4*162+3*161+2*160=(1586)10

同理,

第3、4字节00 45,有(45)16= 4*161+5*160=(69)10

第5、6字节00 1C,有(1C)16= 1*161+12*160=(28)10

2、相关知识。若十进制转换为其他进制则用“除n取余法”,如“除2取余法”、“除8取余法”、“除16取余法”等。不了解原理的同学请百度搜索“除2取余法”进行学习。

3、相关知识。若二进制与八进制、十六进制进行转换,可先将二进制转换为十进制、再将十进制转换为八进制、十六进制。也可以一步到位快捷转换,将3位二进制位对应1位八进制位、将4位二进制位对应1位八进制位(因为23=8,24=16)。例:

(1011111101)2=(001 011 111 101)2 =(1375)8

(1011111101)2=(0010 1111 1101)2 =(2FD)16

4、在Windows 7环境下,可用附件中的“计算器”工具,将“查看”主菜单设置为“程序员”选项,即可以不同进制间进行转换。建议通过该软件工具验证进制转换结果,但进制转换的方法还是应该掌握!

5-15、使用 TCP 对实时话音数据的传输有没有什么问题?使用 UDP 在传送数据文件时会有什么问题?

答: UDP不保证可靠交付,但 UDP 比 TCP 的开销要小很多。因此只要应用程序接受这样的服务质量就可以使用

UDP 。如果话音数据不是实时播放(边接收边播放)就可以使用 TCP ,因为 TCP 传输可靠。接收端用 TCP 将话音数据接收完毕后,可以在以后的任何时间进行播放。但假定是实时传输,则必须使用 UDP 。

5-23、主机A向主机B连续发送了两个TCP报文段,其序号分别为70和100。试问:

(1)第一个报文段携带了多少个字节的数据?

(2)主机B收到第一个报文段后发回的确认中的确认号应当是多少?

(3)如果主机B收到第二个报文段后发回的确认中的确认号是180,试问A发送的第二个报文段中的数据有多少字节?

(4)如果A发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文段到达后向A发送确认。试问这个确认号应为多少?

解:(1)第一个报文段的数据序号是70到99,共30字节的数据。

(2)确认号应为100.

(3)80字节。

(4)70

5-27、一个TCP报文段的数据部分最多为多少个字节?为什么?如果用户要传送的数据的字节长度超过TCP报文字段中的序号字段可能编出的最大序号,问还能否用TCP来传送?

答:65495字节,此数据部分加上TCP首部的20字节,再加上IP首部的20字节,正好是IP数据报的最大长度65535。(当然,若IP首部包含了选择,则IP首部长度超过20字节,这时TCP报文段的数据部分的长度将小于65495字节。)

数据的字节长度超过TCP报文段中的序号字段可能编出的最大序号,通过循环使用序号,仍能用TCP来传送。

5-42、在图5-32中所示的连接释放过程中,主机B能否先不发送ACK=x+1的确认? (因为后面要发送的连接释放报文段中仍有ACK=x+1这一信息)

答:如果B不再发送数据了,是可以把两个报文段合并成为一个,即只发送FIN+ACK报文段。但如果B还有数据报要发送,而且要发送一段时间,那就不行,因为A迟迟收不到确认,就会以为刚才发送的FIN报文段丢失了,就超时重传这个FIN报文段,浪费网络资源。

5-44、试以具体例子说明为什么一个运输连接可以有多种方式释放。可以设两个互相通信的用户分别连接在网络的两结点上。

答:设A,B建立了运输连接。协议应考虑一下实际可能性: A或B故障,应设计超时机制,使对方退出,不至于死锁;

A主动退出,B被动退出;

B主动退出,A被动退出。

5-45、解释为什么突然释放运输连接就可能会丢失用户数据,而使用TCP的连接释放方法就可保证不丢失数据。

答:当主机1和主机2之间连接建立后,主机1发送了一个TCP数据段并正确抵达主机2,接着主机1发送另一个TCP 数据段,这次很不幸,主机2在收到第二个TCP数据段之前发出了释放连接请求,如果就这样突然释放连接,显然主机1发送的第二个TCP报文段会丢失。

而使用TCP的连接释放方法,主机2发出了释放连接的请求,那么即使收到主机1的确认后,只会释放主机2到主机1方向的连接,即主机2不再向主机1发送数据,而仍然可接受主机1发来的数据,所以可保证不丢失数据。

5-46、试用具体例子说明为什么在运输连接建立时要使用三次握手。说明如不这样做可能会出现什么情况。

答:3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。

假定A给B发送一个连接请求分组,B收到了这个分组,并发送了确认应答分组。按照两次握手的协定,B认为连接已经成功地建立了,可以开始发送数据分组。可是,A在B 的应答分组在传输中被丢失的情况下,将不知道B是否已准备好,不知道B建议什么样的序列号,A甚至怀疑B是否收到自己的连接请求分组,在这种情况下,A认为连接还未建立成功,将忽略B发来的任何数据分组,只等待连接确认应答分组。而B发出的分组超时后,重复发送同样的分组。这样就形成了死锁。

(上一段也可改为按课本P226第2段举例:当A发送的连接延迟到达B时,由于A已取消连接、但B认识是有效的连接,B发回确认、但A不理睬,这样将会浪费B的资源)。

本文来源:https://www.bwwdw.com/article/sfsq.html

Top