首页/网络/协议速查

协议速查

HTTP 状态码与方法、DNS 记录类型、TCP 状态机、TLS 版本与套件、IP/ICMP、邮件与文件传输:协议层排障与开发对照速查。

共 405 条更新于 2026-10-12所属领域:网络
共 405 条

HTTP 方法与状态码

请求方法语义、状态码分类与常见码含义

404 Not Found 未找到热门

服务器找不到目标资源:URL 不存在、路由未注册、资源已删除,或出于安全考虑刻意隐藏。

GET 获取资源热门

最基础的 HTTP 方法:请求获取目标资源的表示,安全、幂等、可缓存,是整个 Web 读取语义的基石。

POST 提交数据热门

向目标资源提交实体数据的方法:常用于创建资源、表单提交与复杂查询;非安全、非幂等。

500 Internal Server Error 服务器内部错误热门

服务器遇到未预期情况无法完成请求的「兜底」错误:通常是代码异常、配置错误或依赖故障,而不是请求本身的问题。

502 Bad Gateway 网关错误热门

作为网关/代理的服务器从上游收到无效响应(或无法连接上游):上游崩溃、端口未监听、协议不匹配都可能触发。

200 OK 请求成功热门

最通用的成功响应:请求已被处理,响应体(如有)是对请求的正常结果。

301 Moved Permanently 永久重定向热门

目标资源已永久移动到新 URI;客户端与搜索引擎应更新链接,后续请求直接用新地址。

504 Gateway Timeout 网关超时热门

网关/代理等待上游响应超过自身超时时间:上游太慢或卡死,而不是不可达。

HTTP 方法安全性幂等性对照

一次看清 9 个标准方法的 Safe(安全)/Idempotent(幂等)/Cacheable(可缓存)属性,是接口重试与缓存设计的基础。

304 Not Modified 未修改

条件请求(If-None-Match/If-Modified-Since)的结果:资源未变化,客户端可直接用本地缓存。

401 Unauthorized 未认证

请求缺少有效凭证:认证未通过(名字叫 Unauthorized,实际含义是 Unauthenticated),响应必须带 WWW-Authenticate 挑战。

403 Forbidden 禁止访问

服务器理解请求但拒绝执行:可能是权限不足、策略禁止、IP/地域限制或 WAF 拦截。

503 Service Unavailable 服务不可用

服务器暂时无法处理请求(过载或维护);应带 Retry-After 告知恢复时间,客户端宜退避重试。

PUT 全量替换资源

用请求体完整替换目标资源的表示,幂等:同一请求执行一次与多次结果一致。

状态码结构与分类规则

状态码是三位数字:首位数字定义类别(1xx-5xx),后两位无分类含义;客户端必须按类别处理不认识的码。

302 Found 临时重定向

目标资源临时位于其他 URI;历史名 Moved Temporarily,客户端下次仍访问原地址。

DELETE 删除资源

请求删除目标资源,幂等:重复删除同一资源不应产生不同副作用(第二次可返回 404 或 204)。

400 Bad Request 请求错误

服务器因语法/格式问题拒绝处理请求:畸形报文、非法参数、JSON 解析失败等。

3xx 重定向响应类(300-399)

表示需要客户端采取进一步动作以完成请求:绝大多数是「资源换了位置」,靠 Location 头告知新地址。

429 Too Many Requests 请求过多

客户端在给定时间内发送了过多请求(限流/速率限制触发);响应常带 Retry-After 告知何时重试。

PATCH 部分修改资源

对资源做局部修改的方法(RFC 5789 定义),请求体是「补丁文档」,语义由媒体类型决定。

4xx 客户端错误类(400-499)

表示请求本身有问题:语法错误、认证/权限不足、资源不存在、条件不满足等;重试前应先修正请求。

5xx 服务端错误类(500-599)

表示服务器承认自己处理失败或无力完成请求;客户端(尤其是幂等请求)可在退避后重试并关注 Retry-After。

2xx 成功响应类(200-299)

表示请求已被成功接收、理解并接受处理;具体语义由「方法 + 状态码 + 响应内容」共同决定。

204 No Content 无内容

请求成功但响应没有内容:常用于 PUT/DELETE 成功、以及不需要返回数据的操作。

HEAD 只取响应头

与 GET 相同的请求语义,但服务器不得返回响应体,只返回状态行与头信息。

502 / 503 / 504 网关错误排障对照

网关三兄弟的定位口诀:502 上游没了,503 上游还在但我不服务,504 上游在但太慢。

201 Created 已创建

请求成功且导致新资源被创建;响应应带 Location 指向新资源,响应体可返回新资源表示。

413 Content Too Large 内容过大

请求体超过服务器允许的大小上限,服务器拒收。Nginx 默认 client_max_body_size 1m,上传大文件最容易撞到它。

OPTIONS 探测通信选项

查询目标资源支持的通信选项,响应通常在 Allow 头中列出支持的方法;也是 CORS 预检请求使用的方法。

401 与 403 的区别(排障对照)

401=没认证(你是谁?带凭证重来);403=认证过了但没权限(知道你是谁,但不让做)。

206 Partial Content 部分内容

响应 Range 请求的片段下载:常见于音视频拖动、断点续传与多线程下载。

405 Method Not Allowed 方法不允许

目标资源不支持请求使用的方法;响应必须(MUST)带 Allow 头列出支持的方法。

REST API 状态码选型速查

接口设计时最常纠结的映射题:什么场景回什么码,一次给全判定表。

101 切换协议

响应 Upgrade 请求:服务器同意切换到请求头中指定的新协议(如 WebSocket),此后连接按新协议通信。

CONNECT 建立隧道

请求代理服务器与目标主机建立 TCP 隧道,用于 HTTPS 等端到端加密流量穿越代理。

202 Accepted 已受理

请求已被接受处理,但处理尚未完成,结果未知;适合异步任务、批处理与队列投递。

状态码排查速查(客户端 vs 服务端)

拿到一个状态码后,先判断责任侧,再按固定路径收集证据,避免盲目猜测。

303 See Other 去往其他位置

服务器让客户端「改用 GET 去访问另一个 URI」取得结果;是 POST/Redirect/GET 模式的标准状态码。

422 Unprocessable Content 无法处理内容

请求格式正确但内容语义有误(如校验失败、引用不存在);常被 API 用作表单字段校验错误。

1xx 信息响应类(100-199)

临时性中间响应:表示请求头已收到、服务器要求继续或提示进展,除 101 外还会跟着最终响应。

415 Unsupported Media Type 媒体类型不支持

请求体/内容格式不被支持:Content-Type 缺失、拼写错误,或服务端不支持的媒体类型。

308 Permanent Redirect 保持方法的永久跳转

永久重定向 + 保持方法与请求体,是 301 在「不能被改成 GET」场景下的现代替代。

499 客户端关闭连接(Nginx)

Nginx 日志专用状态码:服务器还在处理时客户端已断开连接(用户取消、前端超时、上游太慢)。

原因短语与非标准状态码

状态行里的原因短语(Reason-Phrase)只是给人看的文本,历史上可自定义;HTTP/2 起状态行被移除。

409 Conflict 请求冲突

请求与目标资源当前状态冲突:并发编辑冲突、唯一键重复、状态机不允许的操作等。

418 I'm a teapot 我是个茶壶

1998 年愚人节 RFC 2324(HTCPCP 超文本咖啡壶控制协议)定义的玩笑状态码:用茶壶煮咖啡时返回它。

健康检查与状态码约定

负载均衡/K8s 探针通过状态码判断实例是否可服务:2xx(多数实现含 3xx)视为健康,4xx/5xx 按探针配置判定。

307 Temporary Redirect 保持方法的临时跳转

与 302 同为临时重定向,但严格要求客户端保持原请求方法与请求体。

412 Precondition Failed 前置条件失败

请求中的条件头(If-Match、If-Unmodified-Since 等)不成立,服务器拒绝执行。

状态码监控与告警阈值

把状态码变成可观测指标:按 4xx/5xx 分层统计、按接口维度下钻,才能区分「用户手滑」与「服务故障」。

100 Continue 继续发送

客户端用 Expect: 100-continue 征求服务器同意后再发送请求体,避免上传被拒绝的大文件白白占用带宽。

407 Proxy Authentication Required 代理要求认证

请求必须经代理认证;响应带 Proxy-Authenticate,客户端用 Proxy-Authorization 提供凭证。

404 与 410 的取舍(含 SEO)

404=找不到(可能是临时的,也可能内容不存在);410=明确告知「曾存在、已永久删除」。

103 Early Hints 提前提示

在最终响应产生前先行发送链接预加载提示(Link 头),让浏览器提前建立连接、拉取关键资源。

408 Request Timeout 请求超时

服务器在等待请求(未在空闲超时内收到完整请求)后放弃连接;客户端可重试。

错误响应体设计(Problem Details)

状态码之外,机器可读的错误体才能让客户端正确分流:RFC 9457 定义了标准 Problem Details 结构。

PRG 模式(POST/Redirect/GET)

