Klik hier om Silverlight te installeren*
Nederland|Sitemap
Microsoft
Techniek 
|Contact
Techniek en trends - Altijd op de hoogte

Zo werkt FTP

Tijdens het uploaden en downloaden van bestanden is het dikwijls het FTP-protocol dat de communicatie verzorgt, ook al merkt u dat vaak niet.
 
Dit artikel onthult de achtergronden en werking van het FTP-protocol.
Achtergrond FTP
Principes FTP
FTP-communicatie van begin tot eind
Resuming
Overdrachtsvormen
Beveiliging van het FTP-protocol
FTP-commando's

Achtergrond FTP

Het File Transfer Protocol of FTP is het langst bekende en tevens het meest solide protocol voor bestandsuitwisseling. Het is tevens een van de pilaren waar het internet op steunt. Immers, vrijwel elke website biedt tegenwoordig te downloaden bestanden aan en - wat voor soort bestand het ook is - het FTP-protocol heeft als taak de overdracht te verzorgen van bestanden van en naar het internet. In de meest voorkomende gevallen is het namelijk een FTP-server, die de te downloaden bestanden aanbiedt en niet -zoals u wellicht zou verwachten- een HTTP-server. Het FTP-verkeer vertegenwoordigt dan ook ruim de helft van alle bestandsoverdrachten op het internet.
 
FTP werd reeds in 1971 ontwikkeld. De specificatie van het huidige FTP-protocol werd in 1985 vastgelegd in RFC 959 en sindsdien is er weinig aan het FTP-protocol veranderd. De meest gebruikte en waarschijnlijk ook de meest bekende FTP-toepassing is het verzenden van (nieuwe) website-pagina's naar een webserver. Daarnaast wordt het protocol ingezet voor het downloaden van bestanden. Een gebruiker kan FTP gebruiken via een eenvoudige commando-interface (bijvoorbeeld een MS-DOS venster binnen Windows) of via een commercieel programma zoals WS-FTP of CUTE FTP.
 

Principes FTP

Het model waarop het FTP-protocol steunt is eenvoudig en 'transparant': het is een bi-directionele, 8-bits georiënteerde communicatie, waarbij gebruikt wordt gemaakt van standaard aanwezige hulpmiddelen. Het FTP-protocol wordt gebruikt om een zogenaamde terminal-terminal communicatie ('linking') tot stand te brengen tussen twee machines. Het principe is gebaseerd op het concept van een Network Virtual Terminal. Kenmerkend voor dit concept zijn:
 
  • de client, de computer die de verbinding maakt en
  • de server, de computer die aan de client diensten beschikbaar stelt.
 
Schematische weergave client-server-verbinding
 
Zodra er een verbinding is tussen client en server staan er twéé kanalen open:
 
  • Het stuurkanaal, waarover uitsluitend FTP-commando's worden uitgewisseld die onder meer de dataoverdracht inleiden. Voor dit kanaal wordt TCP-poort 21 gereserveerd.
  • Het datakanaal, waarover de dataoverdracht plaatsvindt. De User Protocol Interpreter legt de verbinding, zendt een aantal commando's naar de server en verwerkt de terugkomende antwoorden. Hiervoor wordt TCP-poort 20 gebruikt.
 
FTP-commando's bepalen ook de parameters voor de dataoverdracht, zoals de te gebruiken poort of transfermodus. Vanaf het moment dat de server de dataoverdracht start, zal de client de commando's van de server uitvoeren, totdat alle data zijn overgedragen. Het FTP-protocol houdt tijdens de dataoverdracht een 'controleverbinding' in stand.
 

FTP-communicatie van begin tot eind

Een FTP-verbinding kent een aantal fasen:
 
  1. Authentificatie van de controleverbinding en authentificatie van de gebruiker
  2. Opbouw van de dataverbinding
  3. Beëindigen van de verbinding
 
Eerst legt de client verbinding met de FTP-server. De standaardpoorten 20 en 21 moeten ondersteund worden door de software. Mocht voor de FTP-verbinding gebruik gemaakt moeten worden van een andere (niet-standaard) poort dan mag het initiatief daartoe alleen door de cliëntzijde genomen worden. Zodra de verbinding tot stand is gekomen geeft de FTP-server informatie over het systeem. De server verwacht van de client een gebruikersnaam, de server controleert vervolgens deze gebruikersnaam en vordert dan een wachtwoord.
 
FTP staat er om bekend dat een gebruiker anoniem kan inloggen. Is de FTP-server ingesteld op anonieme gebruikers, dan mag de 'anonieme' gebruiker namelijk een zelf gekozen wachtwoord opgeven. Dikwijls is dat het e-mailadres van de gebruiker. Zodra de client is ingelogd op de server (anoniem of met een gebruikersnaam) dan kan hij of zij door de directorystructuur van de server scrollen, bestanden inkijken, verwijderen, kopiëren en verplaatsen. Uiteraard voorzover de client daarvoor gebruiksrechten heeft. Nadat de client alle gewenste handelingen heeft uitgevoerd verbreekt de client de verbinding. Ook de server kan de verbinding verbreken. Dit zal zeker gebeuren wanneer de controleverbinding wegvalt.
 

