File Transfer Protocol (FTP) er en standardisert applikasjons-protokoll for overføring av filer i et TCP/IP-basert nettverk, og involverer to parter - en 'klient' og en 'server'. Protokollen er definert i standarddokumentet RFC 959 med senere utvidelser og definerer funksjoner, kommandoer og mekanismer for overføring og manipulering av filer mellom klient og tjener. Den angir ikke hvordan brukergrensesnittet skal implementeres, men det har i årenes løp utviklet seg en de facto standard for FTP-klienter med kommandolinje. Hele eller deler av protokollen ble etterhvert innebygget i mange såkalte 'file-managers', nettlesere og spesialprogrammer som FileZilla,[1] et åpen kildekode prosjekt som omfatter både klient og tjener. For nettlesere endret dette seg etter 2020, da FTP-støtten først ble 'utkoblet', senere fjernet fra de de mest populære variantene – som Chrome, Firefox og Safari.[2][3]

Klient og tjener i FTP-sammenheng er programmer, ikke maskiner. En FTP-server kan like gjerne kjøres på en liten PC som en stor server-maskin. For eksempel har programpakken MTCP for MS-DOS en enkel server-implementasjon i tillegg til en FTP-klient. Likeledes kan FTP-servere også kjøres på laptops og IoT-enheter helt ned til frimerke-størrelse.[4]

En FTP-server er et bakgrunnsprogram som lytter etter forespørsler fra nettverket, etablerer forbindelse og sørger for autentisering (innlogging). Forbindelsen opprettholdes til klienten logger seg av eller til manglende aktivitet trigger automatisk utlogging, typisk 15 minutter. Mange servere støtter såkalt anonym innlogging, som betyr at hvem som helst får tilgang, typisk til et begrenset antall funksjoner - som å liste og hente filer. Anonym FTP var viktig for distribusjon av programvare, oppdateringer, dokumenter og annen åpen informasjon før HTTP overtok oppgaven for brukere flest.

FTP-klienten er ofte et brukerprogram med grafisk brukergrensesnitt eller kommandolinje der brukeren kan hente, sende og manipulere filer på serveren.[5] FTP-klienter finnes for de fleste plattformer, men er ikke nødvendigvis installert – ofte av sikkerthetsmessige årsaker. Protokollen er åpen, uten kryptering og dermed enkel å 'avlytte' med lett tilgjengelige verktøy som tcpdump og Wireshark. FTPS eller 'FTP Secure', som sikrer både autentisering og dataoverføring via TLS/SSL, løser denne utfordringen, men er lite implementert – blant annet fordi det i dag finnes bedre og sikrere alternativer for de fleste anvendelser (mer om sikkerhet nedenfor).

Historie

rediger

FTP er Internettets eldste verktøy og første applikasjons-protokoll med opprinnelse tilbake til 1970 (RFC 114). I tillegg til å muliggjøre overføring av filer og data mellom digitale systemer i sann tid, ble FTP fundament for de første Internett-baserte e-post implementasjonene.[6]

I parallell med utviklingen av først ARPAnettet og deretter Internettet er FTP-standarden blitt revidert og utvidet en rekke ganger, senest i 2007 (RFC 3659). Med RFC 765 i 1980 fikk FTP den form og de protokoll-mekanismer den har i dag. Ytterligere funksjonelle og sikkerhetsrelaterte utvidelser kom i 1985, 1997, 1999 og til slutt i 2007.[7] De mange utvidelsene til tross er FTP i dag med få unntak bakover-kompatibel med standarden fra 1980 (RFC 765).

Utvidelsene har gitt FTP tilstrekkelig funksjonalitet til å implementere fullfunksjons nettverksbaserte filsystemer (engelsk 'remote file systems'). Et eksempel på en slik implementasjon er CurlFtpFS, som via FTP kobler serverens filsystem inn i det lokale filsystemet på en Linux maskin – etter samme modell som for eksempel NFS.[8] Likeledes har en rekke utviklingsverktøy bygget inn FTP i sin egen filbehandling slik at filer på andre maskiner kan manipuleres og redigeres som om de var lokale, for eksempel BBedit.[9]

Protokoll

rediger

