network concept
# CNAME
CNAME(Canonical Name Record)是 DNS 记录的一种类型,用于将一个域名别名指向另一个域名。它的主要作用是将流量重定向到另一个域名,同时保持 DNS 管理的灵活性和简洁性
# CNAME 的作用
- 域名别名功能:
- 将一个域名(例如
www.example.com)指向另一个域名(例如example.com) - 用户访问
www.example.com时,DNS 服务器会解析到example.com,并返回对应的 IP 地址
- 管理的灵活性:
- 当目标域名的 IP 地址发生变化时,只需要更新目标域名的记录,而无需修改所有别名的记录
- 用于第三方服务:
- 例如,将
cdn.example.com配置为一个 CDN 提供商的域名(如cdn.provider.com) - 通过 CNAME,用户无需直接与 CDN 的域名打交道,只需要访问 cdn.example.com
# TTL
TTL( Time-To-Live 生存时间), 表示一条域名解析记录在 DNS 服务器上缓存时间。当 DNS 服务器获得一条 DNS 解析记录后, 会在 DNS 服务器中保存一段时间, 这段时间内如果再接到这个域名的解析请求, DNS 服务器将不再发出解析请求, 而是直接返回缓存的记录
# TLS
TLS 改变密码标准协议(Change Cipher Spec Protocol) 就是加密传输中每隔一段时间必须改变其加解密参数的协议 (opens new window)

