TCP的三次握手

TCP的三次握手

在Tcp/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接

  1. 客户端发送SYN(syn=x)包到服务端,客户端此时进入SYN_SEND状态。
  2. 服务端确认接收客户端的SYN包,必须确认客户的SNY(x+1),同时也发送自己的SNY(syn=k)+ACK包,服务端此时进入SYN_RECV
  3. 客户端接收服务端发送的SNY+ACK包,向服务器发送确认包ACK(k+1),ACK包发送完毕,客户端和服务器进入established状态

为什么需要三次握手才能建立连接:

  • 初始化SequenceNumber的初始值

首次握手的隐患:

  • 服务端收到客户端的SYN包回复SYN-ACK的时候未收到ACK确认
  • 服务端不断重试直到超时,Linux默认63秒断开连接
  • 针对恶意攻击,当SYN队列满了之后,通过tcp_syncookies参数返回SYN Cookie,若为正常连接则客户端会返回SYN Cookie,直接建立连接。
  • 若连接后客户端出现故障,服务端会发送保活报文,直到饱和则断开连接
Ps:
  • ACK:确定序号标志
  • SYN:同步序号,用于建立连接过程
posted @ 2020-08-11 14:53  ColorsBoy  阅读(49)  评论(0)    收藏  举报