TCP的三次握手与四次挥手

TCP是安全的,面向连接的,基于字节流传递数据的传输层控制协议。

 

TCP的六个标志位

  • ACK(acknowledgement 确认)          表示已接收到对方传递的数据
  • PSH(push传送) 
  • FIN(finish结束)                                  表示连接已断开
  • RST(reset重置) 
  • URG(urgent紧急)
  • SYN(synchronous建立联机)             表示已同步(建立连接)

TCP的两个号码:

  • seq:   Sequence Number(顺序号码)           数据报的顺序号
  • ack:   Acknowledge Number(确认号码)      希望接收的下一个数据报的顺序号

三次握手

TCP传递数据之前需要通过客户端与服务端进行三次数据传递,保证连接创建成功。

TCP的三次握手与四次挥手

1.客户端发起连接请求,将SYN状态位置为1,表示客户端已准备好建立连接;

   同时发送一个数据报,此数据报的***为a

2.服务端收到此连接请求,同意则将SYN状态位置为1建立联机关系,同时返回ACK状态位表明已接收到客户端发来的数据;

   服务端发送ack号码,希望下次客户端发送序号为a+1的数据报;

   服务端也需要向客户端发送一个数据报,此数据报的序号为b

3.客户端收到服务端的数据,将ACK置为1表示接收到消息;

   同时发送序号位seq为a+1的报文,并希望服务端下次传来seq为b+1的数据报

此时,连接建立成功,两者可互相传递数据

 

通过步骤1.2,客户端确认了自己的发送数据和接收数据的能力,

通过步骤1,服务端确认自己的接收数据的能力

通过步骤3,服务端确认自己接收数据的能力

 

 

四次挥手

TCP层需要通过四次数据交互,才能完成断开连接,此称为四次挥手。

TCP的三次握手与四次挥手

 

1.主动方发起断开连接请求,将FIN状态位置为1,表示主动方已准备好断开连接;

   同时发送一个数据报,此数据报的***为a

2.被动方收到此结束请求,返回ACK状态位表明已接收到客户端发来的数据;

   服务端发送ack号码,希望下次客户端发送序号为a+1的数据报;

   服务端也需要向客户端发送一个数据报,此数据报的序号为b

   之后服务端需要完成一些剩余任务后,方能关闭连接

3.被动方处理完工作后,发起FIN,表示关闭;

   同时发送序号位seq为c的报文,并希望服务端下次传来seq为a+1的数据报

4.主动方发送ACK,表示收到消息,并返回数据给被动方。

   被动方收到数据后,关闭连接完成。