JACIN Blog

深度的 AI 应用开发者

专注 AI 应用开发、Python 后端与工程实践,持续记录大模型落地、工具构建与真实项目经验。

183篇已发布
主题索引
查看全部分类
全部文章
183
计算机网络
15 分钟

精品网络-介绍

围绕“精品网络”的技术含义,内容先用 BGP 和自治系统解释互联网跨网络互联的基本逻辑:运营商、云厂商和数据中心通过 ASN 宣告 IP 段、选择出口、配置多线接入与 Peering,从而影响用户访问路径。文章以阿里云 AS45102、腾讯云 AS132203 接入三大运营商为例,说明云厂商并不是简单租用带宽,而是作为独立 AS 参与三网互联和智能选路。随后梳理精品网络从企业专线走向 VPS、IDC、游戏加速和节点服务的背景,并归纳其优势,包括绕开拥堵公网、降低延迟和丢包、提供 QoS 保障以及改善国际出口。运营商部分分别说明电信 CN2 GT/GIA、联通 AS9929 与移动 CMI 的定位、常见 ASN、与普通公网在线路优化、稳定性、拥塞风险和价格上的差异。最后给出 mtr 测试命令、目标地址和路径样例,提示可借助 59.43.x.x 等路由特征初步判断 CN2 GIA 类线路质量。适合准备购买 VPS 或 IDC 服务、评估跨境访问体验、排查三网回程路径的网络学习者和运维人员建立基础判断框架。

Python 开发
15 分钟

gRPC 使用

这篇笔记以一个只有 Predict 方法的 MyService 为例,串起 gRPC 与 Protocol Buffers 的基本使用路径:先在 .proto 文件中定义 package、service、rpc 方法以及 PredictRequest、PredictResponse 消息,再通过 protoc 生成 Python 侧的数据模型和 RPC 桩代码。内容区分了 my_service_pb2.py 与 my_service_pb2_grpc.py 的职责,前者承载 message、enum 对应的序列化与反序列化类型,后者提供服务端基类、注册函数和客户端 Stub,用来连接业务实现与远程调用。服务端部分展示了继承 MyServiceServicer、实现 Predict、使用线程池创建 grpc.server、注册服务并监听 50051 端口的完整流程,同时解释了生成文件中 DescriptorPool、AddSerializedFile 和 BuildTopDescriptorsAndMessages 动态注册消息类的现象,说明为什么 IDE 可能找不到定义但运行时可正常使用。客户端部分则说明如何通过 insecure_channel 建立连接、创建 MyServiceStub、构造 PredictRequest 并像调用本地方法一样执行远程 Predict,同时提醒未加密通道更适合本地测试,生产环境应考虑 TLS。文章还补充了 Go 客户端通过 protoc 插件生成代码、Dial 连接、创建客户端并带超时上下文调用服务的写法,用来体现一份 IDL 支撑跨语言调用的价值。最后将 gRPC 与 tRPC、HSF、SOFA RPC 等框架放在同一类实现思路下理解:先定义接口协议,再生成存根,服务端实现接口,客户端调用 Stub,底层负责序列化、网络传输与错误处理,适合刚开始学习 RPC、后端服务通信或跨语言接口开发的读者建立整体框架。

计算机网络
11 分钟

gRPC 相关介绍

这篇笔记围绕 gRPC 的组成和使用方式建立整体认知,核心说明它并不是重新发明底层网络协议,而是在 HTTP/2 之上结合 Protobuf 形成的高性能 RPC 规范。内容先拆解 HTTP/2 相比 HTTP/1.1 的差异,包括二进制帧、多路复用、HPACK 头部压缩、流式传输和更少的连接开销,并补充 Nginx 作为反向代理时可能只在客户端侧提供 HTTP/2、后端仍走 HTTP/1.1 的现实边界,以及 Uvicorn、Hypercorn 对 HTTP/2 支持的区别。随后解释 Protobuf 的定位:通过 .proto 预先定义消息结构和服务接口,将字段名替换为字段编号等紧凑二进制表示,从而在体积和序列化速度上区别于 JSON,同时也说明它与 gzip 这类通用压缩算法不是同一层面的优化。实践部分使用 grpcurl 连接 grpcb.in:9000 公开服务,演示安装工具、以 plaintext 明文方式列出服务、查看 grpcbin.GRPCBin 方法,并调用 Empty、DummyUnary 等接口。最后回到 gRPC 的本质:跨网络、跨语言调用远程服务,让 Go、Python、Java 等通过同一份 .proto 生成各自客户端和服务端代码,像调用本地函数一样传输 Protobuf 消息。适合正在理解微服务通信、RPC 框架、HTTP/2 部署边界或准备上手 gRPC 调试工具的后端开发者阅读。

