Phân tích Giao thức FTP: Cơ Chế Hoạt Động và Mã Trả Lời

FTP (File Transfer Protocol) là giao thức tiêu chuẩn cho việc chuyển tải tập tin qua mạng, được định nghĩa trong RFC 959. Giao thức này không phải là dịch vụ mà là cơ chế giao tiếp, với các ứng dụng triển khai như vsftpd, Pure-FTPd, FileZilla Server. Bài viết tập trung vào ba khía cạnh chính: chế độ hoạt động, lệnh điều khiển và mã phản hồi.

Chế độ kết nối

FTP sử dụng hai kết nối TCP riêng biệt: một cho lệnh điều khiển (port 21), một cho dữ liệu (port 20 hoặc ngẫu nhiên). Hai chế độ chính:

  • Chế độ chủ động: Máy chủ kết nối đến cổng được chỉ định bởi client (cổng 20 → client)
  • Chế độ bị động: Client kết nối đến cổng được chỉ định bởi máy chủ (client → máy chủ)

Lý do sử dụng chế độ bị động phổ biến: hầu hết client đều ở trong mạng nội bộ (NAT), máy chủ không thể kết nối trực tiếp đến client.

Lệnh điều khiển cơ bản

LệnhMô tả
USERXác thực tên người dùng
PASSTruyền mật khẩu
CDUPChuyển lên thư mục cha
RETRTải xuống tập tin
STORTải lên tập tin
PASVChuyển sang chế độ bị động
PORTChỉ định cổng dữ liệu (format: IP,IP,IP,IP,PORT1,PORT2)

Mã phản hồi

Các mã phản hồi được phân loại theo cấu trúc:

  • 2xx: Lệnh thành công
  • 3xx: Cần phản hồi tiếp theo
  • 4xx: Lỗi tạm thời
  • 5xx: Lỗi vĩnh viễn

Ví dụ:

Mô tả
220Dịch vụ sẵn sàng cho kết nối mới
230Đăng nhập thành công
250Thao tác tập tin hoàn tất
150Bắt đầu kết nối dữ liệu
226Kết nối dữ liệu hoàn tất
425Không mở được kết nối dữ liệu
550Tập tin không tồn tại

Ví dụ bắt gói tin

Phân tích kết nối FTP qua Wireshark:

1. Khởi tạo kết nối

220 (vsFTPd 3.0.3)
OPTS UTF8 ON
200 Always in UTF8 mode.

2. Đăng nhập

USER anonymous
331 Please specify password.
PASS guest@domain.com
230 Login successful.

3. Tải xuống tập tin

PORT 10,0,0,5,150,120
200 PORT command successful.
RETR data.bin
150 Opening BINARY mode data connection for data.bin (1024 bytes).
226 Transfer complete.

Giải thích PORT: Cổng = 150*256 + 120 = 38520

Thẻ: ftp TCP RFC 959

Đăng vào ngày 24 tháng 5 lúc 14:54