表单提交后重定向到结果页的经典模式:防止用户刷新时浏览器重复提交 POST。

444 直接关闭连接(Nginx)

Nginx 私有状态码:不返回任何响应直接关闭连接,用于静默丢弃恶意请求或隐藏服务。

TRACE 回显诊断

沿请求路径回显收到的消息(Via/Message/HTTP 头等),用于诊断代理链路上的消息改写。

406 Not Acceptable 无法满足内容协商

目标资源存在,但无法产出满足 Accept、Accept-Language 等请求头要求的表示。

410 Gone 已永久移除

目标资源曾存在且被有意永久删除,且不会恢复;比 404 更明确。

431 Request Header Fields Too Large 请求头过大

请求头字段总大小或单个字段超限:常见于 Cookie 累积过大、JWT 放头里过长。

414 URI Too Long URI 过长

请求的 URL(含查询串)超过服务器可处理长度;大量参数塞进 GET 查询串时常见。

511 Network Authentication Required 需要网络认证

客户端需要通过「网络认证」才能上网:酒店、机场、园区网的强制门户(Captive Portal)用它提示登录。

207 Multi-Status 多状态

WebDAV 批量操作的响应:一个响应体内携带多个子操作的独立状态(XML multistatus 格式)。

428 Precondition Required 需要前置条件

服务器要求请求必须带条件头(如 If-Match)才能执行,用于防止并发覆盖(lost update)。

451 Unavailable For Legal Reasons 因法律原因不可用

服务器因法律要求(法院命令、版权、合规审查)拒绝提供资源;可说明法律依据。

501 Not Implemented 未实现

服务器不支持完成请求所需的功能:不认识该请求方法,或未实现必要特性。

102 Processing 处理中

WebDAV 扩展状态码:服务器提示正在处理但尚未完成,用于避免客户端超时断开长操作。

416 Range Not Satisfiable 范围不可满足

Range 请求的区间无效或超出资源长度;响应应带 Content-Range: bytes */总长度 告知实际大小。

402 Payment Required 需要付费

为未来付费场景预留的状态码,长期未标准化;部分商业 API 用它表示余额不足或套餐未开通。

421 Misdirected Request 请求发错服务器

请求被定向到了无法响应它的服务器;典型于 HTTP/2 连接合并(connection coalescing)场景:复用的连接其证书不覆盖该域名。

426 Upgrade Required 需要升级协议

服务器要求客户端改用更高版本或其它协议再请求,响应带 Upgrade 头指明要求。

203 Non-Authoritative Information

响应由代理转换过的元数据产生:返回内容是「非权威」版本(可能被中间节点改写),历史名为 Non-Authoritative Information。

417 Expectation Failed 期望失败

服务器无法满足 Expect 头中的期望(通常指 Expect: 100-continue 无法按预期处理)。

423 Locked 资源被锁定

WebDAV:目标资源已被锁定,无法执行修改;响应应说明锁信息。

205 Reset Content 重置视图

要求客户端重置发起请求的文档视图(如清空表单),供「提交后重置输入」类交互使用。

300 Multiple Choices 多种选择

目标资源有多个可选表示(不同格式/语言/镜像),服务器可给出优选或让客户端自行选择。

411 Length Required 需要内容长度

服务器拒绝没有 Content-Length 的含体请求(如拒绝 chunked 上传或长度未知的实体)。

425 Too Early 过早请求

服务器拒绝处理「过早」的请求:客户端在 TLS 1.3 握手中用 0-RTT 提前发送数据,服务器因重放风险要求客户端等握手完成后再来。

507 Insufficient Storage 存储不足

WebDAV:服务器无法存储完成请求所需的内容(磁盘满、配额超限)。

599 网络连接超时(非标准)

非标准状态码,部分代理/CDN 用它表示「连接上游超时」;不在 IANA 注册表中,含义随实现而异。

208 Already Reported

WebDAV 绑定场景的优化状态码:同一资源已在同一 multistatus 响应中报告过,避免重复枚举。

424 Failed Dependency 依赖失败

WebDAV:因为另一个操作失败,导致本操作无法执行(同一事务内依赖前序步骤)。

226 IM Used 增量编码

服务器对 GET 应用了实例操作(delta 编码),返回的是基于基版本的增量内容。

505 HTTP Version Not Supported

服务器不支持请求使用的 HTTP 协议版本(如收到 HTTP/0.9 或实验版本)。

305 Use Proxy 使用代理(已废弃)

早期定义:要求客户端通过指定代理访问目标资源;因安全风险已被标准废弃,不得再使用。

506 Variant Also Negotiates

透明内容协商配置循环时的错误:选中的变体资源自身又参与协商,导致循环。

508 Loop Detected 检测到循环

WebDAV:服务器在处理请求时检测到无限循环(如绑定关系形成环),主动终止。

510 Not Extended 未扩展

服务器要求请求使用扩展机制(如 RFC 2774 的 HTTP 扩展框架)才能被满足。

HTTP 头与缓存

请求/响应头、缓存控制与 Cookie 机制

Cache-Control 缓存控制热门

HTTP 缓存的最高优先级指令集:分别约束浏览器与共享缓存的新鲜度、可缓存性与再验证行为。

Content-Type 内容类型

描述消息体(请求的实体或响应的表示)的媒体类型与参数:JSON、表单、multipart、字符集与 boundary 都靠它。

Set-Cookie 下发 Cookie

服务器向客户端写入 Cookie 的响应头:一条响应可带多个 Set-Cookie;属性决定作用域、生命周期与安全边界。

Authorization 请求认证凭证

携带客户端凭证的请求头:Basic、Bearer(Token)、Digest 等方案,格式为「方案 + 凭证」。

Host 目标主机

HTTP/1.1 请求必须携带的字段:告知服务器请求哪个虚拟主机/域名,是反向代理与多租户路由的基础。

Cookie 请求头

浏览器把作用域内所有 Cookie 以「名=值; 名2=值2」形式附加到请求上;服务器据此维持会话状态。

ETag 实体标签

响应内容的版本标识(不透明字符串):缓存与并发控制的核心校验值,分强校验与弱校验(W/ 前缀)。

CORS 跨域机制与响应头组

浏览器同源策略下的跨域授权协议:服务端用一组 Access-Control-* 响应头声明谁可以以何种方式访问。

HTTP 请求头总览与规则

请求头由「字段名: 字段值」组成,通知服务器关于请求、客户端与期望处理方式的信息;HTTP/2 起字段名统一小写并压缩传输。

强缓存(fresh 阶段)

在新鲜期内浏览器直接使用本地副本,不产生任何网络请求;由 Cache-Control max-age / Expires 控制。

Origin 请求来源

标识请求发起的源(scheme + host + port),是 CORS 与跨站请求防护的核心依据。

HTTP 响应头总览

响应头描述响应自身(状态上下文)、表示元数据(内容类型/长度/编码)与缓存/安全策略;HTTP/2 起同样小写化并压缩传输。

X-Forwarded-For 客户端 IP 链

事实标准(非 RFC):逗号分隔的 IP 链,最左为最初客户端,最右为最近一跳代理;应用取「可信代理后的第一个不可信 IP」。

协商缓存(再验证)

本地副本过期后带校验值回源:资源未变则 304(省带宽),变了则 200 返回新内容。

User-Agent 客户端标识

标识发起请求的客户端软件(浏览器/爬虫/SDK/脚本),用于统计、兼容适配与风控。

Location 目标地址

3xx 重定向的新地址,或 201 创建成功时新资源的 URL;可为相对引用(解析基于请求 URL)。

HSTS 强制 HTTPS

Strict-Transport-Security:要求浏览器在指定时间内只用 HTTPS 访问本站,杜绝 SSL 剥离降级。

CORS 预检请求流程

非简单跨域请求前,浏览器先发 OPTIONS 预检:确认来源、方法与头都被允许后才发真实请求。

Range 范围请求

请求资源的一个或多个字节区间(bytes=start-end),用于断点续传、视频拖动与多线程下载。

Cache-Control 指令全表

请求与响应两侧的全部高频指令与语义,一家一张表。

Referer 来源页面

告诉服务器请求来自哪个页面(防盗链、来源统计的基础);规范中的拼写就是 Referer(历史笔误沿用)。

Last-Modified 最后修改时间

资源最后修改的绝对时间:用作缓存校验(If-Modified-Since)与 If-Range 的备选校验值,精度为秒。

Cookie 属性速查

Set-Cookie 的六大属性决定 Cookie 的生命周期、作用范围与安全边界:Expires、Max-Age、Domain、Path、Secure、HttpOnly、SameSite。

Accept-Encoding 压缩协商

声明客户端支持的压缩算法(gzip/br/zstd/identity),服务端选择其一并在 Content-Encoding 中标注。

Vary 缓存键维度

告诉(共享)缓存:该响应依赖哪些请求头来区分版本;同一 URL 不同 Accept-Encoding/Origin 必须分别缓存。

Accept 内容协商

声明客户端可接受的响应媒体类型(MIME),可带 q 权重表达偏好;服务端据此选择表示。

