免费智能真题库 > 历年试卷 > 网络工程师 > 2023年上半年 网络工程师 上午试卷 综合知识
  第22题      
  知识点:   TCP协议和UDP协议   TCP   TCP拥塞控制   恢复   计时器
  关键词:   TCP   计时器   拥塞控制   拥塞        章/节:   TCP/IP 协议       

 
TCP拥塞控制机制中,快速重传的目的是让主机在计时器超时前能够快速恢复,其触发条件是()。
 
 
  A.  计时器超时
 
  B.  拥塞窗口超过阙值
 
  C.  收到该报文的ACK
 
  D.  收到3个冗余ACK
 
 
 

 
  第22题    2019年下半年  
   37%
建立TCP连接时,被动打开一端在收到对端SYN前所处的状态为( )。
  第64题    2013年下半年  
   35%
TCP协议使用_(63) 次握手过程建立连接,这种方法可以防止(64)。TCP使用的流量控制协议是(65)。
  第26题    2012年上半年  
   10%
TCP协议使用(26)次握手机制建立连接,当请求方发出SYN连接请求后,等待对方回答(27),这样可以防止建立错误的连接。
   知识点讲解    
   · TCP协议和UDP协议    · TCP    · TCP拥塞控制    · 恢复    · 计时器
 
       TCP协议和UDP协议
               IP协议提供不可靠、无连接和尽力投递的服务,构成了因特网数据传输的基础。以此为基础,TCP协议软件增加了确认一重发、滑动窗口和复用/解复用等机制。
               TCP协议的特性
               TCP协议在IP协议软件提供服务的基础上,支持面向连接的、可靠的、面向流的投递服务。
               1)面向流的投递服务
               应用程序之间传输的数据可被视为无结构的字节流(或位流),流投递服务保证收发的字节顺序完全一致。
               2)面向连接的投递服务
               流传输之前,TCP收发模块之间需建立连接(类似虚电路),其后的TCP报文在此连接基础上传输。TCP连接报文通过IP数据报进行传输,由于IP数据报的传输导致ARP地址映射表的产生,从而保证了后继的TCP报文可以具有相同的路径。
               3)可靠的传输服务
               发送方TCP模块在形成TCP报文的同时,形成一个"累计核对"。"累计核对"类似于校验和,并随同TCP报文一起传输。接收方TCP模块根据该校验和判断传输的正确性:如果传输不正确,接收方简单地丢弃该TCP报文;否则进行应答。发送方如果在规定的时间内未能获得应答报文,则自动进行重传动作。
               4)缓冲传输
               为了保证数据传输的效率,TCP模块提供强制性传输(立即传输)和缓冲传输两种手段。缓冲传输允许将应用程序的数据流积累到一定的体积,形成报文,再进行传输。
               5)全双工传输
               TCP模块之间可以进行全双工的数据流交换。
               6)流量控制
               TCP模块提供滑动窗口机制,支持收发TCP模块之间的端到端流量控制。
               TCP端口和连接
               TCP模块以IP模块为传输基础,同时又可向多种应用程序提供传输服务。为了能够区分出对应的应用程序,引入了TCP端口的含义。
               TCP端口类似于OSI中传输层服务访问点,与一个16位的整数值相对应,该整数值也被称为TCP端口号。需要服务的应用进程与某个端口号进行连接,此时,TCP模块就可以通过该TCP端口与应用进程通信。
               由于IP地址可以对应到因特网中的某台主机,而TCP端口号可对应到主机上的某个应用进程,因此,TCP模块采用IP地址和端口号的对偶来标识TCP连接的端点。一条TCP连接实质上对应了一对TCP端点。
               TCP窗口机制
               TCP的特点之一是提供体积可变的滑动窗口机制,支持端到端的流量控制。TCP的窗口以字节为单位进行调整,以适应接收方的处理能力。处理过程如下。
               (1)TCP连接阶段,双方协商窗口尺寸,同时接收方预留数据缓存区。
               (2)发送方根据协商的结果,发送符合窗口尺寸的数据字节流,并等待对方的确认。
               (3)接收方根据当前的处理能力,调整接收窗口的尺寸,并在确认中告知发送方。
               (4)发送方根据确认信息,改变窗口的尺寸,增加或者减少发送未得到确认的字节流中的字节数。调整过程包括:如果出现发送拥塞,则应将发送窗口缩小为原来的一半,同时将超时重传的时间间隔扩大一倍。
               TCP的窗口机制和确认保证了数据传输的可靠性和流量控制。
               UDP
               UDP是TCP/IP协议簇中等同于TCP的通信协议,其差异在于:UDP直接利用IP进行UDP数据报的传输,因此UDP提供的是无连接、不可靠的数据报投递服务。
               UDP常用于数据量较少的数据传输。例如,域名系统中域名地址/IP地址的映射请求和应答采用UDP进行传输,以减少TCP连接的过程,提高工作效率。
               当使用UDP传输信息流时,用户负责解决排序、差错确认等问题。
 
       TCP
        TCP是面向连接的通信协议,通过三次握手建立连接,通信完成时要拆除连接,由于TCP是面向连接的,所以只能用于端到端的通信。
        TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口,实际表示接收能力,用以限制发送方的发送速度。
        如果IP数据包中有已经封装好的TCP数据包,那么IP将把它们向“上”传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路之间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包则可以被重传。
        TCP将它的信息发送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层、设备驱动程序和物理介质,最后传送到接收方。
        面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
 
       TCP拥塞控制
        因特网是一种无连接、尽力服务的分组交换网,这种网络结构和服务模型与网络拥塞现象的发生密切相关。与电路交换技术相比,因特网采用的分组交换技术通过统计复用提高了链路的利用率,但是很难保证用户的服务质量。端节点在发送数据前无须建立连接,这种方式简化了网络设计,使得网络的中间节点无须保存状态信息。但是,这种无连接方式难以控制用户注入到网络中的报文数量,当用户注入网络的报文数量大于网络容量时,网络将会发生拥塞,导致网络性能下降。
        拥塞控制的基本功能是消除已经发生的拥塞,或避免拥塞的发生。目前的拥塞控制机制主要在网络的传输层实现,最典型的是TCP中的拥塞控制机制。实际上,最初的TCP协议只有流量控制机制而没有拥塞控制机制,接收方在应答报文中将自己能够接收的报文数目通知发送方,以限制发送窗口的大小。这种机制仅仅考虑了接收方的接收能力,而没有考虑网络的传输能力,因此会导致拥塞崩溃(Congestion Collapse)。1986年10月,因特网发生了第一次拥塞崩溃。那时,从LBL(Lawrence Berkeley Laboratory)到加州大学伯克利分校的数据吞吐量从32kb/s下降到40b/s。此后,拥塞控制成为计算机网络研究领域的热点问题。
               拥塞和拥塞控制
               网络拥塞是计算机网络运行过程中经常发生的一种现象,可以从不同的角度给出网络拥塞(简称拥塞)的具体定义。从拥塞的表现形式来定义,拥塞是指由于路由器中排队的报文足够多,导致缓存溢出,路由器开始丢弃报文的现象;从拥塞对网络的影响来定义,拥塞是指网络中存在过多的报文时,导致网络性能下降的现象;从拥塞产生的根本原因来定义,拥塞是指当报文到达速率大于路由器的转发速率时发生的一种现象。
               拥塞控制是指网络节点采取措施避免拥塞的发生或对已经发生的拥塞做出的响应。从拥塞控制的定义可以看出,拥塞控制机制包括两个部分:拥塞避免和拥塞控制。拥塞避免是一种“主动”机制,它的目标是使网络运行在高吞吐量、低延迟的状态,避免网络进入拥塞状态;拥塞控制是一种“响应”机制,它的功能是把网络从拥塞状态恢复出来。
               从控制理论的角度分析,因特网中的拥塞控制主要采用闭环控制的方式。一般包括3个阶段:根据网络状况检测拥塞的发生,将拥塞信息反馈到拥塞控制点,拥塞控制点根据拥塞信息进行调节以消除拥塞。根据拥塞控制算法的实现位置,可以分为链路算法和源算法。链路算法主要是在网络设备(如路由器)中执行,路由器负责检测拥塞的发生,产生拥塞反馈信息;源算法在主机中执行,主要作用是根据拥塞信息调节发送速率。其中,拥塞控制的源算法中使用最广泛的是TCP拥塞控制机制。
               对于任何一种拥塞控制机制,都需要采用特定的评价准则来衡量它们是否公平有效地分配带宽。拥塞控制机制的有效性度量指标主要包括吞吐量、利用率、效率、延迟、队列长度、有效吞吐量(Goodput)和能量(Power,吞吐量/延迟)等。
               拥塞控制的过程
               TCP拥塞控制是在20世纪80年代后期由Van Jacobson引入因特网的。为了进行拥塞控制,TCP为每条连接维持两个新变量:一个是拥塞窗口cwnd;另一个是慢启动阈值ssthresh,ssthresh被用来确定是进入慢启动阶段还是进入拥塞避免阶段,一般将ssthresh的初始值设定为通告窗口值。
               引入拥塞窗口cwnd后,TCP发送方的最大发送窗口修改为“允许发送方发送的最大数据量为当前拥塞窗口和通告窗口的极小值”。这样,TCP的有关窗口变量修改为:
               MaxWindow=MIN(cwnd,rwnd)
               EffectiveWindow=MaxWindow-(LastByteSent-LastByteAcked)
               也就是说,在有效窗口(EffectiveWindow)的计算中用最大窗口(MaxWindow)代替了通告窗口。这样,TCP发送方发送报文的速率就不会超过网络或目的节点可接受的速率中的较小值。
               TCP拥塞控制主要根据网络拥塞状况调节拥塞窗口(cwnd)的大小,其机制主要有慢启动、拥塞避免、快速重传和快速恢复,而且这4个机制共同发挥作用以实现TCP拥塞控制。下面先分别介绍这4个机制,然后再通过一个实例来说明这4个机制是如何共同发挥作用的。
                      慢启动和拥塞避免
                      慢启动(Slow Start)是指TCP刚建立连接时将拥塞窗口cwnd设为1个报文大小,然后以指数方式放大拥塞窗口,直到拥塞窗口等于慢启动阈值ssthresh。
                      具体来说,TCP开始将拥塞窗口设为1个报文大小,然后TCP发送1个报文;如果发送方TCP收到接收方TCP返回的ACK报文,TCP将拥塞窗口设为2个报文大小,然后TCP发送2个报文;如果发送方TCP又收到接收方返回的2个ACK报文(或1个累计确认报文),则TCP将拥塞窗口设为4个报文大小,直到拥塞窗口cwnd大于等于慢启动阈值ssthresh,然后进入拥塞避免阶段,如下图所示。
                      
                      慢启动阶段
                      进入拥塞避免阶段,TCP采用线性增加(Additive Increase,AI)方式放大拥塞窗口,即发送方TCP每收到一个ACK确认报文,TCP将拥塞窗口cwind增加1个报文大小,如下图所示。
                      
                      拥塞避免阶段
                      不管是在慢启动阶段还是在拥塞避免阶段,如果发生超时重传,则必须回到慢启动阶段,即此时拥塞窗口cwnd必须从1重新开始,而慢启动阈值ssthresh设置为上一次拥塞窗口值cwnd的一半。注意,以后每发生一次超时,慢启动阈值ssthresh就减半,这就表明,慢启动阈值ssthresh是按照指数规律减小的,这就是乘倍减小(Multiplicative Decrease,MD)。
                      在实际应用中,TCP不会等待整个拥塞窗口值的报文都得到确认后才给拥塞窗口加1个报文长度的值,而是每收到一个确认报文就逐渐增大拥塞窗口。具体地说,TCP每收到一个确认报文后,就将拥塞窗口按照下面的公式增大:
                      Increnment=MSS×(MSS/cwnd)
                      cwnd=cwnd+Increment
                      也就是说,TCP不是在每个RTT时间内将拥塞窗口增加整个MSS值,而是每收到一个确认报文,就将拥塞窗口增加MSS的一部分(即上面公式中的Increment)。
                      快速重传和快速恢复
                      在TCP中,当TCP报文不能按序到达接收方TCP时,接收方TCP就会产生一个重复ACK返回给发送方;发送方收到一个重复ACK后,还不能确定是由于TCP报文丢失还是TCP报文乱序。如果发送方TCP收到3个重复ACK,则意味着是某个TCP报文丢失了,此时发送方TCP不必等待该报文超时,而是立即重传该报文,这就是快速重传。快速重传避免了让发送方TCP必须等待超时后才重传丢失的报文。下图给出了快速重传示意图。
                      
                      快速重传示意图
                      在上图中,当发送方TCP连续收到3个重复的ACK:301时,发送方TCP立即重传序号为301~400的报文段,而不必等到超时,这就是快速重传。同时,发送方TCP会将拥塞窗口减半以及重传定时器宽度加倍。
                      但是快速重传之后,发送方TCP不是进入慢启动阶段,而是进入拥塞避免阶段,这就是快速恢复的意思。理由是重复ACK的出现不仅意味着某个报文的丢失,而且意味着在丢失的报文之后还接收到其后的报文,即网络上仍然可以传输报文,发送方TCP认为网络拥塞还不是非常严重,如果这个时候进入慢启动阶段,有点保守,而是应该进入拥塞避免阶段。
                      下图给出了拥塞避免、慢启动、快速重传及快速恢复4种机制组合在一起的TCP拥塞控制。
                      
                      TCP拥塞控制
                      下图给出了一个实际的TCP拥塞控制实例,假定最大拥塞窗口值是32个报文段,则慢启动阈值ssthresh等于16(最大窗口值的一半)。TCP连接刚刚建立时进入慢启动过程,拥塞窗口cwnd从1指数增长到2,到4,到8,直到16(这里假设重传定时器不发生超时);然后进入拥塞避免阶段,这时,拥塞窗口cwnd从16,到17,到18,到19,一直到20(加法增大)。此时,发生重传定时器超时现象,发送方首先将慢启动阈值ssthresh设为当前拥塞窗口cwnd的一半(乘法减小),即等于10,然后进入慢启动过程,即拥塞窗口cwnd又从1开始,接着指数增长到2,到4,到8,直到10,最后进入拥塞避免阶段,开始线性增加到11,到12。此时,连续收到3个重复ACK,于是进行快速重传,之后直接进入拥塞避免阶段而不是慢启动阶段。
                      
                      TCP拥塞控制实例
                      在过去的十几年时间里,TCP拥塞控制经过不断的改进,性能逐渐得到完善,先后提出了多个TCP协议的实现版本。TCP Tahoe是TCP最早的版本,包含了3个最基本的拥塞控制机制:慢启动、拥塞避免、快速重传。TCP Reno在TCP Tahoe的基础上增加了快速恢复机制。TCP NewReno和TCP SACK都考虑了一个发送窗口内有多个报文丢失的情况,TCP NewReno对Reno中的快速恢复算法进行了补充,只有当所有报文都被应答后才退出快速恢复状态;TCP SACK采用“选择性重传”策略。所谓选择性重传是指当接收方发现报文乱序到达接收方时,接收方通过选择性应答策略通知发送方立即发送丢失的报文,而不需要等到发送方超时重传。
 
       恢复
        数据恢复有3个步骤。
        (1)反向扫描文件日志,查找该事务的更新操作。
        (2)对事务的更新操作执行逆操作。
        (3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样的处理,直到事务的开始标志。
 
       计时器
        计时器是实时嵌入式系统的一个组成部分。时间轮转调度算法、存储器定时刷新、网络数据包的超时重传以及目标机监视系统的时序等都严格依赖于计时器。许多嵌入式系统用不同形式的计时器来驱动时间敏感的活动,即硬件计时器和软件计时器。硬件计时器是从物理计时芯片派生出来的,超时后可以直接中断处理器,硬件计时器对精确的延迟操作具有可预测的性能。而软件计时器是通过软件功能调度的软件事件,能够对非精确的软件事件进行有效的调度,使用软件计时器可以减轻系统的中断负担。
        这里有几个相关概念,需要考生了解:
        (1)实时时钟:存在于嵌入式系统内部,用来追踪时间、日期的硬件计时设备。
        (2)系统时钟:用来追踪从系统加电启动以来的事件时间或流失时间,可编程的间隔计时器驱动系统时钟,计时器每中断一次,系统时钟的值就递增一次。
        (3)时钟节拍:它也称为时钟滴答,是特定的周期性中断。中断之间的间隔取决于不同的应用,一般在10ms~200ms之间。而且时钟节拍率越快,系统的额外开销就越大。
        (4)可编程计时器:一般是集成在嵌入式系统内部的专门计时硬件,用做事件计数器、流失时间指示器、速率可控的周期事件产生器等。使用独立的硬件计时器可以有效地降低处理器的负载。
        (5)软件计时器:它是应用程序安装的计数器,每次时钟中断,会递减一次,当计数器到达0时,应用的计时器超时,系统会调用安装的超时处理函数进行有关处理。
   题号导航      2023年上半年 网络工程师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第22题    在手机中做本题