三次握手和四次挥手过程
1. 三次握手
tcp连接的过程叫做三次握手过程,因为它们会经历三次沟通过程才会建立起一个tcp/ip链接。
-
确认ACK,仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1;
-
同步SYN,在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1;
-
seq是自己的初始化序号,ack是对报文的回应,其值为收到的seq序号加1,表示对收到报文的回应。
如果中间过程有丢包情况,会启动重传机制,达到一定的次数后,会close。
2. 四次挥手
四次挥手过程是ip/tcp连接断开的过程。
last_ack(持续时间一般为一个RTO(retransmission timeout,数据包重传的timeout时间)的时间,这个时间根据RTT动态计算出来);
TIME-WAIT时间内,如果收到服务器的请求信号,则再次发送确认信号,并且重新启动2MSL计时。
对于last_ack而言,如果这个过程中没有收到来自客户端的确认信号,则进行重新发送:
-
如果重新发送请求之后(会重新计时),此时客户端还没有关闭服务,会重新发送一个确认;
-
如果重新发送之后,这个时候客户端的2MSL计时已经到期,已经主动关闭了链接,那么会回送一个rst信号(链接异常终止);
-
如果这个时候客户端已经不存在了,会自动启动tcp重传机制,并且经过一段时间后会主动关闭链接。