人人都该自建网络栈
Everyone Should Build Their Own Network Stack
我在 NJU 学习网络时突发奇想,决定手写自己的网络栈 DNet。如今四年后,我重新拾起这个项目,在 DN42 上部署了自定义栈,并成功运行了 DNS 服务。通过 TAP 设备处理 Ethernet 帧、ARP 解析、ICMP 响应及 UDP 通信,我实现了从底层协议到应用层的完整控制。这次尝试不仅是对技术边界的探索,更是对去中心化网络理念的一次幽默实践。虽然 DN42 目前流量稀少,但亲手构建网络栈的乐趣无可替代。
在一个真正去中心化的网络中,每个人都应该实现自己独特的网络栈来访问互联网。
HN 评论区
94- intrasight
我的第一份工作是在西屋电气(Westinghouse)为一座核电站做仪器化。我们整套软硬件方案是作为价值 2 亿美元的燃料补给合同的一部分免费提供给客户的(而且那是 1988 年的美元)。我们十个人的团队打造了一套定制的应用栈,本质上就是一个网页浏览器。客户端机器是 Sun 3 工作站。服务器是一台工业迷你计算机,它没有 TCP/IP 协议栈——所以我们确实不得不自己从头构建网络协议栈。
- znnajdla
这篇文章可能带点调侃意味,但这其实是我认真思考了一段时间的事情。我可以想象这样一个未来:每个国家和每家公司都编写自己的操作系统,而这实际上可能是一件非常好的事。不采用流行的技术栈,并将所有对外公开的部分在内部重新构建,具有安全优势。因为一旦拥有 Mythos 级别的 AI 能力,几乎可以肯定,任何能访问 Mythos/Cyber 的人都能在你的技术栈中找到零日漏洞。如果你的技术栈是专有的、定制的,且源代码没有公开访问权限,那么发现漏洞就会困难得多,因为他们只能探测你的对外接口。
- andai
单一栽培(Monoculture)。这就像以前所有的香蕉都是彼此的克隆体,结果一种疾病就摧毁了整个物种。
- Ekaros
我强烈建议不要为生产环境构建自己的网络协议栈。也不要为生产环境编写自己的 Web 服务器。数据库(无论是 SQL 还是 NoSQL)同样也不要在生产环境中自己写。
这类事情比你想象的更复杂,陷阱也层出不穷。你在合理时间内能做出来的东西,可能远不如现有的替代方案。
如果你确实有迫切的理由去构建,并且准备好投入时间和精力,那就去做吧。但要仔细权衡所需的精力……
- znnajdla
真正的噩梦场景不仅仅是发现 Linux 网络协议栈中的漏洞,而是发现 TCP/IP 本身或 HTTP 协议层面的漏洞。这是一个无法修复的问题。在计算领域,以前有过这样的先例吗?