当前位置: 首页 > 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.lryc.cn/news/588472.html

相关文章:

  • 理解Linux文件系统:从物理存储到统一接口
  • 小波变换 | 离散小波变换
  • 学习笔记——农作物遥感识别与大范围农作物类别制图的若干关键问题
  • rsyslog简单应用
  • Linux中的系统日志(Rsyslog)
  • 算法训练营day17 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
  • Linux —— A / 基础指令
  • 深入解析Hadoop YARN架构设计:从原理到实践
  • 019 进程控制 —— 进程程序替换
  • SpringMVC2
  • 力扣-138.随机链表的复制
  • 一分钟K线实时数据数据接口,逐笔明细数据接口,分时成交量数据接口,实时五档委托单数据接口,历史逐笔明细数据接口,历史分时成交量数据接口
  • 深入理解MyBatis延迟加载:原理、配置与实战优化
  • 美丽田园发布盈喜公告,预计净利增长超35%该咋看?
  • 现场设备无法向视频汇聚EasyCVR视频融合平台推流的原因排查与解决过程
  • CA-IS3082W 隔离485 收发器芯片可能存在硬件BUG
  • 第十五节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - vue前端 生产部署
  • Laravel 中 chunk 分页漏掉数据?深度解析原因与解决方案
  • Unity3D + VS2022连接雷电模拟器调试
  • 4、qt窗口(沉淀中)
  • iOS APP 上架流程:跨平台上架方案的协作实践记录
  • ConcurrentHashMap 原子操作详解:computeIfAbsent、computeIfPresent和putIfAbsent
  • C语言-数据输入与输出
  • 《甘肃棒球》国家级运动健将标准·棒球1号位
  • c#进阶之数据结构(动态数组篇)----Queue
  • Javaweb使用websocket,请先连上demo好吧!很简单的!
  • Vim库函数
  • 【DOCKER】-4 dockerfile镜像管理
  • 纯C++11实现!零依赖贝叶斯情感分析系统,掌握机器学习系统工程化的秘密!
  • 学习 Flutter (三):玩安卓项目实战 - 上