- Hello Message Phase(问候消息阶段)
Client Hello:
- 客户端发起握手,请求与服务器建立安全连接
- 包含以下信息:
- 支持的 TLS 版本
- 支持的加密套件列表(Cipher Suites)
- 随机数(Random Number)
- 可选的扩展信息(例如 SNI 等)
Server Hello:
- 服务器响应客户端请求,确认建立连接
- 包含:
- 协商的 TLS 版本
- 选择的加密套件
- 服务器的随机数
- 其他协商信息
服务器证书和密钥:
- 服务器发送自己的数字证书,用于证明身份(通过 CA 签名验证)
- 根据加密套件,可能包含 ServerKeyExchange(用于密钥交换的参数)
Server Hello Done:
- 服务器通知客户端,Hello 阶段完成,等待客户端响应
- Client Exchange(客户端密钥交换)
Client Certificate(可选):
- 如果服务器要求客户端提供身份验证,客户端会发送自己的数字证书
ClientKeyExchange:
- 客户端生成一个 预主密钥(Pre-Master Secret),并使用服务器的公钥加密后发送给服务器
- 服务器使用自己的私钥解密,得到相同的预主密钥
Certificate Verify(可选):
- 如果客户端证书被使用,客户端会发送签名,用于证明自己是证书的持有者
- Cipher Change(加密切换阶段)
- Change Cipher Spec(客户端和服务器):
- 双方通知对方,后续通信将基于协商的加密算法和密钥进行加密
- Finished:
- 客户端和服务器分别发送 "Finished" 消息,表示握手完成
- 该消息会使用协商的密钥加密,用于验证握手过程是否完整且未被篡改
- Secure Communication(安全通信)
- 握手完成后,客户端和服务器进入数据加密阶段,使用共享密钥进行安全通信
# 总结 TLS 握手的关键步骤
- 客户端和服务器通过 Hello 消息协商加密参数和 TLS 版本
- 服务器发送证书供客户端验证,并协商密钥交换参数
- 客户端和服务器基于共享的预主密钥生成会话密钥
- 双方完成密钥协商后,切换到加密模式,开始安全通信
# TLS 版本演进
- TLS 1.2 vs TLS 1.3 的主要区别:
- TLS 1.3 简化了握手过程,减少了往返次数
- TLS 1.3 移除了不安全的加密套件
- TLS 1.3 强制使用前向保密
# 安全特性
- 前向保密(Forward Secrecy):即使长期密钥泄露,过去的通信内容也无法被解密
- 重放攻击防护:通过随机数和时间戳防止重放攻击
- 证书验证:通过证书链验证服务器身份,确保证书的真实性和有效性
# 性能优化
- 会话恢复:通过会话ID或会话票据减少握手开销
- 0-RTT:TLS 1.3支持0-RTT模式,可以更快地建立连接
- 证书优化:使用OCSP Stapling减少证书验证延迟
# 最佳实践
- 使用最新的TLS版本
- 配置安全的加密套件
- 启用HSTS(HTTP Strict Transport Security)
- 定期更新证书
# SNI
- SNI(Server Name Indication)的含义和作用
- SNI 是 Server Name Indication(服务器名称指示) 的缩写,是 TLS(Transport Layer Security) 协议的一个扩展,用于支持在同一台服务器上托管多个 HTTPS 网站
- SNI 的问题背景
在传统的 SSL/TLS 通信中,服务器和客户端会通过 IP 地址建立连接,然后协商使用哪种证书来加密通信。然而,这在以下场景下会有问题:
- 一台服务器托管多个网站(虚拟主机):现代服务器通常会托管多个域名,例如
example.com和example.net, 但它们共享一个 IP 地址 - SSL/TLS 握手的限制:在没有 SNI 的情况下, TLS 握手阶段发生在发送 HTTP 请求之前, 因此服务器无法知道客户端请求的具体域名,只能提供一个通用的证书。这可能导致:
- 客户端收到错误的证书
- 如果证书与请求域名不匹配,浏览器会提示安全警告
- SNI 的作用
SNI 在 TLS 握手阶段 提供了解决方案:
- 客户端在握手时会向服务器发送它想要访问的域名(主机名),服务器可以根据该域名选择正确的证书
- 这样,即使一台服务器托管多个域名,每个域名也可以使用不同的证书
简单来说,SNI 允许服务器根据客户端请求的域名动态选择适当的证书
- SNI 的工作原理
- 客户端发起 TLS 握手:
- 在握手的 ClientHello 消息中,客户端通过扩展字段发送目标主机名(域名)
- 服务器接收并处理:
- 服务器根据客户端提供的域名,选择匹配的证书
- 完成握手并建立加密连接:
- 如果域名匹配,服务器发送对应的证书;如果没有匹配证书,可能返回默认的或关闭连接
- SNI 的优点
- 支持多个域名共用同一 IP:减少对独立 IP 地址的需求
- 成本节约:在一台服务器上托管多个 HTTPS 网站,不需要为每个域名配置单独的 IP
- 兼容性增强:允许客户端访问多域名时获得正确的证书
- SNI 的缺点
- 早期浏览器和系统的兼容性问题:
- SNI 需要客户端和服务器都支持
- 一些较老的操作系统和浏览器(如 Windows XP 的 IE6/IE8)不支持 SNI
- 可能泄漏请求域名:
- SNI 信息在握手阶段以明文发送,攻击者可以通过拦截通信查看客户端请求的域名
- 为解决这个问题,加密 SNI(ESNI,Encrypted SNI) 在后续 TLS 协议中被提出(TLS 1.3 中升级为 ECH,Encrypted ClientHello)
- SNI 的实际应用
- 托管多个 HTTPS 网站:支持虚拟主机服务商(如 AWS、阿里云)在一台服务器上托管多个域名
- 多域名证书管理:为每个域名分配独立的证书,而不需要多个 IP 地址
- CDN 服务:CDN 提供商(如 Cloudflare)使用 SNI 来支持数千个客户的域名
- 常见问题
- SNI 支持情况:
- 主流现代浏览器和服务器(如 Apache、Nginx)都支持 SNI
- SNI 是 TLS 1.0 及更高版本的标准扩展
- 如何查看网站是否使用 SNI:
- 可以使用工具(如 openssl)或在线服务检查 TLS 握手过程
SNI 是一个重要的 TLS 扩展,解决了虚拟主机环境中 HTTPS 证书管理的问题, 为节省 IP 资源、支持多域名托管提供了重要支持。然而,由于其明文传输的特性,在隐私保护上,后续的加密机制(如 ECH)正逐步优化
# TCP
TCP 是面向连接的、可靠的、基于字节流的传输层通信协议
# RTT
RTT 的意义RTT 是
Round Trip Time的缩写,指的是数据包从发送端发送到接收端并返回发送端所需的总时间。它是衡量网络性能的重要指标之一. Ping 是测量 RTT 的常用工具
RTT 是网络质量的核心指标,可以帮助评估:
- 网络延迟:
- RTT 越小,表示延迟越低,网络响应越快
- 在实时应用(如视频通话、在线游戏)中,较低的 RTT 至关重要
- 网络故障诊断:
- 通过分析 RTT,可以判断某个网络节点是否存在问题
- 高 RTT 或波动大的 RTT 可能表明网络拥塞或设备性能问题
- 服务优化:
- 网站和应用程序可以根据 RTT 数据选择最近的服务器,提高用户体验
# CDN
CNAME 解析


