当前位置: 首页 > news >正文

TCP、HTTP、HTTPS、DNS的原理

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 数据的完整性,防止缓存中毒。

相关文章:

  • 科技潮流出行新体验 方程豹全新车型钛3正式开启预售
  • linux服务器专题1------redis的安装及简单配置
  • 【跑步计划,日期推算】
  • 我的世界模组进阶开发教程——地形生成(2)
  • C语言基础数据类型
  • RAG 调优指南:Spring AI Alibaba 模块化 RAG 原理与使用
  • Linux进程间通信:【目的】【管道】【匿名管道】【命名管道】【System V 共享内存】
  • 自动驾驶浪潮下,HMI 设计如何保障安全与便捷?
  • PyTorch中知识蒸馏浅讲
  • 文件压缩与解压(zip4j)
  • SnapdragonCamera骁龙相机源码解析
  • 【C++指南】一文总结C++二叉搜索树
  • 【Linux】传输层协议 TCP
  • Vue3实现锚点定位
  • 项目实战:基于Spring WebFlux与LangChain4j实现大语言模型流式输出
  • 服务停止后,自启动的service怎么写
  • QT/C++ 多线程并发下载实践
  • nx-admin1.2版本发布
  • 【教程】如何使用匿名Github仓库: anonymous.4open.science
  • 【蓝桥杯】单片机设计与开发,RTC实时时钟
  • 外交部:国际调解院着眼以调解定分止争,更好维护国际公平正义
  • 申伟强任上海申通地铁集团有限公司副总裁
  • 多所院校高规格召开考研动员会,有学院考研报名率达84%
  • 这个死亡率第一的“老年病”,正悄悄逼近年轻人
  • 国家统计局:要持续加大好房子建设供应力度,积极推动城市更新行动和保障房建设
  • 人民日报评论员:党政机关要带头过紧日子