客户端与服务器进行连接需要进行三次握手。
重点要记住的有:ACK:确认符号标志 SYN:同步序号,用于建立连接过程。
第一次握手:客户端从关闭中醒来,服务器随之被迫醒来。客户端向服务器端发送报文:SYN=1,seq=i(其中seq设定一个初始值)。
第二次握手:服务器端发送报文(确认报文SYN=1,ACK=1)(确认号ack=i+1,seq=j)。
第三次握手:客户端收到确认之后还要确认一遍,发送报文(ACK=1,seq=i+1,ack=j+1)。
首次握手的隐患——SYN超时
一些不法分子可能会在第一次握手时之后就结束,服务器段迟迟收不到确认报文,一直在等待,影响资源的利用效率,从而时网络卡顿.
防护措施:1.当SYN队列满后,通过tcp_syncookies参数来回发SYN cookie。如果是正常连接,客户端会回发SYN cookie,直接建立连接。
在连接中客户端发生故障的话,它会有一个保活机制,会向对方发送保活探测报文,若未收到回复会继续发送,发送五次间隔分别为:1,2,4,8,16,在最后一次发送过后会等到32秒,然后结束。