FTP
FTP står för File Transfer Protocol och är en standardiserad nätverksprotokoll som används för att överföra filer mellan en klient och en server över ett TCP/IP-baserat nätverk, såsom internet. FTP tillåter användare att ladda upp, ladda ner, radera, flytta, byta namn på filer och kataloger samt utföra andra filhanteringsoperationer, vanligtvis via en FTP-klient.
FTP kan användas i olika sammanhang, såsom uppdatering av filer på en webbserver, överföring av stora datamängder mellan organisationer, eller enkel filöverföring mellan två platser. Det finns två huvudlägen för FTP-överföringar: aktivt och passivt läge, vilka hanterar nätverksanslutningar på olika sätt.
Även om FTP har varit en grundläggande internetteknologi sedan tidigt 1970-tal, har dess användning minskat på grund av säkerhetsproblem, eftersom det inte krypterar dataöverföring, vilket kan leda till att känslig information utsätts. För säkrare filöverföringar används ofta FTPS (FTP Secure) eller SFTP (SSH File Transfer Protocol), som båda tillhandahåller kryptering.
Exempel hur det fungera
För att illustrera hur FTP fungerar, kan vi gå igenom ett exempel där en användare vill ladda upp en fil till en FTP-server:
Starta en FTP-klient
- Användaren startar en FTP-klientprogramvara på sin dator. Detta kan vara ett grafiskt gränssnittsprogram som FileZilla eller ett kommandoradsverktyg som ftp i Linux.
Anslut till FTP-servern
- Användaren skriver in FTP-serverns adress, sitt användarnamn och lösenord för att etablera en kontrollanslutning till servern via port 21.
ftp ftp.example.com
Username: [Användarnamn]
Password: [Lösenord]
FTP fungerar i två olika lägen:
Aktivt läge
I detta läge initierar klienten en kontrollanslutning till serverns kommandotolk via port 21. Servern öppnar sedan en dataanslutning tillbaka till klienten från port 20. Aktivt läge kan orsaka problem med brandväggar och NAT (Network Address Translation), eftersom servern måste kunna initiera anslutningar till klienten.
Passivt läge
I passivt läge, efter att kontrollanslutningen har etablerats, begär klienten att servern ska lyssna på en slumpmässig port för en inkommande dataanslutning från klienten. Detta läge är mer brandväggsvänligt eftersom alla anslutningar initieras av klienten.
FTP använder enkla textbaserade kommandon för att utföra operationer. Detta gör protokollet lätt att implementera och debugga, men det innebär också att innehållet i dessa kommandon (inklusive potentiellt känslig information som användarnamn och lösenord) skickas i klartext över nätverket. Detta är en av anledningarna till att säkrare versioner av FTP har utvecklats, som FTPS, som använder SSL/TLS för att kryptera kontroll- och dataanslutningar, och SFTP, som använder Secure Shell (SSH) protokollet för att säkra filöverföringar.
Välja överföringsläge
Användaren kan välja mellan binärt eller ASCII-överföringsläge beroende på filtypen som ska överföras. Binärt läge används för icke-textfiler som bilder eller program, medan ASCII används för textfiler.
binary
eller
ascii
- Med hjälp av kommandon som ls för att lista filer och cd för att byta katalog, navigerar användaren till den plats på FTP-servern där filen ska laddas upp.
cd /path/to/directory
ls
Överför filen
FTP-servern öppnar en dataanslutning på port 20 (eller en annan port om passivt läge används) och filen överförs.
Överföringen är klar
- När filöverföringen är klar, stängs dataanslutningen och kontrollanslutningen kan avslutas med kommandot quit.
quit
Säkerhet
FTP-säkerhet är en viktig övervägning eftersom användarnamn, lösenord och filinnehåll skickas i klartext över nätverket. I miljöer där säkerhet är en prioritet, rekommenderas det att använda FTPS eller SFTP som krypterar överföringen för att skydda dataintegriteten.
Teknisk nivå
FTP Protokolloperationer
FTP (File Transfer Protocol) är ett applikationslagerprotokoll som använder Transmission Control Protocol (TCP) för att överföra filer mellan en klient och en server. Protokollet består av en serie kommandon och svar som möjliggör navigering i filsystemet, samt uppladdning och nedladdning av filer.
Upprättande av Kontrollförbindelse
En klient initierar en kontrollförbindelse från en lokal port till serverns port 21.
CLIENT: CONNECT TO server.com ON PORT 21 SERVER: 220 Service ready for new user.
Autentisering
Användare autentiserar sig med användarnamn och lösenord.
CLIENT: USER myusername SERVER: 331 User name okay, need password. CLIENT: PASS mypassword SERVER: 230 User logged in, proceed.
Dataförbindelse
- Servern öppnar en dataförbindelse på port 20 eller en passiv port för filöverföring.
CLIENT: PASV SERVER: 227 Entering Passive Mode (h1,h2,h3,h4,p1,p2). CLIENT: CONNECT TO h1.h2.h3.h4 ON PORT p1*256+p2
Filöverföring
Kommandon som STOR och RETR används för att initiera filöverföring.
CLIENT: STOR filename.txt SERVER: 150 File status okay; about to open data connection. (Själva filen överförs via dataförbindelsen.) SERVER: 226 Closing data connection. Requested file action successful.
Kontrollförbindelse Under Överföring
- Kontrollförbindelsen hålls aktiv under filöverföring för att skicka ytterligare kommandon eller kontrollera status.
CLIENT: NOOP SERVER: 200 Command okay.
Avsluta Sessionen
- När överföringen är klar kan användaren avsluta sessionen med QUIT.
CLIENT: QUIT SERVER: 221 Service closing control connection.
Observera att FTP inte är säkert i sitt grundutförande eftersom det skickar all data inklusive lösenord i klartext. För säkrare överföringar bör FTPS eller SFTP användas, vilka krypterar dataöverföringen.