Kiến thức nền
Ký hiệu @: Cách email được tuồn vào ARPANET
Ray Tomlinson kết hợp hai chương trình hiện có như một dự án phụ không được phép, chọn một ký hiệu dấu câu không ai dùng trong tên, và vô tình xây dựng ứng dụng bom tấn đầu tiên của mạng.
TL;DR
Năm 1971, Ray Tomlinson tại BBN lấy một chương trình nhắn tin cục bộ tên là SNDMSG và một công cụ truyền tệp tên là CPYNET, dán chúng lại với nhau, và thêm một cách để chỉ định người dùng ở máy nào. Anh cần một dấu phân cách không thể xuất hiện trong bất kỳ tên người dùng hợp lý nào, nên anh nhìn xuống máy Teletype Model 33 của mình và chọn @. Anh bảo đồng nghiệp đừng nói với ai, vì đây không phải dự án được giao. Trong vòng hai năm, email là 75% tổng lưu lượng ARPANET. Mạng được tài trợ cho tính toán từ xa đã vô tình trở thành mạng cho giao tiếp của con người — và mô hình này lặp lại mỗi khi một nền tảng mới tình cờ tìm thấy mục đích thực sự của nó.
Dự án phụ
Năm 1971, Tomlinson là kỹ sư tại Bolt Beranek and Newman, công ty Cambridge đã xây dựng các IMP cho ARPANET. Công việc được giao của anh là hệ điều hành TENEX cho PDP-10, chạy tại số lượng site ARPANET đang tăng.
TENEX đã có một chương trình gọi là SNDMSG. Nó thả một tin nhắn vào file hộp thư của một người dùng khác trên cùng máy — về cơ bản, nó ghi vào một file chia sẻ. Mọi OS chia sẻ thời gian của thời đại đều có thứ gì đó giống vậy. Nhắn tin giữa người dùng trên một máy đã tồn tại gần một thập kỷ.
Tomlinson cũng đang viết một chương trình mạng mới gọi là CPYNET, truyền tệp giữa các host ARPANET. Không có gì kỳ lạ — một công cụ sao chép tệp tiền-FTP. CPYNET hoạt động. SNDMSG hoạt động. Và ở đâu đó trong đó, Tomlinson có một ý tưởng không nằm trong danh sách nhiệm vụ của anh.
“Tôi quyết định thử xem liệu tôi có thể lấy chương trình truyền tệp và đặt nó bên trong chương trình nhắn tin, để thay vì ghi vào file hộp thư cục bộ, nó sẽ ghi vào file hộp thư từ xa.”
Đó là, theo lời anh kể, không phải thứ anh được cho là đang làm.
Tại sao là @
Vấn đề kỹ thuật là tầm thường: sửa SNDMSG để chấp nhận một đích có thể bao gồm một host từ xa, sau đó gọi CPYNET thay vì ghi file cục bộ. Vấn đề thiết kế là địa chỉ. SNDMSG đã nhận tên người dùng. Giờ nó cần phân biệt người dùng với máy.
Tomlinson cần một dấu phân cách. Nó phải:
- Là một ký tự đơn.
- Không bao giờ xuất hiện hợp pháp trong tên người dùng.
- Không bao giờ là meta-character của shell trên các hệ thống thời đó.
- Thực sự tồn tại trên các bàn phím terminal mà người ta đang dùng.
Terminal trước mặt anh là một Teletype Model 33 — terminal công nhân chủ lực của thời đại ARPANET, cũng là thứ đã cố định 7-bit ASCII. Bàn phím của nó có chính xác 64 ký tự in được. Hầu hết các dấu câu đã mang tải: . có trong tên file, , là dấu phân cách danh sách thông thường, : và ; được dùng bởi bộ phân tích lệnh của hệ điều hành, / và \ là dấu phân cách đường dẫn, _ và - thường được dùng trong tên người dùng.
Ký hiệu @, mặt khác, gần như không được sử dụng. Trên TENEX, nó không có nghĩa nào được bảo lưu. Trên mọi tài khoản người dùng Tomlinson từng thấy, không ai có gan đặt dấu at trong tên họ. Và nó có cách đọc tiếng Anh hay: user at host.
Anh chọn nó.
tomlinson @ bbn-tenexa
─────────── ──────────
user host
Toàn bộ điều này là một hack trong một buổi tối. Tomlinson sau đó demo cho người cùng phòng làm việc Jerry Burchfiel. Câu nói chính xác của anh, trong nhiều lần kể lại:
“Đừng nói với ai. Đây không phải thứ chúng ta nên làm.”
Email đầu tiên
Tomlinson gửi email mạng đầu tiên giữa hai PDP-10 ngồi cạnh nhau trong phòng máy BBN, kết nối qua ARPANET. Hai máy cách nhau khoảng mười feet về mặt vật lý. Gói tin vẫn phải đi ra IMP của BBN và quay lại.
Anh không nhớ tin nhắn chứa gì. “Có lẽ thứ gì đó giống QWERTYUIOP,” anh nói với những người phỏng vấn sau này. Không có nghi lễ. Không có ảnh chụp. Không có nhật ký, vì đây không phải dự án được tài trợ. Tin nhắn đầu tiên gửi qua hệ thống mail toàn mạng đầu tiên, trên thực tế, đã mất.
Năm tiếp theo, SNDMSG đã sửa đổi của Tomlinson có sẵn cho các người dùng BBN khác. Trong vòng vài tháng, Larry Roberts tại ARPA — người điều hành chương trình ARPANET — viết một chương trình đọc mail tên RD vì anh có quá nhiều tin nhắn để xử lý thủ công. Chương trình đó tự nó là một tín hiệu. Khi người đứng đầu chương trình cần một công cụ để đối phó với hộp thư của chính mình, bạn có một sản phẩm thực sự.
Nó đã ăn ARPANET nhanh đến mức nào?
Các con số mọi người trích dẫn đến từ một nghiên cứu ARPA năm 1973 cố gắng tìm ra mạng thực sự được sử dụng cho gì. Các nhà lập kế hoạch đã giả định — hợp lý, với lý do tài trợ — rằng ARPANET sẽ chủ yếu mang các phiên đăng nhập từ xa và truyền tệp cho các nhà nghiên cứu sử dụng các siêu máy tính xa.
Nghiên cứu thấy email đã là khoảng ba phần tư tổng lưu lượng.
Đây là hai năm sau hack của Tomlinson. Không có tiếp thị. Không có bản ghi nhớ ARPA quảng bá nó. Sự tăng trưởng hoàn toàn hữu cơ, và nó đánh úp những người điều hành mạng.
Báo cáo năm 1973 khuyến nghị ARPA coi email một cách nghiêm túc. Cộng đồng sẽ sử dụng nó cho dù ARPA có ủng hộ hay không.
Điều Tomlinson thực sự phát minh
Sản phẩm kỹ thuật nhỏ. Tomlinson đã không phát minh:
- Nhắn tin điện tử như một khái niệm — các công cụ giống SNDMSG cục bộ có trước anh nhiều năm.
- Truyền tệp — CPYNET đã tồn tại.
- Sự chuẩn hóa mail như một giao thức — điều đó đến với RFC 561 (1973) và sau này, dứt khoát, RFC 821 (1982) khi SMTP hình thức hóa những gì mail server nên làm.
Điều anh đã phát minh là quy ước địa chỉ sẽ sống sót qua mọi hệ thống mail được xây trong năm mươi năm kể từ đó:
user@host
Tên người dùng ở bên trái. Host ở bên phải. Giao hàng được quyết định bằng cách nhìn những gì sau @. Toàn bộ hệ thống mail toàn cầu — từ UUCP bang sớm (host!user!user) qua SMTP hiện đại với các bản ghi MX dựa trên DNS — cuối cùng đã chuẩn hóa trên cú pháp của Tomlinson. Ngay cả các hệ thống từ chối mọi thứ khác về mail ARPANET sớm vẫn giữ @.
Cả các ngôn ngữ châu Âu đã phải vay mượn từ mới cho ký tự này — tiếng Ý “chiocciola” (ốc sên), tiếng Hà Lan “apenstaart” (đuôi khỉ), tiếng Ba Lan “małpa” (khỉ), tiếng Đức “Klammeraffe” (khỉ nhện). Nó không có trên hầu hết bàn phím máy đánh chữ châu Âu trước khi Tomlinson làm nó phổ quát. Bây giờ thì có, nhờ anh.
Mô hình dự án phụ không được phép
Bài viết ARPANET gọi đây là “ứng dụng bom tấn tình cờ.” Khuôn khổ đó bán rẻ một mô hình lặp lại trong tin học:
- Email trên ARPANET là một dự án phụ không được phép.
- World Wide Web tại CERN là một dự án phụ không được phép — Tim Berners-Lee phải đề xuất nó ba lần dưới các tên khác nhau trước khi quản lý cho phép anh làm.
- Gmail trong Google là một dự án 20 phần trăm của Paul Buchheit.
- Slack bắt đầu như một công cụ nội bộ tại một công ty game đang thất bại.
Mô hình nhất quán: các nền tảng được xây cho mục đích A thường xuyên phát hiện ra công dụng thực của chúng là mục đích B, và mục đích B gần như luôn nhân văn hơn và ít kỹ thuật hơn các nhà xây dựng mong đợi. ARPA xây một mạng để chia sẻ các chu kỳ CPU khan hiếm. Người ta biến nó thành mạng để gửi mail cho bạn bè nhanh nhất có thể.
Sửa đổi của Tomlinson nhỏ. Bài học thì không. Nếu bạn xây dựng một nền tảng đa mục đích và cho người dùng đủ dây, ứng dụng bom tấn sẽ đến từ một hướng mà bản ghi nhớ tài trợ của bạn không dự đoán — có lẽ là dự án phụ của ai đó, có lẽ với một lý do nghe có vẻ hợp lý cho việc nó không có trong lịch trình chính thức.
Và nếu ứng dụng đó cần một ký tự phân cách: ký hiệu @ đã được dùng.