常规
11 分钟

"阿里云差点被‘劫持’?你必须懂的 DNS 知识

从 aliyuncs.com 注册状态异常导致部分地区解析失败切入,文章把一次看似“阿里云被劫持”的事件还原为域名过期、未及时续费引发的 DNS 异常,并指出其影响可能波及 OSS、CDN、SLB 以及依赖这些资源的第三方网站和 App。正文随后梳理 A、AAAA、NS、CNAME、MX、TXT 等常见 DNS 记录的职责,尤其强调 NS 决定“谁负责解析”,A 记录决定“解析到哪个 IPv4 地址”,CNAME 常用于别名、CDN 和第三方平台接入。通过简化的域名访问链路,读者可以理解浏览器从查询上级 DNS、定位权威 NS,到获得最终 IP 并建立连接的基本过程。后半部分区分 DNS 污染与注册商层面的域名解析劫持:前者是伪造或干扰 DNS 响应,把用户导向错误地址;后者则可能通过篡改 NS 夺走整个域名的解析控制权。文章列出 dig、whois 等基础排查方式,并给出加密 DNS、可信公共 DNS、VPN、Hosts、DNSSEC、域名锁定、MFA、WHOIS 隐私保护和 NS 监控等防护手段。它适合希望补齐 DNS 基础、理解云服务域名风险、排查解析异常的开发者、运维和安全入门读者。

计算机网络
15 分钟

CDN 是什么?

这篇笔记面向刚接触网站加速和对象存储的开发者,解释 CDN 作为内容分发网络如何把 HTML、JS、CSS、图片、视频等静态资源缓存到靠近用户的边缘节点,从而减少跨区域访问延迟、降低源站压力,并在节点故障或大流量场景下提升可用性与抗压能力。正文先用“用户请求资源、节点检查缓存、命中直接返回、未命中回源并缓存”的流程说明 CDN 的基本工作机制,再列出网站加速、App 安装包分发、直播流媒体、电商秒杀和可缓存 GET 接口等典型使用场景。随后通过 jsDelivr、腾讯云 CDN 和 Cloudflare R2 的响应头示例,拆解 cache-control、age、x-cache、x-served-by、x-cache-lookup、cf-cache-status、cf-ray、accept-ranges 等字段,帮助读者判断缓存策略、命中状态、多级节点路径、边缘节点位置以及是否支持断点续传。文章也区分了对象存储与 CDN 的职责:COS、OSS 或 R2 负责保存源数据,CDN 负责分发、缓存和加速,其中 R2 还天然接入 Cloudflare 的全球边缘网络,可通过自定义域名、Worker 或缓存规则进一步优化访问。最后落到业务系统设计,建议数据库保存原始资源路径,由后端接口、序列化器或 DTO 统一拼接 CDN 地址返回给前端,避免把源站链接、展示链接和网关响应改写耦合在一起。

计算机网络
3 分钟

点击劫持-介绍

这篇笔记围绕点击劫持的基本原理和防护响应头展开,适合正在为 Web 应用补齐基础安全配置的后端或全栈开发者阅读。文中用银行转账页面被攻击者通过透明 iframe 嵌入恶意页面的例子,说明用户可能在不知情的情况下点击到真实站点上的操作入口,从而触发非预期行为。防护重点放在两个响应头:X-Frame-Options: DENY 用于直接禁止页面被任何站点以 frame 或 iframe 方式嵌入,SAMEORIGIN 则允许同源嵌入,而 ALLOW-FROM 已不适合依赖现代浏览器支持。另一种方式是使用 CSP 中的 frame-ancestors 'none',它同样用于限制页面作为祖先框架中的子页面出现,并且比传统 X-Frame-Options 更现代、可扩展。文章最后给出 FastAPI 中间件写法,在每次响应返回前统一添加 X-Frame-Options、Content-Security-Policy、X-Content-Type-Options 和 Referrer-Policy,分别覆盖点击劫持、iframe 限制、MIME 嗅探和 referrer 泄露等基础风险。整体价值在于把点击劫持的攻击场景与可落地的安全头配置连接起来,可作为 FastAPI 项目的最小安全响应头参考。

跨站请求-介绍
计算机网络
9 分钟

跨站请求-介绍