Resuming

Schermafbeelding: datatransfer met het Retrieve-commandoWanneer er data van de FTP-server worden overgestuurd naar een client, dan is het van belang dat dit zonder dataverlies gebeurt. Verantwoordelijk hiervoor is het TCP-protocol. Het FTP-protocol kent namelijk geen foutcontrole bij het verzenden van data, maar heeft wel een ingebouwde functie die ervoor kan zorgen dat afgebroken datatransfers weer kunnen worden hervat. Binnen het FTP-protocol spreekt men in dat geval van Resuming. De FTP-server weet precies op welk punt de transfer is afgebroken, want dat staat in de zogenaamde 'Restart-Mark' in de Headerbeschrijving van de uitgewisselde datapakketten.
 
Als de verbinding verbroken is, zal de client de datatransfer weer proberen op te pakken door middel van het Restart-commando. De FTP-server zal dit verzoek van de client beantwoorden met een Restart Marker Reply. De server stuurt dan de laatst gemaakte markering, aan de hand waarvan de client zijn ontvangen data kan vergelijken met het Mark-commando. De client komt er zo achter welke data het laatst is ontvangen en stuurt de server met behulp van het Retrieve-commando een opdracht om de data opnieuw te zenden.
 

Overdrachtsvormen

Als data via FTP worden verstuurd, zijn er drie manieren waarop de data kunnen worden overgedragen:
 
  • Stream modus
    Dit is de overdracht van een complete hoeveelheid data van server naar client of visa versa. De dataoverdracht wordt afgesloten met een End-of-File-markering (EOF).
 
  • Block­ modus
    Deze modus komt het meeste voor. De FTP-server deelt de gewenste bestanden in datablokken in. Elk blok data wordt voorzien van gegevens zoals de totale grootte van het datablok en header-informatie voor de Resuming-functie. Verder krijgt elk blok een End-of-Record-markering (EOR).
 
  • Compressed modus
    In deze modus worden gegevens gecomprimeerd verzonden. Doel is een vermindering van het aantal te verzenden datapakketten. Deze modus is wel een aanslag op de resources van zowel client als server, omdat beide zijden druk zijn met het comprimeren van de data respectievelijk het decomprimeren. In compressed modus probeert het FTP-protocol de gegevens zo efficiënt mogelijk te versturen. De codering die wordt toegepast is de zogenaamde Run-Length-codering. Het toegepaste algoritme stopt de informatie in datablokken met een grootte van steeds twee bytes. Dit is overigens de enige compressietechniek die het FTP-protocol ondersteunt.
 
Als eenmaal bekend is hoe de data wordt overgedragen (een van de drie hierboven methodes), is een volgende factor hoe de transmissie zal plaatsvinden. Ook hier kent het FTP-protocol drie varianten of 'transfermodi':
 
  • ASCII
    De ASCII-modus dient in het bijzonder voor de overdracht van tekstbestanden. Alle FTP-toepassingen ondersteunen zowel de ASCII-modus als de standaardmodus.
 
  • EBCDIC
    De Extended Binary Communication Data Interchange Code of EBCDIC (spreek uit: epsudik) is een 8-bit code die gebruikt wordt door IBM mainframe operating systemen, zoals z/OS, s/390, AS/400 en i5/OS.
 
  • Image
    Deze wordt gebruikt voor de overdracht van binaire bestanden. Voordat er data wordt verzonden, komen de FTP-communicatieprogramma's, die aan weerszijden worden gebruikt, overeen dat de bestanden in deze modus zullen worden verstuurd.
 

Beveiliging van het FTP-protocol

IETF: Internet Engineering Task ForceHet FTP-protocol voorziet niet in beveiligingsmaatregelen, behalve de eenvoudige gebruikersauthentificatie, waarbij de gebruikersnaam en het wachtwoord worden gevraagd. Zodra er contact wordt gelegd tussen client en server, worden de gebruikersnaam en het wachtwoord zelfs onversleuteld overgezonden. Hierdoor lopen zowel de client als de server gevaar voor ongewenste meekijkers en om dit risico te beperken is er een aantal uitbreidingen op het FTP-protocol uitgekomen, die de veiligheid verhogen.
 
Deze zijn vastgelegd in het document RFC 2228, dat op de website van de Internet Engineering Task Force gepubliceerd werd onder de werktitel FTP Security Extensions. Bijzondere aandacht daarbij krijgen de gebruikersauthentificatie, de integriteit, de betrouwbaarheid van het datakanaal, het controlekanaal en vooral de versleuteling van gevoelige data.
 
Wat betreft de gebruikersauthentificatie bestaat de aanpassing erin dat de client aan de server meedeelt, welke beveiliging toegepast gaat worden. Hiervoor wordt het AUTH-commando gebruikt. De server accepteert deze beveiliging of weigert hem. Is het antwoord Nee, dan heeft de client de mogelijkheid om een ander beveiligingsmechanisme te kiezen. Hij kan daarmee net zolang doorgaan tot er een mechanisme wordt gevonden dat wel door de server wordt geaccepteerd.
 
