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

网络传输过程

https传输过程

客户端发起HTTPS请求


操作:用户在浏览器输入 https://www.example.com
技术细节:
客户端向服务器443端口发起TCP连接
发送Client Hello消息(包含支持的TLS版本、加密套件、客户端随机数)
安全意义:建立安全通信的起点


服务器返回数字证书


操作:服务器响应并发送数字证书
技术细节:
包含公钥A(通常为RSA/ECC公钥)
证书包含:域名、有效期、颁发机构、公钥信息
示例证书结构:
plaintext
证书版本:v3
序列号:00:aa:bb:cc...
签名算法:sha256WithRSA
颁发者:CN=DigiCert Global CA
有效期:2023-01-01 至 2024-12-31
主体:CN=www.example.com
公钥:RSA 2048位
X509v3扩展:
Subject Alternative Name: DNS:example.com
安全意义:提供服务器身份凭证


客户端验证证书


操作:客户端验证证书合法性
验证流程:
检查证书有效期
验证证书链(从服务器证书→中间CA→根CA)
检查CRL/OCSP吊销状态
验证域名匹配(防止钓鱼网站)
验证失败处理:
浏览器显示警告(如NET::ERR_CERT_INVALID)
用户可选择是否继续访问


生成会话密钥


操作:客户端生成随机对称密钥
技术细节:
生成256位随机数(称为Pre-Master Secret)
在TLS 1.3中称为"Shared Secret"
结合客户端随机数、服务器随机数生成最终会话密钥
math
会话密钥 = HKDF_Expand(
HKDF_Extract(Pre-Master, "TLS Key"),
ClientRandom + ServerRandom,
32
)
安全意义:确保每次会话使用唯一密钥


加密传输会话密钥


操作:用公钥A加密会话密钥
技术细节:
使用RSA加密:Ciphertext = (KEY^e) mod n
或使用ECDH密钥交换(更安全的前向保密)
TLS 1.3中默认使用ECDHE密钥交换
安全意义:防止中间人获取对称密钥


服务器解密会话密钥


操作:服务器用私钥B解密
技术细节:
RSA解密:KEY = (Ciphertext^d) mod n
此时双方拥有相同的会话密钥
安全意义:建立端到端的加密通道基础


切换加密模式


操作:双方发送ChangeCipherSpec
技术细节:
客户端→服务器:ChangeCipherSpec通知
服务器→客户端:ChangeCipherSpec响应
启用协商好的加密套件(如AES_256_GCM)
安全意义:正式启用加密通信


加密数据传输(客户端→服务器)


操作:客户端发送加密的HTTP请求
技术细节:
python
# 加密过程
ciphertext = AES_GCM_encrypt(
key=会话密钥,
plaintext="GET / HTTP/1.1...",
nonce=随机数,
auth_data=附加数据
)
实际数据包:
hex
17 03 03 00 30   # TLS头部
01 02 03 ... 3A  # 加密后的应用数据
60 7B 91 A5      # 认证标签(GCM)


加密数据传输(服务器→客户端)


操作:服务器返回加密的HTTP响应
技术细节:
使用相同会话密钥解密请求
生成加密响应:
python
response = "HTTP/1.1 200 OK..."
encrypted_res = AES_GCM_encrypt(key, response)
性能优化:
TLS会话恢复(Session Tickets)
0-RTT数据(TLS 1.3特性)


连接关闭


操作:加密通信结束
技术细节:
发送加密的close_notify警报
安全关闭TCP连接
安全意义:防止截断攻击
关键安全机制总结:
双阶段加密:
非对称加密:安全传输会话密钥(RSA/ECDH)
对称加密:高效加密业务数据(AES/ChaCha20)
证书信任体系:
三级验证(服务器证书→中间CA→根CA)
OCSP在线证书状态检查
前向保密(PFS):
ECDHE密钥交换
每次会话生成唯一密钥
即使私钥泄露,历史会话仍安全
完整性保护:
HMAC-SHA256消息认证
AEAD模式(如AES-GCM)内置完整性校验

DNS传输过程

客户端发起DNS查询

操作:用户在浏览器输入域名(如 www.example.com)
技术细节:
生成DNS查询报文(UDP 53端口)
报文结构:
plaintext
Header:
ID: 0x4d20      // 随机事务ID
Flags: RD=1      // 递归查询请求
Questions: 1
Question Section:
QNAME: www.example.com
QTYPE: A        // 请求IPv4地址
QCLASS: IN      // Internet类
协议选择:
默认使用UDP(报文<512字节)
大响应自动切换TCP

解析器检查缓存

