这篇文章和我以前写的《好的开始》有很多内容上的重叠。但也有不同,以前的那篇文章是我在没有经历这次挫折的时候写的。这个寒假,我打算写一个tun上的协议栈来为以后我要写的游戏加速器做铺垫。一开始,我非常轻松地实现了 udp 和 icmp 的 handler。但是写 tcp 的时候,我绝望了,一个问题接着一个问题,无数的问题向我袭来。我崩溃了,在此之前,我是知道 lwip 和 mtcp 这些开源软件实现了用户态的协议栈,我也知道 tun2socks 使用了 lwip,但是我还是相信自己能够实现比它们更好的协议栈。

  但我错了,我意识到我的这种行为是在藐视人类的智慧。拿 lwip 来说,lwip 始于 2002 年,到目前已经开发了 18 年,有 40 多位开发者,被广泛应用于嵌入式操作系统,相关的资料数以万计。凭什么我能在 2 个月内开发出比 lwip 更好的协议栈。这种对人类智慧的不尊重让我尝尽了苦头。

  最后我放弃了,目前正在研究如何使用 lwip。我对一个好的开始有了更深的领悟。但我现在要说的是风险预估,做任何事情都是有风险的,但是在行动之前没有一个对未来的预估显然让风险隐藏着看不清的未来。就像踏上了一艘不知驶往何方的船,终究会静静地消失。

  挫折会让一个人变得强大,但留给他的时间不多了。