ymawky: Xây dựng web server bằng ngôn ngữ Assembly ARM64

Công nghệ10 tháng 5, 2026·3 phút đọc

ymawky là một máy chủ web tệp tĩnh (static file server) độc đáo, được viết hoàn toàn bằng ngôn ngữ Assembly ARM64 dành cho MacOS. Dự án này không sử dụng thư viện libc, hỗ trợ nhiều phương thức HTTP và tích hợp các tính năng bảo mật cơ bản.

ymawky: Xây dựng web server bằng ngôn ngữ Assembly ARM64

ymawky: Xây dựng web server bằng ngôn ngữ Assembly ARM64

Trong thế giới lập trình hiện đại, việc xây dựng một ứng dụng web thường sử dụng các ngôn ngữ bậc cao như Python, Node.js hay Go. Tuy nhiên, một nhà phát triển đã quyết định thử thách bản thân ở mức độ thấp nhất bằng cách tạo ra ymawky — một máy chủ web (web server) được viết hoàn toàn bằng ngôn ngữ Assembly (hợp ngữ) cho kiến trúc ARM64.

Giao diện và hoạt động của ymawkyGiao diện và hoạt động của ymawky

ymawky (phát âm là "yuh maw kee") là một máy chủ phục vụ tệp tĩnh, hoạt động dựa trên các syscall trực tiếp mà không cần sự hỗ trợ của thư viện libc chuẩn. Mặc dù được phát triển chủ yếu cho hệ điều hành MacOS (đặc biệt là chip Apple Silicon), tác giả cũng cố gắng giữ mã nguồn có khả năng chuyển đổi (portable) sang các hệ thống Unix khác, mặc dù vẫn cần một số điều chỉnh.

Các tính năng kỹ thuật ấn tượng

Mặc dù được viết bằng ngôn ngữ cấp thấp với độ phức tạp cao, ymawky sở hữu bộ tính năng khá đầy đủ cho một web server cơ bản:

  • Hỗ trợ các phương thức HTTP: GET, PUT, DELETE, HEAD và OPTIONS.
  • Phục vụ video mượt mà: Hỗ trợ header Range: bytes=X-Y, cho phép người dùng tua (scrubbing) video khi phát trực tuyến mà không cần tải toàn bộ file.
  • Xử lý URL thông minh: Tự động giải mã các ký tự percent-encoded (ví dụ %20 thành khoảng trắng) và chặn các cuộc tấn công path traversal (dùng ../ để truy cập file hệ thống).
  • Liệt kê thư mục: Có khả năng hiển thị danh sách file và thư mục khi người dùng truy cập vào một đường dẫn là thư mục.

Bảo mật và Hiệu suất

Dù là một dự án mang tính chất thử nghiệm ("để tìm kiếm ý nghĩa cuộc sống" theo tác giả), ymawky vẫn được trang bị các lớp bảo mật nghiêm ngặt:

  • Chống tấn công Slowloris: Yêu cầu dữ liệu phải được nhận trong vòng 10 giây. Nếu quá thời gian này, kết nối sẽ bị đóng để ngăn chặn tấn công từ chối dịch vụ (DoS).
  • Cơ chế PUT an toàn: Khi tải file lên (PUT), dữ liệu sẽ được ghi vào một file tạm thời trước khi đổi tên (rename) sang file đích. Điều này đảm bảo tính nguyên tử, ngăn chặn việc file bị hỏng hoặc ghi đè một phần do quá trình tải lên bị gián đoạn.
  • Chặn symlink: Server từ chối phục vụ các file là symbolic link để tránh các lỗ hổng bảo mật tiềm ẩn.

Cách thức hoạt động

ymawky sử dụng mô hình "fork-per-connection", nghĩa là với mỗi kết nối mới, nó sẽ tạo ra một tiến trình con để xử lý. Điều này khác với các web server hiện đại thường dùng các mô hình bất đồng bộ (async) hoặc thread pool.

Để chạy thử nghiệm, người dùng cần cài đặt Xcode Command Line Tools và sử dụng lệnh make để biên dịch. Server mặc định sẽ chạy trên địa chỉ 127.0.0.1:8080 và phục vụ các tệp nằm trong thư mục www/.

Dự án này không chỉ là một bài tập lập trình thú vị mà còn là cơ hội tuyệt vời để hiểu sâu hơn về cách hệ điều hành quản lý mạng, bộ nhớ và các tài nguyên ở mức độ kernel.

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