假设t端发起中断连接请求,也就是发送fin报文。。更多最新章节访问:ШЩЩ.⑦⑨XS.сОМ。server端接到fi端没有数据要发给你了“,但是如果你还有数据没有发送完成,则不必急着关闭soct,可以继续发送数据。所以你先发送ack,“告诉t端,你的请求我收到了,但是我还没准备好,请继续你等我的消息“。这个时候t端就进入fi状态,继续等待server端的fin报文。当server端确定数据已发送完成,则向t端发送fi端,好了,我这边数据发完了,准备好关闭连接了“。t端收到fin报文后,“就知道可以关闭连接了,但是他还是不相信网络,怕server端不知道要关闭,所以发送e_状态,如果server端没有收到acr端收到ack后,“就知道可以断开连接了“。t端等待了2msl后依然没有收到回复,则证明server端已正常关闭,那好,我t端也可以关闭连接了。ok,tcp连接就这样关闭了!
因为当server端收到t端的syn连接请求报文后,可以直接发送syn+ack报文。其中ack报文是用来应答的,syn报文是用来同步的。但是关闭连接时,当server端收到fi,所以只能先回复一个ack报文,告诉t端,“你发的fin报文我收到了“。只有等到我server端所有的报文都发送完了,我才能发送fin报文,因此不能一起发送。故需要四步握手。