目录
[1. 讲讲4次握手](#1. 讲讲4次握手)
[2. 为什么要设计四次握手](#2. 为什么要设计四次握手)
[3. HTTP 504状态码详解](#3. HTTP 504状态码详解)
[4. 服务器响应时间过长有哪些原因,如何排查](#4. 服务器响应时间过长有哪些原因,如何排查)
首先我们要清楚明白一个 知识点 就是HTTP与HTTPS存在关键差异,当然也存在一些基础相同
HTTP:是明文传输,数据可被窃听/篡改 默认端口:80 在应用层
HTTPS: 是SSL加密传输,防窃听防篡改 默认端口:443 在传输层
简单理解就是 HTTPS = HTTP + TLS/SSL加密层
1. 讲讲4次握手
在连接关闭时,当一方发送FIN报文后,对方可能还有数据要发送,所以不能立即关闭,因此需要将ACK和FIN分别发送,这就导致了四次握手。
2. 为什么要设计四次握手
四次握手是TCP协议用于终止连接的过程,整个过程涉及四个步骤,因此称为四次握手,参与双方分别是客户端和服务端(任何一方都可以主动发起关闭)
假设客户端主动关闭:
第一次挥手:客户端 发送了个FIN,并进入FIN_WAIT_1状态。这表示客户端已经没有数据要发送了,但还可以接受数据。
第二次挥手:服务器 收到FIN,发送一个ACK,并进入CLOSE_WAIT状态,此时,服务器 可能还有数据要发送。客户端收到ACK,进入FIN_WAIT_2状态。
第三次挥手:服务器 发送完数据后,会发送一个FIN报文段,进入LAST_ACK,表示服务器也没有数据要发送了。
第四次挥手:客户端 收到服务器发送的FIN,发送一个ACK,然后进入TIME_WAIT状态,等待2MSL(报文最大存活时间2倍),服务器 收到ACK,进入CLOSED状态。客户端等待2MSL,也进入CLOSED状态。
3. HTTP 504状态码详解
504:完全无响应:表示网关或代理服务器未能及时从上游服务器收到响应,属于服务器端错误。 经典案例:sql查询超时冻结服务。
502:收到无效响应:返回错误格式/内容 经典案例:进程崩溃。
4. 服务器响应时间过长有哪些原因,如何排查
原因:
-
操作系统层问题:存在cpu竞争
-
中间件层问题: 存在慢查询阻塞与连接池耗尽
-
网络层问题: 存在TCP重传与DNS延迟
排查:
-
操作系统优化:禁用大透明页,绑定CPU核
-
REDIS深度优化
-
网络诊断:TCP重传分析与链路质量测试