资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2017/11/7,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,课件制作人:谢希仁,#,5.9 TCP,的运输连接管理,1.,运输连接的三个阶段,运输连接就有三个阶段,即:,连接建立,、,数据传送,和,连接释放,。运输连接的管理就是使运输连接的建立和释放都能正常地进行。,连接建立过程中要解决以下三个问题:,要使每一方能够确知对方的存在。,要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。,能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。,5.9 TCP 的运输连接管理1.运输连接的三个,1,客户,服务器方式,TCP,连接的建立都是采用客户服务器方式。,主动发起连接建立的应用进程叫做,客户,(client),。,被动等待连接建立的应用进程叫做,服务器,(server),。,客户服务器方式 TCP 连接的建立都是采用客户服务器方式。,2,用三次握手建立,TCP,连接,SYN=1,seq=x,CLOSED,CLOSED,主动打开,被动打开,A,B,客户,服务器,5.9.1 TCP,的连接建立,A,的,TCP,向,B,发出连接请求报文段,其首部中的,同步位,SYN=1,,并选择序号,seq=x,,表明传送,数据时的第一个数据字节的序号是,x,。,用三次握手建立 TCP 连接 SYN=1,seq=,3,用三次握手建立,TCP,连接,SYN=1,seq=x,CLOSED,CLOSED,主动打开,被动打开,A,B,客户,服务器,5.9.1 TCP,的连接建立,SYN=1,ACK=1,seq=y,ack=x,1,B,的,TCP,收到连接请求报文段后,如同意,则,发回确认。,B,在确认报文段中应使,SYN=1,,使,ACK=1,,,其确认号,ack=x,1,,自己选择的序号,seq=y,。,用三次握手建立 TCP 连接 SYN=1,seq=,4,SYN=1,seq=x,ACK=1,seq=x+1,ack=y,1,CLOSED,CLOSED,主动打开,被动打开,A,B,客户,服务器,SYN=1,ACK=1,seq=y,ack=x,1,A,收到此报文段后向,B,给出确认,其,ACK=1,,,确认号,ack=y,1,。,A,的,TCP,通知上层应用进程,连接已经建立。,SYN=1,seq=xACK=1,seq=,5,SYN=1,seq=x,ACK=1,seq=x+1,ack=y,1,CLOSED,CLOSED,数据传送,主动打开,被动打开,A,B,客户,服务器,SYN=1,ACK=1,seq=y,ack=x,1,B,的,TCP,收到主机,A,的确认后,也通知其上层,应用进程:,TCP,连接已经建立。,SYN=1,seq=xACK=1,seq=,6,SYN-,SENT,ESTAB-,LISHED,SYN-,RCVD,LISTEN,ESTAB-,LISHED,用三次握手建立,TCP,连接的各状态,SYN=1,seq=x,ACK=1,seq=x+1,ack=y,1,CLOSED,CLOSED,数据传送,主动打开,被动打开,A,B,客户,服务器,5.9.1 TCP,的连接建立,SYN=1,ACK=1,seq=y,ack=x,1,SYN-ESTAB-SYN-LISTENESTAB-用三次,7,FIN=1,seq=u,CLOSED,主动关闭,数据传送,ESTAB-,LISHED,ESTAB-,LISHED,A,B,客户,服务器,CLOSED,5.9.2 TCP,的连接释放,数据传输结束后,通信的双方都可释放连接。,现在,A,的应用进程先向其,TCP,发出连接释放,报文段,并停止再发送数据,主动关闭,TCP,连接。,A,把连接释放报文段首部的,FIN=1,,其序号,seq=u,,等待,B,的确认。,FIN=1,seq=uCLOSED主动关闭数据传送,8,FIN=1,seq=u,ACK=1,seq=v,ack=u,1,主动关闭,数据传送,通知,应用,进程,ESTAB-,LISHED,ESTAB-,LISHED,A,B,客户,服务器,5.9.2 TCP,的连接释放,B,发出确认,确认号,ack=u,1,,,而这个报文段自己的序号,seq=v,。,TCP,服务器进程通知高层应用进程。,从,A,到,B,这个方向的连接就释放了,,TCP,连接,处于,半关闭,状态。,B,若发送数据,,A,仍要接收。,FIN=1,seq=uACK=1,seq=,9,FIN=1,seq=u,ACK=1,seq=v,ack=u,1,FIN=1,ACK=1,seq=w,ack=u,1,主动关闭,被动关闭,数据传送,通知,应用,进程,ESTAB-,LISHED,ESTAB-,LISHED,A,B,客户,服务器,数据传送,5.9.2 TCP,的连接释放,若,B,已经没有要向,A,发送的数据,,其应用进程就通知,TCP,释放连接。,FIN=1,seq=uACK=1,seq=,10,FIN=1,seq=u,ACK=1,seq=v,ack=u,1,FIN=1,ACK=1,seq=w,ack=u,1,主动关闭,被动关闭,数据传送,通知,应用,进程,ESTAB-,LISHED,ESTAB-,LISHED,A,B,客户,服务器,数据传送,5.9.2 TCP,的连接释放,A,收到连接释放报文段后,必须发出确认。,ACK=1,seq=u+1,ack=w,1,FIN=1,seq=uACK=1,seq=,11,FIN=1,seq=u,ACK=1,seq=v,ack=u,1,FIN=1,ACK=1,seq=w,ack=u,1,主动关闭,被动关闭,数据传送,通知,应用,进程,ESTAB-,LISHED,ESTAB-,LISHED,A,B,客户,服务器,数据传送,5.9.2 TCP,的连接释放,在确认报文段中,ACK=1,,确认号,ack,w,1,,,自己的序号,seq=u+1,。,ACK=1,seq=u+1,ack=w,1,FIN=1,seq=uACK=1,seq=,12,CLOSED,ACK=1,seq=u+1,ack=w,1,FIN=1,seq=u,ACK=1,seq=v,ack=u,1,FIN=1,ACK=1,seq=w,ack=u,1,FIN-,WAIT-1,CLOSE-,WAIT,FIN-,WAIT-2,LAST-,ACK,等待,2MSL,TIME-,WAIT,主动关闭,被动关闭,数据传送,通知,应用,进程,ESTAB-,LISHED,ESTAB-,LISHED,A,B,客户,服务器,数据传送,CLOSED,5.9.2 TCP,的连接释放,TCP,连接必须经过时间,2MSL,后才真正释放掉。,CLOSEDACK=1,seq=u+1,ac,13,A,必须等待,2MSL,的时间,第一,为了保证,A,发送的最后一个,ACK,报文段能够到达,B,。,第二,防止“已失效的连接请求报文段”出现在本连接中。,A,在发送完最后一个,ACK,报文段后,再经过时间,2MSL,,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。,A 必须等待 2MSL 的时间第一,为了保证 A 发送的最后,14,5.9.3 TCP,的有限状态机,TCP,有限状态机的图中每一个方框都是,TCP,可能具有的状态。,每个方框中的大写英文字符串是,TCP,标准所使用的,TCP,连接状态名。状态之间的箭头表示可能发生的状态变迁。,箭头旁边的字,表明引起这种变迁的原因,或表明发生状态变迁后又出现什么动作。,图中有三种不同的箭头。,粗实线箭头,表示对客户进程的正常变迁。,粗虚线箭头,表示对服务器进程的正常变迁。,另一种细线箭头,表示异常变迁。,5.9.3 TCP 的有限状态机TCP 有限状态机的图,15,TCP,的有限状态机,CLOSED,ESTABLISHED,LISTEN,CLOSE_WAIT,FIN_WAIT_1,SYN_RCVD,FIN_WAIT_2,CLOSING,TIME_WAIT,SYN_SENT,LAST_ACK,主动打开,被动打开,被动关闭,主动关闭,起点,被动打开,主动打开,发送,SYN,同时打开,收到,SYN,,发送,SYN,ACK,收到,ACK,数据传送,阶段,关闭,发送,FIN,关闭,发送,FIN,关闭,发送,FIN,收到,RST,收到,SYN,发送,SYN,ACK,关闭,或超时,收到,ACK,收到,SYN,ACK,发送,ACK,收到,ACK,收到,ACK,收到,FIN,发送,ACK,收到,FIN,ACK,发送,ACK,收到,FIN,发送,ACK,同时关闭,收到,FIN,发送,ACK,发送,SYN,定时经过两倍报文段寿命后,关闭,TCP的有限状态机 CLOSEDESTABLIS,16,
展开阅读全文