TCP的三次握手和四次挥手

来源:互联网 发布:神盾内网管理软件 编辑:程序博客网 时间:2024/05/18 02:01

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报文,则可以重传。


0 0
原创粉丝点击