# DNS
域名解析过程DNS (Domain Name System)域名解析系统, 其作用是根据域名查找出对应的 IP 地址。比如访问 http://www.baidu.com (opens new window) 的时候, 需要通过 DNS 查处 IP 地址是 14.215.177.39

假设访问 http://www.baidu.com (opens new window) 域名解析过程如下:
- 1.查找本地 DNS 缓存(即系统缓存), 如没有则进行下一步
- 2.向 localDNS (本地 DNS 服务器, 一般是由 ISP 互联网服务提供商, 例如联通、电信和移动提供)发起查询请求, 如没有则 localDNS 会向根域名服务器发起查询请求
- 3.根域名服务器会返回 .com 的顶级域名服务器地址
- 4.localDNS 向顶级域名服务器发起查询, 顶级域名服务器返回 .http://baidu.com (opens new window) 的次级域名服务器地址
- 5.localDNS 向次级域名服务器发起查询, 次级域名服务器返回 http://www.baidu.com (opens new window) 的 IP 地址
- 6.localDNS 记录缓存, 并返回给客户端
# 域前置 CDN 技术
域前置(Domain Fronting)是一种网络技术,常用于绕过网络限制或实现匿名通信。结合 CDN 时,通常被称为域前置 CDN,其核心思想是利用内容分发网络(CDN)的多域名机制,将请求伪装成访问另一个合法域名,从而隐藏实际访问的目标
# 域前置 CDN 的工作原理
- 请求伪装:
- 客户端在请求中使用一个合法的域名(如 example.com)作为主机头(HTTP Host Header)或 SNI(Server Name Indication)
- 但是实际的数据包通过 CDN 路由到目标服务器,例如 actual-target.com
- CDN 解析:
- CDN 会根据 SNI 或 HTTP Host 的配置,将流量转发到目标服务器(通常称为 Origin Server)
- 由于 CDN 负责中间的流量分发,监控方通常只能看到合法域名的流量,而看不到实际目标
- 目标接收:
- 目标服务器通过配置,识别伪装流量并响应客户端请求
# 域前置 CDN 的使用场景
- 突破网络封锁(翻墙): 用户可以伪装成访问合法的网站(例如大型科技公司网站),实际流量通过 CDN 转发到受限制的目标服务
- 隐匿通信: 提供一种方式隐藏通信的真实目标,使第三方无法轻易分析流量
- 负载均衡与加速: 利用 CDN 的高带宽和分布式节点特性,加速访问速度并实现高效负载均衡
# 限制与风险
- CDN 限制:
- 大多数现代 CDN 提供商(如 Cloudflare、Akamai)已经禁止域前置,或者要求域名必须绑定到正确的源服务器
- 部分 CDN 会检查 Host 和 SNI 是否匹配,不匹配的流量可能会被拒绝
- 监管压力:
- 域前置可能被视为规避网络监管的手段,因此可能受到法律或政策的限制
- 技术局限:
- 如果 CDN 节点过多,可能导致流量延迟
- 在严格的网络环境中,流量的特征仍然可能被检测出来
- 不稳定性:
- 如果伪装的域名被大量使用,CDN 提供商可能会封禁这个域名,导致无法使用
# 替代方案
随着域前置技术被大量禁止,开发者通常选择其他替代方案,比如:
- TLS 指纹伪装: 伪装成合法网站的 TLS 握手
- 混淆代理协议(如 Shadowsocks 或 V2Ray 的混淆模块): 通过加密和随机化流量特征,规避检测
- 分布式网络(如 Tor 或 I2P): 直接通过匿名网络隐藏流量来源和目标
# 软路由
- 软路由与硬路由
硬路由:目前我们家里普遍使用的路由器,有厂家提供整体的解决方案,包括处理器、电源供应、嵌入式软件,提供设定的路由器功能。比如常用路由器品牌有 TP-Link、华为、H3C 等网件等。我们平常所接触的就属于"硬"路由
软路由:软路由就是台式机或服务器配合软件形成路由解决方案,主要靠应用软件的设置,从而达成路由器的功能。它是由个人电脑(X86 架构的 CPU)+Linux 系统+专用的路由程序(openwrt、爱快、ros、lede 等)组成,说白了软路由就是 PC 的硬件加上路由系统来实现路由器的功能
# 网关
网关(Gateway)通常指在两个或多个网络之间充当"桥梁"的设备或软件,主要作用包括:
- 连接不同网络:网关能将采用不同通信协议或物理介质的网络连接起来,实现数据互通。例如,家庭路由器既可以连接局域网,也可以访问互联网。
- 协议转换:当两个网络之间使用不同的通信协议时,网关会进行协议转换,确保数据能够在网络间正确传输。
- 安全和流量管理:网关常常具备防火墙、数据过滤等功能,有助于保护内部网络免受外部攻击,同时管理数据流量。
此外,"网关"在其他领域也有应用,如 API 网关用于管理微服务间的请求,支付网关则处理在线支付交易。总体来说,网关是实现不同系统互联互通的重要组件。
# 网桥
网桥(Bridge) 是一种网络设备,用于连接和转发不同网络之间的数据流。网桥工作在 数据链路层(OSI 模型的第二层),它能够学习并转发通过其连接的网络接口的帧。
网桥的主要功能:- 分段网络:
网桥通过将一个大的网络分成多个小段,帮助减少网络流量并提高性能。它把数据帧转发到适当的网络段,避免不必要的数据在整个网络中广播。
- 过滤和转发数据:
网桥通过学习各个网络段的 MAC 地址来决定是否转发数据。它维护一个MAC 地址表,记录每个设备的 MAC 地址以及该设备所在的网络段。 当收到数据帧时,网桥检查数据帧的目标 MAC 地址,然后查找该地址所在的网络段。如果目标 MAC 地址在本段内,网桥不转发该数据;如果目标 MAC 地址在另一个网络段,网桥就转发数据帧。
- 减少冲突域:
在使用集线器(Hub)时,所有设备共享同一个冲突域,可能会导致数据冲突和性能问题。网桥通过将网络分段来创建多个冲突域,减少了冲突的发生,提高了网络的效率。
- 透明性:
网桥通常是"透明的",也就是说,网络上的其他设备(如计算机、路由器等)并不知道网桥的存在,它们认为自己在同一个网络中进行通信。
网桥的工作原理:- 学习: 当网桥第一次连接两个网络时,它开始学习网络中的设备。例如,当一个设备发送数据时,网桥会查看源 MAC 地址并记录在自己的 MAC 地址表中,记录该设备所属的网络段。
- 转发: 当网桥收到一个数据帧时,检查数据帧的目标 MAC 地址,并查找这个地址所属的网络段。如果目标设备位于不同的段上,网桥就转发数据到相应的网络段。
- 过滤: 如果目标设备在同一个网络段上,网桥会丢弃该数据帧,从而避免不必要的网络负载。
- 交换机 也是工作在数据链路层的网络设备,和网桥功能相似。实际上,交换机可以被视为多个端口的网桥。
- 现代交换机通常比传统的网桥更高效,能够处理更多的端口,并且具有更多的高级功能(例如 VLAN 支持)。
- 网桥 仅在数据链路层工作,它根据 MAC 地址来转发数据,不涉及网络层(IP 地址)。
- 路由器 则工作在网络层,主要根据 IP 地址来转发数据。它可以连接不同的网络(如不同的子网),并且支持更复杂的路由决策和地址转换。
- 局域网(LAN)扩展: 网桥可以用来将多个局域网连接起来,扩展网络的覆盖范围。
- VLAN 划分: 在大型企业网络中,网桥有时用来划分虚拟局域网(VLAN),分隔不同部门的网络流量。
- 老旧设备连接: 在一些情况下,网桥还用于连接老旧设备(如老式集线器)和现代网络设备(如交换机)。
- 优点:
- 减少广播域: 通过将网络分段,网桥减少了广播数据包的传播范围,减轻了网络负载。
- 提高网络性能: 网桥可以减少冲突和拥塞,提高整个网络的效率。
- 缺点:
- 延迟增加: 数据需要通过网桥转发,这可能增加传输的延迟。
- 管理复杂: 在多个网桥的情况下,网络配置和管理可能会变得复杂,尤其是在需要协调不同网络段的流量时。
# TOR 网络
Tor(The Onion Router)是一种旨在增强匿名性和隐私性的网络通信工具。Tor 使用了一种特殊的技术,称为 洋葱路由(Onion Routing),通过多层加密和复杂的路由机制使用户的网络通信变得难以追踪。下面是 Tor 的工作原理详细介绍:
- 洋葱路由的基本概念
Tor 网络使用多层加密技术,就像一个洋葱一样将数据包进行层层加密。每层加密都在不同的节点上解开,最终数据到达目标节点时,已经完全解密。
这一过程可以帮助隐藏通信的来源、目的地和内容,从而保护用户的隐私。
- Tor 网络的组成
Tor 网络由多个 节点(也叫 Tor 节点 或 Tor 路由器)组成。每个节点有不同的功能,主要包括以下三种类型:
- 入口节点(Entry Node,也叫 Guard Node): 这个节点是你设备与 Tor 网络之间的第一个接触点,负责接收加密的数据流,并将它转发给下一个节点。它知道你的 IP 地址,但不知道你访问的目标。
- 中继节点(Relay Node): 中继节点在 Tor 网络中转发数据,它们位于入口节点和出口节点之间。它们在转发数据时并不解密数据,它们只负责传输。
- 出口节点(Exit Node): 这个节点是 Tor 网络的最后一个节点,它会解密数据并将其发送到目标服务器(如网站)。出口节点可以看到发送的请求和目标地址,但无法知道请求的来源(即原始用户的 IP 地址)。
- 数据传输过程
Tor 使用 三重加密(即洋葱加密)来确保数据的隐私和安全。每个数据包都经过三层加密,分别对应三个不同的节点(入口、中继、出口)。下面是数据流的具体过程:
初始化连接:
- 当用户启动 Tor 客户端时,Tor 客户端会从 Tor 网络中选择三个节点,分别作为入口节点、中继节点和出口节点。节点的选择是随机的,并且定期更换,以增加匿名性。
- 客户端和入口节点建立一个加密连接,并与入口节点协商三层加密的过程。
数据加密:
- 用户的数据(如浏览网页的请求)首先通过 Tor 客户端进行加密。这个加密过程包括三层加密,每一层加密的目标节点知道如何解密自己的那一层加密,但无法看到其他层的内容。
- 第一次加密是为了入口节点,第二次是为中继节点,第三次是为出口节点。
通过入口节点转发:
- 加密后的数据首先发送到入口节点。入口节点只知道数据的源 IP 地址(即用户的地址),但它并不知道数据的最终目标地址。
- 入口节点将数据转发给中继节点,同时保留第一层加密,进入中继节点。
通过中继节点转发:
- 中继节点接收到第二层加密的数据,并解开第二层加密,获得下一步的目标节点信息。
- 它再将数据转发给出口节点,同时保留中继节点解密的数据。
通过出口节点转发:
- 出口节点解开最后一层加密后,获得原始的未加密数据,然后将数据发送到最终目标服务器(比如你访问的网站)。
目标服务器的响应:
- 目标服务器向出口节点发送响应,出口节点将其重新加密,并通过中继节点和入口节点转发回客户端。
- 在返回过程中,每个节点只知道自己应该做什么,但并不清楚数据的全部路径或源头。
数据返回到用户:
- 用户的 Tor 客户端解开数据的加密层,最终获得来自目标服务器的响应数据,整个过程对外界是透明的。
- 为什么 Tor 能够提供匿名性
- 多层加密: Tor 的洋葱路由通过多层加密来保证通信内容的保密性,即使某个节点被恶意控制,它只能看到加密后的数据和该节点相关的信息,无法了解整个通信过程。
- 分布式网络: Tor 的节点分布在全球各地,没有任何一个节点能追踪整个数据传输路径。通过随机选择的节点和定期更换节点,Tor 使得追踪用户活动变得更加困难。
- 节点之间的不信任: 各个 Tor 节点相互独立,出口节点虽然能够看到数据的内容,但无法知道它的来源。入口节点知道来源 IP 地址,但无法知道目标地址。
- Tor 的优势
- 匿名性: Tor 最主要的优势是它提供的匿名性保护,确保用户的身份、位置和网络行为无法轻易被追踪。
- 突破审查: Tor 可以帮助用户绕过网络审查和访问被屏蔽的网站,尤其是在那些限制言论自由的国家(如中国、伊朗等)。
- 隐私保护: Tor 在日常浏览、电子邮件、即时通讯等多种应用中都能提供隐私保护,防止第三方监视和数据收集。
- Tor 的限制和挑战
- 速度较慢: 因为数据需要经过多个节点的转发和加密解密,Tor 网络的速度通常比普通的互联网连接慢得多。
- 出口节点问题: Tor 的出口节点能看到解密后的数据,因此如果出口节点不受信任,可能会窃取用户的敏感信息(如密码、信用卡信息等)。因此,使用 Tor 时需要注意不通过出口节点发送敏感信息。
- 滥用风险: Tor 可能被用于非法活动(如匿名访问非法网站),这也使得 Tor 被一些国家或网络服务提供商视为可疑的工具。
- 无法完全避免追踪: 虽然 Tor 可以有效地提高匿名性,但它并不是绝对安全的。高级追踪技术(例如流量分析、节点恶意控制等)可能仍然能暴露用户身份。
- Tor 的应用
- 匿名浏览: 用户可以通过 Tor 浏览器匿名浏览互联网,避免被监视和追踪。
- 访问被屏蔽的网站: Tor 可用于绕过地域限制和审查,访问被封锁的网站或服务。
- 保护通信: Tor 可以用来保护电子邮件通信,避免邮件内容和发送者被跟踪。
- 发布和获取信息: 记者、活动家、 whistleblower(吹哨人)等群体通常使用 Tor 保护自己免受追踪,同时可以安全地发布或获取敏感信息。
# other
# tor
tor 网络
# ISP
ISP 是 Internet Service Provider 的缩写,中文一般翻译为 互联网服务提供商 或 网络服务商。它指的是提供互联网接入服务的公司或机构。ISP 的主要功能包括:
- 互联网接入:为个人用户、家庭或企业提供接入互联网的服务,例如宽带网络、光纤接入、移动网络等。
- 网络管理:提供域名注册、IP 地址分配等服务。
- 增值服务:例如邮箱服务、云存储、网络安全、托管服务等。
# 路由器的 WAN/LAN 口
- LAN口是指路由器上的局域网接口,用于连接本地设备,如电脑、手机、打印机等。 它是局域网内设备之间进行数据交换和共享资源的桥梁,提供了一个私有网络环境。 通过LAN口,我们可以在局域网内实现设备之间的互联互通。
- WAN口是指路由器上的广域网接口,用于连接广域网,通常是连接到互联网服务提供商(ISP)的网络