Al naar gelang het gekozen en geaccepteerde beveiligingsmechanisme heeft de server eventueel aanvullende informatie van de client nodig. Deze informatie wordt vervolgens door de client via het ADAT-commando naar de server gestuurd. Afhankelijk van het gebruikte mechanisme stuurt het ADAT-commando alle benodigde parameters door, totdat alle data tussen client en server zijn uitgewisseld.
 

FTP-commando's

De FTP-client en de FTP-server wisselen op tekst gebaseerde commando's uit. Hieronder volgt een lijst van de belangrijkste FTP-commando's, waarbij onderscheid wordt gemaakt tussen commando's voor de toegangscontrole en service-commando's:
 
Commando's voor de toegangscontrole
 
  • USER Username
    Het commando USER is het eerste dat wordt gebruikt zodra een verbinding tussen client en server tot stand is gekomen. De server heeft deze informatie nodig om de gebruiker toegang te geven tot het bestandssysteem. In principe vraagt de server na ontvangst en controle van de gebruikersnaam het wachtwoord van de gebruiker.
 
  • PASS Password
    Met dit commando stuurt de client het wachtwoord, dat bij een bepaalde gebruikersnaam hoort, naar de server.
 
  • ACCT Account
    Hoewel het commando ACCT lijkt op het USER-commando is het niet per se hetzelfde. Het commando wordt vooral gebruikt bij websites die voor speciale handelingen op de server een accountnaam verlangen.
 
  • AUTH Authentication/Security Mechanism
    Dient ter authentifatie van client en server. Beiden verklaren zich met dit commando akkoord met de gekozen beveiligingsmethode.
 
  • ADAT Authentication/Security Data
    Met behulp van dit commando wisselen client en server gegevens uit die voor een goede beveiliging noodzakelijk zijn.
 
  • PBSZ Protection Buffer Size
    Dit commando legt de grootte van de versleutelde datablokken vast.
 
  • PROT Data Channel Protection Level
    Dit commando bepaalt het type beveiliging dat wordt toegepast op de dataverbinding tussen client en server.
 
  • CCC Clear Command Channel
    Dit commando heft de beveiliging op, die is ingesteld op het controlekanaal.
 
  • SMNT Structure Mount
    Met behulp van dit commando kan de gebruiker een bestandsstructuur maken zonder dat een nieuwe inlog nodig is.
 
  • REIN Reinitialize
    Dit commando heft de toegang van een gebruiker op. Nadat dit commando is uitgevoerd dient de gebruiker opnieuw in te loggen. Het commando kan niet ingezet worden op reeds opgebouwde data overdrachten.
 
  • QUIT Logout
    Dit commando beëindigt de verbinding tussen client en server. Maar net zoals bij het REIN commando geldt ook voor dit commando dat reeds opgebouwde dataoverdrachten niet worden onderbroken. Wordt het QUIT-commando gebruikt dan zal de server de verbinding automatisch verbreken nadat de datatransfer is afgerond.
 
Service-commando's
 
  • RETR Retrieve
    Dit commando zorgt voor de overdracht van een bestand van server naar client. De status en de inhoud van de bron blijven onveranderd.
 
  • STOR Store
    Met behulp van dit commando neemt de server een bestand aan en slaat dit op. Indien het bestand reeds op de server voorkomt dan wordt dit overschreven, in alle andere gevallen wordt een nieuw bestand aangemaakt.
 
  • ALLO Allocate
    Dankzij dit commando is de client gegarandeerd van voldoende opslagruimte, zodra de client inlogt bij de server.
 
  • REST Restart
    Door middel van dit commando zet de server zich klaar voor een volgende dataoverdracht. De server voegt een markering toe aan het bestand.
 
  • ABOR Abort
    Dit commando is het meest krachtige dat de server kan gebruiken. Dit commando breekt daadwerkelijk alle verbindingen af.
 
  • CWD Change Working Directory
    Met behulp van dit commando kan de gebruiker naar een andere directory wisselen. De werking van het commando is te vergelijken met de werking van het DOS/Unix CD-commando.
 
  • DELE Delete
    Dit commando wist bestanden op de server.
 
  • RMD Remove Directory
    Dit commando wist een directory op de server.
 
  • MKD Make Directory
    Dit commando maakt een directory op de server aan.
 
  • PWD Print Working Directory
    Dit commando toont de actieve directory.
 
  • LIST List
    Dit commando toont een inhoudsopgave van alle aanwezige bestanden in de actieve directory van de server.
 
  • NLST Name List
    Dit commando stuurt een inhoudsopgave van alle aanwezige directories op de server.
 
  • SYST System
    Dit commando toont het besturingssysteem van de FTP-server.
 
  • STAT Status
    Dit commando geeft de status van het systeem weer.
 
  • HELP Help
    Met dit commando kunt u de helpbestanden raadplegen.
 

Gerelateerde artikelen

 
Abonneer u op de nieuwsbrief
.

©2009 Microsoft Corporation. Alle rechten voorbehouden. Contact opnemen |Gebruiksvoorwaarden |Handelsmerken |Privacyverklaring