X-Forwarded-Proto 原始协议

事实标准:告知后端请求到达第一跳时用的是 http 还是 https,应用据此生成正确的跳转与安全 Cookie。

CSP 内容安全策略

通过白名单约束页面可加载/执行的资源来源,是抵御 XSS 的核心纵深防御;支持 nonce/hash 精确放行脚本。

If-Match 匹配前置条件

条件请求头:仅当资源的当前 ETag 与给出值匹配时才执行;用于防止并发覆盖(乐观锁)。

Retry-After 重试等待

告诉客户端多久之后重试:值可以是秒数或 HTTP 日期;与 503、429、3xx 配合使用。

Content-Length 内容长度

八位字节计的报文长度(十进制)。与 Transfer-Encoding 互斥,是请求走私攻击的关键字段。

If-None-Match 不匹配前置条件

条件请求头:当 ETag 与给定值不匹配时才执行;GET 场景命中即返回 304,写场景可用于「不存在才创建」。

Content-Disposition 内容处置

指示客户端「内联展示」还是「作为附件下载」,附件时可指定文件名(含非 ASCII 需编码)。

X-Real-IP 单一客户端 IP

Nginx 生态常用字段:只放一个(最后认定的)客户端 IP,比 X-Forwarded-For 列表更好解析。

WWW-Authenticate 认证挑战

401 响应携带的挑战头:告知客户端支持哪些认证方案及参数(realm/error/scope 等)。

安全响应头清单与体检

生产站点的浏览器安全基线:一次给全推荐头、示意值与其防住的攻击类型。

Accept-Language 语言协商

声明用户期望的自然语言(如 zh-CN、en-US),服务端据此选择本地化内容。

Connection 连接控制

逐跳(hop-by-hop)连接管理字段:keep-alive/close 控制复用,也用于列出当前连接专用的字段名。

Transfer-Encoding 传输编码

逐跳的报文传输编码:HTTP/1.1 的标准值是 chunked(分块),解决长度未知时的流式传输。

X-Content-Type-Options 禁止嗅探

值为 nosniff:防浏览器无视响应 Content-Type 进行 MIME 嗅探,阻断「把 HTML/JS 伪装成图片」类攻击。

If-Modified-Since 时间条件

按修改时间做条件请求:资源在给定时间之后未修改则回 304;仅对 GET/HEAD 有效。

Age 缓存年龄

由缓存生成的响应头:表示该响应在到达客户端前,已经在(共享)缓存中存放了多少秒。

X-Frame-Options 防嵌套

控制页面能否被 iframe 嵌套:DENY 完全禁止、SAMEORIGIN 仅同源允许,用于防点击劫持。

Content-Encoding 内容编码

对表示数据施加的压缩/编码方式(gzip/br/deflate/identity),是端到端属性:链路上每一跳看到的都是已编码内容。

Date 响应时间

源服务器生成响应的时间戳(IMF-fixdate 格式,GMT);缓存计算年龄(Age)与新鲜度的基准之一。

Upgrade 协议升级意愿

请求中表达希望切换到的新协议(如 websocket、h2c);服务器同意则以 101 响应确认。

Expires 绝对过期时间

HTTP/1.0 时代的缓存过期时间(绝对 GMT 日期);现代实现中若存在 Cache-Control: max-age 则被忽略。

X-Cache 系列缓存诊断头

CDN/代理私有诊断头(X-Cache、X-Cache-Hits、CF-Cache-Status、X-Served-By 等):排「是否命中缓存」的第一线索。

Sec-Fetch-* 请求元数据

浏览器自动附加的 Fetch Metadata 头组,声明请求的发起方式(导航/子资源/脚本)与站点关系,用于在服务端区分合法与可疑请求。

Allow 允许的方法列表

告知目标资源支持哪些 HTTP 方法;405 响应必须携带,OPTIONS 响应通常也返回它。

Server 服务器标识

标识处理请求的服务器软件与版本(如 nginx、Apache、cloudflare)。版本信息属于信息面暴露,生产环境建议最小化。

Referrer-Policy 来源策略

控制页面/资源请求时 Referer 的发送粒度:从完全不发到只发源,共 8 种策略。

If-Range 续传条件

断点续传的安全阀:仅当资源仍与校验值(ETag 或日期)一致时才返回 206 片段,否则回 200 全量。

Accept-Ranges 范围支持声明

声明服务器对资源支持的范围单位(bytes)或明确不支持(none),下载器据此决定是否启用断点续传。

Link 链接关系

在响应头中表达资源间链接关系:preload、preconnect、canonical、alternate 等,供浏览器/爬虫提前动作。

Expect 发送前期望

请求发出前声明期望服务器满足的条件;目前标准中只定义了 100-continue。

Content-Range 片段范围

206 响应中标注本片段在完整资源中的位置与总长;416 时用 bytes */总长 形式告知实际大小。

Alt-Svc 替代服务通告

告知客户端同一资源还有其他接入点(如 HTTP/3 的 h3、备用端口/主机),是 HTTP/3 渐进部署的关键机制。

Proxy-Authorization 代理凭证

向代理服务器提供认证凭证;与 Authorization 的消费对象不同(这个给代理,那个给源站)。

Forwarded 标准转发信息

RFC 7239 定义的标准转发字段:for=、by=、proto=、host=,用于替代 X-Forwarded-* 一系列私有头。

Server-Timing 服务端耗时

W3C 标准响应头:以结构化指标暴露服务端各阶段耗时(数据库、缓存、渲染),浏览器 DevTools 可直接展示。

Via 代理链路标记

记录请求/响应经过的代理与版本(每跳追加),用于诊断环路、统计跳数与审计链路。

Permissions-Policy 功能开关

限制页面可使用哪些浏览器能力(摄像头、麦克风、地理位置等),并控制 iframe 的委派。

If-Unmodified-Since 更新保护

时间版「If-Match」:仅当资源自指定时间以来未修改才执行;用于避免覆盖他人的修改。

Trailer 尾部字段声明

声明在 chunked 报文尾部(body 之后)出现的字段名,常用于响应完成前无法确定的元数据(如摘要、耗时)。

Content-Language 内容语言

描述响应表示的自然语言(可多个),与 Content-Type 的 charset 无关。

TE 传输编码协商

客户端声明可接受的传输编码(transfer-coding),如 trailers 与 gzip;作用于「逐跳传输」而非内容本身。

Priority 请求优先级提示

RFC 9218 定义的可扩展优先级方案:用 u(urgency 0-7)与 i(incremental)提示服务器调度顺序。

Max-Forwards 转发跳数限制

限制请求可被转发的剩余跳数(每经一跳代理减一):减到 0 的节点必须直接响应而不是继续转发;主要用于 TRACE/OPTIONS 诊断。

Accept-Charset 字符集协商(已弃用)

历史字段:声明客户端支持的字符集。现代规范已弃用,UTF-8 一统天下后不再有意义。

DNS 与域名解析

记录类型、报文结构与解析流程

A 记录(IPv4 地址)热门

把域名映射到 IPv4 地址的最基础记录;同一域名可配置多条 A 记录实现轮询与冗余。

DNS 递归解析全流程热门

从浏览器输入域名到拿到 IP:存根解析器→递归解析器→根→顶级域→权威服务器逐级查询,结果按 TTL 逐级缓存,是全互联网访问的第一步。

CNAME 记录(别名)

把域名别名指向另一个「规范名」:解析 CNAME 后继续查询目标名的记录;常用于把服务托管到第三方(CDN、SaaS)。

dig 常用查询与参数

排查 DNS 首选工具:+short 看结果、+noall +answer 看记录、@server 指定解析器、-t 指定类型、+tcp 强制 TCP。

MX 记录(邮件路由)

声明接收该域邮件的服务器及优先级(数字越小越优先);邮件发送方按优先级顺序尝试投递。

DNS 记录类型总表

域名系统通过不同类型的资源记录(RR)表达地址、别名、邮件路由、验证、安全策略等信息;每条记录由「名、类型、TTL、值」构成。

TXT 记录(文本扩展)

承载任意文本的通用记录:SPF、DKIM、DMARC、站点验证、DMARC 报告等都寄居其上。

NS 记录(权威服务器)

声明哪个(哪些)域名服务器对该区域具有权威性:上级区域用 NS 下放(delegation),区域顶点用 NS 自声明。

AAAA 记录(IPv6 地址)

把域名映射到 IPv6 地址(128 位);与 A 记录并存时客户端按自身网络能力(Happy Eyeballs)选择。

TTL 与缓存时间

记录的存活秒数:决定递归解析器与客户端缓存该记录多久;TTL 到期后重新查询权威。

递归查询与迭代查询

递归=客户端把活全交给解析器(RD=1);迭代=被问方只给「下一步该问谁」的提示,由提问者自己追。根与 TLD 只做迭代。

DNS 解析故障排查流程

从「客户端实际拿到什么」出发逐层往上:NSS/hosts → 本机解析器 → 递归器 → 权威 → 委派/DNSSEC,每一步都可单独验证。

