您的位置:首页 > 理论基础 > 计算机网络

TCP有限状态机简述

2015-04-20 14:40 113 查看
状态机简述计算机里讲的是有限状态机(Finite-state machine)。人生就是一个有限状态机,出生即open,死亡即close。当然人是一个复杂的有限状态机,在人的一生当中可以有很多个状态转换。比如你有一个(男)女朋友,和(他)她吵架即输入动作,分手成单身了即结果状态。当然也有动作的结果是不会让现有状态发生发生迁移的,取而代之的是同一状态的变化。比如和(男)女友吵架的这一动作虽没有造成分手,即还是非单身的状态,但你的心境可能发生了变化...简而言之,有始有终,有有限次状态迁移即为有限状态机。参考 http://en.wikipedia.org/wiki/Finite-state_machineTCP的三次握手和四次断开建立TCP连接的三次握手:
我:你好!MM:呵呵,你好!我:呵呵断开TCP连接的四次握手:
我:再见!MM:呵呵MM:再见!我:呵呵而所谓的状态机是指MM等待有人搭话,搭话已发送,等待MM回复,收到回复,已说再见,等MM说再见。。。。这些状态而已。TCP有效状态机简述tcp有效状态机根据上图,红色虚线箭头代表服务器端的状态,而绿色实现箭头代表客户端的状态。CLOSED状态:服务器端跟客户端均关闭,处于CLOSED状态。其实开始并未规定谁是服务器端,谁是客户端,根据需求而定;LISTEN状态:由于某些情况,其中一个端口被动打开处于监听状态(LISTEN),而另外一个向监听端发起会话请求,TCP三次握手开始。(ps 被动打开:指系统的应用程序需要打开一个端口,希望建立一个传人的链接,接受外部的请求,所以需要打开一个套接字监督该端口。);SYN_SENT状态:客户端有连接需求,需要于服务器端第一次建立链接,这时候向服务器端发送请求,SYN=1,客户端处于SYN_SENT状态;SYNRECVD状态:服务器端收到SYN请求后,自身处于SYNRECVD状态;ESTABLISHED状态:服务器端发送SYN ACK=1回馈请求之后,转换为ESTABLISHED态, SYN_SENT在收到SYN ACK,发送ACK,状态为ESTABLISHED。双方连接建立完成;FIN_WAIT_1状态:当双方通信完成,客户端向服务器发送FIN信号,准备断开连接,自身从ESTABLISHED状态转换为FIN_WAIT_1状态;CLOSE_WAIT状态:服务器端在收到FIN后,发送ACK确认,状态为CLOSE_WAIT状态,等待关闭;LAST_ACK状态:等待数据传输完成之后,服务器端发送FIN,自身状态变为LAST_ACK状态;FIN_WAIT_2状态:客户端只收到服务器端得ACK信号,并没有收到FIN信号;说明服务器端还有数据传输,那么此时为半连接;TIME_WAIT状态:有两种方式进入 该状态:1、FIN_WAIT_1进入:此时应用程序端口收到FIN+ACK(而不是像FIN_WAIT_2那样只收到ACK,说明数据已经发送完毕)并向服务器端口发送ACK;2、FIN_WAIT_2进入:此时应用程序端口收到了FIN,然后向服务器端发送ACK;TIME_WAIT是为了实现TCP 全双工连接的可靠性关闭,用来重发可能丢失的ACK报文;需要持续2个MSL(最大报文生存时间):假设应用程序端口在进入TIME_WAIT后,2个 MSL时间内并没有收到FIN,说明应用程序最后发出的ACK已经收到了;否则,会在2个MSL内在此收到ACK报文;码字很辛苦,转载请注明来自http://www.zaizai.org.cn的《TCP有效状态机简述	 》
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: