首先是TCP的几种标志符
三次握手
SYN(synchronous),建立联机
ACK(acknowledgement),确认
第一次握手,客户端先服务区发送syn,进入SYN_SENT状态,等待服务器确认。
第二次握手,服务器收到客户端请求,此时要给客户端给一个确认信息ACK,同时发送SYN包,此时服务器进入 SYN_RECV状态
第三次握手:客户端收到服务器发的ACK+SYN包后,向服务器发送ACK,发送完毕之后,客户端和服务器进入 ESTABLISHED(TCP连接成功)状态,完成三次握手
四次挥手
PSH(push),传输
FIN(finish),结束
RST(reset),重置
URG(urgent),紧急
第一次挥手:客户端发送一个FIN,用来关闭客户端到服务器的数据传输,客户端进入FIN_WAIT_1状态
第二次挥手:服务器收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序 号),服务器进入CLOSE_WAIT状态
第三次挥手:服务器发送一个FIN,用来关闭服务器到客户端的数据传输,服务器进入LAST_ACK状态
第四次挥手:客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个AKC给服务器,确认序号为收到序号+1,服务器进入CLOSED状态,完成四次挥手
相关问题
为什么是三次握手四次挥手?
服务器收到客户端的连接请求后,可以直接发送SYN+ACK报文。但是在关闭连接时,当服务器收到FIN的时候,很可能还需要从服务器发送报文,只能先发送ACK应答,当都发送完了的时候才能发送FIN。因此不能一次发送。