Som applikasjonsprotokoll er FTP basert på TCP for pålitelig overføring av kommandoer og data. Protokollen definerer en kommandokanal der klient og tjener utveksler enkle tekst-baserte kommandoer og like enkle responser. For eksempel vil kommandoen 'RETR fil1.dat' be serveren om å sende angitte fil hvis den finnes og er tilgjengelig. Svaret fra serveren vil være '200 OK' hvis alt er i orden, eventuelt en annen kode som indikerer hvilken feil som oppsto. Deretter starter overføringen, som foregår via en egen datakanal. Kommandokanalen – i realiteten en enkel Telnet-forbindelse – er åpen så lenge innloggingen varer, mens datakanaler åpnes og lukkes for hver transaksjon. TCP-port 21 for kommando og 20 for data er standard, men både klient og server kan velge andre porter. FTP-protokollen definerer også kommandoer for manipulering av filer, konvertering av data og filnavn, og håndtering av ulike tegnsett. En del av disse er i praksis utgått på dato, men fortsatt med i spesifikasjonen.

I nyere tid har FTP fått flere modi. Opprinnelig ble datakanalen som etableres for hver transaksjon, åpnet og lukket av serveren. Dette kalles 'aktiv modus'. Med introduksjonen av brannmurer som stenger for 'tilfeldige' forbindelser utenfra, og NAT-protokollen, som muliggjør mange nettklienter på samme Internett-adresse, er dette ikke lenger mulig. Derfor ble 'passiv modus' introdusert, der rollene er byttet og klienten har ansvaret for datakanalen.[10] Den praktiske forskjellen er imidlertid minimal og siden NAT og brannmurer er så utbredte, er passiv modus i dag standard for de fleste FTP klient-implementasjoner.

Sikkerhet

rediger

Behovet for å tenke sikkerhet var fraværende da FTP ble til på 1970-tallet og utvidet på 1980-tallet. Dette problemet er felles for alle de tidlige tjeneste-protokollene i Internettet, som Telnet, SMTP, SNMP, POP og IMAP. Alle data, også brukernavn og passord ved innlogging, blir sendt i klartekst og kan 'sniffes' på nettet med enkle verktøy. I kompatibilitetens navn gjelder dette fortsatt hvis de opprinnelige mekanismene brukes. RFC 2228 spesifiserer FTPS, utvidelser som via TLS/SSL standarden sikrer både autentisering og overføring, og legger til mulighet for autorisering, som tidligere ikke var tilgjengelig i FTP.

FTPS og RFC 2228 introduserer to varianter av kryptert FTP, 'implisitt FTPS' og 'eksplisitt FTPS'. Førstnevnte lytter på en annen port enn standard FTP og setter opp sikkerhetsmekanismene automatisk, mens sistnevnte, den eksplisitte varianten, utvider den vanlige serveren med nye kommandoer. Implisitt FTPS ble senere, i RFC 3659, fjernet. I dag er kun eksplisitt FTPS, noen ganger kalt FTPES, i praktisk bruk. Navnelikheten til tross, FTPS er ikke det samme som SFTP.

Forskjeller fra HTTP

rediger

HTTP retter i hovedsak opp feilene i FTP som gjorde det upraktisk for mange små, kortvarige dataoverføringer, typiske for nettsider.

FTP bruker en tilstandsbevarende tilkobling som opprettholder den nåværende arbeidskatalogen og andre flagg, og krever en ekstra tilkobling for hver dataoverføring som benyttes til å overføre data.[11][12][13] I "passiv" modus går denne ekstra tilkoblingen fra klienten til serveren, mens i "aktiv" modus som standard går den fra serveren til klienten. På grunn av den åpenbare rollebyttingen i aktiv modus og tilfeldige portnumre for alle dataoverføringer, sliter brannmurer og NAT-gatewayer med FTP. HTTP er en tilstandsløs protokoll som multiplekserer styring og dataoverføring over en enkelt tilkobling fra klient til server ved kjente portnumre, noe som gjør det enkelt å passere gjennom NAT-gatewayer og administrere brannmurer.[14][15]

Innstilling av FTP-styringstilkoblingen går ganske sakte[16] på grunn av forsinkelser når alle nødvendige kommandoer sendes og svar venter, så det er vanlig praksis å opprette styringstilkoblingen og holde den åpen for å overføre flere filer i stedet for å bryte og sette opp en ny økt hver gang.[17][18] I motsetning til dette, brøt HTTP opprinnelig tilkoblingen etter hver overføring fordi det var billig. Selv om HTTP senere fikk muligheten til å gjenbruke en TCP-tilkobling for flere overføringer, er den konseptuelle modellen fortsatt uavhengige forespørsler i stedet for en økt.[19][20]