跨站请求指浏览器在访问一个站点时向另一个站点发起请求,安全风险集中在浏览器会自动为目标站点携带已有 Cookie,从而让恶意页面可能借隐藏表单、图片或请求触发用户已登录站点的敏感操作。文章用网银转账示例说明 CSRF 的基本链路,同时区分了它与 CORS 的边界:CORS 主要由服务端通过 Access-Control-Allow-Origin 控制跨域资源读取,而同源策略仍会阻止 A 站脚本直接访问 B 站 Cookie。内容进一步解释“允许所有 Cookie”并不等于站点间可以互读 Cookie,它更多涉及第三方 Cookie、iframe、图片或脚本加载时浏览器是否允许目标域存取自己的 Cookie。防护部分围绕 CSRF Token、SameSite、Referer 检查和 POST 身份验证展开,重点说明 SameSite=Strict、Lax、None 对跨站请求携带 Cookie 的不同约束。对于传统 Cookie 登录,Strict 或 Lax 能降低 CSRF 风险;但前后端分离且依赖 Cookie 登录时,可能需要 SameSite=None; Secure,而使用 Authorization Header 或 JWT 的方案则基本不受 SameSite 影响。最后补充 secure=True 或 https_only=True 的含义:浏览器只会在 HTTPS 请求中发送该 Cookie,这能减少中间人窃听风险,但会影响本地 HTTP 测试环境和登录态调试。

计算机网络
10 分钟

CORS与OPTIONS请求

这篇笔记聚焦浏览器跨域访问中的 CORS 判断与 OPTIONS 预检机制,核心澄清“跨域失败”并不是后端主动拦截响应,而是浏览器在安全策略下根据响应头决定是否把结果交给前端 JS。内容从 Access-Control-Allow-Origin 的作用讲起,说明后端必须在响应中明确允许来源,否则即使接口返回 200 或 404,浏览器也会阻止脚本读取内容。对于带 Authorization、自定义 Header、application/json 或 PUT、PATCH、DELETE 等复杂请求,浏览器会先发送 OPTIONS 预检,并通过 Origin、Access-Control-Request-Method、Access-Control-Request-Headers 询问后端是否允许后续真实请求。文章重点记录了 FastAPI CORSMiddleware 的排查细节:只有请求携带 Origin 头时,中间件才会识别并提前处理跨域 OPTIONS;如果 curl、Apifox 等工具模拟预检时漏掉 Origin,请求会落到路由层,未注册 OPTIONS 方法时就可能返回 405。相应的解决路径是用带 Origin 和 Access-Control-Request-Method 的请求复现浏览器行为,并检查 allow_origins、allow_methods、allow_headers 等配置是否能返回 Access-Control-Allow-* 头。它适合后端开发、前端联调人员和接口排查人员,用来区分浏览器 CORS 拦截、后端路由 405、以及测试工具模拟不完整这几类容易混淆的问题。

计算机网络
10 分钟

5G-A技术

这篇笔记从 iOS 18.4 中出现的 5G-A 标识出发,解释 5G-Advanced 作为 3GPP Release 18 定义的 5G 演进标准,定位在现有 5G 与未来 6G 之间的过渡阶段。正文把 5G-A 的增强点概括为更高速率、更低时延、更高连接密度,以及引入 AI/ML 进行网络资源管理和优化,并提到 NTN 卫星与地面网络融合、XR、自动驾驶和工业自动化等新场景。文章进一步按应用场景展开,说明 5G-A 在智能制造的精密控制、车联网实时通信、8K VR/AR 和全息体验、智慧城市多设备协同、偏远地区覆盖等方向的潜在价值,同时强调很多应用仍处在试点或早期部署阶段。部署现状部分列举了北京四环内及行政副中心覆盖、杭州商用网络启动,以及上海、深圳、广州等城市的试点或预期推进情况,帮助读者理解手机显示 5G-A 与实际网络建设之间的关系。为便于对比,文章还补充了 5G 的 eMBB、URLLC、mMTC、毫米波、大规模 MIMO、小基站和网络切片等基础概念,并用表格区分 5G 与 5G-A 在速率、时延、能效、连接密度和成熟度上的差异。最后,针对 iPhone 信号满格但网速慢的问题,正文说明信号格主要反映 RSRP、SINR 等接收质量,不等同于网速,实际体验还会受到频段、网络拥堵、基站距离、遮挡和干扰路径影响,适合想快速理解 5G-A 标识、网络能力与现实体验差距的移动网络用户和技术学习者。

计算机网络
29 分钟

SSL证书与CA证书

