Finger: Mạng xã hội năm 1971 chưa bao giờ chết

Công nghệ18 tháng 8, 2026·11 phút đọc

Finger, giao thức mạng xã hội đầu tiên ra đời năm 1971, vẫn hoạt động đến ngày nay với triết lý tối giản: một file văn bản, không máy chủ trung tâm, không thuật toán. Bài viết khám phá nguồn gốc, sự trỗi dậy, suy tàn vì lỗ hổng bảo mật và cuộc sống lại của nó trong kỷ nguyên web nhỏ, kèm hướng dẫn thực hành chi tiết.

Finger: Mạng xã hội năm 1971 chưa bao giờ chết

Finger: Mạng xã hội năm 1971 chưa từng chết

Ít ai ngờ rằng mạng xã hội đầu tiên trong lịch sử loài người lại ra đời từ năm 1971, trước cả khi internet xuất hiện. Giao thức Finger — một hệ thống đơn giản đến mức khó tin — vẫn còn hoạt động và đang trở lại trong phong trào "small web" hiện đại.

Mạng xã hội này không có tài khoản, không thuật toán, không máy chủ trung tâm. Toàn bộ "hồ sơ" của bạn chỉ là một file văn bản duy nhất bạn tự kiểm soát. John Carmack, lập trình viên huyền thoại của Doom và Quake, từng dùng nó như nhật ký phát triển game. Đặc biệt, hầu hết hệ điều hành hiện nay vẫn cài sẵn ứng dụng Finger mà bạn không hề hay biết.

Nguồn gốc từ phòng thí nghiệm Stanford

Năm 1971, tại Phòng thí nghiệm Trí tuệ Nhân tạo Stanford (SAIL), các nhà nghiên cứu chia sẻ một máy tính chạy hệ thống WAITS. Cách duy nhất để biết ai đang trực tuyến là lệnh WHO — nhưng nó hiển thị danh sách dài vô tận và khó đọc.

Les Earnest, kỹ sư tại phòng thí nghiệm, đã chứng kiến cảnh đồng nghiệp ngày nào cũng "chạy ngón tay" dọc màn hình và than thở:

"Tôi thấy Don và Pattie đang online nhưng không biết Tom đã offline từ khi nào."

Họ dùng ngón tay lướt dọc danh sách — do đó cái tên Finger ra đời. Earnest viết một chương trình hiển thị thông tin theo định dạng dễ đọc: tên thật, vị trí, và quan trọng nhất là thời gian máy đã nhàn rỗi bao lâu. Một kỹ sư thực dụng, ông chỉ muốn biết có nên đứng dậy đi bộ xuống cuối hành lang để gặp ai đó hay không.

Vô tình, ông đã phát minh ra "sự hiện diện mạng" — hay nói thẳng ra là mạng xã hội đầu tiên.

Năm 1977, giao thức được chính thức hóa trong RFC 742 do Ken Harrenstien viết. Ban đầu chỉ có 3 địa điểm hỗ trợ: SAIL, SRI và máy ITS của MIT. Đến năm 1991, RFC 1288 trở thành đặc tả cuối cùng, thay thế các phiên bản cũ.

Microblog đầu tiên: file .plan và .project

Ngoài việc hiển thị trạng thái trực tuyến, Finger còn đọc nội dung hai file văn bản trong thư mục home của người dùng: .plan.project. Ý tưởng ban đầu là để mọi người công bố dự án đang làm và kế hoạch sắp tới — một dạng "status" chuyên nghiệp tĩnh, không like, không comment.

Nhưng con người thì luôn muốn cá nhân hóa mọi thứ. Họ bắt đầu thêm vào thơ, truyện cười, nhật ký cá nhân, ASCII art... Bất kỳ ai trên thế giới cũng có thể đọc .plan của bạn với lệnh finger user@host. Nhiều người coi đây chính là microblog đầu tiên của internet.

Ví dụ nổi tiếng nhất là file .plan của John Carmack. Người hâm mộ có thể gõ finger [email protected] (hiện đã không còn) để đọc trực tiếp những gì ông đang làm với engine đồ họa của các tựa game yêu thích. Ông viết từ 1996 đến 2010, và toàn bộ nội dung vẫn được lưu trữ trên GitHub — một trong những tài liệu kỹ thuật giá trị nhất lịch sử game, phát hành qua giao thức từ 1971.

Phong cách của Carmack mang tính điện tín: danh sách nhiệm vụ và lỗi, không một chữ thừa. Nhưng thỉnh thoảng lại có "bom tấn". Ngày 18/08/1997, ông công bố qua .plan chứ không phải website hay họp báo rằng sẽ phát hành mã nguồn Doom:

-----------------------------------------
John Carmack's .plan for Aug 18, 1997
-----------------------------------------
I get asked about the DOOM source code every once in a while...
The DOOM code should be a lot more interesting. It is better written, 32 bit,
and portable...

IoT đầu tiên cũng dùng Finger