DNS 缓存层级与命中顺序

同一域名可能被浏览器、操作系统、stub、递归器、甚至应用框架各缓存一遍;排查「改了不生效」要逐层清。

常见需求记录配置速查

「我要把网站/邮箱/验证挂上域名」——直接对照这张表配记录。

公共递归解析器与 DoH 地址

自建递归麻烦时可直接指定公共解析器;国内场景还要考虑污染与 CDN 调度,国内外组合使用更稳。

PTR 记录(反向解析)

从 IP 反查主机名;位于反向解析树(in-addr.arpa / ip6.arpa),常由 IP 持有者(ISP/云厂商)配置。

resolv.conf 配置要点

Linux 存根解析器的核心配置:nameserver 决定去哪问,search/ndots 决定短名的拼接与尝试顺序。

SOA 记录(区域起始授权)

每个区域的必备记录:声明主权威、管理员邮箱、序列号与刷新/重试/过期/最小 TTL 五个参数,是区域同步与缓存超时的基准。

DNS 响应码(RCODE)

解析失败先看 RCODE:SERVFAIL 多为上游/权威故障或 DNSSEC 验证失败,REFUSED 是策略拒绝,FORMERR 是报文格式问题。

hosts 文件:本地静态解析

hosts 是本地写死的「域名→IP 映射」,优先级通常高于 DNS;测试、迁移、屏蔽域名时第一手段,也是排查被误改的常见坑。

SRV 记录(服务定位)

描述服务的「主机 + 端口 + 优先级 + 权重」:让客户端不必写死端口,如 SIP、LDAP、Minecraft、Matrix 等。

nslookup 与 host 快速查询

轻量查询工具:nslookup 跨平台通用(Windows 自带),host 输出简洁;日常快速验证够用,深度排查仍用 dig。

TTL 取值建议

不同场景下的 TTL 经验值:可用性与变更速度的平衡点。

dig +trace 演示迭代解析

+trace 模拟递归器的迭代过程:自己从根开始逐级追问,直到权威给出最终答案,是理解委派与定位「哪一级出错」的最佳手段。

CAA 记录(证书颁发授权)

限制哪些 CA 可以为你的域名签发证书:符合规范的 CA 签发前必须检查 CAA,是多 CA 时代的护栏。

Stub Resolver(存根解析器)

操作系统里的小组件:只负责把 getaddrinfo/gethostbyname 调用转成 DNS 查询发给配置的递归服务器,本身不做迭代解析。

权威服务器(Authoritative)

真正持有区域数据并给出权威答案的服务器:应答带 AA 标志;主(primary)、从(secondary)通过区域传送同步。

DoT / DoH / DoQ 加密 DNS

把 DNS 包进 TLS:DoT 走 853、DoH 走 443 伪装成 HTTPS、DoQ 走 UDP/853;能防窃听与篡改,但改变了运维可见性。

TLD 与委派(Delegation)

顶级域服务器由注册局运营,只保存各注册域的 NS 委派:你问它 example.com 的 A,它只会告诉你「去问它的权威」。

抓包分析 DNS 流量

用 tcpdump 直接看 53 端口上发生了什么:谁在问、问什么类型、响应码与延迟,是排「解析慢/间歇失败」的终极手段。

FQDN 与域名层级

完全限定域名(绝对名):以点结尾(如 www.example.com.);不带结尾点则相对当前 origin 解析,是 zone 文件最常见的错误来源。

根服务器(13 组 a~m)

DNS 树根「.」由 13 个逻辑服务器名 a.root-servers.net ~ m.root-servers.net 服务,靠 anycast 在全球部署上千实例。

CNAME 链与跟随解析

CNAME 让解析器换名继续追:链上每一跳都消耗一次查询与 RTT,出现环或过长链会让解析超时;CNAME 不能与其他记录共存于同一名字。

反向解析与 FCrDNS

从 IP 反查域名(PTR)的解析体系;正向与反向互相印证(Forward-Confirmed rDNS)是邮件可信度的重要信号。

NSS 与 hosts 文件优先级

glibc 按 /etc/nsswitch.conf 的 hosts 行决定查询顺序:一般 files 在前(hosts 文件)再 dns,因此 hosts 可覆盖 DNS 结果。

负缓存(NXDOMAIN/空答案)

不存在的域名也会被缓存:解析器按 SOA 相关字段决定负缓存时长,这就是「记录删了却还查得到/新建却查不到」的原因。

DNS 劫持与污染的检测

同一域名问不同解析器结果不一致、或返回劫持广告页 IP,说明链路存在劫持/污染;DNSSEC 验证失败也是强信号。

泛解析(Wildcard DNS)

用 *.example.com 匹配任意(未被更精确记录覆盖的)子域名:适合 SaaS 多租户、临时子域批量生效。

DNS 报文头部与标志位

DNS 报文 12 字节固定头:ID、QR、Opcode、AA、TC、RD、RA、Z、AD、CD、RCODE,其余是四个资源记录区段。

EDNS(0) 与 1232 字节缓冲

EDNS0 扩展把 UDP DNS 报文从 512 字节放大;怕分片被丢,社区共识(DNS Flag Day 2020)是协商值 ≥1232。

DNS 报文的四个区段

QUESTION 问什么、ANSWER 答案、AUTHORITY 权威/委派、ADDITIONAL 附加(glue、OPT);dig 默认输出正好对应这些段。

DNS over TCP 与截断回退

UDP 放不下(TC=1)或做区域传送时走 TCP 53;解析器收到 TC 必须重试 TCP,否则视为实现缺陷。

HTTPS 记录(服务绑定,HTTP/3 发现)

告诉客户端访问该域名时可用的现代服务参数:ALPN 协议(h3/h2)、端口、ECH 等;是 HTTP/3 自动发现的标准途径。

CNAME 展平与 ALIAS/ANAME

区域顶点不允许标准 CNAME,但托管商提供「展平」能力:对外仍返回 A/AAAA(内部去解析目标别名),解决裸域接 CDN 的问题。

区域传送 AXFR / IXFR

主从同步用的「小文件传输协议」:AXFR 全量、IXFR 增量,基于 TCP 且应严格限制来源(allow-transfer)。

Anycast:DNS 的高可用基石

根、TLD、公共 DNS、大量权威都用 anycast:同一 IP 在全球多机房宣告,用户自动就近访问;坏一个实例流量自动绕开。

Zone 文件格式要点

BIND 风格的区域文件语法:$ORIGIN/$TTL 控制默认值,@ 代表当前区域,相对名自动补后缀,是最通用的 DNS 配置描述格式。

NOTIFY 与主从同步时序

主服务器改完区域立刻用 NOTIFY 通知从服务器「来拉新数据」,比等 SOA refresh 到期更快;SOA serial 必须严格递增。

DS 记录(委托签名者)

DNSSEC 信任链的关键:父区域用 DS 记录指向子区域的 DNSKEY 哈希,把信任从根一路传递到你的区域。

RRSIG 记录(记录集签名)

对每个 RRset 的数字签名:验证解析器用 DNSKEY 校验,确认记录未被篡改且来自权威区域。

胶水记录(Glue Record)

当 NS 记录指向的主机名本身处于被委托区域之内时,必须在父区域提供其 A/AAAA 记录,打破「要先解析子域才能知道 NS」的循环依赖。

DNSKEY 记录(区域公钥)

DNSSEC 的区域公钥:KSK(密钥签名密钥,257)用于签 DS/DNSKEY,ZSK(区域签名密钥,256)用于签普通记录。

OPT 记录(EDNS(0) 伪记录)

EDNS(0) 的载体伪记录:位于附加区,用于协商 UDP 报文大小、DNSSEC Do 位与各种扩展选项(ECS、Cookie、EDE 等)。

IDN 中文域名与 Punycode

非 ASCII 域名(中文、emoji)在 DNS 中以 Punycode(xn-- 前缀)存储与传输,浏览器/工具展示为 Unicode。

TLSA 记录(DANE 证书绑定)

把 TLS 证书/公钥哈希绑定到域名上,由 DNSSEC 保证不可篡改:DANE 协议让服务端可不依赖 CA 体系做认证。

NAPTR 记录(命名授权指针)

通过正则/替换规则把一个域名转换为另一个域名或 URI:ENUM 电话映射(E.164 号码 → SIP)的经典用法。

NSEC 记录(否定存在证明)

DNSSEC 的「链式否定证明」:每个名字指向排序中的下一个名字,验证器据此证明「查询的名字不存在」。

NSEC3 记录(哈希化否定证明)

NSEC 的隐私增强版:owner name 用哈希表示(SHA-1 + 盐),既证明不存在,又不暴露真实名字列表。

SVCB 记录(通用服务绑定)

HTTPS 的通用版本:为任意服务名(非 HTTP)声明端点与参数,支持别名模式与参数优先级(SvcParam)。

DNAME 记录(子树重定向)

把整个子域的查询重定向到另一棵树:与 CNAME(单名)不同,DNAME 作用于「该节点以下的所有名字」。

