网络基础:TCP(4):三次握手和四次挥手(简述)

一、tcp三次握手

  1. 第一次握手(SYN=1, seq=x):client先发起一个带有SYN字段,seq=x的请求。
  2. 第二次握手(SYN=1, ACK=1, seq=y, ack=x+1):server端收到之后确认client的发送能力与自身的接收能力正常。返回ACK和SYN字段还有seq=y, ack=x+1。
  3. 第三次握手(ACK=1,ack=y+1):client接收后确认server发送能力正常,返回ACK=1,ack=y+1字段。
  4. server拿到后确认client接受能力正常,自此三次握手成功,双方收发能力正常。

二、tcp 四次挥手

  1. 第一次挥手(FIN=1,seq=x):客户端发送一个FIN报文,并停止再发送数据,主动关闭TCP连接,进入FIN_WAIT1状态,等待服务端的确认。
  2. 第二次挥手(ACK=1,ack=x+1):服务端收到FIN之后,会发送ACK报文,此时服务端处于CLOSE_WAIT状态。此时处于半关闭状态,客户端到服务端的连接释放。客户端收到服务端的确认后,进入FIN_WAIT2状态,等待服务端发出的连接释放报文段。
  3. 第三次挥手(FIN=1,seq=y):如果服务端没有要向客户端发出的数据了,则服务端发出FIN报文,服务端进入LAST_ACK状态,等待客户端的确认。
  4. 第四次挥手(ACK=1,ack=y+1):客户端收到FIN报文之后,发送一个ACK报文作为应答,此时客户端处于TIME——WAIT状态。需要过一阵子(2MSL, MSL是数据报文的最大生存时间)以确保服务端收到自己的ACK报文之后才会进入CLOSED状态,服务端收到ACK报文之后,就处于CLOSED状态了。

注意:ACK为确认序号标志,ack为32位确认序列号。

猜你喜欢

转载自blog.csdn.net/imagine_tion/article/details/111039841