Khoảng năm 1982, vài sinh viên Đại học Carnegie Mellon (Mike Kazar, David Nichols, John Zsarnay, Ivor Durham) chán cảnh đi bộ xuống máy bán Coca-Cola và gặp hết máy trống lại máy nước ấm. Họ lắp microswitch để phát hiện số chai trong từng cột và thời gian làm lạnh.

Toàn bộ hệ thống được nối mạng và hiển thị trạng thái qua Finger. Gõ finger [email protected] là biết ngay còn nước không, nút nào cho chai lạnh nhất. Đây được coi là một trong những thiết bị kết nối đầu tiên — ông tổ của Internet of Things (IoT). Và giao diện của nó, một lần nữa, là Finger.

Giao thức tối giản: Port 79, một dòng chữ

Finger đơn giản đến mức giải thích chỉ trong một đoạn văn: Client mở kết nối TCP tới cổng 79 trên server, gửi một dòng văn bản (tên người dùng cần tìm, hoặc dòng trống để liệt kê tất cả) kết thúc bằng CRLF. Server trả về văn bản thuần túy rồi đóng kết nối.

Không mã hóa, không header, không phiên. Vì không có gì bí mật, bạn có thể "nói chuyện" với Finger bằng netcat:

echo "random" | nc happynetbox.com 79

Lệnh cơ bản: finger user@server

Cách hoạt động tương tự Whois, Gopher hay SMTP: kết nối, hỏi bằng văn bản thuần, đọc phản hồi. Kiến trúc cực kỳ tối giản nhưng hoạt động hoàn hảo trong hơn 50 năm.

Bên trong một file .plan

.plan không phải bức tường bài đăng. Đó là một file văn bản duy nhất bạn viết gì tùy ý. Khi ai đó finger bạn, server trả toàn bộ nội dung file. Không có định dạng chuẩn — hoàn toàn tự do.

Từ thập niên 80, thông lệ phổ biến là giữ nhật ký trong cùng file, thêm các mục ghi ngày, mục mới nhất đặt trên cùng — giống cách Carmack đăng nhiều năm phát triển. Khi file dài, bạn tự cắt bớt. Không có cơ sở dữ liệu lưu lịch sử, không permalink, không thể "click" từ hồ sơ này sang hồ sơ khác. Mọi thứ đều thủ công.

Tính năngMastodon / X / RedditFinger (.plan)
Đăng nội dungMỗi bài một dòngSửa một file duy nhất
Nhập nhiều mụcTự động, mỗi bài một hàngThủ công: mục ghi ngày trong file
Lịch sửLưu trữ toàn bộ, có permalinkChỉ những gì còn trong file
Theo dõiNút Follow và feed thống nhấtGõ lệnh finger thủ công
Tương tácCó đầy đủKhông được hỗ trợ
Hồ sơ cá nhânCó cấu trúcKhông có cấu trúc
Khám phá người dùngThuật toán, trendTruyền miệng, danh sách cộng đồng

Nghe có vẻ "nhạt" so với mạng xã hội hiện đại, nhưng đây không phải cuộc đua tính năng. Chỉ là file của bạn, với trạng thái của bạn.

Ảnh minh họa giao thức cũ kỹ nhưng vẫn hoạt độngẢnh minh họa giao thức cũ kỹ nhưng vẫn hoạt động

Suy tàn vì bảo mật... rồi "sống lại"

Finger không chết vì lỗi thời — nó chết vì bảo mật. Ngày 02/11/1988, sâu Morris — một trong những con sâu đầu tiên lan truyền qua internet — khai thác lỗ hổng tràn bộ đệm trong daemon fingerd để thực thi mã từ xa. Đây có lẽ là tràn bộ đệm độc hại đầu tiên trong lịch sử. Nó lây nhiễm khoảng 6.000 máy tính — tương đương 10% toàn bộ internet khi đó.

Thêm vào đó là vấn đề thiết kế sâu hơn: Finger tiết lộ thông tin cá nhân (tên, email, lịch trình, thời điểm đăng nhập cuối). Chính RFC 1288 đã cảnh báo:

"Warning!! Finger tiết lộ thông tin về người dùng; hơn nữa, thông tin này có thể được coi là nhạy cảm."

Đến cuối thập niên 90, hầu hết quản trị viên đã tắt dịch vụ. Giao thức trở thành di tích sau gần 20 năm hoạt động.

Bước ngoặt bất ngờ: Finger bị lãng quên tới mức vào năm 2020, tin tặc phát hiện finger.exe cài mặc định trên Windows có thể dùng để tải mã độc mà không bị nghi ngờ — kỹ thuật "living-off-the-land" (dùng công cụ hợp pháp có sẵn để tấn công). Malware Astaroth đã dùng nó để tải payload. Việc giao thức từ thập niên 70 vẫn nằm trong mọi máy Windows nói lên độ bền của thiết kế đơn giản.