TCP 与 UDP

状态机、拥塞控制、常用参数与端口语义

三次握手热门

建连接用 SYN → SYN+ACK → ACK 三步交换初始序号并确认双向可达;为什么是三次而不是两次:双方都要同步自己的初始序号并收到确认。

TCP 传输控制协议总览

互联网最常用的传输层协议:在不可靠的 IP 之上提供面向连接、可靠有序的字节流,自带流量控制与拥塞控制。

TIME_WAIT 与 2MSL

主动关闭方在发完最后 ACK 后进入 TIME_WAIT,等待 2MSL(Linux 固定约 60 秒):确保最后 ACK 能重传、让旧连接的重复报文过期。

四次挥手与半关闭

关闭是全双工的:一方发 FIN 表示「我没数据要发了」,对方 ACK 后仍可继续发数据(半关闭),等它也发 FIN 才彻底关闭。

TCP 连接状态一览(11 种)

RFC 状态机共 11 个状态:连接生命周期中任一时刻的套接字都处于其中之一,ss/netstat 的 State 列即这些值。

ss 查看连接与套接字统计

ss 是 netstat 的现代替代:直接读内核结构,输出更快、过滤更强;-t/-u/-l/-p/-i/-s 覆盖绝大多数排查场景。

UDP 用户数据报协议总览

无连接、不保证可靠、保留报文边界的最小传输层协议:头部仅 8 字节,开销小、延迟低,适合 DNS、音视频、QUIC、监控等场景。

TCP 标志位(9 个)

标志位控制连接语义:SYN/FIN 建连关连,RST 复位,PSH 提示尽快上交数据,ACK 确认,ECE/CWR 用于拥塞通知。

TCP 拥塞控制四阶段

发送速率由拥塞窗口决定:慢启动指数探测、拥塞避免线性爬坡、快重传/快恢复处理丢包,目标是既跑满带宽又不压垮网络。

TCP 与 UDP 对比与选型

要不要自己实现可靠性,是选型核心问题:需要有序可靠的字节流选 TCP;要低延迟、可容忍丢包或自带重试选 UDP。

TCP 生产调优参数速查

高频内核参数一张表:从端口复用、队列、keepalive 到时间等待,按需取用;改完务必持久化到 /etc/sysctl.d/。

CLOSE_WAIT 堆积排查

对方已发 FIN、本端内核已 ACK,但应用还没调用 close:CLOSE_WAIT 数量只增不减说明连接被应用层泄漏。

Nagle 算法与延迟确认的 40ms 坑

Nagle 等「一个未确认小包」发出前的攒批,与接收侧延迟 ACK(最多 40ms)叠加时,会产生经典的 40ms 延迟尖刺。

RST 复位连接的原因

RST 表示「立即终止」:端口未监听、连接不存在、半开连接上收到数据、防火墙 REJECT、应用设置 SO_LINGER=0 都会触发。

常见 UDP 端口速查

UDP 服务端口分散在各领域:基础设施(DNS/DHCP/NTP)、监控(SNMP/syslog)、隧道(VXLAN/WireGuard)与现代传输(QUIC)。

建连失败的三类现象

connect 失败先分三类:超时(DROP/SYN 丢失)、拒绝(RST)、无路由;现象不同,排查路径完全不同。

TCP 连接问题排查清单

从本机栈到远端按层排查:状态分布 → 监听与队列 → 抓包看握手 → 对比两端视角,90% 的问题能定位到某一段。

拥塞控制算法对比与切换

Linux 可选多种算法:CUBIC 默认适合大带宽网络,Reno 经典,BBR 基于带宽时延建模适合高丢包链路,切换用 sysctl 一行命令。

TCP 头部字段

TCP 报文头固定 20 字节,最小可用字段是端口、序号、确认号、标志、窗口与校验和;选项区最多 40 字节。

序列号、确认号与乱序重排

每个字节都有序号,接收方用确认号表示「已连续收到这里」;编号从随机 ISN 开始(防伪造),乱序由接收缓冲重排。

检查端口监听与绑定地址

服务「没起来」和「绑错地址」表现完全不同:0.0.0.0 全网可达,127.0.0.1 只能本机访问,IPv6 双栈绑定也可能让 v4 连接失败。

慢启动与初始拥塞窗口

连接刚建立时不知道网络容量,cwnd 从初始窗口(Linux/RFC 6928 为 10 MSS)出发每 RTT 翻倍,呈指数增长直到丢包或达到 ssthresh。

tcpdump 分析 TCP 问题

抓包是定位「到底哪一段出问题」的终极手段:过滤表达式锁定目标流,再按重传、重复 ACK、零窗口、RST 逐项看。

FIN_WAIT_1/2、CLOSING、LAST_ACK

关闭过程中的四个侧翼状态:FIN_WAIT_1 等 ACK;FIN_WAIT_2 等对方 FIN;CLOSING 双方同时关闭;LAST_ACK 等最后一个 ACK。

滑动窗口与流量控制

接收窗口 rwnd 告诉发送方「我还能收多少字节」,实现端到端流控;窗口为 0 时发送方停发并定期探测(Zero Window Probe)。

RTO 超时重传与指数退避

重传超时由平滑 RTT(SRTT)与抖动(RTTVAR)计算,Linux 最小 RTO 约 200ms;超时后 RTO 翻倍退避,避免网络雪崩。

LISTEN 状态与队列

LISTEN 是服务端套接字等待连接的状态;内核用「半连接队列 + 全连接队列」暂存握手中的连接,队列溢出会丢 SYN 或丢 ACK。

MSS 协商与 TCP 分段

MSS 是单个 TCP 段的最大数据长度,握手时双方各报自己的 MSS(典型 1460 = 1500 MTU - 20 IP - 20 TCP)。

快重传(Fast Retransmit)

接收方收到乱序段会立即重复 ACK 缺口位置;发送方连续收到 3 个重复 ACK 就判定该段丢失并立刻重传,不必等 RTO 超时。

基于 UDP 的常见协议

UDP 承载的协议族比想象的多:从 DNS 到 QUIC,从 VXLAN 到 WireGuard;理解「谁在 UDP 上做了什么」有助于排查与选型。

ESTABLISHED 状态

连接正常工作的状态:双方可收发数据;排查「连接数暴涨/泄漏」主要看这一态的分布与归属进程。

BBR 原理与落地要点

BBR 不在丢包时才降速,而是持续估计瓶颈带宽与最小 RTT,按「带宽×时延」控制发送节奏,高丢包链路上吞吐明显优于 CUBIC。

backlog 与队列相关内核参数

应用 listen(backlog) 只是「请求值」:全连接队列取 min(backlog, somaxconn),半连接队列受 tcp_max_syn_backlog;溢出行为可配 tcp_abort_on_overflow。

TCP 丢包率与链路质量判断

用内核计数与主动探测结合判断丢包:本机重传率、对端视角、mtr 逐跳丢包,三者交叉才能定位丢在哪儿。

UDP 上的应用层可靠性

用 UDP 就要自己实现:序号去重、ACK 重传、超时退避、流控;这些正是 QUIC/KCP 帮你做好的事,简单业务可只做「重试+幂等」。

半开连接与死连接检测

一端重启/断电后,另一端内核仍保留 ESTABLISHED(半开连接),不主动探测就永远不知道对端已消失。

SYN flood 与 syncookies

半连接队列被打满时,内核可改用无状态 syncookies 响应 SYN(把连接信息编进序列号),抵御伪造源地址的洪水攻击。

TCP 收发缓冲调优(rmem/wmem)

tcp_rmem/tcp_wmem 各含 min/default/max 三值,内核默认自动调优;跨地域高带宽时延积场景需要提高 max 才能跑满带宽。

UDP 头部与校验和

UDP 头只有 4 个字段:源端口、目的端口、长度、校验和;IPv4 中校验和可为 0(不校验),IPv6 中强制校验。

窗口缩放(wscale)

TCP 头部窗口只有 16bit(64KB 上限),高带宽时延积场景不够用;wscale 选项把窗口乘以 2^n(最大 ×2^14),是长肥管道吞吐的关键。

ssthresh 阈值与线性增长

ssthresh 是慢启动与拥塞避免的分界:cwnd 低于它指数涨,达到后每个 RTT 大致 +1 MSS 线性涨;丢包时阈值减半(乘性减)。

UDP 连通性测试工具

UDP 无握手,测试靠「发出去 + 对端是否有响应」:nc -u、dig、tcping、nmap -sU 各有适用面,结果要谨慎解读。

SYN_SENT 与 SYN_RCVD

握手中间态:SYN_SENT 是客户端发了 SYN 未收到应答;SYN_RCVD 是服务端发了 SYN+ACK 未收到最终 ACK。

SACK 选择确认

没有 SACK 时丢一个段可能触发整窗重传;SACK 让接收方精确告知「收到了哪些不连续块」,只重传缺失部分。

Wireshark TCP 过滤器速查

用显示过滤器直接筛出异常:重传、乱序、重复 ACK、零窗口、RST、以及单条 TCP 流。

