TCP没有半开方法的传输方法,但是有半关传输方法,如果新建连接也支持半开传输,那么也得四次握手而不是三次。
半关指的是一方发了fin表明我不发了,但是另外一方不发fin,这时候不发fin的一方还可以继续发数据。搜一下TCP半关连接就明白了
建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。
而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。