建立 TCP 需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: 先来看看如何建立连接的。首先 Client 端发送连接请求报文, Server 段接受连接后回复 ACK 报文, 并为这次连接分配资源。 Client 端接收到 ACK 报文后也向 Server 段发生 ACK 报文, 并分配资源, 这样 TC P 连接就建立了。那如何断开连接呢?简单的过程如下: 【注意】中断连接端可以是 Client 端,也可以是 Server 端。假设 Client 端发起中断连接请求,也就是发送 FIN 报文。 Server 端接到 FIN 报文后,意思是说"我 Client 端没有数据要发给你了", 但是如果你还有数据没有发送完成, 则不必急着关闭 Socket ,可以继续发送数据。所以你先发送 ACK ," 告诉 Client 端,你的请求我收到了, 但是我还没准备好,请继续你等我的消息" 。这个时候 Client 端就进入 FIN_WAIT 状态,继续等待 Server 端的 FIN 报文。当 Server 端确定数据已发送完成,则向 Client 端发送 FIN 报文, " 告诉 Client 端,好了,我这边数据发完了,准备好关闭连接了"。 Client 端收到 FIN 报文后, " 就知道可以关闭连接了,但是他还是不相信网络,怕 Server 端不知道要关闭,所以发送 ACK 后进入 TIME_WAIT 状态, 如果 Server 端没有收到 ACK 则可以重传。“, Serve r 端收到 ACK 后, " 就知道可以断开连接了"。 Client 端等待了 2MSL 后依然没有收到回复, 则证明 Server 端已正常关闭, 那好,我 Client 端也可以关闭连接了。 Ok , TCP 连接就这样关闭了! 整个过程 Client 端所经历的状态如下: 而 Server 端所经历的过程如下:转载请注明: blog./whuslei 【注意】在 TIME_WAIT 状态中, 如果 TCP client 端最后一次发送的 ACK 丢失了, 它将重新发送。 TIME_WAIT 状态中所需要的时间是依赖于实现方法的。典型的值为 30 秒、 1分钟和 2 分钟。等待之后连接正式关闭,并且所有的资源( 包括端口号) 都被释放。【问题 1 】为什么连接的时
建立TCP需要三次握手才能建立 来自淘豆网m.daumloan.com转载请标明出处.