Når overføring via FTP skjer over en datatilkobling, er styringstilkoblingen i ventemodus.[21][22] Hvis overføringen tar for lang tid, kan en brannmur eller NAT bestemme at styringstilkoblingen er brutt og slutte å spore den, noe som fører til at tilkoblingen går tapt og forårsaker forvirring under opplasting.

Referanser

rediger
  1. ^ «FileZilla - The free FTP solution». filezilla-project.org. Besøkt 24. januar 2023. 
  2. ^ «Chrome Platform Status». chromestatus.com. Besøkt 25. januar 2023. 
  3. ^ Vonau, Manuel (7. juli 2021). «Firefox 90 introduces new tracking blocker to fix broken site logins (APK Download)». Android Police (på engelsk). Besøkt 25. januar 2023. 
  4. ^ Mischianti, Renzo (24. januar 2023). «SimpleFTPServer». Besøkt 25. januar 2023. 
  5. ^ Kozierok, Charles M. (2005). «The TCP/IP Guide v3.0». Tcpipguide.com. 
  6. ^ «The Technical Development of Internet Email». IEEE Annals of the History of Computing. IEEE Computer Society. juni 2008. Besøkt 25. januar 2023. 
  7. ^ «[2022] Full Guide - FTP (File Transfer Protocol)». Raysync | High Speed Large File Transfer Solutions (på engelsk). Besøkt 25. januar 2023. 
  8. ^ Reynolds, Luke. «Mount remote ftp directory host locally into linux filesystem». Linux Tutorials - Learn Linux Configuration (på engelsk). Besøkt 25. januar 2023. 
  9. ^ «Bare Bones Software | BBEdit Product Tour». www.barebones.com. Besøkt 25. januar 2023. 
  10. ^ «Active FTP vs. Passive FTP, a Definitive Explanation». slacksite.com. Besøkt 26. januar 2023. 
  11. ^ «What is FTP?». www.educba.com. Besøkt 30. oktober 2024. 
  12. ^ «File Transfer Protocol. FTP Protocol». www.gatevidyalay.com. Besøkt 30. oktober 2024. 
  13. ^ «File Transfer Protocol (FTP)». www.programmersought.com. Besøkt 30. oktober 2024. 
  14. ^ «HyperText Transfer Protocol». www.gatevidyalay.com. Besøkt 30. oktober 2024. 
  15. ^ «HTTP(Hypertext Transfer Protocol) Request and Response». www.slashroot.in. Besøkt 30. oktober 2024. 
  16. ^ «Utforsking av filoverføringsprotokollen». www.filemail.com. Besøkt 30. oktober 2024. 
  17. ^ «Troubleshooting Ftp Connection Timeout Issues In Cpanel Hosting». www.xmarthost.com. Besøkt 30. oktober 2024. 
  18. ^ «Active vs. passive FTP Simplified». www.jscape.com. Besøkt 30. oktober 2024. 
  19. ^ «How To Reuse Http Connections In Go». golang.cafe. Besøkt 30. oktober 2024. 
  20. ^ «HTTP/3 From A To Z: Core Concepts». iodroplet.com. Besøkt 30. oktober 2024. 
  21. ^ «FTP and FTPS ports: an overview». www.cerberusftp.com. Besøkt 30. oktober 2024. 
  22. ^ «What is FTP Port Number?». monovm.com. Besøkt 30. oktober 2024. 

Eksterne lenker

rediger
Servere
Klient til Windows
Klient til Linux
Klient til Macintosh
Web-baserte FTP-klienter

Det finnes flere web-baserte FTP-klienter. phpWebFTP er blant dem. Det er en installasjon av den på thorrune.net[død lenke], mens den offisielle hjemmesiden er her, på v-wijk.net

Alternativer til FTP
  • SCP er en påbygning på SSH for sikker overføring av filer. Funksjonaliteten er modellert etter Unix/Linux cp (copy) kommando og kan overføre enkeltfiler eller hierarkier.
  • SFTP – FTP-lignende med SSH som underliggende protokoll.
  • rsync – Program og mekanisme for filoverføring og synkronisering av filer mellom systemer. Benytter SSH for krypterte overføringer.