Cùng với sự trỗi dậy của "small web" — phong trào tối giản, phi tập trung (Gemini, IRC, RSS, NNTP) — Finger quay trở lại:

  • Happy Net Box (Ben Brown): Giao diện web để viết .plan, daemon bảo mật giới hạn rủi ro.
  • Finger.Farm (Jon Roig): Triển khai mã nguồn mở bằng Node, cập nhật qua web, REST API hoặc cURL.
  • plan.cat: Máy chủ công cộng, cầu nối ActivityPub — .plan của bạn đọc được từ Mastodon.

Giao thức sống động, nhỏ gọn, hack được — được giữ bởi những người thấy nó thú vị.

Bắt đầu với Finger: Từ dễ đến nâng cao

Cách dễ nhất: dùng Host công cộng

Bạn không cần cấu hình gì. Đăng ký miễn phí tại happynetbox.com, viết nội dung vào ô web, lưu lại. Từ đó, bất kỳ ai trên thế giới đều đọc được:

finger [email protected]

Dịch vụ lo server và bảo mật. Tương đương "tạo tài khoản" trong vòng một phút, chi phí bằng 0.

Trình độ trung cấp: Daemon Finger trên Linux

Nếu có VPS hoặc Raspberry Pi, chạy daemon kinh điển. Khuyến nghị dùng ffingerd — bản triển khai chú trọng bảo mật:

sudo apt install openbsd-inetd ffingerd

Thêm dòng vào /etc/inetd.conf và reload:

finger stream tcp nowait nobody /usr/sbin/tcpd /usr/sbin/ffingerd
sudo systemctl reload openbsd-inetd
echo "Xin chào, tôi là Bob. Hôm nay tôi đang thiết lập máy chủ Finger." > ~/.plan
chmod a+r ~/.plan

Sau đó mở port 79 và trỏ domain. Lưu ý dùng ffingerd, giới hạn host kết nối và số tiến trình theo khuyến cáo trong sổ tay bảo mật Debian.

Nâng cao: Tự viết fingerd bằng Python

Tạo file fingerd.py:

import asyncio

PLAN_FILE = "plan.txt"

async def handle(reader, writer):
    await reader.readline()
    try:
        with open(PLAN_FILE, encoding="utf-8") as file:
            body = file.read()
    except FileNotFoundError:
        body = "Chưa có plan.\n"
    writer.write(body.encode("utf-8"))
    await writer.drain()
    writer.close()

async def main():
    server = await asyncio.start_server(handle, "0.0.0.0", 79)
    async with server:
        await server.serve_forever()

asyncio.run(main())

Port 79 yêu cầu quyền root — chạy bằng sudo python3 fingerd.py. Tạo plan.txt và test từ terminal khác:

finger anyone@localhost

Server bỏ qua tên người dùng, trả về nội dung plan. Muốn chạy nền qua systemd là tùy bạn.

Giao thức thay thế và tương lai

Finger vẫn sống khỏe nhờ các triển khai hiện đại không lộ thư mục home, không dùng gets(), cách ly tiến trình. Lỗ hổng của sâu Morris là lỗi trong một bản cài cụ thể năm 1988, không phải lỗi kiến trúc.

Nếu muốn hiện đại hơn, bạn có thể tham khảo:

Giải phápBạn viếtTruyền quaBạn đọc bằng
FingerFile .planCổng 79finger user@host
Org SocialMục trong social.orgHTTPOrg client, hoặc curl + grep
RSS/AtomXML feed từ MarkdownHTTPTrình đọc feed
GemlogTrang .gmiGemini (port 1965)Gemini client (Lagrange, Elpher)
PhlogFile văn bản + gophermapGopher (port 70)Gopher client, hoặc curl
/nowTrang text/HTMLHTTPTrình duyệt hoặc curl

Với người mới từ mạng xã hội chính thống, RSS là cánh cửa nhẹ nhàng nhất: viết blog, ai cũng theo dõi qua trình đọc. Trang /now (phong trào Derek Sivers khởi xướng 2015, danh mục tại nownownow.com) thực chất là .plan chuyển lên web. Org Social gần như Finger ngay từ đầu — microblog trong file văn bản tự lưu trữ.

Sự tối giản tuyệt đối, không luật chơi, không định dạng cố định — chính điều đó khiến Finger khó bị giết và thực sự thú vị.

Finger sẽ không bao giờ thành xu hướng mainstream nữa — và điều đó chẳng sao cả. Nó sẽ sống trong các góc khuất của internet, được giữ bởi những người tò mò, chờ ai đó gõ lệnh finger và khám phá lại "trứng phục sinh" của mình. Có lẽ đó là thứ nhỏ bé và thuộc về bạn nhất trên internet.

Hình ảnh về giấy phép Creative CommonsHình ảnh về giấy phép Creative Commons

Bài viết gốc tham khảo từ andros.dev, một phần của phong trào small web đang dần hồi sinh. Nếu bạn là người yêu công nghệ tối giản, hãy thử finger — biết đâu bạn sẽ tìm thấy một góc bình yên giữa internet ồn ào.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