这篇笔记围绕个人开发者配置 HTTPS 时最容易混淆的 SSL 服务器证书、CA 根证书和中间证书展开,先从免费证书、低价单域名证书、通配符证书等常见选择切入,说明证书有效期、域名覆盖范围和续期维护成本的差异。正文重点强调申请证书时应在本地生成私钥和 CSR,只向 CA 或证书卖家提交 CSR,避免把私钥交给第三方;CSR 中包含公钥、主题信息和由私钥生成的签名,是 CA 签发最终证书的依据。文章用 HTTPS 握手流程解释浏览器如何接收服务器证书,并根据内置根证书库校验证书链、颁发者、有效期、撤销状态、签名完整性等信息,从而决定是否信任站点。实践部分给出 OpenSSL 生成 RSA 私钥与 CSR、查看 X.509 证书详情的命令,并结合证书输出字段说明 Issuer、Subject、SAN、Key Usage、OCSP、CRL 等信息的含义。Nginx 配置示例展示了服务器证书 crt 与私钥 key 在 443 ssl/http2 站点中的使用方式,帮助读者把证书申请、校验和部署串起来。最后通过表格和类比区分 SSL 证书是网站使用的服务器身份证明,CA 证书是上游权威的公钥凭证,中间证书负责连接服务器证书与浏览器内置根证书,适合正在为自有域名、反向代理或 CDN 服务配置 HTTPS 的开发者参考。

网络https协议
计算机网络
24 分钟

网络https协议

这篇笔记围绕 HTTPS 请求的安全链路和连接复用机制展开,适合想把浏览器请求、抓包、TLS 握手和 HTTP 版本差异串起来理解的后端、运维与网络学习者。内容先说明 HTTPS 如何借助 SSL/TLS 完成证书验证、密钥交换和会话密钥生成,并用对称加密保护后续数据;同时区分 Charles、Fiddler 等代理抓包工具通过安装受信任证书进行中间人解密,和 Chrome 开发者工具查看浏览器已解密数据这两种完全不同的场景。随后梳理一次 POST 请求背后的 TCP 三次握手、TLS ClientHello/ServerHello、证书与 Pre-Master Secret 交换、通信结束时四次挥手等过程,指出新建连接会带来额外延迟,而 Session Resumption、TLS 0-RTT 与连接复用可减少重复握手成本。文章还对比 HTTP/1.1 与 HTTP/2:前者依赖 keep-alive、Host 头、分块传输和有限连接并发,仍可能出现应用层队头阻塞;后者通过帧、流、多路复用、HPACK、服务器推送和优先级控制提升传输效率,但仍受 TCP 丢包导致的底层队头阻塞影响。Nginx 配置示例展示了 TLS 版本、加密套件、http2、keepalive_timeout 与 keepalive_requests 的设置方式,并说明在 Nginx 代理 FastAPI/Uvicorn 时,客户端侧可使用 HTTP/2,而后端应用仍可能以 HTTP/1.1 通信。最后,笔记把连接复用放到浏览器、Python requests、Postman、curl、NAT 和 TLS 会话恢复的语境中解释,强调复用只发生在未关闭的连接或可恢复会话中,伪造 IP 与端口无法直接加入既有 TCP/TLS 连接。

DNS中的ECS
计算机网络
18 分钟

DNS中的ECS

这篇笔记围绕 DNS 扩展机制 EDNS(0) 与 ECS 展开,先说明传统 DNS 受 UDP 512 字节和缺少扩展字段限制,EDNS 通过 OPT 伪资源记录承载更大的响应、DNSSEC 所需数据以及 Client Subnet 等选项。ECS 的作用是在递归 DNS 向权威 DNS 查询时附带客户端的部分 IP 前缀,使 CDN 不再只依据递归解析器所在地调度,而能按用户大致网段返回更合适的边缘节点。文章用 dig 的 +subnet 参数在阿里公共 DNS 上模拟不同来源网段查询 alibaba.com,对比 203.0.113.0/24 返回 203.119.* 地址、8.8.8.0/24 返回 47.246.* 地址,直观展示同一域名因 ECS 不同而得到完全不同解析结果。随后逐段解释 dig 输出中的 HEADER、OPT PSEUDOSECTION、udp 大小和 CLIENT-SUBNET 的两个前缀长度,帮助读者判断请求是否携带 ECS、服务器是否接受或截断了前缀。文中还整理了国内外公共 DNS 对 ECS 的支持差异,包括阿里、腾讯、百度、Google、Quad9、OpenDNS、Cloudflare、AdGuard、NextDNS 等,并指出 /24、/56 与 /32、/128 在调度精度和隐私暴露之间的取舍。适合需要理解 CDN 解析差异、跨地域访问异常、公共 DNS 行为以及 ECS 隐私影响的网络运维、后端开发和基础网络学习者阅读。

文章归档
183