Phần mềm truyền file và giao thức FTP

    0

    Hệ thống phần mềm truyền file FPT

    Hệ thống phần mềm FTP bao gồm hai phần mềm độc lập, FTP client và FTP server. Hai phần mềm này tương tác với nhau sử dụng giao thức FTP.

    Cấu trúc chung của hệ thống phần mềm này được trình bày ở hình dưới đây.

    Phần mềm server bao gồm 2 thành phần: Server Protocol Interpreter (viết tắt la Server PI) và Server Data Transfer Process (viết tắt là Server DTP). Ngoài ra, server phải làm việc được với hệ thống file trên máy chủ.

    Phần mềm client bao gồm 3 thành phần: User Protocol Interpreter (User PI), User Data Transfer Process (User DTP), User Interface. Client cũng phải làm việc được với hệ thống file trên máy cục bộ.

    Server PI chịu trách nhiệm duy trì một liên kết TCP với User PI. Liên kết TCP này được thiết lập sau khi client xác thực hành công, được duy trì đến khi client đăng xuất, hoặc bị server hủy bỏ (khi client không tương tác quá lâu). Liên kết TCP này được gọi là liên kết điều khiển hoặc kênh điều khiển.

    Server DTP chịu trách nhiệm thiết lập liên kết TCP thứ hai với User DTP khi client có yêu cầu truyền tải dữ liệu (tải file về, tải file lên, lấy danh sách file và thư mục). Liên kết này chỉ được thiết lập tạm thời phục vụ truyền dữ liệu. Sau khi hoàn thành truyền dữ liệu, liên kết này sẽ bị hủy bỏ. Liên kết TCP thứ hai này được gọi là liên kết dữ liệu hoặc kênh dữ liệu.

    Client có thêm thành phần User Interface. Đây là thành phần giúp người dùng cuối sử dụng phần mềm client. Server không có thành phần tương ứng. User Interface chuyển đổi lệnh của người dùng thành lệnh / nhóm lệnh FTP tương ứng để đưa lên kênh điều khiển. Khi nhận được phản hồi, User Interface chuyển đổi thành dạng người dùng có thể sử dụng. Lệnh của UI và lệnh của FTP là khác nhau.

    Giao thức FTP

    Giao thức FTP (File Transfer Protocol) là một giao thức internet tiêu chuẩn dùng để truyền tệp tin giữa các máy tính qua mạng TCP/IP. Giao thức này chủ yếu được sử dụng trong hệ thống phần mềm FTP. Giao thức này cũng được tích hợp trong một số môi trường phát triển ứng dụng tích hợp (IDE) để hỗ trợ làm việc với FTP server.

    Giao thức FTP hoạt động theo mô hình request / response và sử dụng dịch vụ giao vận của TCP. FTP sử dụng hai liên kết TCP riêng biệt: một kết nối để truyền lệnh điều khiển (gọi là kênh điều khiển) và một kết nối để truyền dữ liệu (gọi là kênh dữ liệu). Do sử dụng hai liên kết riêng kết cho truyền lệnh và truyền dữ liệu, FTP được gọi là giao thức có kiểu truyền out-of-band.

    Kênh điều khiển là kênh duy trì liên tục giữa máy khách và máy chủ để trao đổi các lệnh và phản hồi. Kênh này truyền truy vấn (từ client) và phản hồi (từ server) dưới dạng chuỗi văn bản.

    Kênh dữ liệu là kênh tạm thời được thiết lập để truyền tải các tệp tin hoặc danh sách thư mục. Kênh này truyền tải dữ liệu ở nhiều dạng, bao gồm cả văn bản và nhị phân, và cũng có thể thực hiện mã hóa nén đơn giản.

    Lệnh FTP

    Các lệnh của giao thức FTP được gửi từ khách FTP đến máy chủ FTP để yêu cầu các hành động nhất định. Các lệnh này có thể được phân loại thành các nhóm sau:

    – Lệnh điều khiển kết nối: Là các lệnh liên quan đến việc thiết lập, duy trì và ngắt kết nối giữa khách và máy chủ. Ví dụ: USER, PASS, QUIT, REIN.

    – Lệnh truyền tải dữ liệu: Là các lệnh liên quan đến việc chuyển dữ liệu giữa khách và máy chủ. Ví dụ: RETR, STOR, APPE, LIST, NLST.

    – Lệnh điều khiển truyền tải: Là các lệnh liên quan đến việc thiết lập các tham số cho việc truyền tải dữ liệu. Ví dụ: TYPE, MODE, STRU, ALLO.

    – Lệnh điều khiển thư mục: Là các lệnh liên quan đến việc quản lý các thư mục và tệp tin trên máy chủ. Ví dụ: CWD, CDUP, PWD, MKD, RMD, DELE, RNFR, RNTO.

    – Lệnh thông tin: Là các lệnh liên quan đến việc yêu cầu hoặc cung cấp các thông tin về khách, máy chủ hoặc truyền tải. Ví dụ: SYST, STAT, HELP, NOOP.

    Các lệnh của giao thức FTP có thể được gửi bằng cách sử dụng phần mềm khách FTP hoặc bằng cách sử dụng cửa sổ dòng lệnh của hệ điều hành. Các lệnh này có thể có hoặc không có các tham số đi kèm. Các lệnh này phải tuân theo cú pháp và ngữ pháp được quy định trong RFC 959.

    Phản hồi FTP

    Phản hồi lệnh của giao thức FTP là các chuỗi ký tự được gửi từ máy chủ FTP đến máy khách FTP để thông báo trạng thái của các yêu cầu được gửi từ máy khách. Mỗi phản hồi lệnh bao gồm một bộ ba chữ số có dạng xyz và một thông điệp văn bản tùy chọn. 

    Mã phản hồi và thông điệp viết tách nhau bởi một dấu cách nếu chỉ có 1 dòng duy nhất. Nếu có nhiều dòng phản hồi, mỗi dòng sẽ được viết theo dạng: xyz-thông điệp (dấu -). Riêng dòng cuối cùng sẽ được viết là xyz thông điệp (dấu cách) 

    Trong mã phản hồi, chữ số đầu tiên chỉ ra nhóm phản hồi, chữ số thứ hai chỉ ra loại phản hồi trong nhóm và chữ số thứ ba chỉ ra trường hợp cụ thể của loại phản hồi. 

    Các nhóm phản hồi được xác định như sau:

    – 1xx: Phản hồi tạm thời, yêu cầu máy khách chờ đợi phản hồi tiếp theo.

    – 2xx: Phản hồi thành công, yêu cầu của máy khách đã được hoàn thành hoặc được chấp nhận.

    – 3xx: Phản hồi liên quan đến người dùng, yêu cầu máy khách cung cấp thông tin xác thực hoặc xác nhận một hành động.

    – 4xx: Phản hồi lỗi của máy khách, yêu cầu của máy khách không hợp lệ hoặc không thể thực hiện được do một lý do nào đó.

    – 5xx: Phản hồi lỗi của máy chủ, máy chủ không thể hoàn thành yêu cầu của máy khách do một lỗi nội bộ hoặc một vấn đề kỹ thuật.

    Ví dụ về một số phản hồi lệnh của giao thức FTP:

    – 200 OK: Yêu cầu thành công.

    – 220 Service ready: Máy chủ sẵn sàng cho phiên mới.

    – 230 User logged in: Người dùng đã đăng nhập thành công.

    – 331 User name okay, need password: Tên người dùng hợp lệ, cần mật khẩu.

    – 425 Can’t open data connection: Không thể mở kết nối dữ liệu.

    – 530 Not logged in: Người dùng chưa đăng nhập hoặc sai thông tin xác thực.

    – 550 Requested action not taken: Yêu cầu không được thực hiện, có thể do tệp không tồn tại hoặc không có quyền truy cập.

    Thiết lập kênh điều khiển

    Quy trình thiết lập kênh điều khiển của giao thức FTP là như sau:

    – Bước 1: Máy khách FTP mở một kết nối TCP đến máy chủ FTP trên cổng 21 (cổng mặc định cho kênh điều khiển FTP).

    – Bước 2: Máy chủ FTP gửi một thông báo chào đón đến máy khách FTP và chờ yêu cầu đăng nhập từ máy khách.

    – Bước 3: Máy khách FTP gửi tên người dùng và mật khẩu đến máy chủ FTP để xác thực danh tính của mình.

    – Bước 4: Nếu xác thực thành công, máy chủ FTP gửi một thông báo xác nhận đến máy khách FTP và cho phép máy khách truy cập vào hệ thống tệp của máy chủ.

    – Bước 5: Máy khách FTP có thể gửi các lệnh điều khiển đến máy chủ FTP để thực hiện các thao tác như liệt kê, tạo, xóa, di chuyển, đổi tên các tệp hoặc thư mục trên máy chủ.

    Kênh điều khiển của giao thức FTP được duy trì trong suốt phiên làm việc giữa máy khách và máy chủ. Để kết thúc phiên làm việc, máy khách FTP có thể gửi lệnh QUIT đến máy chủ FTP để đóng kết nối TCP.

    Thiết lập kênh dữ liệu

    FTP có hai chế độ kênh dữ liệu: chế độ chủ động (active mode) và chế độ thụ động (passive mode). Trong chế độ chủ động, máy khách mở một cổng ngẫu nhiên và gửi thông tin cổng này cho máy chủ qua kênh điều khiển. Máy chủ sau đó mở kết nối từ cổng 20 của nó đến cổng của máy khách để thiết lập kênh dữ liệu. Trong chế độ thụ động, máy chủ mở một cổng ngẫu nhiên và gửi thông tin cổng này cho máy khách qua kênh điều khiển. Máy khách sau đó mở kết nối từ cổng ngẫu nhiên của nó đến cổng của máy chủ để thiết lập kênh dữ liệu.

    Quy trình thiết lập kênh dữ liệu kiểu thụ động của giao thức FTP như sau:

    – Bước 1: Máy khách gửi lệnh PASV qua kênh điều khiển để yêu cầu máy chủ sử dụng chế độ thụ động.

    – Bước 2: Máy chủ mở một cổng ngẫu nhiên và gửi phản hồi 227 với thông tin cổng này cho máy khách qua kênh điều khiển.

    – Bước 3: Máy khách gửi lệnh lấy dữ liệu (như RETR hoặc STOR) với tên tệp tin muốn truyền qua kênh điều khiển để yêu cầu máy chủ bắt đầu truyền tải.

    – Bước 4: Máy khách mở kết nối từ cổng ngẫu nhiên của nó đến cổng của máy chủ để thiết lập kênh dữ liệu.

    – Bước 5: Máy chủ và máy khách bắt đầu truyền tải tệp tin qua kênh dữ liệu.

    – Bước 6: Sau khi truyền tải xong, máy chủ và máy khách đóng kết nối kênh dữ liệu và gửi phản hồi 226 qua kênh điều khiển để xác nhận hoàn thành quá trình truyền tải.

    Quy trình thiết lập kênh dữ liệu kiểu chủ động gồm các bước sau:

    – Máy khách FTP sẽ cung cấp một cổng chưa dùng và bắt đầu lắng nghe trên cổng đó.

    – Máy khách sẽ dùng lệnh FTP PORT để báo cho máy chủ là nó đang lắng nghe trên cổng nào.

    – Máy chủ FTP sẽ dùng cổng 20 để khởi tạo một kết nối về máy khách.

    – Máy chủ sẽ gửi và nhận dữ liệu qua kết nối này cho đến khi hoàn thành hoặc bị ngắt.

    Quy trình thiết lập kênh dữ liệu kiểu chủ động của giao thức FTP có ưu điểm là đơn giản và dễ hiểu, nhưng có nhược điểm là có thể bị chặn bởi các tường lửa hoặc NAT ở phía máy khách.

    Theo dõi
    Thông báo của
    guest

    0 Thảo luận
    Phản hồi nội tuyến
    Xem tất cả bình luận