一、三次握手
三次握手流程:
甲:客户端机器发送链接请求:SYN=1,seq=x ;
乙:服务器机器响应链接请求:SYN=1,ACK=1,seq=y ; (y = x+1)
丙:客户端机器响应服务端:ACK=1,seq=x+1,ack=y+1 ;
三次握手的原因:
a:确认双方都能首发报文。
b:防止出现请求超时导致脏链接。
甲机器第一次请求链接超时。
甲机器第二次请求链接发送成功,建立链接。
此时:服务器收到甲机器的第一次建立链接请求。
二、四次挥手
四次挥手的流程:
甲:客户机发送断开链接请求:FIN =1,seq=u
乙:服务端发送应答:ACK=1,seq=v,ack=u+1
丙:客户端处于半关闭状态,只能接受数据,不能发送数据。
丁:服务端传输完成:FIN=1,ACK=1,seq=w,ack=u+1
己:服务端进入半关闭状态
庚:客户端应答服务器"丁"步骤的消息:ACK=1,seq=u+1,ack=w+1
辛:客户端等待2MSL,收不到服务端的消息,关闭链接。
壬:服务器收到客户端的消息,断开链接。
流程图:
四次挥手的原因:
1、确保数据全部接收。
2、TIME_WAIT 非常重要,不可省略。
三、实际使用
1、减少服务器的TIME_WAIT超时,能增加服务器并发。
/etc/sysctl.conf net.ipv4.tcp_fin_timeout=30