文章摘要
1971年诞生的Finger是首个社交网络,无需账户和算法,用户通过纯文本文件控制个人资料。它至今仍可使用,macOS和Unix系统预装客户端,可通过命令随机查看他人账户。
文章总结
好的,这是根据您的要求,对原文进行的中文重述:
标题:Finger:那个诞生于1971年、至今未消亡的社交网络
你可能不知道,最早的社交网络可以追溯到1971年。它没有账户、没有算法、也没有中央服务器。你的全部个人资料就是一个由你掌控的纯文本文件。著名游戏程序员约翰·卡马克曾用它作为开发日志。而且,你的操作系统很可能已经预装了它的客户端。
最令人难以置信的是,半个世纪后的今天,它依然能运行,甚至有可能复兴。它的名字叫Finger,你现在就可以试试。
finger客户端预装在macOS和大多数Unix系统中。在Debian或Ubuntu上,你可以用apt install finger安装它。Windows也自带finger.exe。如果你使用Emacs,内置的net-utils.el也提供了M-x finger功能。
试试这个命令:finger random@happynetbox.com。它会随机显示一个托管在happynetbox.com上的Finger账户。这个网站是众多方便用户发布内容的目录(或主机)之一。很有趣,不是吗?
起源
1971年,在斯坦福人工智能实验室,研究人员共用一台运行WAITS分时系统的计算机。当时唯一能知道谁在线的方法是使用WHO命令,但它会输出一长串难以阅读的列表。
实验室工程师莱斯·厄内斯特经常看到这样的场景:“人们用手指划过WHO显示的屏幕,嘴里念叨着‘唐在,帕蒂也在,但不知道汤姆最后出现是什么时候’。”因为人们用手指划过屏幕,这个程序因此得名。厄内斯特编写了一个程序,能以更人性化的格式返回这些信息:真实姓名、位置,以及最重要的——每个终端空闲了多久。他是一位务实的工程师,更喜欢当面交谈而非通过电脑沟通。他想知道是否值得起身穿过走廊去找某个人。这个程序的副产品,就是网络在线状态,或者说,社交网络的雏形。
1977年,该协议在RFC 742中正式确立。当时它非常原始,只有三个站点支持:斯坦福人工智能实验室、斯坦福研究所和麻省理工学院的ITS机器。后来,网络化实现由麻省理工学院的厄尔·基利安和斯坦福大学的布莱恩·哈维完成。1991年,RFC 1288成为最终规范,取代了早期版本。
第一个微博:.plan和.project文件
除了显示在线状态,Finger还会显示你主目录下两个文本文件的内容:.plan和.project。最初的想法是宣布你正在做什么以及计划做什么,类似于一种静态的专业“状态”,没有点赞或评论等互动功能,就像你日常工作的变更日志。
但人们总是会赋予它人性化的一面。他们开始在文件中加入诗歌、笑话、个人日记、ASCII艺术、文章……任何内容!世界上任何人都可以通过简单的finger your-user@your-host命令读取你的.plan文件。许多人正确地将其视为互联网上的第一个微博。
最著名的例子是约翰·卡马克的.plan文件。多年来,任何粉丝都可以通过finger johnc@idsoftware.com(现已失效)直接阅读他正在开发的游戏图形引擎的最新进展。他从1996年写到2010年。这些记录如今被保存在GitHub上,是电子游戏史上最宝贵的技术文档之一,而它正是通过一个1971年的协议传播的。
他的文风非常简洁,像电报一样:只有任务列表和bug报告,没有多余的字。但偶尔也会爆出重磅消息。例如,1997年8月18日,他通过自己的.plan文件宣布计划发布《毁灭战士》的源代码,而不是通过网站或新闻发布会。
第一个物联网设备使用Finger
大约在1982年,卡内基梅隆大学的一些学生厌倦了走到系里的可口可乐自动售货机却发现机器空了或只有温热的饮料。他们安装了微型开关来检测每列有多少瓶饮料以及它们冷却了多久。他们将所有信息连接到网络,并通过Finger协议暴露状态。从任何计算机上,你都可以运行finger coke@cmu.edu来了解是否有汽水,以及哪个按钮能买到最冰的。这被认为是历史上最早联网的物体之一,是物联网的鼻祖。而它的接口,同样是Finger。
协议本身
Finger协议非常简单,一句话就能说清:客户端向服务器的79端口发起一个TCP连接,发送一行文本(要查询的用户名,或空行以列出所有用户),以回车和换行符结束。服务器用纯文本响应并关闭连接。就是这样!没有加密,没有头部,没有会话。纯粹的简单。
基本命令是:finger user@server。由于协议没有秘密,你可以用netcat手动操作。
.plan文件里有什么
.plan不是一个帖子墙,而是一个你可以随意写入任何内容的单一文本文件。当有人Finger你时,服务器会原封不动地返回整个文件。没有格式要求,就像狂野西部。
这是否意味着你只能发一个帖子?不是。自80年代以来的惯例是,在同一个文件中保存一种日记,添加带日期的条目,通常最新的在最上面。约翰·卡马克就是这样发布多年开发日志的。他的.plan文件随着用虚线分隔的条目不断增长。
你的.plan可以更简单,包含一个个人简介头部和几个条目。当文件变长时,你需要自己删除旧条目。没有数据库来存储你的历史记录:.plan是可变的、无版本的,删除的内容就永远消失了。无法从一个个人资料“点击”到另一个。一切都是手动的。
衰落与复兴
Finger的没落并非因为过时,而是因为安全问题。1988年11月2日,莫里斯蠕虫爆发,它是最早在互联网上传播的蠕虫之一。其攻击媒介之一就是fingerd守护进程的一个漏洞。该蠕虫发送了一个请求,导致缓冲区溢出,从而在远程机器上执行代码。这可能是历史上第一次恶意的缓冲区溢出攻击。它感染了大约6000台计算机,约占当时整个互联网的10%!
此外,还存在一个更深层次的设计问题:Finger会泄露个人信息。RFC 1288本身也带有警告。到90年代末,绝大多数管理员都禁用了该服务。该协议在使用了近20年后成为了遗迹。
然而,意想不到的转折出现了。Finger如此被遗忘,同时又如此无处不在,以至于在2020年,人们发现某些攻击者利用Windows默认自带的finger.exe来下载恶意软件而不引起怀疑。这是一种“离地生存”技术:二进制文件已经存在,受信任,而且几乎没人监控它。Astaroth恶意软件就曾用它来获取有效负载。一个1970年代的协议至今仍存在于每个Windows系统中,这充分说明了其设计的简洁性。
简单、实用的想法很难消亡。随着小型网络的复兴,以及极简、去中心化协议(如Gemini、IRC、RSS、NNTP等)的潮流,Finger再次崭露头角。出现了像Happy Net Box、Finger.Farm、plan.cat这样的现代实现,它们提供了更安全的访问方式,甚至能桥接到ActivityPub,让.plan文件可以在Mastodon上被阅读。这是一个活着的、小巧且可破解的协议,由觉得它有趣的人们维持着。
入门指南
- 简单方式:使用Happy Net Box这样的托管服务。免费注册,在网页上编写文本并保存。之后任何人都可以通过
finger your-user@happynetbox.com读取你。 - 中级方式:在你的Linux服务器上运行经典的
fingerd守护进程。推荐使用更安全的ffingerd。创建你的.plan文件,设置好权限,打开防火墙的79端口即可。 - 高级方式:用Python编写你自己的
fingerd。由于Finger是基于socket的纯文本协议,代码非常简短。你可以创建一个简单的异步服务器,读取plan.txt文件并返回其内容。
最后的话
今天,Finger依然活着并得到了修补。现代实现不会暴露主目录,不使用gets()函数,并隔离了进程。莫里斯蠕虫的幽灵是1988年某个特定实现的漏洞,而非架构问题。它简单、实用、安全。最重要的是,它让你成为自己在网络上存在的主人。
当然,如今有更完整、更易用的解决方案。但Finger那种极端的极简主义,没有规则和定义格式,正是它难以被扼杀且真正令人愉悦的原因。它不会再次成为主流,但这无关紧要。它将在日益复杂的互联网边缘生存下去,由好奇者维持,等待着有人输入finger并重新发现它的彩蛋。它可能是你在互联网上拥有的最小、最属于你自己的东西。
评论总结
根据评论内容,总结如下:
主要观点与论据:
怀旧与历史价值(评分:无,认可度较高)
- 评论3:Finger在PC游戏开发者圈中流行,用于追踪游戏开发者动态,被视为“当时的Twitter”。
- 评论4:90年代末大学中Finger被用于社交,如“finger stalking”和通过Unix talk约会,形成早期社交网络。
- 关键引用:评论3 "Ahhhhh memories... it was considered a core feature for hot game news!";评论4 "We had a legit proto social network going, all over telnet!"
技术特性与局限性(评分:无,观点平衡)
- 评论5:对“无加密、无头、无会话”的纯粹性提出质疑,怀疑是AI生成内容。
- 评论10:指出Finger存在多个安全漏洞,导致在企业中被禁用。
- 评论12:提出Finger在“多机器每用户”时代不再适用,建议通过DNS TXT记录实现现代版本。
- 关键引用:评论5 "AI smell?";评论10 "more than one security issue with stock fingerd... it was banned";评论12 "When we moved from multiple users per machine to multiple machines per user, services like finger didn't make much sense."
现代复兴与改进(评分:无,积极)
- 评论7:介绍新Finger客户端lookit,解决发现层缺失问题。
- 评论8:提及WebFinger作为HTTP基础的类似协议。
- 评论11:建议开发SSH版本。
- 关键引用:评论7 "finger has no discovery layer... lookit makes that list selectable";评论8 "Similar in spirit, but HTTP based."
轶事与个人经历(评分:无,趣味性)
- 评论13:因频繁使用Finger导致大学系统打印大量日志,被工程师制止。
- 评论14:指出Finger只是Unix文本社交网络的一部分,与who、write、talk等工具共同构成完整系统。
- 关键引用:评论13 "They have a system console logging program that has churned out dozens of pages of paper printouts";评论14 "Finger was only part of the social network... combined to form a fairly complete text-based social network."
平衡性总结: - 正面:怀旧情感、历史意义、现代改进尝试。 - 负面:安全漏洞、技术过时、隐私问题。 - 中立:技术讨论、轶事分享。