MoofTCP: ngăn xếp TCP/IP mới thay thế MacTCP trên Mac 68k
MoofTCP là bản thay thế tương thích hoàn toàn cho MacTCP của Apple, chạy trên máy Mac 68k hệ System 6 với ngăn xếp TCP/IP viết lại từ đầu bằng C, kèm DHCP và trình cài đặt riêng. Dự án nhắm tới độ tin cậy, độ trễ thấp và tiết kiệm bộ nhớ, được tối ưu cho Mac Classic chỉ 4 MB RAM.
Một dự án mã nguồn mở mới mang tên MoofTCP đang thu hút sự chú ý của cộng đồng những người yêu máy Mac cổ: đây là bản thay thế hiện đại cho MacTCP — ngăn xếp giao thức mạng do Apple phát hành từ nhiều thập kỷ trước — trên các dòng Mac 68k chạy System 6.
Điểm đáng chú ý không nằm ở tính mới của giao thức TCP/IP, mà ở cách nó được viết lại từ đầu bằng C khả chuyển (portable C), được tối ưu đến từng byte để chạy trên một chiếc Mac Classic chỉ có 4 MB RAM.
Huy hiệu giấy phép MIT của dự án
Vì sao cần thay thế MacTCP?
MacTCP vẫn được tác giả đánh giá là "tuyệt vời", nhưng đã quá cũ. Trên một chiếc Mac Classic 4 MB gắn adapter mạng qua SCSI như BlueSCSI, ngăn xếp này phản hồi chậm, ngốn bộ nhớ và khó thiết lập.
MoofTCP đặt ra ba ưu tiên theo đúng thứ tự sau:
- Độ tin cậy: không treo máy, không rò rỉ bộ nhớ, không bất ngờ khi ứng dụng thoát.
- Độ trễ thấp cho các tác vụ tương tác, ví dụ gõ lệnh trong phiên telnet.
- Thông lượng, đủ để xử lý những tác vụ gần với nhu cầu hiện đại.
Tất cả những điều đó phải đạt được mà không dùng nhiều bộ nhớ thường trú hơn MacTCP.
Tương thích hoàn toàn, nhưng ruột là mới
MoofTCP triển khai giao diện trình điều khiển .IPP của MacTCP (hỗ trợ TCP, UDP và ICMP echo) cùng bộ phân giải tên dnrp. Nhờ vậy, các chương trình viết cho MacTCP chạy nguyên vẹn mà không cần sửa đổi.
Bên dưới lớp giao diện đó là một ngăn xếp TCP/IP hoàn toàn mới, đi kèm các thành phần:
- Bảng điều khiển (control panel) riêng và trình cài đặt riêng.
- DHCP client tích hợp, có thể chọn cấp địa chỉ động hoặc đặt địa chỉ IP cố định.
- MoofTCP Lite: bản không có DHCP, tiết kiệm khoảng 5 KB bộ nhớ hệ thống. Cả hai bản nằm trong cùng một trình cài đặt, chỉ cần tick chọn.
Giao diện bảng điều khiển MoofTCP
Trình cài đặt được thiết kế khá chu đáo cho môi trường cũ: nó dời các tệp của MacTCP sang một bên, cài MoofTCP, và nút Remove sẽ khôi phục mọi thứ về đúng trạng thái ban đầu. Một bản cài bị gián đoạn giữa chừng có thể tự sửa.
Ngoài ra, MoofTCP nhận biết MultiFinder: khi thoát một ứng dụng còn kết nối đang mở, nó tự dọn dẹp tài nguyên. Công cụ chẩn đoán MoofDiag ghi lại nhật ký trong bộ nhớ để phục vụ việc báo lỗi.
Yêu cầu và mức tiêu thụ bộ nhớ
MoofTCP được thử nghiệm trên một chiếc Mac Classic thật (System 6.0.8, 4 MB RAM, BlueSCSI v2 WiFi với DaynaPORT) và trên trình giả lập Snow.
- Máy cần System 6.0.8 và một adapter Ethernet cung cấp trình điều khiển .ENET0; bản thân MoofTCP không kèm trình điều khiển mạng.
- Mã trình điều khiển chiếm 95.623 byte ở bản đầy đủ và 90.722 byte ở bản Lite.
- Bộ nhớ heap hệ thống còn trống sau lần mở đầu tiên trên máy thật: khoảng 30,7 KB.
Màn hình cài đặt của MoofTCP
Về khả năng tương thích ứng dụng, các chương trình sau đã được thử: Flynn (telnet) chạy tốt trên cả máy thật lẫn trình giả lập; Wikipedia Reader cũng vậy; MacTCP Watcher, NCSA Telnet, Fetch (FTP) và TurboGopher chạy trên trình giả lập; Eudora khởi động được nhưng chưa thử gửi mail.
Hạn chế đã biết
Dự án thẳng thắn liệt kê những điểm chưa hoàn thiện:
- Không hỗ trợ IPv6.
- Mới chỉ thử với trình điều khiển DaynaPORT trên System 6.0.8.
- DHCP ở mức cơ bản: không có RELEASE lease, không có INIT-REBOOT và không dò xung đột địa chỉ. Trong lúc chạy DHCP, các chương trình không thể dùng cổng UDP 68. Nếu không có DHCP server, lần mở đầu tiên sẽ chờ khoảng 10 giây rồi thất bại.
Xây dựng và kiểm thử
Phần lõi ngăn xếp TCP/IP trong thư mục core/ không dùng malloc và không có trạng thái toàn cục (global state), được kiểm thử trên máy tính để bàn bằng AddressSanitizer và UBSan cùng các bộ fuzzer. Việc build chỉ cần Docker — image Retro68 đã ghim phiên bản sẽ được kéo về tự động.
Các bài kiểm thử trên trình giả lập cần phần mềm hệ thống Apple và image DaynaPORT của BlueSCSI, người dùng phải tự cung cấp vì không nằm trong kho mã.
Dự án phát hành theo giấy phép MIT. MoofTCP không chứa mã của Apple hay bên thứ ba; tác giả cho biết đã dùng Claude Code trong quá trình phát triển, với phần lập kế hoạch và kiểm thử do con người đảm nhận. Trong danh sách việc cần làm có kế hoạch làm lại DaynaPORT với tên MoofPort, rà soát mã BlueSCSI để tích hợp chặt hơn và tối ưu thuật toán cho các hệ thống nhỏ hơn.
Góc nhìn
Với các kỹ sư phần mềm Việt Nam, MoofTCP là một bài học thực tế về việc viết lại một lớp hạ tầng cũ mà vẫn giữ nguyên hợp đồng giao diện (interface contract). Việc triển khai đúng giao diện .IPP khiến mọi ứng dụng cũ chạy được mà không cần sửa — đây chính là cách tiếp cận đáng tham khảo khi bạn phải thay thế một thư viện hay dịch vụ legacy trong hệ thống đang vận hành.
Cách dự án tách lõi ngăn xếp thành mã C khả chuyển, không cấp phát động và không trạng thái toàn cục, rồi kiểm thử trên máy tính để bàn bằng sanitizer và fuzzer, cũng là một mô hình tốt: phần khó nhất được kiểm chứng độc lập với phần cứng đích, vốn rất khó tự động hóa. Với những nhóm còn phải bảo trì hệ thống nhúng hoặc thiết bị biên (edge) tài nguyên hạn chế, đây là hướng tổ chức mã đáng cân nhắc.
Nguồn: github.com (bài gốc ngày 06 tháng 11, 2026) · Quy trình biên tập


