TCP三次握手,四次挥手、状态图

1,TCP三次握手

1)ACK确认位、SYN同步位、ack确认号、seq序号。

TCP三次握手,四次挥手、状态图_第1张图片
image.png

2)三次握手的必要性
三次握手建立连接时,发送方再次发送确认的必要性: 防止已失效的连接请求报文段突然又传到了B,加入没有三次握手,B发送ACK后,即进入ESTABLISHED状态,但是A并没有数据要传输,浪费资源。

2,四次挥手

1)FIN关闭同步位
主动关闭方,在第3次挥手完成,发送最后一个ACK时,进入TIME_WAIT状态,等待2MLS时间后,才可以释放占用的端口进入CLOSED状态。
被动关闭方,发送[FIN,ACK] 后,进入LAST_ACK等待发送方的ACK,此时端口仍被占用。

TCP三次握手,四次挥手、状态图_第2张图片
image.png

2)2MSL的意义: Maximum Segment Lifetime,最长报文段寿命,当报文的头部TTL字段为0时,数据报被丢弃,发送ICMP报文通知源主机。
为了保证A发送的最后一个ACK报文段能够到达B。
防止旧的TCP连接包,会干扰新的TCP连接包。经过了2MSL,该包已失效。
Linux上kill了一个进程,立刻重启,有可能会报端口占用错误。主动关闭方,需要等待2MSL,才会使

3,TCP状态变迁

发现nginx上大量TIME_WAIT(nginx到后端tomcat upstream,没有使用长连接)主动关闭的一方,要等待2MSL恢复到Closed,解决方式:使用http1.1的长连接

TCP三次握手,四次挥手、状态图_第3张图片
image.png

你可能感兴趣的:(TCP三次握手,四次挥手、状态图)