操作:本地DNS解析器查询缓存
检查内容:
浏览器DNS缓存
操作系统DNS缓存
路由器DNS缓存
ISP DNS服务器缓存
缓存时效:
根据TTL(Time to Live)值决定
典型TTL值:
根域名:48小时
TLD域名:24小时
主机记录:5分钟-1小时

查询根DNS服务器

操作:解析器向根DNS服务器发起查询
技术细节:
全球13组根服务器(a.root-servers.net ~ m.root-servers.net)
响应包含TLD服务器信息:
plaintext
Authority Section:
com.    172800  IN  NS  a.gtld-servers.net.
com.    172800  IN  NS  b.gtld-servers.net.
Additional Section:
a.gtld-servers.net.  A  192.5.6.30
b.gtld-servers.net.  A  192.33.14.30
关键点:根服务器不返回最终IP,只引导至正确TLD

查询顶级域(TLD)DNS

操作:解析器向.com TLD服务器查询
技术细节:
TLD服务器管理特定后缀(.com, .org, .cn等)
响应包含权威DNS信息:
plaintext
Authority Section:
example.com.  86400  IN  NS  ns1.example.com.
example.com.  86400  IN  NS  ns2.example.com.
Additional Section:
ns1.example.com.  A  192.0.2.1
ns2.example.com.  A  192.0.2.2

查询权威DNS服务器

操作:解析器向域名注册的权威DNS查询
技术细节:
权威服务器持有最终DNS记录
返回A记录(IPv4)或AAAA记录(IPv6):
plaintext
Answer Section:
www.example.com.  300  IN  A  93.184.216.34
www.example.com.  300  IN  A  93.184.216.35  // 可能多个IP
记录类型:
A:IPv4地址
AAAA:IPv6地址
CNAME:别名记录(如www→example.com)
MX:邮件服务器
TXT:文本验证信息

缓存并返回结果

操作:解析器缓存结果并返回客户端
缓存机制:
分层缓存:本地→ISP→公共DNS
缓存污染防护:
随机事务ID(16位)
随机源端口(DNS over TCP)
响应报文:
plaintext
Header:
ID: 0x4d20
Flags: QR=1, RA=1  // 响应+递归可用
Answer RRs: 1
Answer Section:
www.example.com.  300  IN  A  93.184.216.34

客户端建立连接

操作:客户端使用IP建立TCP连接
后续流程:
TCP三次握手
如果是HTTPS:TLS握手
HTTP请求/响应
关键点:DNS只负责域名→IP转换,不参与后续通信

http://www.dtcms.com/a/279845.html

相关文章:

  • GaussDB between的用法
  • 光伏板如何最大化铺设?
  • 【PostgreSQL异常解决】`PostgreSQL`异常之类型转换错误
  • 记录自己在将python文件变成可访问库文件是碰到的问题
  • vert.x 官网docs, vert.x中文文档地址 vertx文档
  • 文心4.5开源之路:引领技术开放新时代!
  • 【前端:Typst】--let关键字的用法
  • 高德开放平台携手阿里云,面向开发者推出地图服务产品MCP Server
  • 外部协作不力影响项目进度,如何加强外部沟通
  • 项目进度压缩影响质量,如何平衡进度与质量
  • LeetCode|Day11|557. 反转字符串中的单词 III|Python刷题笔记
  • 稀土化合物:助力高效种植与健康养殖
  • vue笔记3 VueRouter VueX详细讲解
  • 对象的使用
  • CAN终端电阻为什么是60R+60R,而不直接用120R?
  • 前端vue对接海康摄像头流程
  • Flink窗口处理函数
  • C++-linux 5.gdb调试工具
  • 【从语言幻觉看趋势】从语言幻觉到多智能体协作:GPT多角色系统的技术演进与实践路径
  • 判断端口处于监听状态的方法
  • 腾讯云WAF域名分级防护实战笔记
  • EPLAN 电气制图(八):宏应用与变频器控制回路绘制全攻略
  • ssm学习笔记day07mybatis
  • 如何在 Shopify 中创建退货标签
  • 【C语言】浮点数在内存中的存储:从科学计数法到内存存储
  • 从输入URL到页面呈现都发生了什么?
  • MFC UI大小改变与自适应
  • wpf 实现窗口点击关闭按钮时 ​​隐藏​​ 而不是真正关闭,并且只有当 ​​父窗口关闭时才真正退出​​ 、父子窗口顺序控制与资源安全释放​
  • AI 优化大前端动画性能:流畅性与资源消耗的平衡
  • Django REST framework 源码剖析-URL地址详解(Returning URLs)