Programowanie Sieciowe 2 Protokoły komunikacyjne: FTP



Podobne dokumenty
Propozycje projektów (gniazdka)

ZESZYTY ETI ZESPOŁU SZKÓŁ W TARNOBRZEGU Seria: Teleinformatyka PROTOKÓŁ I SERWER FTP PRZYKŁADY KOMUNIKACJI Z SERWEREM FTP

Instrukcja obsługi serwera FTP v

FTP File Transfer Protocol

Protokoły komunikacyjne

Projekt e-deklaracje 2

Sprawozdanie. (notatki) Sieci komputerowe i bazy danych. Laboratorium nr.3 Temat: Zastosowanie protokołów przesyłania plików

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu ftp.

Programowanie współbieżne i rozproszone

1. FTP (File Transfer Protocol)

Usługi sieciowe systemu Linux

FTP przesył plików w sieci

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

Laboratorium - Poznawanie FTP

Lab3 - Zastosowania protokołów przesyłania plików

Windows Server 2008 Standard Str. 1 Ćwiczenia. Opr. JK. I. Instalowanie serwera FTP w Windows Server 2008 (zrzuty ekranowe z maszyny wirtualnej)

Dokonaj instalacji IIS opublikuj stronę internetową z pierwszych zajęć. Ukaże się kreator konfigurowania serwera i klikamy przycisk Dalej-->.

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Instrukcja instalacji Control Expert 3.0

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

FTP Protokół przesyłania plików. Autor: Sebastian Paja IVFDS

Adres IP

Plan wykładu. 1. Protokół FTP. 2. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Tomasz Greszata - Koszalin

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

Stos TCP/IP. Warstwa aplikacji cz.2

Wstęp. Skąd pobrać program do obsługi FTP? Logowanie

Programowanie Sieciowe 1

1. Model klient-serwer

RecordMAN.serwer instrukcja obsługi

DOKUMENTACJA TECHNICZNA SMS API MT

Instrukcja podłączenia bramki IP 1R+L oraz IP 2R+L w trybie serwisowym za pomocą usługi telnet.

System operacyjny UNIX Internet. mgr Michał Popławski, WFAiIS

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Tryb konsolowy ćwiczenie b

KORZYSTANIE Z BAZY DANYCH UpToDate

Sieci komputerowe i bazy danych

Brinet sp. z o.o. wyłączny przedstawiciel DrayTek w Polsce

Protokoły warstwy aplikacji i ich zastosowanie

Remote Quotation Protocol - opis

Spis treści. Spis treści Wstęp Instalacja nazwa.pl Instalacja Home.pl Edycja grafiki strony logo...

Sprawozdanie nr 4. Ewa Wojtanowska

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Java wybrane technologie

Sieci Komputerowe. Protokół POP3. Protokół IMAP4 Internet Mail Access Protocol version 4. dr Zbigniew Lipiński

Konfiguracja vsftpd ( Very Secure FTP Server )

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

TRX API opis funkcji interfejsu

Autoryzacja zleceń z użyciem aplikacji Java Web Start "Pocztowy24Podpis"

Sieci komputerowe i bazy danych

Klient-Serwer Komunikacja przy pomocy gniazd

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Brinet sp. z o.o. wyłączny przedstawiciel DrayTek w Polsce

B.B. Połączenie kończy polecenie exit.

Dokumentacja SMS przez FTP

Wykaz zmian w programie SysLoger

Konfiguracja własnego routera LAN/WLAN

Wybrane działy Informatyki Stosowanej

Przygotowanie plików do druku

Instalacja i konfiguracja serwera SSH.

INSTRUKCJA obsługi certyfikatów

Pracownia internetowa w szkole ZASTOSOWANIA

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Wszystkie parametry pracy serwera konfigurujemy w poszczególnych zakładkach aplikacji, podzielonych wg zakresu funkcjonalnego.

Uwaga!!! Autentykacja LDAP/AD zaimplementowana w Vigor wspiera tylko proste uwierzytelnianie (hasło przesyłane jest jawnym tekstem).

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

1. FTP 2. SMTP 3. POP3

INSTRUKCJA OBSŁUGI PRZYSTAWKI PEN-01 DO PENDRIVE A

