您的位置:首页 > 理论基础 > 计算机网络

TCP的三次握手和四次挥手

2016-07-26 17:13 375 查看
TCP协议提供可靠的数据传输连接,三次握手用于建立连接,四次挥手用于断开连接。

三次握手:

第一次、建立连接时,客户端向服务器发送SYN包(syn=j),即握手信号,进入SYN_SEND状态,等待服务器的响应。

第二次、服务器收到SYN包,确认客户端的SYN(ack=j+1),同时向客户端发送一个SYN包(syn=k),即发送SYN+ACK包,此时服务器进入SYN_RECV状态。

第三次、客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),发送完毕后,客户端与服务端进入ESTABLISHED状态,建立连接,完成三次握手。

四次挥手:

断开连接时不区分客户端和服务器,假设客户端发起中断请求。

第一次、客户端完成数据传输后,向服务器发送FIN报文,即中断连接请求。

第二次、服务器收到FIN报文后,如果当前仍有数据没有发送完成,则可以不用关闭连接,继续发送数据,同时向客户端发送ACK报文,通知客户端,关闭请求已收到,但服务器数据未发送完,请继续等待。客户端收到ACK报文后进入FIN_WAIT状态,等待服务器的FIN报文。

第三次、服务器数据发送完成后,向客户端发送FIN报文,通知客户端,服务器数据已传输完成,可以关闭连接。

第四次、客户端收到FIN报文后,向服务器发送ACK确认报文,进入TIME_WAIT状态,服务器收到ACK确认报文后断开连接,客户端等待了2MSL(Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”)后没有收到回复,证明服务器已正常关闭,此时客户端关闭连接。如果服务器没有收到ACK报文,则可以重传。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: