1、计算机网络(运输层)模拟试卷 8 及答案与解析一、单项选择题1 ( )是传输层数据交换的基本单位。(A)位(B)分组(C)帧(D)报文段2 TCP 是一个面向连接的协议,它提供连接的功能是( )的。(A)全双工(B)半双工(C)单工(D)不确定3 三次握手方法用于( ) 。(A)传输层连接的建立(B)数据链路层的流量控制(C)传输层的重复检测(D)传输层的流量控制4 TCP 段头的最小长度是( )字节。(A)16(B) 20(C) 24(D)32二、填空题5 TCP 可以提供 ( )服务。三、简答题6 既然网络、层协议或网际互联协议能够将源主机发出的分组按照协议首部中的目的地址交到目的主机,为
2、什么还需要再设置一个传输层呢?7 试述 UDP 和 TCP 协议的主要特点及其适用场合。8 请分析 SYN Flood 攻击是如何利用 3 次握手的漏洞的。9 TCP 报文段首部的十六进制为 04 85 00 50 2E 7C 84 03 FE 34 D7 47 50 11 FF 6C DE 69 00 00请分析这个 TCP 报文段首部各字段的值。10 试简述 TCP 协议在数据传输过程中收发双方是如何保证报文段的可靠性的。11 为什么说 TCP 协议中即使某数据包的应答包丢失也不一定会导致该数据包重传?12 若 TCP 中的序号采用 64bit 编码,而每一个字节有其自己的序号,试问:在7
3、5Tbs 的传输速率下(这是光纤信道理论上可达到的数据率),分组的寿命应为多大才不会使序号发生重复?13 试用具体例子说明为什么在运输连接建立时要使用 3 次握手。说明如不这样做可能会出现什么情况。14 某个应用进程使用运输层的 UDP,然而继续向下交给 IP 层后,又封装成 IP 数据报。既然都是数据报,可否跳过 UDO 而直接交给 IP 层?哪些功能 UDP 提供了但IP 没提供?15 在一条往返时间为 10ms 的无拥塞线路上使用慢启动算法效果。接收窗口为24KB,最大数据段长度为 2KB。请问需多长时间才能发送满窗口的数据?16 当应用程序使用面向连接的 TCP 和无连接的 IP 时,
4、这种传输是面向连接的还是面向无连接的?17 如果应用程序愿意使用 UDP 来完成可靠的传输,这可能吗 ?请说明理由18 一个 TCP 连接下面使用 256Kbs 的链路,其端到端时延为 128ms。经测试,发现吞吐量只有 120Kbs。试问发送窗口 W 是多少?( 提示:可以有两种答,取决于接收等发出确认的时机)。19 为什么在 TCP 首部中要把 TCP 端口号放入最开始的 4 个字节?20 为什么在 TCP 首部中有一个首部长度字段,而 UDP 的首部中就没有这个字段?21 一个 TCP 报文段的数据部分最多为多少个字节? 为什么?如果用户要传送的数据的字节长度超过 TCP 报文字段中的序
5、号字段可能编出的最大序号,问还能否用TCP 来传送?22 通信信道带宽为 10bs,端到端时延为 10ms。TCP 的发送窗口为 65535 字节。试问:可能达到的最大吞吐量是多少?信道的利用率是多少?四、论述题22 主机 A 向主机 B 连续发送了两个 TCP 报文段,其序号分别为 70 和 100。试问:23 第一个报文段携带了多少个字节的数据?24 主机 B 收到第一个报文段后发回的确认中的确认号应当是多少?25 如果主机 B 收到第二个报文段后发回的确认中的确认号是 180,试问 A 发送的第二个报文段中的数据有多少字节?26 如果 A 发送的第一个报文段丢失了,但第二个报文段到达了
6、B。B 在第二个报文段到达后向 A 发送确认。试问这个确认号应为多少 ?计算机网络(运输层)模拟试卷 8 答案与解析一、单项选择题1 【正确答案】 D【试题解析】 因主机、路由器和链路层交换机,每个包含了不同的层,反映了不同的功能。位于应用层的信息分组称为报文,运输层分组称为报文段。【知识模块】 运输层2 【正确答案】 A【试题解析】 全双工(Full Duplex)是在微处理器与外围设备之间采用发送线和接收线各自独立的方法,可以使数据在两个方向上同时进行传送操作。指在发送数据的同时也能够接收数据,两者同步进行,这好像平时打电话一样,说话的同时也能够听到对方的声音。目前的网卡一般都支持全双工。
7、【知识模块】 运输层3 【正确答案】 A【试题解析】 三次握手(Three Times Handshake;Three-Way Handshaking)即对每次发送的数据量是怎样跟踪进行协商,使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。为了提供可靠的传送,TCP 在发送新的数据之前,以特定的顺序将数据包的编号,并需要这些包传送给目标机之后的确认消息。TCP 总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到 TCP。【知识模块】 运输层4 【正确答案】 B【试题解析】 IP+TCP 头都是 20 字节,加起
8、来 40 字节,不过需要填充一些数据,达到 64 字节;否则,网络设备会认为这个数据包是碎片而丢弃。【知识模块】 运输层二、填空题5 【正确答案】 面向连接的、可靠的、全双工的数据流传输【知识模块】 运输层三、简答题6 【正确答案】 (1)传输层为应用进程之问提供端到端的逻辑通信。(2)传输层对整个报文段进行差错校验和检测。(3)传输层的存在使得传输服务比网络服务更加合理、有效。(4)传输层采用一个标准的原语集提供传输服务。从以上分析可以看出,要实现上述的功能,仅有网络层是不够的,在主机中就必须装有传输层协议。【知识模块】 运输层7 【正确答案】 UDP 协议具有以下特点:UDP 是无连接的,
9、提供不可靠的服务,同时支持点到点和多点之间的通信,是面向报文的。TCP 协议具有以下特点:TCP 是面向连接的,提供可靠的服务,只能进行点到点的通信,是面向字节流的。TCPIP 协议的传输层既包括 TCP 也包括 UDP,它们提供不同的服务。应用层协议如果强调数据传输的可靠性,那么选择 TCP 较好,分组的丢失、残缺甚至网络重置都可以被传输层检测到,并采取相应的补救措施。如果应用层协议强调实时应用要求,那么以选择 UDP 为宜。【知识模块】 运输层8 【正确答案】 SYN Flod 是当前最流行的 DoS(拒绝服务攻击)与 DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用 TCP 协议缺
10、陷,发送大量伪造的 TCP 连接请求,从而使得被攻击方资源耗尽(CPU 满负荷或内存不足)的攻击方式。要明白这种攻击的基本原理,就要从 TCP 连接建立的过程开始说起。大家都知道,TCP 与 UDP 不同,它是基于连接的,也就是说,为了在服务端和客户端之间传送 TCP 数据,必须先建立一个虚拟电路,也就是 TCP 连接,建立 TCP连接的标准过程是这样的:(1)请求端(客户端)发送一个包含 SYN 标志的 TCP 报文,SYN 即同步,同步报文会指明客户端使用的端口以及 TCP 连接的初始序号。(2)服务器在收到客户端的 SYN 报文后,将返回一个 SYN+ACK 的报文,表示客户端的请求被接
11、受,同时 TCP 序号被加 1,ACK 即确认。(3)客户端也返回一个确认报文 ACK 给服务器端,同时 TCP 序号被加 1,至此一个TCP 连接建立。以上的连接过程在 TCP 协议中被称为 3 次握手。问题就出在 TCP 连接的 3 次握手中,假设一个用户向服务器发送了 SYN 报文后突然死机或掉线,那么服务器在发出 SYN+ACK 应答报文后是无法收到客户端的 ACK 报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送 SYN+ACK 给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度称为 SYN Timecout,一般来说,这个时间是分钟数量级的(大约为
12、30s2min);一个用户出现异常导致服务器的一个线程等待 1min 并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源一一数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的 CPU 时间和内存,何况还要不断对这个列表中的 IP 进行 SYN+ACK 的重试。实际上,如果服务器的 TCPIP栈不够强大,最后的结果往往是堆栈溢出崩溃,即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的 TCP 连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常小),此时从正常客户的角度来看,服务器失去响应,这种情况
13、称为:服务器端受到了 SYN Flood 攻击(SYN 洪水攻击)。【知识模块】 运输层9 【正确答案】 【知识模块】 运输层10 【正确答案】 (1)为了保证数据包的可靠传递,发送方必须把已发送的数据包保留在缓冲区。(2)为每个已发送的报文段启动一个超时定时器。(3)如在定时器超时之前收到 r 对方发来的应答信息(可以是对本报文段的应答,也可以是对本报文段后续报文段的应答),则释放该报文段占用的缓冲区;否则,重传该报文段,直到收到应答或重传次数超过规定的最大次数为止。(4)接收方收到报文段后,先进行 CRC 校验,如果正确则把数据交给上层协议,然后给发送方发送一个累计应答报文段,表明该数据已
14、收到,如果接收方正好也有数据要发给发送方,应答报文段也可在报文段中捎带过去。【知识模块】 运输层11 【正确答案】 TCP 的确认是对接收到的数据的最高序号(即收到的数据流中的最后一个字节的序号)表示确认,但返回的确认序号是已收到的数据的最高序号加1。也就是说,确认序号表示期望下次收到的第一个数据字节的序号。确认具有“累积确认”效果。针对某数据包的应答报文段丢失的情况下,只要在超时时间间隔内,收到后续的TCP 报文段确认,则不需要重传 TCP 报文段。【知识模块】 运输层12 【正确答案】 如果采用 64bit 编码,则 TCP 序号空间的大小是 264 个字节,约为 21019 字节, 75
15、89375,即 75Tbs 的发送器每秒消耗 937510 12 个序号。21019(937510 12)2106,所以序号循环一周需用 2106s。 一天有86400s(606024=86400),以 75Tbs 速率传输,序号循环一周所花的时间约等于2106864 0023 天,因此,最长的分组的寿命应小于 3 个星期才不会使序号发生重复。【知识模块】 运输层13 【正确答案】 众所周知,3 次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。现在把三次握于改成仅需要两次握手,死锁是可能发
16、生的。作为例子,考虑计算机 A 和 B 之间的通信,似定 B 给 A 发送一个连接请求分组,A 收到了这个分组,并发送确认应答分组。按照两次握手的协定,A 认为连接已经成功建立了,可以开始发送数据分组。可是 B 在 A 的应答分组在传输中被丢失的情况下,将不知道 A 是否已准备好,不知道 A 建议什么样的序列号,B 甚至怀疑 A 是否收到自己的连接请求分组。在这种情况下, B 认为连接还未建立成功,将忽略 A 发来的任何数据分组,只等待连接确认应答分组。而 A 在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。此外,还可能建立无用的连接。考虑 B 给人发送一个连接请求分组,但该分组延迟
17、了很长时间才到达 A,B 已经重发连接建立请求。而延迟的请求分组到达 A 后,A 认为这是一个新的请求,从而建立起无用的连接。【知识模块】 运输层14 【正确答案】 一般来说仅仅使用 IP 分组还不够, IP 分组包含 IP 地址,该地址指定一个目的主机,一旦这样的分组到达目的主机,网络控制程序如何知道该把它交给哪个应用进程呢?UDP 报文包含一个目的端口,有了它,分组才能被投递给正确的应用进程。UDP 提供的端口号和对数据的差错检验功能是 IP 协议没有提供的。【知识模块】 运输层15 【正确答案】 按照慢启动算法,经过 10ms、20ms、30ms、40ms 后拥塞窗口大小分别为 4、8、
18、16、32,所以在 40ms 后将按照 min24,32=24KB 发送数据。【知识模块】 运输层16 【正确答案】 都是。这要在不同层次来看,在运输层是面向连接的,在网络层则是面向无连接的。【知识模块】 运输层17 【正确答案】 可能,若应用程序中必须额外提供与 TCP 相同的功能。UDP 只提供了尽最大可能交付的功能,并没有提供流量控制的功能。接收方收到有差错的UDP 用户数据报丢弃或是附加差错警告报告传给上层。【知识模块】 运输层18 【正确答案】 来回路程的时延等于 256ms(=128ms2)。设窗口值为 X(注意:以字节为单位),假定一次最大发送量等于窗口值,且发送时间等于 256
19、ms,那么,每发送一次都得停下来期待再次得到下一窗口的确认,以得到新的发送许可。这样,发送时间等于停止等待应答的时间,结果测到的平均吞吐率就等于发送速率的一半,即 8X(256*1000)=256*0001X=8192 。所以,窗口值为 8192。【知识模块】 运输层19 【正确答案】 在 ICMP 的差错报文中要包含 IP 首部后面的 8 个字节的内容,而这里有 TCP 首部中的源端口和目的端口。当 TCP 收到 ICMP 差错报文时需要用这两个端口来确定是哪条连接出了差错。具体见下图。【知识模块】 运输层20 【正确答案】 TCP 首部除固定长度部分外,还有选项,因此 TCP 首部长度是可
20、变的。UDP 首部长度是固定的。【知识模块】 运输层21 【正确答案】 65495 字节,此数据部分加上 TCP 首部的 20 字节,再加上 IP 首部的 20 字节,正好是 IP 数据报的最大长度 65535(当然,若 IP 首部包含了选择,则 IP 首部长度超过 20 字节,这时 TCP 报文段的数据部分的长度将小于 65495 字节。 数据的字节长度超过 TCP 报文段中的序号字段可能编出的最大序号,通过循环使用序号,仍能用 TCP 来传送。【知识模块】 运输层22 【正确答案】 L=655368+408=524600 C=109bs LC=00005246s Td=1010-3s 所以 LC+2T d=002104864 Throughput=L(LC+2T d)=5246000 0205246=255Mbs Efficiency=(LC)(L C+2D)=00255 最大吞吐量为 255Mbs。信道利用率为 2551000=255。【知识模块】 运输层四、论述题【知识模块】 运输层23 【正确答案】 第一个报文段的数据序号是 7099,共 30 字节的数据。【知识模块】 运输层24 【正确答案】 确认号应为 100。【知识模块】 运输层25 【正确答案】 80 字节。【知识模块】 运输层26 【正确答案】 确认号应为 70【知识模块】 运输层