知其然,知其所以然
网络协议原理 2026-10-15

SSH 握手:版本交换、密钥交换与认证

解析 SSH 握手:github.com 与 gitlab.com 的 KEXINIT 第一个密钥交换都是后量子混合 mlkem768x25519-sha256,本机 paramiko 服务器则是更保守的 8 种;商定 aes128-ctr + hmac-sha2-256;认证在加密之后;主机密钥指纹变了必须拒绝(TOFU);100 ms 往返下握手 + 认证要约 7.1 个往返(709 ms)。

网络协议 SSH 密钥交换 KEXINIT 主机密钥 TOFU 认证 真实验证 动画演示
网络协议原理 2026-10-15

SSH 端口转发:本地、远程与动态转发

在 paramiko 上实现并实测 SSH 端口转发:-L 经 direct-tcpip 通道把数据送到目标并回来,线路上 432 字节里没有明文和目标端口;-R 用 tcpip-forward 把连接送回客户端;20 个并发转发连接全部正确;隧道比直连 12 ms 对 1 ms,2% 丢包下约慢 1.5 倍。

网络协议 SSH 端口转发 隧道 direct-tcpip tcpip-forward 真实验证 动画演示
网络协议原理 2026-10-15

SMTP:一封邮件在服务器之间怎么传

实测 SMTP:本机 aiosmtpd 上逐行看 EHLO 多行答复、信封(MAIL FROM / RCPT TO)与信件头不同(Bcc 原理、发件人可伪造)、点转义;550 / 450 / 500 / 503 / 552 各是什么;STARTTLS 升级前明文升级后密文;Gmail、QQ、163 的 25 端口都宣告 STARTTLS。

网络协议 SMTP 邮件 STARTTLS 信封 Bcc 状态码 真实验证 动画演示
网络协议原理 2026-10-15

FTP:控制连接与数据连接,主动与被动模式

实测 FTP:控制连接是明文命令 + 三位数字答复;PASV 的 (127,0,0,1,37,8) 就是端口 9480;主动模式由服务器反向连客户端;抓包能读到 USER / PASS 明文;100 ms 往返下登录约 6.1 个往返,每个小文件约 4.1 个往返。

网络协议 FTP 控制连接 数据连接 被动模式 主动模式 PASV 真实验证 动画演示
网络协议原理 2026-10-15

NTP:时间同步报文与偏移计算

手工拼 48 字节 NTP 请求,解析真实服务器(ntp.aliyun.com 等)的 stratum、四个时间戳,用 offset / delay 公式算出本机偏移 4.73 ms;本机自写服务器验证公式误差只有 0.09 ms;返程多 80 ms 的不对称使 offset 偏差 −41.98 ms(约为不对称量的一半)。

网络协议 NTP 时间同步 偏移 延迟 路径不对称 UDP 真实验证 动画演示
网络协议原理 2026-10-15

SOCKS5:代理握手与 UDP 转发

手工收发 SOCKS5 的每个字节:问候 05 01 00,CONNECT 请求 05 01 00 01 + 地址 + 端口,握手共 2 个往返 25 字节;socks5 与 socks5h 的区别是代理收到 ATYP=1 的 IP 还是 ATYP=3 的域名;用户名密码认证与错误码 5 / 4 / 7 / 8;UDP ASSOCIATE 加 10 字节 UDP 头转发真实 DNS 查询(88 ms)。

网络协议 SOCKS5 代理 UDP ASSOCIATE DNS socks5h 真实验证 动画演示
网络协议原理 2026-10-15

TFTP:最简单的基于 UDP 的文件传输

自己实现 TFTP:5 种报文、服务器从新端口(TID)回答、不足 512 字节的 DATA 是结束标志;停等让 100 KB 在 50 ms 往返下需要 9.94 秒(10 KB/s),协商 blksize=1428 后降到 3.66 秒;丢一个包就多等一个 0.6 秒的超时。

网络协议 TFTP UDP 停等 TID blksize 真实验证 动画演示
网络协议原理 2026-10-15

Syslog:UDP 日志协议的格式与可靠性问题

实测 Syslog:PRI = 设施 × 8 + 级别(36 = auth × 8 + warning);RFC 5424 把时间戳 / 主机名 / 结构化数据放进格式;UDP 在 10% / 30% 丢包下收到 456 / 358 条(TCP 全收到);突发 20000 条时接收端丢 79.7%;日志可被轻易伪造。

网络协议 syslog UDP 日志 RFC 5424 PRI 丢包 真实验证 动画演示
网络协议原理 2026-10-15

MQTT:固定头、QoS 与保持连接

手工收发 MQTT 3.1.1 字节:CONNECT 25 字节、CONNACK 4 字节、PUBLISH 固定开销 4 字节加每次都带的主题名;剩余长度的变长编码;QoS 1 的重发会让代理收到同一个包标识两次;QoS 2 要 4 个包;保活 2 秒在 3.11 秒后触发遗嘱;保留消息让晚到的订阅者立刻拿到最新状态。

网络协议 MQTT 物联网 QoS 保活 遗嘱 保留消息 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号