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

redigera

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

redigera

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

redigera

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

redigera
Kommando Beskrivning
? Visar hjälp och information om ftp-kommandon.
ascii Sätter överföringen till textläge vilket gör att textfiler och skript förblir kör- och läsbara. Detta genom att styrtecken som till exempel nyradstecken konverteras till att passa mottagande operativsystem.
binary Sätter överföringen till binärläge vilket gör att filen överförs oförändrad. Används för övriga filtyper, som därmed inte förstörs av konverteringen.
bye Lämnar ftp-servern och ftp-miljön. Samma som quit.
cd ABC Byter mapp till sökvägen ABC på ftp-servern.
close ABC Lämnar ftp-servern ABC men lämnar ftp-miljön öppen.
delete ABC Tar bort filen ABC (Samma som rm i UNIX).
get ABC Kopierar filen ABC från ftp-servern till mappen där man står på lokal dator.
get ABC DEF Kopierar filen ABC från ftp-servern till sökvägen DEF på lokal dator.
help Listar tillgängliga ftp-kommandon.
lcd ABC Ändrar aktuell mapp på lokal dator till sökvägen ABC.
ls Listar innehållet i mappen där man står på ftp-servern.
mkdir Skapar en ny mapp i mappen där man står på ftp-servern.
mget Hämtar flera filer från ftp-server till mappen där man står på lokal dator. Frågar för varje fil.
mget * Hämtar alla filer som passar * från ftp-server till mappen där man står på lokal dator.
mput Skickar flera filer från mappen där man står på lokal dator till ftp-server. Frågar för varje fil.
mput * Skickar alla filer som passar * från mappen där man står på lokal dator till ftp-server.
open loke Öppnar en anslutning mot ftp-servern loke.
put ABC Skickar filen ABC från mappen där man står på lokal dator till ftp-server.
pwd Visar sökvägen till mappen där man står på ftp-servern.
quit Lämnar ftp-servern och ftp-miljön. Samma som bye.
rmdir ABC Tar bort mappen med sökvägen ABC på ftp-serven.

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

Se även

redigera

Externa länkar

redigera