TCP四次挥手

xiaoxiao2021-02-28  10

客户机主机A端口1和服务器主机端口2建立连接后,使用4次报文段交互来关闭连接。如下图所示:

①主机A关闭A端口1到端口2的传输连接。

应用程序发送完数据,通知TCP关闭连接。

TCP收到对最后数据的确认后发送一个FIN报文段,FIN=1,seq=x。x为A发送数据的最后字节的序号加1.虽然是关闭连接,报文段的交换中也要使用序号。

②主机B响应连接

TCP软件对主机A的FIN报文段进行确认,ACK=1,确认序号ackseq=x+1。

通知本段的应用程序:A方传输已经结束。

③主机B关闭端口2到主机A端口1的传输连接。

应用程序发送完数据,通知TCP关闭连接。

TCP收到对最后数据的确认后,发送一个FiN报文段,FIN=1,seq=y,y为主机B发送数据的最后字节的序号加1,ACK=1,ackseq=x+1..

④主机A响应

TCP软件对主机B的FIN的报文段进行确认,ACK=1,确认序号ackseq=y+1。

通知本段的应用程序:B方传输已经结束。

为什么断开连接需要4次呢?我们知道,TCP的连接时全双工的,可以在两个方向上进行数据的独立传输,当A方的数据已经发送完毕时,TCP将单向关闭这个连接,此后A方不再传输数据,但是仍然可以接受数据。在相反方向上,连接还没有关闭,B方还可以继续发送数据,A方继续接受数据,这样的关闭状态为半关闭状态。当B方也关闭连接,TCP之间的连接才完全关闭。因此,TCP采用4次报文段的交换来关闭。

转载请注明原文地址: https://www.6miu.com/read-1250132.html

最新回复(0)