zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

TCP同时打开和同时关闭

TCP 关闭 打开 同时
2023-09-11 14:22:29 时间

1. 同时打开

两个应用程序同时彼此执行主动打开的情况是可能的,尽管发生的可能性极小。每一方必须发送一个SYN,且这些SYN必须传递给对方。这需要每一方使用一个对方熟知的端口最为本地端口。
当出现同时打开的情况时,状态迁移图就与标准的连接状态迁移图不一样了。两端几乎同时发送SYN并进入SYN_SENT状态。当每一端收到SYN时,状态变为SYN_RCVD,同时它们都再发SYN并对收到的SYN进行确认。当双方都接收到SYN及相应的ACK时,状态都变味了ESTABLISHED。
一个同时打开的连接需要交换需要交换4个报文段,比正常的三次握手多一个。没有任何一端称为客户或服务器,因为每一端既是客户又是服务器。


2. 同时关闭

在标准的情况下通过一方发送FIN来关闭连接,但是双方都执行主动关闭也是有可能的,TCP协议也允许这样的同时关闭。当应用层发出关闭命令时,梁福安均从ESTABLISHED变为FIN_WAITE_1。这将导致双发各发送一个FIN,两个FIN经过网络传输后分别达到另一端。收到FIN后,状态由FIN_WAIT_1变签到CLOSING,并将发送最后的ACK。当收到最后的ACK时,状态变化为TIME_WAIT。