Distributed FTP system for multi-node environments, built as part of a Distributed Systems course.
Implements core FTP functionalities based on RFC 959, with a modular client-server architecture designed for concurrency, fault tolerance, and scalable file synchronization.
FTP-Distributed is a Python-based implementation of a distributed FTP protocol. It features:
- 🖥️ FTP Server: Handles client connections, authentication, and file operations (upload/download/list).
- 📦 FTP Client: Connects to the server, sends commands, and manages local file interactions.
- 🔁 RFC 959 Compliance: Implements standard FTP commands and control/data channel separation.
- 🌐 (Experimental)Distributed Design: Built to support multi-node deployment and concurrent sessions.
+-------------+ Control Channel +-------------+
| FTP Client | <-------------------------> | FTP Server |
+-------------+ +-------------+
| |
|-------> Data Channel (File Transfer) ----|
-
Control Channel: Manages command exchange (e.g., USER, PASS, LIST, RETR, STOR).
-
Data Channel: Handles actual file transfer operations, separated per RFC 959.