Engelse versie
Opgave 3: FTP-Client.
Opdracht
Je bouwt een (vereenvoudigde) FTP-Client programma.
FTP protocol
De beste manier om het ftp protocol te doorgronden is via de RFC (Request for Comment) nummer 959.
Je vindt het document op de officiële website van de RFC Editor.
Je kan ook via Ethereal of Wireshark de paketten bekijken die tijdens een ftp sessie heen en weer
worden gestuurd. (Indien geen van beide paketten geïnstalleerd is op je pc, kan je tcpdump gebruiken).
Meer informatie:
Uitwerking
De client moet niet alle commando's ondersteunen. Het volstaat dat de client een bestand kan downloaden van de
server in passieve modus. Volgende commando's zijn noodzakelijk:
USER
PASS
LIST
PASV
RETR
Uitleg over de verschillende commando's kan je vinden in de RFC 959 in hoofdstuk 4.1. FTP COMMANDS. De antwoorden die
de server stuurt kan je vinden in hoofdstuk 4.2.1 Reply Codes by Function Groups. In de sectie Command-Reply Sequences kan je vinden welke de mogelijke reply's kunnen zijn op een commando.
Indien je het commando PASV naar de server stuurt, dan antwoordt die met een boodschap in volgende vorm:
227 Entering passive mode (193,56,87,123,56,87)
Hiermee geeft de server aan op welk ip adres en op welke poort de client een dataverbinding kan openen. Het is wat prutswerk
om die string om te zetten naar de juiste waarden, dus krijg je een reeds geprogrammeerde functie die dit doet.
Je kan je client testen met een bestaande FTP-server, bijvoorbeeld op adres 209.132.176.30 draait de redhat ftp server. De ftppoort waarover commando's gestuurd worden is 21. Voor het inloggen kan je gebruikmaken van de user anonymous.
Indien je een werkende client hebt pas hem dan aan zodat je programma ook werkt wanneer de gebruiker een computernaam opgeeft ipv een ip-adres.
Schrijf je oplossing in c++ en gebruik van volgende headerfiles voor het voorstellen van een TCP-client. Implementeer deze header in TcpClient.cpp. Leid nadien de ftp-client af van deze Tcp-client. Maak voor het ontwikkelen gebruik van Netbeans.
Afgeven
Plaats je oplossing op de U:/-drive in de directory sockets voor maandag 30/11/2009 18u.
Oplossing
Een mogelijke oplossing kan je hier vinden.
|