
咯咯网
适用于Minecraft的RFC 1149(IP over Avian Carriers)——数据包由鸡在发送和接收方块之间物理搬运。设计上具有丢包特性。
查看大图一个用于 Minecraft 的 RFC 1149 "IP 数据报在鸟类载体上的传输标准" 实现。

数据包通过 鸡 在方块之间物理搬运。它们天生不会飞行、无法导航绕过障碍物、也难以抵御攻击的特性,完美复现了真实的 IP 丢包与延迟——障碍物、水体、怪物以及意外的玩家攻击都会成为网络故障的合理来源。
这个 Forge 模组首先是一个玩笑,其次才是一个动手实践的沙盒,让你思考有损网络、前向纠错和重传协议在依赖物理(而非光纤)运行时,其真实行为究竟如何。
内容介绍
| 概念 | RFC 1149 术语 | CluckNet 实现 |
|---|---|---|
| 发送端主机 | 源网关 | 数据包发送器 方块(红色顶面) |
| 接收端主机 | 目标网关 | 数据包接收器 方块(蓝色顶面) |
| 数据报 | IP 数据报 | 鸡身上的 CompoundTag 载荷 |
| 鸟类载体 | 载体 | 数据包鸡 实体 |
| MTU | 1500 字节 | 16 字节(故意设小,使分块可见) |
| ACK / NACK | TCP ACK | 一只返回的鸡,携带丢失分块的索引信息 |
| 前向纠错 | (RFC 1149 中无此概念) | 每条消息附带一个 XOR 奇偶校验块 |
使用方法(60 秒上手)
- 放置一个 数据包发送器 和一个 数据包接收器,位置需确保鸡能在其间行走(最大单步高度为 1,路径上不能有水体)。
- 潜行右键点击接收器,再潜行右键点击发送器——两者即配对成功。
- 在 书与笔 中写一条消息(不要 署名),并将其放入发送器的 GUI 中。
- 观察鸡群在方块世界中行走,搬运着你的数据分块。
- 当重组成功时,接收器会返还给你一本 成书。
- 如果有鸡死亡,你会获得一个纸物品,上面显示丢失分块的预览信息。如果死亡过多,会自动发回一只 NACK 鸡,发送器会重传丢失的分块。
/clucknet stats 命令可打印全流程的数据包计数器(数据 / 奇偶校验 / 重传 / NACK / 鸡死亡数)。
为什么特别选择鸡?
- 鸡 不会飞行。它们会滑行,会被 1.5 格高的台阶卡住,会在水中淹死,还会被狼咬死。
- 发送器和接收器之间 13 格的距离就是 吞吐瓶颈,也是丢包的持续来源——这正是你希望从“尽力而为”传输层得到的效果。
交付语义
接收器采用类似 TCP 的交付方式:只要接收到足够重构消息的分块,消息即交付。 它不会等待所有预期的鸡。
- 全部 N 个数据分块到达 → 重构并交付。晚到的奇偶校验块被作为冗余数据静默丢弃。
- N − 1 个数据分块 + 奇偶校验块到达 → 通过 XOR 恢复缺失分块并交付。同一条消息后续到达的任何数据分块将被丢弃。
- 60 秒内未接收到足够的分块 → 广播
incomplete;该消息 ID 会被额外记住 60 秒,以避免非常晚到的分块被误认为新消息。
与之对应的结果:从视觉上看,聊天消息通常 在所有鸡走进来之前 就已出现。之后到达的鸡被识别为冗余,并被静默丢弃。这标志着网络正在以最大吞吐量运行。
要求
- Minecraft 1.20.6
- Minecraft Forge 50.1.x
- Java 21(如果缺失,Gradle 会在首次运行时自动下载)
CluckNet 当前仅支持 1.20.6 / Forge。欢迎通过 PR 将其移植到 1.20.1 (Forge) 或 1.21.x (NeoForge)——详情请参阅 GitHub 仓库。
更多信息
- 完整 README、协议细节、故障排除: https://github.com/hijimasa/CluckNet
- 源码 / 问题反馈: https://github.com/hijimasa/CluckNet/issues
- 背景资料: RFC 1149 (1990-04-01) 和 RFC 2549 (1999-04-01)。
许可证
MIT。详见 LICENSE。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。