TCP传输衔接有限状态机转换机制51CTO博客 - 威尼斯人

TCP传输衔接有限状态机转换机制51CTO博客

2019-01-03 17:30:07 | 作者: 从蕾 | 标签: 衔接,传输,状况 | 浏览: 2369

 10.3.5 TCP衔接的状况搬运

   从表10-6中能够看出,TCP Socket效劳原语只要8个,比OSI/RM中界说的传输层效劳原语还要少,可是在这8种TCP Socket效劳原语中,有的原语又能够有不同的状况,如表10-8所示。咱们把在TCP传输衔接的树立和开释中的通讯两边主机的这些状况称之为“有限状况机”(Finite State Machine,FSM)。下面咱们来详细论述一下在TCP传输衔接树立、开释进程中这些原语状况的改变。

表10-8  TCP衔接状况

状 态

描 述

CLOSED

呈堵塞、封闭状况,表明主机当时没有活动的传输衔接或正在进行传输衔接

LISTEN

呈监听状况,表明效劳器正在等候新的传输衔接进入

SYN RCVD

表明主机已收到一个传输衔接恳求,但没有承认

SYN SENT

表明主机现已宣布一个传输衔接恳求,等候对方承认

ESTABLISHED

传输衔接树立,通讯两边进入正常数据传输状况

FIN WAIT 1

(自动封闭)主机现已发送封闭衔接恳求,等候对方承认

FIN WAIT 2

(自动封闭)主机已收到对方封闭传输衔接承认,等候对方发送封闭传输衔接恳求

TIMED WAIT

完结双向传输衔接封闭,等候一切分组消失

CLOSING

两边一起测验封闭传输衔接,等候对方承认

CLOSE WAIT

(被迫封闭)收到对方发来的封闭传输衔接恳求,并已承认

LAST ACK

(被迫封闭)等候最终一个封闭传输衔接承认,并等候一切分组消失

    图10-37描绘了TCP通讯主机在传输衔接树立和开释进程中的各种有限状况机,图中的方框中表明的是通讯主机在不一起期的状况,箭头表明状况之间的转化,周围的注释表明状况转化进程中所需进行动作(包含调用Socket效劳原语和TCP数据段的发送和接纳等)。图顶用粗线表明客户端自动和被迫的效劳器端衔接树立的正常进程,其间客户端的状况搬运用带箭头的粗实线表明,效劳器端的状况转化用带箭头的粗虚线表明。带箭头的细线表明一些不常见的事情,如复位、一起翻开、一起封闭等。

图10-37  TCP传输衔接有限状况机转化流程

    每个衔接均开始于 CLOSED 状况。当一方执行了被迫的衔接原语(LISTEN )或自动的衔接原语( CONNECT )时,它便会脱离CLOSED状况。假如此刻另一方执行了相对应的衔接原语,衔接便树立了,而且状况变为ESTABLISHED 。任何一方均能够首要恳求开释衔接,当衔接被开释后,状况又回到了CLOSED 。

   为了看清楚客户端和效劳器各自的状况搬运流程,咱们先沿着带箭头的粗实线途径来看客户端的状况搬运进程,然后再沿着带箭头的真假线途径来看效劳器的状况搬运进程。  

   (1)一开始,效劳器应用层首要调用LISTEN原语从CLOSED状况进入被迫翻开状况(LISTEN ),等候客户端的衔接;

   (2)当客户端的一个应用程序调用CONNECT原语后,本地的TCP实体为其创立一个衔接记载并标记为SYN SENT状况,然后给效劳器发送一个SYN数据段(SYN字段置1)。这是TCP传输衔接树立的第一次握手。

   (3)效劳器在收到一个客户端的SYN数据段后,其TCP实体给客户端发送承认ACK数据段(ACK字段置1),一起发送一个SYN数据段(SYN字段置1,表明承受同步恳求),进入SYN RCVD状况。这是TCP传输衔接的第2次握手。

   【阐明】这儿可能有一个非正常事情发作,那就是假如此刻效劳器不想树立传输衔接,由其应用层调用CLOSE原语,向客户端发送一个FIN数据段(FIN字段置1),然后进入到FIN WAIT 1状况,等候客户端承认。当客户端收到效劳器发来的FIN数据段后,向效劳器发送一个ACK承认数据段后进入到CLOSING状况,表明两边一起测验封闭传输衔接,等候对方承认。在效劳器收到客户端发来的ACK数据段后即进入到TIMED WAIT状况,在超时后两边即封闭衔接。这是一种突发、非正常的衔接封闭事情。

   (4)客户端在收到效劳器发来的SYN和ACK数据段后,其TCP实体给效劳器端发送一个ACK数据段,并进入ESTABLISHED状况。这是TCP衔接的第3次握手。

   (5)效劳器在收到来自客户端的ACK承认数据段后,完结整个TCP传输衔接的悉数三次握手进程,也进入ESTABLISHED状况。

   此刻,两边能够自在进行数据传输了。当一个应用程序完结数据传输使命后,它需求封闭TCP衔接。假定仍由客户端建议自动封闭衔接。

   (6)客户端应用层调用CLOSE原语,本地的TCP实体发送一个FIN数据段(FIN字段置1),并等候效劳器的承认呼应,进入到FIN WAIT 1状况。

    【阐明】这儿又可能有一个非正常的事情发作,那就是客户端在FIN WAIT 1状况收到效劳器的FIN和ACK数据段后(而不是像从FIN WAIT 2状况进入那样只收到效劳器的ACK承认数据段),向效劳器发送一个ACK数据段,直接就进入了TIMED WAIT状况。在超时后两边即封闭衔接。

   (7)效劳器在收到来自客户端的FIN数据段后,它给客户端发回一个ACK数据段(ACK字段置1)进入CLOSE WAIT状况。

   (8)客户端在收到来自效劳器的ACK承认数据段后就进入到了FIN WAIT 2状况,此刻衔接在一个方向上就断开了,但仍能够接纳效劳器端发来的数据段。

   (9)当效劳器收到客户端发来的FIN数据段时就知道客户端已有数据发送了,在本端已接纳完悉数的数据后,也由应用层调用CLOSE原语,恳求封闭另一个方向的衔接,其本地TCP实体向客户端发送一个FIN数据段,并进入LAST ACK状况,等候最终一个ACK承认数据段。

   (10)在客户端收到来自效劳器的FIN数据段后,向效劳器发送最终一个ACK承认数据段,进入TIMED WAIT状况。此刻两边衔接均现已断开,但TCP实体仍要等候一个2倍数据段MSL(Maximum Segment Lifetime,最大数据段生计时刻),以保证该衔接的一切分组悉数消失,避免呈现承认丢掉的状况。当定时器超时后,TCP删去该衔接记载,返回到初始状况(CLOSED )。

   (11)效劳器收到客户端最终一个ACK承认数据段后,其TCP实体便开释该衔接,并删去衔接记载,也返回到初始状况(CLOSED )。

   注:以上内容摘自新书《深化了解计算机网络》中,现在该书已能够京东网、杰出网、当当网上全面预定,并悉数附有完好的目录信息(京东网上将于本月25号首要到货)。

 

京东网上的链接:http://book.360buy.com/11165825.html

杰出网上的链接:http://www.amazon.cn/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E7%8E%8B%E8%BE%BE/dp/B00B0S7LDU/ref=sr_1_1?s=books&ie=UTF8&qid=1358153421&sr=1-1

当当网上的链接:http://product.dangdang.com/main/product.aspx?product_id=23166396

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章