免费智能真题库 > 历年试卷 > 网络规划设计师 > 2010年下半年 网络规划设计师 上午试卷 综合知识
  第18题      
  知识点:   解决方法   TCP   死锁
  关键词:   TCP   死锁   协议        章/节:   Internet 协议       

 
TCP协议在工作过程中存在死锁的可能,其发生的原因是(18),解决方法是(19)。
 
 
  A.  多个进程请求未被释放的资源
 
  B.  一个连接还未释放,又请求新的连接
 
  C.  接收方发送0窗口的应答报文后,所发送的非0窗口应答报文丢失
 
  D.  定义RTT值为2倍的测量值不恰当
 
 
 

  相关试题:TCP 协议          更多>  
 
  第22题    2018年下半年  
   41%
若有带外数据需要传送,TCP报文中()标志字段置“1”。
  第39题    2020年下半年  
   38%
SYN Flooding攻击的原理是( )。
  第38题    2020年下半年  
   61%
TCP可靠传输机制为了确定超时计时器的值,首先要估算RTT,估算RTT采用如下公式,估算RTTs(1-a)×(估算RTTs)+a×(新的RTT样本..
   知识点讲解    
   · 解决方法    · TCP    · 死锁
 
       解决方法
        对于慢收敛这个问题有几种不完善的解决方法。其中的一种方法是使用一个较小的数作为无穷大的近似值。例如,可以认为穿过某个网络的最大跳数不会超过16,因此可以选择16来表示无穷大。这样至少可以限制计数到无穷大所花费的时间。当然,如果网络中节点间距多于16跳时,就又会出现新的问题。
        (1)水平分割。改进稳定路由选择所需时间的一种方法是水平分割(split horizon)。水平分割方法的思想是任何一个节点并不把从它邻居路由器学到的路由再回送给那些邻居路由器,即当路由器从某个网络接口发送路由更新报文时,其中不能包含从该接口学到的路由信息。例如,在上图中,如果节点C在其距离矢量表中有(A,2)这一项,而且C知道该路由是从路由器B学到的。所以当C发送距离矢量表给B时,在距离矢量表中不应该包括(A,2)这一项。
        为了更更具体地解释水平分割的思想,举一个现实生活中的例子。假定哈尔滨人(D地)和北京人(C地)都要去广州(A地),但他们都必须经过长沙(B地),而哈尔滨人还要先经过北京。假定哈尔滨人想要知道去广州的道路信息(道路是否畅通,距离是多少),必须先通过北京人,同样北京人要知道去广州的道路信息,必须先通过长沙人(当然,哈尔滨人知道到北京的道路信息,而北京人也知道到长沙的道路信息)。那么在这种情况下,如果出现北京人告诉长沙人去广州的路由信息是没有任何意义的。换句话说,北京人根本不需要告诉长沙人关于去广州的任何信息,因为北京人得到的关于去广州的道路信息都是长沙人告诉他们的,但北京人必须告诉哈尔滨人到广州的道路信息。对应于上图的例子,C可以告诉D它到A的实际距离,但C或不告诉B它到A的情况(水平分割),或者告诉B它到A的距离为∞(带毒性反转的水平分割);原因是在这种情况下,C报告B它到A的距离没有任何意义,因为C到A的路由要通过B。类似的道理,D告诉E到A的实际距离,但不向C报告它到A的距离。
        (2)毒性反转。比水平分割更好的一种方法是毒性反转(Poison Reverse)。使用毒性反转方法时,C仍然把来自B的到达A的路由信息回送给B,但在该距离矢量表中这一项的距离是无穷大以确保B不会使用C的路由,即C把(A,∞)这一距离矢量发送给B。而且为了加强毒性反转的效果,最好同时使用触发更新(Trigged Update)技术,即一旦某节点检测到网络故障,就立即发送距离矢量表,而不必等到下一个周期。而其他路由器一旦发现路由表有更新,就立即发送距离矢量表。
        采用了毒性反转方法后,再来看看A、B线路断开后的路由交换情况。在第1次交换距离矢量表后,B发现直达A的线路断了,于是B就知道A不可达(B是通过在规定的时间之内没有收到A发来的距离矢量表来判断或者是B到A的线路出故障了,或路由器A出故障了),而C此时报告给B它到A的距离为∞,由于B的两个邻居都到不了A,B就将它到A的距离设置为∞。第2次交换后,C也发现从它的两个邻居都到不了A,C也将A标为不可达。经过第3次、第4次交换后,D和E依次发现A是不可达的。使用水平分割后,坏消息以每交换一次距离矢量表向前推进一步的速度传播。
 
       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传送有关单个主机的信息。
 
       死锁
        在计算机系统中有许多互斥资源(如磁带机、打印机和绘图仪等)或软件资源(如进程表、临界区等),若两个进程同时使用打印机,或同时进入临界区必然会出现问题。所谓死锁,是指两个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去的现象。
               死锁举例
               根据例4.4~例4.6的情况分析不难看出,产生死锁的原因为竞争资源及进程推进顺序非法。当系统中有多个进程所共享的资源不足以同时满足它们的需求时,将引起它们对资源的竞争导致死锁。其中,进程推进顺序非法,是指进程在运行的过程中请求和释放资源的顺序不当,导致进程死锁。
               进程资源图
               进程资源有向图由方框、圆圈和有向边三部分组成。其中方框表示资源,圆圈表示进程。请求资源:〇→□,箭头由进程指向资源;分配资源:〇←□,箭头由资源指向进程。
               例如,系统中有进程P1P2P3,资源R1R2R3。假设系统中R1R2R3的资源数分别为1、1和2,其中P1占用了1台R1,又申请1台R3P2占用了1台R2,又申请1台R1P3占用了2台R3,又申请1台R2。对于这种情况可用进程资源图来描述,如下图所示。
               
               进程资源有向图
               死锁产生的原因及4个必要条件
               产生死锁的4个必要条件是互斥条件、请求保持条件、不可剥夺条件和环路条件。当发生死锁时,在进程资源有向图中必构成环路,其中每个进程占有了下一个进程申请的一个或多个资源,导致进程申请的资源无法满足而产生死锁。
               死锁的处理
               死锁的处理策略主要有4种:鸵鸟策略(即不理睬策略)、预防策略、避免策略和检测与解除死锁。
                      死锁预防
                      死锁预防是采用某种策略限制并发进程对资源的请求,破坏死锁产生的4个必要条件之一,使系统在任何时刻都不满足死锁的必要条件。预防死锁的两种策略如下:
                      (1)预先静态分配法。破坏了“不可剥夺条件”,预先分配所需资源,保证不等待资源。该方法的问题是降低了对资源的利用率,降低进程的并发程度;有时可能无法预先知道所需资源。
                      (2)资源有序分配法。破坏了“环路条件”,把资源分类按顺序排列,保证不形成环路。该方法存在的问题是限制进程对资源的请求;由于资源的排序占用系统开销。
                      死锁避免
                      死锁预防是设法破坏产生死锁的4个必要条件之一,严格防止死锁的产生。死锁避免则不那么严格地限制产生死锁的必要条件。最著名的死锁避免算法是Dijkstra提出的银行家算法,死锁避免算法需要很大的系统开销。
                      银行家算法对于进程发出的每一个系统可以满足的资源请求命令加以检测,如果发现分配资源后系统进入不安全状态,则不予分配;若分配资源后系统仍处于安全状态,则实施分配。与死锁预防策略相比,它提高了资源的利用率,但检测分配资源后系统是否安全增加了系统开销。
                      所谓安全状态,是指系统能按某种顺序如<P1P2,…,Pn>来为每个进程分配其所需资源,直到最大需求,使每个进程都可顺序完成。通常称<P1P2,…,Pn>序列为安全序列。若系统不存在这样一个安全序列,则称系统处于不安全状态。
                      死锁检测
                      解决死锁的另一条途径是使用死锁检测方法,这种方法对资源的分配不加限制,即允许死锁产生。但系统定时地运行一个死锁检测程序,判断系统是否发生死锁,若检测到有死锁,则设法加以解除。
                      死锁解除
                      死锁解除通常采用资源剥夺法和撤销进程法。资源剥夺法从一些进程那里强行剥夺足够数量的资源分配给死锁进程;撤销进程法根据某种策略逐个地撤销死锁进程,直到解除死锁为止。
   题号导航      2010年下半年 网络规划设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第18题    在手机中做本题