PROTOKOŁY OBSŁUGI POCZTY ELEKTRONICZNEJ

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Konwerter RS-485->Ethernet [TCP/IP] CN-ETH-485 INSTRUKCJA [konfiguracja urządzenia do współpracy z programem MeternetPRO]

Model sieci OSI, protokoły sieciowe, adresy IP

Dokumentacja SMPP API

Serwer SAMBA UDOSTĘPNIANIE UDZIAŁÓW SIECIOWYCH PIOTR KANIA

Poradnik korzystania z usługi FTP

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

INSTRUKCJA OBSŁUGI DLA SIECI

Fiery Remote Scan. Uruchamianie programu Fiery Remote Scan. Skrzynki pocztowe

MODEM GSM-01. INSTRUKCJA OBŁUGI MODUŁU KOMUNIKACYJNEGO GSM-01 wersja 1.0 GSM-01 INSTRUKCJA OBSŁUGI - 1 -

Gatesms.eu Mobilne Rozwiązania dla biznesu

Dokumentacja REST API v 3.0. Kraków, 7 marca FreshMail, ul. Fabryczna 20a, Kraków tel , freshmail.

CECHY URZĄDZENIA: Podłączenie wyświetlacza

INSTRUKCJA OBSŁUGI USTAWIEŃ DYNAMICZNIE PRZEDZIELANYCH ADRESÓW IP W URZĄDZENIACH SYSTEMU IP-PRO ORAZ REJESTRATORACH MY-DVR

Laboratorium 3.4.2: Zarządzanie serwerem WWW

ZESZYTY ETI ZESPOŁU SZKÓŁ W TARNOBRZEGU Nr 1 Seria: Teleinformatyka 2012 POCZTA ELEKTRONICZNA PROTOKÓŁ SMTP PRZYKŁADY KOMUNIKACJI

Laboratorium - Obserwacja procesu tłumaczenia nazw DNS

Analiza malware Remote Administration Tool (RAT) DarkComet

Aukcja trwa od momentu, gdy informacje o przedmiocie są dostępne dla klientów, a kończy się wraz z wysłaniem opisanego dalej komunikatu FINISH_MSG.

Tomasz Greszata - Koszalin

Lab5 - Badanie protokołów pocztowych

ZADANIE.02 Podstawy konfiguracji (interfejsy) Zarządzanie konfiguracjami 1,5h

Sieci równorzędne, oraz klient - serwer

LeftHand Sp. z o. o.

Fiery Remote Scan. Łączenie z serwerami Fiery servers. Łączenie z serwerem Fiery server przy pierwszym użyciu

Jak wykorzystać Pulpit Zdalny w Windows 2003 Serwer do pracy z programem FAKT

Pracownia internetowa w każdej szkole (edycja jesień 2005)

Instalacja i konfiguracja Symfonia.Common.Server oraz Symfonia.Common.Forte

Transkrypt:

Programowanie Sieciowe 2 Protokoły komunikacyjne: FTP mgr inż. Tomasz Jaworski tjaworski@kis.p.lodz.pl http://tjaworski.kis.p.lodz.pl/

Protokoły komunikacyjne FTP File Transfer Protocol 2

Informacje o protokole FTP w sieci Internet RFC 959: http://www.networksorcery.com/enp/rfc/rfc959.txt Polecenia FTP: http://www.nsftools.com/tips/rawftp.htm Kody odpowiedzi: http://www.jtpfxp.net/ftperror.htm Wikipedia: http://en.wikipedia.org/wiki/file_transfer_protocol http://en.wikipedia.org/wiki/list_of_ftp_server_return_codes 3

Protokół FTP File Transport Protocol Protokół transmisji plików binarnych i tekstowych; protoplasta dzisiejszego pojęcia Peer-2-Peer Podobnie jak HTTP, FTP jest protokołem tekstowym, opartym na przesyłaniu odpowiedzi (responses) na żądania klienta (requests) Przed erą stron WWW, FTP był najpopularniejszą metodą wymiany plików 4