FIN 与 RST 对比:正常关闭 vs 异常终止

FIN 是礼貌分手(等对方处理完),RST 是当场掀桌(立即释放缓冲);负载均衡与代理场景尤其要分清两者影响。

UDP 大包分片与校验和陷阱

UDP 报文超过路径 MTU 会被 IP 分片:丢任何一片整包废弃且没有重传;校验和可置 0(IPv4)省 CPU,但会把坏数据放行给应用。

UDP 缓冲与丢包调优

UDP 丢包常发生在接收缓冲:应用读得慢,内核直接丢;调大 SO_RCVBUF 与 net.core.rmem_max 并提升读取速度是正解。

快恢复(Fast Recovery)

快重传后不回到慢启动:ssthresh 设为 cwnd/2,cwnd 设为 ssthresh+3 继续发送,避免吞吐断崖式下跌。

netstat 与 ss 对照

老系统还在用 netstat,新系统推荐 ss:两者常用写法可互换,但 netstat 已从多数发行版默认包移除。

UDP 组播与广播

一台主机向多台发送:组播(224.0.0.0/4、ff00::/8)靠 IGMP/MLD 加入组,广播只在本地网段有效;常用于服务发现与流媒体。

时间戳选项(TSval/TSecr)

TCP 时间戳用于精确测量 RTT(RTTM)、防止旧报文串扰(PAWS)以及某些环境下的 2MSL 快速回收判断。

TCP Fast Open(TFO)

TFO 允许在 SYN 携带数据(客户端)并在 SYN+ACK 返回数据(服务端),省掉一个 RTT;依赖 TFO cookie 防滥用,中间设备兼容性一般。

PSH 与 URG 标志语义

PSH 提示接收方「尽快把数据交给应用」,URG 指示紧急指针有效;现代协议栈大多不依赖两者,但抓包里会看到 PSH 频繁出现。

TLS 与加密

版本、套件、证书与握手过程要点

TLS 传输层安全协议总览热门

给任意 TCP 应用加一层加密通道:先握手协商算法与密钥、验证证书,再在记录层加密传输,HTTPS/IMAPS/SMTPS 都是它。

TLS 1.2 与 1.3 的关键差异

1.3 把握手压到 1-RTT(复连可 0-RTT)、砍掉 RSA 密钥传输与一堆弱算法、握手后全部加密,是默认该用的版本。

openssl s_client 排障用法

最通用的 TLS 诊断工具:指定 SNI 与版本、查看证书链、验证 OCSP、手工发请求,一条命令覆盖大半握手问题。

TLS 1.3 握手流程与 0-RTT

1-RTT 完成握手:ClientHello 直接带 key_share,服务器一回就能推出会话密钥;会话复用支持 0-RTT 提前发送数据(有重放风险)。

TLS 常见错误与定位

五类高频报错一一对应:套件/版本不兼容、未知 CA、证书过期、域名不匹配、自签证书;openssl s_client -state 可看到卡在哪一步。

TLS 版本演进与弃用状态

从 SSL 2.0 到 TLS 1.3:每一代都在修补上一代的密码学缺陷;2020 年后浏览器普遍只许 TLS 1.2+,1.0/1.1 已进入弃用清单。

openssl 命令速查

一个工具覆盖证书、密钥、摘要、加解密、协议测试:把高频命令背下来,排 TLS 问题基本不用搜索引擎。

TLS 1.2 完整握手流程

两次往返:客户端 Hello 提议参数,服务器 Hello 选定并送证书,之后密钥交换、切换加密、双方 Finished 校验握手完整性。

TLS 服务端加固要点

三条底线:只启 TLS 1.2/1.3、只留 ECDHE + AEAD 套件、证书链与 SNI 正确;再加 HSTS、OCSP 装订与适度会话票据策略。

证书链与信任验证

服务器必须下发「叶证书 + 中间证书」,客户端用本地根证书验证到受信根;少发中间证书是「部分设备能开、部分报错」的经典原因。

ACME 协议与 Let's Encrypt

免费自动化证书体系:客户端证明域名控制权(HTTP-01/DNS-01/TLS-ALPN-01)后签发 90 天证书,全流程无人值守。

TLS 1.2 套件命名解析

套件名按「密钥交换_认证_加密_MAC」逐段读:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 即 ECDHE 换密钥、RSA 认证、AES-128-GCM 加密、SHA256 做 PRF。

SNI 服务器名称指示

ClientHello 里带上目标域名,让同一 IP 的多站点各用各的证书;它本身不加密,是旁路探测 HTTPS 域名的常见依据。

certbot 常用命令

最常用的 ACME 客户端:申请、续期、吊销一条命令完成;nginx 插件还能自动改配置,但生产建议先 dry-run 验证。

对称加密:一把密钥加解密

发送方与接收方共享同一密钥:速度快、适合大数据量;难点在密钥分发与管理,TLS 用非对称握手来解决这个问题。

ClientHello 报文要点

握手第一条消息:声明支持的版本、随机数、密码套件与扩展(SNI/ALPN/key_share 等),是抓包与兼容性排查的重点。

前向保密(PFS/FS)

即使服务器私钥事后泄露,历史会话也无法解密:靠 ECDHE 每次协商临时密钥、用完即弃实现;RSA 密钥传输做不到这一点。

证书与密钥文件格式

PEM 是 Base64 文本(.crt/.pem/.key 常见),DER 是二进制,PKCS#12(.pfx/.p12) 与 JKS 是带密码的容器,Java/Windows 各有偏好。

AES 与分组模式选择

最广泛使用的分组密码:128/192/256 位密钥,配合 GCM/CCM(AEAD)是现代默认;CBC 属遗留,需小心 padding 攻击。

哈希函数:单向摘要

把任意长度数据映射为固定长度摘要:用于完整性校验、签名摘要、口令存储(需加盐迭代);SHA-256 是当前通用选择。

密钥交换方式:RSA / DHE / ECDHE

决定会话密钥怎么产生:RSA 用服务器公钥加密预备主密钥(无前向保密),DHE/ECDHE 用临时 DH 交换(有前向保密,1.3 只剩后者)。

ALPN 应用层协议协商

在 TLS 握手里就商定上层协议(h2 / http/1.1 / h3),避免多一次往返探测;HTTP/2 浏览器连接基本都靠它。

通配证书与多域名(SAN)

一张证书用 SAN 覆盖多个名字:通配符 *.example.com 只覆盖一级子域且不含裸域,多域名证书(SAN/UCC)可混合多个主域。

证书到期监控与续期策略

证书过期是最高频的「自伤式」故障:用 checkend/openssl 脚本监控剩余天数,续期后自动验证链与新到期日。

RSA 非对称加密

基于大数分解难题:公钥加密/验签、私钥解密/签名;TLS 中已不用于密钥传输(无 PFS),主要承担证书签名。

X.509 证书关键字段

排证书问题看懂这几个字段就够:Subject、SAN(真正生效的域名列表)、Validity、Key Usage/EKU、AKI/SKI、序列号。

双向 TLS(mTLS)

除服务器证书外还要求客户端提供证书并验证:服务间通信、零信任、K8s 网关的常见做法;证书即身份,需配套签发与吊销体系。

口令存储:bcrypt / scrypt / Argon2

存口令要用「慢哈希 + 每用户盐 + 可调成本」:bcrypt/scrypt/Argon2 专门抗暴力破解,SHA-256 直存会被 GPU 秒破。

QUIC 与 TLS 1.3 的关系

QUIC 把 TLS 1.3 内嵌进传输层:握手与加密一体化、0-RTT 复用、多路复用无队头阻塞,跑在 UDP 443 上,是 HTTP/3 的基础。

TLS 1.3 的五个标准套件

1.3 套件只描述 AEAD 与 HKDF 哈希,密钥交换与认证由握手扩展决定:AES-GCM、AES-CCM、CHACHA20-POLY1305。

TLS 配置扫描工具

给出「支持哪些协议版本/套件/是否有漏洞」的体检报告:testssl.sh、sslscan、nmap 脚本各有侧重,上线前跑一遍。

证书类型:DV / OV / EV

按验证深度分三级:DV 只验域名控制权(最快最便宜)、OV 验证组织身份、EV 曾用于高亮显示;对 TLS 加密强度没有区别。

ECC、ECDSA 与 Ed25519

椭圆曲线密码:同等安全强度下密钥更短(256 位 ECC ≈ 3072 位 RSA)、签名更快,TLS 证书与 SSH 都大量使用。

数字签名原理与验签

签名 = 私钥对摘要运算;验签 = 公钥验证。保证「完整性 + 身份认证 + 不可否认」,TLS 证书与代码签名都基于它。

ServerHello 与服务器消息

服务器应答:选定版本与套件、给出 key_share;随后送证书链、CertificateVerify(证明私钥持有)与 Finished(校验握手)。

会话恢复:Session ID / Ticket / PSK

复连不必重新完整握手:1.2 用 Session ID(服务器缓存)或 Session Ticket(无状态票据),1.3 统一为 PSK 恢复,并支持 0-RTT。

openssl verify 校验证书链

离线验证链:指定根(-CAfile)与中间证书(-untrusted)验证叶证书;配合 -purpose sslserver 校验服务器用途。

生成 CSR 与私钥

CSR 是「公钥 + 域名信息 + 签名」的申请文件,私钥必须本地生成且永不外传;CA 只拿 CSR 签发证书。

AEAD:加密与认证一体化

AEAD(带关联数据的认证加密)一次操作完成「机密性 + 完整性」:GCM、CCM、ChaCha20-Poly1305 都是;TLS 1.3 强制只用 AEAD。

随机数与熵源

密钥、nonce、会话 ID 全依赖高质量随机:/dev/urandom(getrandom)是 Linux 上的正确来源;自造随机数(时间戳/rand())是事故重灾区。

TLS 告警(Alert)协议

连接级信号:close_notify 正常关闭,handshake_failure 参数不兼容,bad_certificate/certificate_expired/unknown_ca 是证书类错误。

Diffie-Hellman 密钥交换与参数

双方在不安全信道各自计算共享密钥的经典算法:临时 DH(DHE/ECDHE)提供前向保密,弱参数会被 Logjam 类攻击。

HMAC 与 HKDF 密钥派生

HMAC 用密钥把哈希变成「带认证的完整性校验」;HKDF 从共享秘密派生出多个用途明确的密钥,是 TLS 1.3 密钥调度的基础。

OCSP 与装订(Stapling)

证书吊销状态查询:客户端默认问 CA 的 OCSP 服务器(慢且泄露隐私),Stapling 让服务器代取并随握手下发,性能与隐私兼得。

自签 CA 与内网证书

内网/测试环境自建 CA:一次生成根,再签发各服务证书,客户端只需信任根;避免每个服务单独信任一堆自签证书。

ChaCha20-Poly1305

移动端与无 AES 硬件加速设备上的首选 AEAD:纯软件实现快、抗侧信道,TLS 1.3 强制套件之一。

密钥与安全强度对照

不同算法密钥长度不能直接比大小:看「安全强度位数」——128 位强度大致对应 AES-128 / RSA-3072 / ECC P-256。

TLS 记录层

把上层数据切成 ≤16KB 的记录,逐条加密认证(AEAD)后交给 TCP;记录类型含 handshake/application_data/alert/change_cipher_spec。

重协商(1.2)与移除(1.3)

TLS 1.2 可在连接内重新协商参数(如换客户端证书),但历史上出现过多起 DoS 与注入漏洞;1.3 直接移除该机制。

证书透明度(CT)与 SCT

CA 把签发的证书提交到公开日志并返回 SCT 签名;浏览器要求主流证书携带 SCT,用于发现「误签发/恶意签发」的证书。

IP 与 ICMP

IP 头字段、ICMP 类型码与相关工具语义

IP 协议总览(IPv4/IPv6)

网络层(L3)的寻址与转发协议:无连接、尽力而为,把数据报从源送到目的;可靠性、有序性由上层(TCP)或应用自己保证。

IPv6 特性总览

128 位地址、头部简化、路由器不分片、无广播(用组播与任一播)、支持无状态自动配置;与 IPv4 双栈并行运行。

ICMP 协议总览

IP 的「信使协议」:报告网络差错(不可达、超时)与执行诊断(ping),本身不传输用户数据,封装在 IP 内部(协议号 1)。

traceroute 原理:TTL 逐跳探测

发送 TTL 从 1 递增的探测包:第 N 台路由器丢弃 TTL=0 的包并回 ICMP 超时,据此画出路径;默认 UDP 高端口,也可用 ICMP/TCP。

CIDR 与子网划分计算

斜杠数字表示网络前缀长度:/24 有 256 个地址、/26 有 64 个;可用主机数要减去网络地址与广播地址(/31、/32 例外)。

ICMP Echo(类型 8/0)与 ping

最基础的连通性探测:请求类型 8、应答类型 0,报文含标识符与序列号,用发送/接收时间差计算 RTT。

IPv4 地址结构与私有网段

32 位地址 = 网络位 + 主机位;RFC 1918 划出三段私有地址供内网复用,公网地址由 RIR 逐级分配。

iproute2 命令速查

现代 Linux 网络管理统一入口:ip addr/link/route/neigh/rule 覆盖地址、接口、路由、邻居与策略;ifconfig/route 已弃用。

ping 命令常用参数

跨平台联网诊断第一命令:数量、间隔、包大小、TTL、源接口等参数能覆盖大多数链路问题定位。

TTL 生存时间字段

TTL 每经过一台路由器减 1,减到 0 丢弃并发 ICMP 超时:防止路由环路里包永远打转,也是 traceroute 的实现基础。

IPv6 地址书写与类型

书写用十六进制、可省前导零、连续零段最多用一次 :: 缩写;/64 是标准子网,接口标识常用 EUI-64 或随机隐私地址。

IPv4 头部字段

IPv4 头最小 20 字节:版本、头长、TOS/DSCP、总长、标识、标志与分片偏移、TTL、协议、校验和、源/目的地址,选项可选。

ICMP 目的不可达(类型 3)

最常见的 ICMP 差错:路由器或主机因网络/主机/端口/分片等原因无法交付时回送,代码(Code)区分具体原因。

mtr:持续的路径质量统计

把 traceroute 与 ping 结合:逐跳持续统计丢包率与延迟,定位「哪一跳开始丢」;分屏交互或报告模式均可。

IP 分片与重组

当报文超过出接口 MTU,IPv4 路由器可将其分片(标识 ID + 偏移 + MF/DF 标志),重组只在目的主机进行;任一分片丢失整包废弃。

ARP 地址解析协议

IPv4 中把 IP 地址解析成 MAC 地址:请求方广播询问、目标单播应答,结果缓存进 ARP 表;IPv6 对应功能由 NDP 承担。

路由查找与最长前缀匹配

出包时按「最长前缀匹配」选路:更具体的路由优先;没有匹配则走默认路由;策略路由(ip rule)可按源/标记选不同路由表。

ping 丢包与延迟定位

连续丢包、周期性丢包、只在高峰期丢包指向不同原因;结合 mtr 与 TCP 层重传率交叉验证,避免被 ICMP 限速误导。

ICMPv6 类型速查

ICMPv6 承接了 NDP 与 PMTUD 等关键功能:类型 1-4 为差错,128/129 Echo,133-137 邻居发现,全部必修不可随意屏蔽。

特殊 IP 地址速查

0.0.0.0、127.0.0.1、广播、组播、CGNAT 段各有用法:搞混 0.0.0.0 与 127.0.0.1 是「服务外部连不上」的常见原因。

路径 MTU 发现(PMTUD)

发送方置 DF 逐步探测整条路径的最小 MTU:收到 ICMP「需要分片」就下调;IPv6 完全依赖这个机制。

ICMP 超时(类型 11)

TTL 减到 0(Code 0)或分片重组超时(Code 1)时回送:traceroute 正是利用 Code 0 逐跳探测路径。

traceroute 家族工具对比

traceroute/tracert 看路径,mtr 持续统计,tcptraceroute 穿透防火墙,tracepath 看 PMTU:按场景选择。

MTU 黑洞排查

典型症状:小包正常、大包超时;TCP 能建连但卡在传数据;不同网站有的能开有的打不开——都是大包在路径中某段被吞。

ICMP 差错报文与查询报文

差错报文(目的不可达/超时/重定向等)由路由器或主机自动发出;查询报文(Echo 等)由应用主动发起,两者处理规则不同。

ping 输出解读

输出里的 icmp_seq、ttl、time、mdev 与统计行各有含义:能区分丢包、抖动、延迟与 TTL 变化。

屏蔽 ICMP 的后果与放行策略

「为了安全禁 ICMP」是流传最广的误区:会破坏 PMTUD、traceroute、诊断能力,安全收益却很低。

IPv6 头部结构

固定 40 字节:版本、流量类别、流标签、载荷长度、下一头部、跳限(Hop Limit)、源与目的地址;扩展头以链表形式补充功能。

抓包分析 ICMP 表达式

tcpdump 对 ICMP 支持按类型/代码精确过滤:定位不可达、超时、frag needed 的第一手证据。

IP 协议号速查

IP 头部的协议字段标识上层协议:6=TCP、17=UDP、1=ICMP、58=ICMPv6 最常用,防火墙与抓包过滤都靠这些数字。

IPv6 的 Packet Too Big 与 PMTUD

IPv6 路由器不分片:超过路径 MTU 的包直接丢弃并回「包太大」(类型 2,含路径 MTU 值),发送方据此调整。

IPv6 邻居发现(NDP)

替代 IPv4 的 ARP:用 ICMPv6 的类型 133-137(RS/RA/NS/NA/Redirect)完成地址解析、路由器发现与重定向。

IPv6 无状态自动配置(SLAAC)

主机根据路由器通告(RA)的前缀 + 自行生成的接口标识拼出地址,无需 DHCP 即可上网;DHCPv6 用于需要精细控制的场景。

ICMP 相关攻击面

历史上有 Smurf(广播放大)、Ping of Death(超大包)、ICMP 隧道等攻击;现代内核已免疫大部分,但放大与隧道仍现实存在。

IPv4/IPv6 过渡技术

从双栈到纯 v6 的演进路径:双栈最稳,NAT64/DNS64 帮纯 v6 客户端访问 v4 资源,隧道技术多用于早期互联。

ECN 显式拥塞通知

IP 层的拥塞标记:路由器在队列满前置位 CE,接收方通过 TCP 的 ECE 回显,发送方降速并回 CWR;不用丢包就能通知拥塞。

ICMP 重定向(类型 5)

当网关发现主机使用了「非最优」下一跳时,发 ICMP 重定向让主机改走更好的网关;默认多数系统会接受并更新路由缓存。

邮件与文件传输

SMTP/POP3/IMAP 与 FTP/SFTP 流程要点

电子邮件系统总览

一封邮件从发件人客户端到收件人信箱要经过提交、传输、投递三段接力;MUA/MSA/MTA/MDA 四个角色是排邮件问题的第一张地图。

SMTP 协议总览

邮件传输的通用语言:基于 TCP 的文本行协议,客户端逐条发命令、服务器逐条应答,默认 25 端口,客户端提交用 587/465。

FTP 协议总览(双连接模型)

FTP 用两条 TCP 连接:21 控制连接跑命令,20 或临时端口跑数据;「控制与数据分离」是大量防火墙问题的根源。

SMTP 响应码速查

三位码:2xx 成功、3xx 中间态、4xx 临时错误(稍后重试)、5xx 永久错误(直接退信);排障时先看这一位再读文本。

一封邮件的完整投递链路

从点击发送到对方信箱入库:提交 → 排队 → MX 寻址 → 跨域传输 → 投递;每一步单独失败,排障要按链路分段定位而不是只看客户端报错。

邮件相关端口速查

25 走服务器间中继、587 客户端提交、465 隐式 TLS 提交;110/143 明文收信,995/993 加密收信。云主机常封 25。

SMTP 加密:STARTTLS 与隐式 TLS

同一台服务器两种加密姿势:STARTTLS 在 25/587 上先明文问候再升级;隐式 TLS(465)连接即握手,从第一字节就是密文。

IMAP4 协议总览

邮件留在服务器、多端实时同步:客户端只拉取需要的部分(头/正文/附件)并回写标志位,是移动时代的标准收信协议。

SFTP(SSH 文件传输)

跑在 SSH 会话里的文件传输子系统:一条 22 端口连接搞定传输、改名、权限;与 FTP 协议毫无关系。

SMTP 会话全流程(含应答)

一条完整会话:问候 → 加密 → 认证 → 信封 → 数据 → 收尾;最容易记错的是 DATA 的结束标志是「单独一行的一个点」。

退信(Bounce)与 DSN

投递失败是异步的:DATA 后收到 250 只代表「已排队」,真正失败会在数分钟到数天后以退信/DSN 返回发件人。

FTP 被动模式(PASV / EPSV)

服务器开一个数据端口等客户端来连:穿 NAT 与防火墙更友好,是现代客户端与浏览器的默认;EPSV 是 IPv6 时代的简化版。

SMTP 核心命令

SMTP 命令不多:问候、信封、数据三段加上几个辅助命令;AUTH 与 STARTTLS 属于扩展,不在最原始的 RFC 821 里。

SMTP AUTH 认证机制

提交邮件前先认证身份;PLAIN/LOGIN 只是 base64 编码(必须跑在 TLS 内),CRAM-MD5 用挑战应答,现代服务推荐 XOAUTH2。

IMAP 命令速查

IMAP 命令分四态:未认证(CAPABILITY/LOGIN/STARTTLS)、已认证(SELECT/LIST/APPEND)、已选信箱(FETCH/STORE/SEARCH)、退出(LOGOUT)。

FTP 命令速查

常用命令围绕三个动作:认证(USER/PASS)、导航(CWD/PWD/LIST)、传输(RETR/STOR);每条命令都有对应的三位应答码。

POP3 协议总览

把服务器当「下载信箱」:客户端取走邮件后(默认)删除;适合单设备收信,不支持文件夹与多端状态同步。

POP3 与 IMAP 怎么选

单设备、想省服务器空间选 POP3;多设备、要文件夹/标签/服务端搜索选 IMAP。现代办公与移动场景基本一律 IMAP。

rsync over SSH 增量同步

备份与发布的默认选择:先对比差异再传差异块,支持断点续传;--delete 方向搞反会删数据,正式跑前先 --dry-run。

ESMTP 扩展速查

EHLO 之后服务器逐行列出扩展能力;自动化发信与客户端兼容性问题,大多能靠这份清单提前发现。

IMAP FETCH 语法

FETCH 是 IMAP 的万能取数命令:按消息号或范围取 FLAGS/UID/信封/任意正文段;BODY[] 会把信标为已读,预览要用 BODY.PEEK。

FTP 响应码速查

三位码:1xx 预告、2xx 成功、3xx 需要更多信息、4xx 临时失败(可重试)、5xx 永久失败;看懂首答码就能定位卡在哪一步。

中继与开放中继风险

MTA 天职是替人转发;不对来源设限就成「开放中继」,几小时内会被垃圾邮件团伙扫到并让出口 IP 进入黑名单。

POP3 命令速查

POP3 共十来条命令:认证(USER/PASS/APOP)、事务(STAT/LIST/RETR/DELE)、更新(QUIT 提交删除)。

FTPS:显式与隐式 TLS

FTPS = FTP + TLS:显式(21 上 AUTH TLS)先明文再升级,隐式(990)连接即握手;与 SFTP 完全无关,名字像而已。

文件传输协议对比(FTP/FTPS/SFTP/SCP/TFTP)

选型只看三件事:要不要加密、能否穿防火墙、场景是服务器对服务器还是设备对 PC。

邮件安全三件套:SPF / DKIM / DMARC

防伪造三件套各管一段:SPF 授权发信 IP、DKIM 给邮件签名、DMARC 要求两者对齐并指定失败动作;没配齐的域名很容易被冒名。

FTP 主动模式(PORT)

服务器主动回连客户端的数据端口:客户端先声明「连我哪个地址端口」,服务器从自己的 20 端口发起数据连接。

FTP 会话全流程

一次登录下载的完整剧本:欢迎 220 → USER/PASS → 331/230 → TYPE/PASV → RETR(150) → 226 → QUIT(221)。

文件传输故障速查

传输问题九成出在「数据连接」而不是登录:先确认控制连接可登录、再看数据端口方向、最后查权限与传输模式。

手工测试邮件协议

线上排障最可靠的手段:直接用 openssl/nc 开一条会话,逐条敲命令看真实应答,比在任何客户端里点菜单都快。

邮件收发故障速查表

把常见症状映射到最短验证路径:从端口连通、认证、TLS、反垃圾策略四个层次逐一排除。

TFTP(简单文件传输)

UDP 69 上的极简协议:无认证、无目录、块级 ACK;专用于网络设备刷机、配置备份与 PXE 引导。

FTP 服务端加固要点

FTP 明文且攻击面大:关匿名、锁 chroot、固定被动端口、强制 FTPS,四件事能规避绝大多数经典事故。

IMAP 邮件标志(Flags)

服务器端状态用标志表达:已读、已回复、星标、待删除、草稿;客户端同步的本质就是读改这些标志。

Postfix 常用运维命令

自建邮件服务器排障围绕队列与日志:看积压用 mailq/postqueue,重试用 postqueue -f,删除用 postsuper(切勿直接 rm 队列文件)。

SCP 与其现代替代

scp 是「基于 SSH 复制文件」的命令行工具;OpenSSH 9.0 起底层已改为 SFTP 协议,做增量同步请上 rsync。

IMAP IDLE 实时推送

IDLE 让服务器在新邮件/标志变化时主动推送:客户端不用轮询,是「秒收推送」的实现基础。

IMAP SEARCH 检索语法

检索在服务器端执行,条件是「与」关系,或用 OR 显式并联;对收件箱自动化(标记/清理/归档)几乎是必备工具。

命令行 FTP 客户端:curl 与 lftp

服务器上没有图形工具时:curl 单发上传下载,lftp 做镜像同步与自动化,两者都支持 FTPS 与 SFTP。

文件传输端口汇总

放行清单视角:FTP 是一对端口(控制+数据),SSH 家族只有一个,TFTP 是 UDP;防火墙按这张表开口子。

IMAP UID 与 UIDVALIDITY

UID 是邮件在信箱内的持久编号;UIDVALIDITY 是编号空间的「版本号」,一旦变化(信箱重建/迁移),客户端必须全量重新同步。

swaks / curl 自动化发信测试

命令行发信两件套:swaks 专为 SMTP 测试而生(认证/TLS/正文文件全覆盖),curl 也能直接向 SMTP(S) 提交邮件。

没有匹配的条目。换个关键词试试,或直接全站搜索。

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