TCP三次握手与四次断开的原理:
1.TCP 三次握手
TCP 三次握手是建立 TCP 连接的过程,确保双方都准备好进行通信。以下是三次握手的详细步骤:
第一次握手(SYN):
客户端向服务器发送一个 SYN(同步序列号)包,表示请求建立连接。
客户端进入 SYN_SENT 状态。
第二次握手(SYN-ACK):
服务器收到 SYN 包后,回复一个 SYN-ACK 包,表示同意建立连接。
服务器进入 SYN_RECV 状态。
第三次握手(ACK):
客户端收到 SYN-ACK 包后,发送一个 ACK 包,确认连接已建立。
客户端和服务器都进入 ESTABLISHED 状态,连接建立完成。
2. TCP 四次断开
TCP 四次断开是终止 TCP 连接的过程,确保双方都确认连接已关闭。以下是四次断开的详细步骤:
第一次断开(FIN):
客户端发送一个 FIN(结束)包,表示不再发送数据。
客户端进入 FIN_WAIT_1 状态。
第二次断开(ACK):
服务器收到 FIN 包后,发送一个 ACK 包,确认收到 FIN。
服务器进入 CLOSE_WAIT 状态。
客户端进入 FIN_WAIT_2 状态。
第三次断开(FIN):
服务器发送一个 FIN 包,表示不再发送数据。
服务器进入 LAST_ACK 状态。
第四次断开(ACK):
客户端收到 FIN 包后,发送一个 ACK 包,确认收到 FIN。
客户端进入 TIME_WAIT 状态,等待 2MSL(最大段生存时间)后完全关闭连接。
服务器进入 CLOSED 状态,连接关闭。
HTTP原理:
1.客户端请求:
客户端(如浏览器)向服务器发送HTTP请求,请求包含请求方法、URI、HTTP版本、请求头和请求体。
2.服务器响应:
服务器接收到请求后,处理请求并返回HTTP响应,响应包含状态码、响应头和响应体。
3.无连接和无状态:
HTTP是无连接的,每次请求和响应都是独立的。
HTTP是无状态的,服务器不保存客户端的请求状态。
4.请求方法:
常见的请求方法包括GET、POST、PUT、DELETE等,用于指定操作类型。
5.状态码:
服务器返回的状态码表示请求的处理结果,如200 OK、404 Not Found等。
HTTPS工作流程:
客户端(浏览器)访问 https://www.baidu.com 百度网站;
百度服务器返回 HTTPS 使用的 CA 证书;
浏览器验证 CA 证书是否为合法证书;
验证通过,证书合法,生成一串随机数并使用公钥(证书中提供的)进行加密;
发送公钥加密后的 随机数给百度服务器;
百度服务器拿到密文,通过私钥进行解密,获取到随机数(公钥加密,私钥解密,反之也可以);
百度服务器把要发送给浏览器的内容,使用随机数进行加密后传输给浏览器;
此时浏览器可以使用随机数进行解密,获取到服务器的真实传输内容;
DNS解析原理:
1.域名解析流程
用户请求:用户在浏览器中输入域名(如 example.com),浏览器向本地 DNS 缓存查询。
本地 DNS 缓存:如果本地缓存中没有该域名的记录,则向递归 DNS 服务器发送查询请求。
递归 DNS 服务器:递归 DNS 服务器(通常是 ISP 提供的 DNS 服务器)负责向其他 DNS 服务器查询域名的 IP 地址。
根 DNS 服务器:递归 DNS 服务器向根 DNS 服务器查询域名的*域名(TLD)服务器。
TLD 服务器:根 DNS 服务器返回负责该域名的*域名服务器(如 .com 的 TLD 服务器)的地址。
权威 DNS 服务器:递归 DNS 服务器向 TLD 服务器查询域名的权威 DNS 服务器。
获取 IP 地址:权威 DNS 服务器返回域名的 IP 地址。
返回结果:递归 DNS 服务器将 IP 地址返回给用户,用户使用该 IP 地址访问目标网站。
2. 递归查询与迭代查询
递归查询:客户端向 DNS 服务器发送请求,DNS 服务器负责完成所有查询步骤,直到找到域名的 IP 地址并返回给客户端。
迭代查询:DNS 服务器在查询过程中逐步向其他 DNS 服务器查询,直到找到最终的权威 DNS 服务器。
3. DNS 缓存
本地缓存:浏览器和操作系统会缓存 DNS 查询结果,以减少重复查询。
递归 DNS 服务器缓存:递归 DNS 服务器会缓存查询结果,提高查询效率。
4. DNS 安全
缓存中毒:恶意攻击者可能篡改 DNS 缓存,导致用户访问错误的 IP 地址。
DNSSEC:通过数字签名验证 DNS 数据的完整性,防止缓存中毒。