趣事记录 | 有哪些让你目瞪口呆的 Bug ?

一篇关于麻省理工学院历史上的一个有趣技术Bug的分享。系统管理员发现邮件只能发送到520英里以内的地方,原因是操作系统升级导致邮件软件降级,Sendmail5无法解析新配置文件,导致超时设置为0,进而出现3毫秒断开连接的问题。最终,由于光速计算,这个Bug表现为邮件无法发送到558英里外的服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在知乎上看到一个有趣的 Bug 事件,转载记录一下。

原回答地址:Here

发生于麻省理工的一个有意思的bug:只能发500英里的邮件

原文在此:http://web.mit.edu/jemorris/humor/500-miles

相当Nerd的bug,有兴趣的人看看吧。
大意是,当年麻省的一名系统管理员,忽然收到统计系主任打来的求助电话“咱们的邮件发不了 \(500\) 英里以外的地方,其实,是 \(520\) 英里更准确点”。

系统管理员心里¥!&……*&。
不过在他开始用自己的邮件测试后,发现邮件的确只能发往 \(520\)​ 英里以内,其余的收件地点一律失败。

于是在他一片纠结中他渐渐开始发现问题,邮件服务器被人更新过操作系统(当年还是SunOS),但是由于操作系统的发行版往往配备了旧版软件,于是在更新操作系统的时候邮件软件反而被降级了(Sendmail 8 -> Sendmail 5)。
于是进一步调查发现,在更新操作系统时,管理员自己编写的Sendmail配置文件(sendmail.cf)被保留了下来。这样就出现了这种状况:Sendmail 5尝试解析Sendmail 8的配置文件。

但是为什么会是 \(500\) miles呢?为什么是 \(500\) miles咧?

原因是这样的,Sendmail 5面对陌生的配置文件,凡是不理解的部分都会忽略,凡是没设置过的配置项自动设置成0。这样其中有一个被设置成0,这一项就是 (连接远端SMTP服务器的超时时间)timeout to connect to the remote SMTP server。后来经过实验,发现\(0\)秒的timeout会导致Sendmail在 \(3\) 毫秒后中断连接。

所以,为啥是 \(500\) miles?

在当年,MIT的校园网是没有那么多router的,也就没那么多网络延迟,所以连接一个远端主机的时间大概就是光所需的时间。于是3毫秒, 就意味着:

\[0.003 * 3 * 10^{8} * 0.001 * 0.621=558.9000000000001 \]

\(558\) 英里。也就是 \(558\) 英里以外的服务器,都无法连接到,而 \(558\) 英里以内的服务器,都可以正常通信。
当当当,这就是 \(500\) 英里的bug啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值