File Transfer Protocol

File Transfer Protocol eller FTP, ett av de tidigaste populära filöverföringsprotokollen för Internet. FTP är ett kommandobaserat protokoll för överföring av text och binära datafiler. Den första specifikationen skrevs redan 1971.

FTP är på flera sätt ett osäkert protokoll, främst för att lösenord och data skickas i klartext vilket ger en potentiell risk att någon sniffar information från dataströmmen. För att göra filöverföringen säkrare kan man kryptera den med hjälp av SSL eller SSH till exempel genom att köra SFTP. 
Moderna programvaror använder ett grafiskt eller textbaserat gränssnitt som skal för kommandon.

Användningsområden 
Redan långt före World Wide Web fanns värddatorer med filer allmänt tillgängliga för nedladdning. FTP var standardprotokollet för att komma åt filerna. Numera erbjuds filerna vanligen med protokollet HTTP istället, liksom vanliga webbsidor.

Ofta motsvarar det filträd en användare ser vid kontakt med en FTP-server serverns filsystem, indelat i olika underkataloger. En av katalogens filer innehåller vanligtvis beskrivning av de andra filerna. (Namnet brukar vara index eller readme). Det finns inga sökfunktioner inbyggda i FTP-protokollet. Vissa menar att det begränsar protokollet och använder i stället ett annat, till exempel Anarchie-protokollet. När det gäller filarkiv har HTTP via webben blivit det mest använda. FTP används mycket av webbplatsägare för att ladda upp sidor till webbservrar.

Vid kontakt till offentliga filservrar används i allmänhet en konvention kallad ”anonym FTP”. Eftersom allmänheten inte kan antas ha användarnamn på servern ifråga används istället användarnamnet anonymous och som lösenord används den egna e-postadressen. FTP-servern känner igen detta specialfall och vidtar ofta säkerhetsåtgärder, till exempel så att användaren endast har åtgång till en begränsad del av filträdet (Unix: chroot). E-postadressen kan användas för statistik och för att informera om problem med de nedladdade filerna.

Det främsta problemet med FTP är lösenord som skickas i klartext. Eftersom inget egentligt lösenord används vid anonym-FTP är denna form inte en säkerhetsrisk och kan användas som ett alternativ till HTTP. Om en fungerande e-postadress sänds automatiskt av webbläsaren kan detta utnyttjas också för oönskad adressinsamling, till exempel genom att låta någon av bilderna på en sida nås med anonym ftp. Eftersom e-postadressen inte verifieras kan en adress av typen <anonymous@example.com.invalid> användas vid automatiska förbindelser och den riktiga adressen bara då man medvetet kontaktar en pålitlig server.

I de fall lösenord behövs, till exempel vid uppladdning av filer till en egen webbplats, används ofta varianten SSL File Transfer Protocol (FTPS, FTP over SSL), där FTP-förbindelsen eller dess kontrollförbindelse krypteras med SSL/TLS, eller de SSH-baserade SCP eller SSH File Transfer Protocol (som inte använder FTP). SFTP utvecklades rätt sent, då problemen var välkända, vilket bidrog till att FTP-protokollet allmänt kom att uppfattas som osäkert.

Kommunikation 
FTP kommunicerar vanligtvis över TCP-port 20 och 21. Port 21 används för kommandon och port 20 för data. Datakanalen kan öppnas direkt mellan två datorer så att filöverföringen kontrolleras från en tredje dator, datatrafiken behöver alltså inte gå via den kontrollerande datorn. Att TCP används medför att data skickas med felkontroll och automatisk omsändning till skillnad mot överföringar med UDP. 

Det finns en variant av FTP som fungerar över UDP istället för TCP. Den kallas TFTP som är en akronym för engelskans Trivial File Transfer Protocol, ungefär enkelt filöverföringsprotokoll, avsett för enkel utrustning som inte klarar mer avancerade protokoll. Numera har den mesta utrustning ansluten till ett datanät kapacitet för dessa och IETF avråder kraftigt från att använda tftp i nya system.

Passiv eller aktiv ftp 
FTP använder dels en kommandoförbindelse, dels en dataförbindelse. När data skall överföras meddelar klienten vilken port servern skall kontakta för att överföra det efterfrågade datat. Detta är problematiskt om klienten ligger bakom en brandvägg eller NAT/PAT-server som inte analyserar kommunikationen (och därmed inte vet att öppna ett hål till rätt port för dataförbindelsen). Därför använder man ofta "passiv" FTP.

Passiv FTP fungerar så att till skillnad från aktiv FTP där servern öppnar dataförbindelsen, öppnar klienten här både kommandoförbindelsen och dataförbindelsen. Normalt ansluter klienten till servern från en port högre än 1023 till port 21 på servern och upprättar därmed kommandoförbindelsen. Servern öppnar sedan dataförbindelsen från sin port 20 till porten precis ovanför klientens kommandoport. Med passiv FTP öppnar klienten först kommandoförbindelsen från en port ovanför 1023 till port 21 hos servern för att sedan öppna dataförbindelsen från porten ovanför till port 21 hos servern. Klienten har därmed säkerställt att brandväggar och NAT/PAT-översättningar vet att klienten initierat förbindelsen och kommer om inga andra filter är aktiverade att tillåta den.

Moderna brandväggar har i allmänhet särskilda regler för FTP, så att också aktiv FTP fungerar. Genom att analysera trafiken på kommandoförbindelsen vet de att dataförbindelsen skall öppnas till en viss port och kan då justera sina regler så att förbindelsen fungerar.

Grundläggande kommandon 

OBS! Det förekommer även en mängd varianter av kommandon som inte är standardiserade och som bara fungerar i vissa fall.

Se även 
 Lista över FTP-klienter
 SSH File Transfer Protocol - SFTP
 File Transfer Protocol over SSL - FTPS

Externa länkar 

 RFC959, Den officiella FTP-specifikationen

Applikationsskiktsprotokoll
Internethistoria