Protokół FTP: najważniejsze cechy Wykorzystuje dwa kanały transmisji w warstwie protokołu TCP Do transmisji poleceń sterujących (control) Do transmisji danych binarnych (data transfer) Protokół oparty jest na liniach tekstu. Każda linia rozdzielona jest symbolem CRLF (C/C++/C#: "\r\n") (\r = 13; \n=10) 5

Do czego służy protokół FTP? Do kopiowania programów i/lub plików danych między dwoma urządzeniami Do tworzenia bazy danych (nie w sensie baz relacyjnych) wykorzystanie komputerów do przechowywania dużej ilości plików Popularne zastosowania FTP to: Przesyłanie danych między komputerem w miejscu pracy a komputerem w domu, jeśli ktoś lubi pracę po godzinach Wysyłanie stron i plików na serwer WWW (w ramach procesu publikacji strony Web) Wiele istniejących serwerów pozwala na tzw. logowania anonimowe (user = anonymous) i dowolne pobieranie plików objętych tym kontem. Pliki na koncie anonymous są plikami dostępnymi publicznie. 6

Problemy stojące przed klientem i serwerem FTP Różne systemy operacyjne (w tym systemy dedykowane) różnią się: Strukturą katalogów Strukturą plików i systemu plików atrybuty, uprawnienia, właściciel Sposobem nazwania plików (np. kropka przed nazwą) Kodowaniem znaków w nazwach plików Długości ścieżek, nazw plików, rozszerzenia 7

Charakterystyka połączeń FTP Klient komunikuje się z serwerem za pomocą dwóch połączeń TCP Sterujące, transmisja żądań i odpowiedzi Serwer oczekuje na klienta na porcie 21. Klient łączy się z dowolnego portu lokalnego do portu 21 serwera. Serwer pierwszy zamyka połączenie (na polecenie QUIT) Danych, transmisja danych Tryb aktywny: Klient otwiera port i informuje o nim serwer (przekazuje IP i port) Serwer łączy się do wskazanego portu i rozpoczyna się wymiana danych Tryb pasywny: Serwer otwiera port i informuje o nim klienta (przekazuje IP i port) Klient łączy się do wskazanego portu i rozpoczyna się wymiana danych 8

Tryb aktywny Klient nawiązuję połączenie na port 21 Klient wybiera plik do pobrania Tryby komunikacji między serwerem a klientem FTP Polecenie PORT Klient otwiera port N i informuje o nim serwer Serwer łączy się z klientem (na podany port N) i następuje wymiana danych Tryb pasywny Klient nawiązuję połączenie na port 21 Klient wybiera plik do pobrania Polecenie PASV Serwer otwiera port N i informuje o nim klienta Klient łączy się z serwerem (na podany port N) i następuje wymiana danych 9

Tryb aktywny Tryby komunikacji między serwerem a klientem FTP Polecenie PORT Klient wysyła polecenie PORT: PORT 127,0,0,1,23,211 Tryb pasywny Klient wysyła polecenie PASV Serwer odpowiada: 227 Entering Passive Mode (212,22,34,81,34,32) Polecenie PASV IP: 127,0,0,1 = 127.0.0.1 Port: 23,211 = 23 * 256 + 211 = 6099 Zatem serwer łączy się pod adres 127.0.0.1:6099 IP: 212.22.34.81 Port: 34 * 256 + 32 = 8736 Zatem klient łączy się z serwerem pod adresem 212.22.34.81:8224 10

Tryb aktywny wymiany danych FTP Klient wykonuje połączenie TCP do portu 21 serwera FTP. Połączenie to jest połączeniem sterującym. Przy nawiązywaniu połączenia transmisji danych klient wysyła polecenie PORT aby poinformować serwer, do jakiego portu klienta powinien się on połączyć. W chwili wysłania polecenia PORT klient uruchamia nasłuch na tym porcie. Serwer łączy się z klientem na podanym porcie, tworząc połączenie danych. Specyfikacja przewiduje, że połączenia danych z serwera nawiązywane są z portu 20. Klient natomiast przyjmuje połączenie na porcie o 1 wyższym niż port, z którego wcześniej nawiązał połączenie sterujące. Klient 2202 2201 21 Serwer 20 Nawiązanie połączenie Wymiana poleceń i odpowiedzi Klient chce pobrać plik Nawiązanie połączenia Przesłanie zawartości pliku 11

Tryb pasywny wymiany danych FTP Klient wykonuje połączenie TCP do portu 21 serwera FTP. Połączenie to jest połączeniem sterującym. Przy nawiązywaniu połączenia transmisji danych, klient wysyła polecenie PASV. Serwer odpowiada na to polecenie tworząc nowe gniazdo nasłuchowe (dla połączenia danych) oraz informuje o nim klienta. Klient łączy się na podane gniazdo i numer IP tworząc połączenie danych. Klient 2202 2201 Nawiązanie połączenie Wymiana poleceń i odpowiedzi Klient chce pobrać plik; wysyła PASV Serwer wysyła inf. o IP i porcie 21 Serwer 20 Nawiązanie połączenia Przesłanie zawartości pliku 12

Format żądania (requests) protokołu FTP Linia tekstu, zakończona dwoma bajtami (symbol końca linii): CRLF = "\r\n"; Postać: POLECENIE <SP> <parametry>\r\n Przykład: USER tjaworski\r\n NOOP\r\n RETR zlecenie.doc\r\n CWD /\r\n <SP> = spacja (1 bajt) 13

Polecenia protokołu FTP (1/4) USER Nazwa użytkownika/konta serwera FTP PASS Hasło użytkownika (jeśli USER anonymous) ACCT Informacje o koncie (również przed logowaniem) CWD Zmiana aktualnego katalogu CDUP Zmiana katalogu na wyższy (CD..) SMNT Podmontowanie (mount) innego systemu plików QUIT Kontrolowane zakończenie połączenia REIN Restart połączenia (z dokończeniem transmisji) PORT Informacja o IP i porcie klienta dla kanału danych Minimum dla trybu pasywnego, dodatkowo dla trybu aktywnego 14

Polecenia protokołu FTP (2/4) PASV TYPE STRU MODE RETR SIZE STOR STOU Żądanie danych dla trybu pasywnego info Określenie typu transmisji danych (np. ascii/binary) Struktura przesyłanego obiektu Tryb przesyłania Pobranie pliku z serwera (retrieve) Pobranie długości pliku. Zero, jeśli nazwa to katalog Umieszczenie pliku na serwerze (store) Umieszczenie pliku na serwerze pod unikalną (losową) nazwą. Serwer decyduje o nazwie. 15

Polecenia protokołu FTP (3/4) APPE ALLO REST RNFR RNTO ABOR DELE RMD MKD Dodanie danych na końcu pliku (jeśli ten istnieje) Alokacja (zarezerwowanie) miejsca na serwerze Restart przesyłania danych Określenie pliku do zmiany nazwy Nowa nazwa dla określonego poprzednio pliku Przerwanie transferu danych (jeśli istnieje) Usunięcie zadanego pliku z serwera Usunięcie zadanego katalogu z serwera Utworzenie nowego katalogu na serwerze 16

Polecenia protokołu FTP (4/4) PWD LIST NLST SYST STAT HELP NOOP Podanie aktualnego katalogu sesji Przesłanie listy plików (lista jest plikiem) Przesłanie listy plików (same nazwy) Serwer zwraca informacje o systemie operacyjnym Status aktualnej transmisji danych Pomoc ogólna lub dla wybranego polecenia Serwer nie wykonuje operacji (puste polecenie) 17

Najważniejsze komendy FTP Autoryzacja USER określa nazwę użytkownika PASS określa hasło dla podanego użytkownika Operacje na listach plików (systemie plików) LIST przesłanie listy plików i katalogów z danej scieżki CWD zmiana aktualnego katalogu Pobieranie lub wysyłanie plików TYPE określenie typu transmisji; A=ASCII; I=Binary RETR pobranie pliku z serwera STOR wysłanie pliku na serwera Zamykanie połączenia QUIT klient chce zamknąć połączenie 18

Format poleceń protokołu FTP USER <SP> <username> <CRLF> PASS <SP> <password> <CRLF> ACCT <SP> <account-information> <CRLF> CWD <SP> <pathname> <CRLF> CDUP <CRLF> SMNT <SP> <pathname> <CRLF> QUIT <CRLF> REIN <CRLF> PORT <SP> <host-port> <CRLF> PASV <CRLF> TYPE <SP> <type-code> <CRLF> STRU <SP> <structure-code> <CRLF> MODE <SP> <mode-code> <CRLF> RETR <SP> <pathname> <CRLF> STOR <SP> <pathname> <CRLF> STOU <CRLF> APPE <SP> <pathname> <CRLF> ALLO <SP> <decimal-integer> [<SP> R <SP> <decimal-integer>] <CRLF> REST <SP> <marker> <CRLF> RNFR <SP> <pathname> <CRLF> RNTO <SP> <pathname> <CRLF> ABOR <CRLF> DELE <SP> <pathname> <CRLF> RMD <SP> <pathname> <CRLF> MKD <SP> <pathname> <CRLF> PWD <CRLF> LIST [<SP> <pathname>] <CRLF> NLST [<SP> <pathname>] <CRLF> SITE <SP> <string> <CRLF> SYST <CRLF> STAT [<SP> <pathname>] <CRLF> HELP [<SP> <string>] <CRLF> NOOP <CRLF> <SP> = spacja (1 bajt) <CRLF> = symbol nowej linii 19

Format odpowiedzi (responses) protokołu FTP Każda odpowiedź jest linią tekstu, zakończoną symbolem \r\n symbol nowej linii Linia składa się z następujących elementów: liczby (3 cyfry) kod odpowiedzi, Spacja (<SP>) lub myślnik (<DS>) dla odpowiedzi wielolinijkowych, Tekst (informację tekstową) + ewentualne dane w zależności od polecenia, którego tyczy się interpretowana odpowiedź, Symbolu końca linii <CRLF>. Trzycyfrowy kod określa typ odpowiedzi (np. potwierdzenie, odrzucenie, ) 20

Trzycyfrowe kody odpowiedzi (1/5) Xyz 1yz Odpowiedź pozytywna, przejściowa (preliminary). Serwer rozpoczął wykonywanie przesłanego polecenia. Klient powinien zaczekać z wysłaniem kolejnego polecenia na następną odpowiedź serwera. 150 nawiązanie połączenia danych (i rozpoczęcie transmisji) 226 pozytywne zakończenie transmisji 2yz Pozytywne zakończenie wykonywania. Serwer pomyślnie zakończył wykonywanie polecenia, klient może wysyłać kolejne polecenia. 200 pozytywne wykonanie polecenia (np. TYPE) 21

Trzycyfrowe kody odpowiedzi (2/5) Xyz 3yz Odpowiedź pozytywna, cząstkowa (intermediate). Serwer zaakceptował polecenie, jednak do rozpoczęcia działania lub przesłania ostatecznego wyniku konieczne jest przesłanie dodatkowych informacji przez klienta. 331 potwierdzenie nazwy użytkownika (USER) i oczekiwanie na hasło RNFR, RNTO zmiana nazwy (dwa polecenia; RNTO wykonuje zmianę) 4yz Odpowiedź negatywna, przejściowa (transient). Serwer odrzucił polecenie, jednak powody odrzucenia mogą ustać. 425 nie można nawiązać połączenia 22

Trzycyfrowe kody odpowiedzi (3/5) Xyz 5yz Odpowiedź negatywna, stała (permanent). Serwer odrzucił polecenie i odrzuci przy każdej kolejnej próbie. Klient powinien zaprzestać przesyłania danego żądania. 500 błąd składni, polecenie nieznane 530 hasło nie zostało przyjęte 23

Trzycyfrowe kody odpowiedzi (4/5) xyz x0z Błąd składni przesłanego polecenia, składniowy błąd w parametrach danego polecenia, niezaimplementowane polecenie. 500 błąd składni, polecenie nieznane x1z Odpowiedź dla poleceń klienta żądających informacji, np. STATUS, SYST, HELP. x2z Informacje odnoszące się do połączenia sterującego lub połączenia danych. 227 - Entering Passive Mode (a1,a2,a3,a4,p1,p2) - PASV 24

Trzycyfrowe kody odpowiedzi (5/5) xyz x3z Informacja związana z procesem logowania bądź administracją konta. 230 Użytkownik (bądź anonim) został poprawnie zalogowany. x4z Zarezerwowane; do wykorzystania w przyszłości x5z Informacja na temat stanu transferu pliku lub innego polecenia związanego z systemem plików. 257 Aktualnym katalogiem jest - PWD, CWD 150 nawiązanie połączenia danych (i rozpoczęcie transmisji) 25

Najczęściej występujące kody odpowiedzi 1xy 150 Rozpoczęcie transferu pliku, serwer za chwile otworzy połączenie danych. Kod 150 oznacza, że klient może rozpocząć tworzenie połączenia danych (tryb pasywny) lub serwer zaraz zacznie łączyć się z klientem (tryb aktywny). 26

Najczęściej występujące kody odpowiedzi 2xy 200 Potwierdzenie wykonania polecenia, np. dla TYPE. 213 Informacja o pliku, np. wielkość dla SIZE 215 Informacja o systemie operacyjnym, np. dla SYST 220 Powitanie serwera, przesyłane zaraz po połączeniu. 226 Połączenie danych zostaje zakończone. Ostatnia operacja na pliku zakończyła się pomyślnie (transfer lub przerwanie - ABORT). Najcześciej 226 informuje o zakończeniu transmisji z i do serwera. 227 Wejście do trybu pasywnego, format: %d,%d,%d,%d,%d,%d (6 liczb 0-255). 230 Poprawne zalogowanie użytkownika. Kod 230 wysyłany jest po podaniu hasła (PASS), jeśli to jest poprawne. 257 Informacja o ścieżce, np. dla CWD lub PWD. Format: "%s" 27

Najczęściej występujące kody odpowiedzi 3xy 331 Odpowiedź na USER. Nazwa użytkownika została przyjęta, teraz klient musi wysłać hasło (PASS). 28

Najczęściej występujące kody odpowiedzi 4xy 425 Błąd podczas nawiązywania połączenia danych. Np. klient nie połączył się z serwerem w zadanym czasie (tryb pasywny) lub serwer nie mógł się połączyć z klientem na podany przez niego adres IP i port (tryb aktywny) 29

Najczęściej występujące kody odpowiedzi 5xy 500 Błąd składni, linia żądania zbyt długa lub polecenie nie zostało rozpoznane. 530 Użytkownik nie został zalogowany, np. Odpowiedź na błędne hasło dla danego użytkownika. 550 Pliki/katalogi: żądnie nie mogło zostać zrealizowane (np. brak pliku, brak katalogu lub brak dostępu) 30

drwxrw-rw- 1 root root -rwxrw-rw- 1 root root drwxrw-rw- 1 root root -rwxrw-rw- 1 root root Format listy plików 0 Mar 1 11:17 katalog1 235 Mar 1 11:17 plik1 0 Mar 1 2010 katalog2 33637 Mar 1 2010 plik2 Kod w C# generujący listę plików: http://tjaworski.kis.p.lodz.pl/ps2/makedirlisting.cs MakeDirListing generuje listę plików i zapisuje ją w tymczasowym katalogu systemu Windows dla danego użytkownika. Funkcja zwraca ścieżkę i nazwę pliku tymczasowego. Wymagania: string GetCurrentPath() Metoda GetCurrentPath() ma zwrócić aktualnąścieżkę dla danej sesji FTP. Ścieżka ma być poprawna z punktu widzenia lokalnego systemu plików, nie z punktu widzenia sesji FTP. 31

FTP a TFTP TFTP Trivial File Transfer Protocol (RFC 1350) Wykorzystywany do przesyłania danych konfiguracyjnych oraz obrazów systemów operacyjnych w procesie uruchamiania; Zbudowany na protokole UDP, najczęściej port 69; Tylko 5 typów poleceń Dane przesyłane w blokach po 512 bajtów; Wykorzystuje jedno połączenie (FTP wykorzystuje dwa) Brak autoryzacji; Brak obsługi katalogów; Brak możliwości listowania plików w obszarze udostępnionym przez serwer; Możliwe przesyłanie plików do i z serwera; Protokół TFTP ma być prosty i łatwy w implementacji; 32

Testowanie serwera Można użyć najpopularniejszych narzędzi: Total Commander Mozilla Firefox Internet Explorer 33

Testowanie serwera Można użyć najpopularniejszych narzędzi: Total Commander Mozilla Firefox Internet Explorer 34

Connect to: (2011-03-02 12:57:10) hostname=localhost username=tjaworski startdir= localhost=127.0.0.1 220-GuildFTPd FTP Server (c) 1997-2002 220-Version 0.999.14 220 Please enter your name: USER tjaworski 331 User name okay, Need password. PASS *********** 230 User logged in. SYST 215 UNIX Type: L8 Server FEAT 500 'FEAT': command not understood. Komunikacja z Total Commanderem 35

HELP SITE 502 Unknown command. CLNT Total Commander (UTF-8) 500 'CLNT': command not understood. OPTS UTF8 ON 500 'OPTS': command not understood. Connect ok! PWD 257 "/" is current directory. Pobierz katalog TYPE A 200 Type set to A. PASV 227 Entering Passive Mode (127,0,0,1,5,89) LIST 150 Opening ASCII mode data connection for /bin/ls (514 bytes). Ściąganie Czekam na serwer... 226 Transfer successful. 36

Klient FTP: Zrzut komunikacji z przeglądarką Mozilla Firefox ---> 220-Simple FTP server ---> 220 Enter user name: USER anonymous ---> 230 Anonymous user logged in. SYST ---> 215 UNIX Type: L8 PWD ---> 257 "/" is current dir TYPE I ---> 200 Type set to I PASV ---> 227 Entering Passive Mode (127,0,0,1,3,232) 127.0.0.1:1000 SIZE / ---> 213 0 MDTM / ---> 500 'MDTM': command not understood RETR / ---> 550 Permission denied PASV ---> 227 Entering Passive Mode (127,0,0,1,3,233) 127.0.0.1:1001 CWD / ---> 257 "/" is current dir LIST ---> 150 Opening data connection for /bin/ls (610 bytes). ---> 226 Transfer successful. Transmisja zaraz po połączeniu 37

Klient FTP: Zrzut komunikacji z przeglądarką Mozilla Firefox PASV ---> 227 Entering Passive Mode (127,0,0,1,3,234) 127.0.0.1:1002 SIZE /Rad.Designer ---> 213 0 MDTM /Rad.Designer ---> 500 'MDTM': command not understood RETR /Rad.Designer ---> 550 Permission denied PASV Przejście do katalogu /Rad.Designer ---> 227 Entering Passive Mode (127,0,0,1,3,235) 127.0.0.1:1003 CWD /Rad.Designer ---> 257 "/Rad.Designer" is current dir LIST ---> 150 Opening data connection for /bin/ls (80 bytes). ---> 226 Transfer successful. 38

PASV Klient FTP: Zrzut komunikacji z przeglądarką Mozilla Firefox ---> 227 Entering Passive Mode (127,0,0,1,3,242) 127.0.0.1:1010 SIZE /phd.jpg ---> 213 48940 MDTM /phd.jpg ---> 500 'MDTM': command not understood RETR /phd.jpg ---> 150 Opening data connection for /phd.jpg ---> 226 Transfer successful. Pobranie pliku phd.jpg 39

Sugestie dotyczące implementacji w C# Klasy gniazdowe oraz obsługa wielu wątków znajduje się w przestrzeniach: System.Net; System.Net.Sockets; System.Threading; W zależności od konfiguracji systemu (uprawnień), uruchomienie nasłuchu na porcie < 1024 (w tym wypadku 21) może generować błędy. Pisany serwer FTP może stać na innym porcie, np. 2100 Serwer powinien domyślnie akceptować użytkownika anonymous. Ułatwi to testowanie programami klienckimi. W reakcji na polecenie PASV, serwer powinien określić numer nowego portu nasłuchu (np. przez wartość globalnego licznika) a następnie sprawdzić, czy wybrany port można otworzyć. 40

Sugestie dotyczące implementacji w C# Zaraz po nawiązaniu połączenia, serwer powinien dopuszczać tylko dwa polecenia: USER oraz PASS. Każde inne powinno kończyć się odpowiedzią 500 Command not understood. Minimalna implementacja serwera FTP to: USER, PASS, SYST, PWD, CWD, PASV, LIST, RETR, SIZE, STOR, TYPE Procedura przesyłania listy plików i katalogów do klienta (polecenie LIST) korzysta z połączenia danych. Zatem serwer może generować plik z listą a następnie wykorzystać istniejącą procedurę wysyłania plików. Należy pamiętać o różnicy w znakach rozdzielających nazwy katalogów i plików: / oraz \. System Windows używa \ podczas gdy protokół FTP używa / 41

Dziękuję za uwagę!