3.3
FTP
FTP (File Transfer Protocol), který se objevil v roce 1971, je dnes standardním protokolem pro přenos souborů přes sítě TCP (například internet). Specifikace protokolu je definována v RFC 959.
FTP je protokol aplikační vrstvy modelu OSI a má architekturu klient-server, což znamená, že se při relaci FTP vyměňují soubory umístěné na dvou hostitelích – klientovi a serveru. Pro získání přístupu k serveru musí uživatel zadat své uživatelské jméno a heslo. Uživatelé FTP se mohou autentizovat předáním uživatelského jména a hesla v otevřeném textu, nebo pokud je to povoleno na serveru, mohou se připojit anonymně. Protokol SSH můžete použít pro bezpečný přenos, skrytí (zašifrování) přihlašovacího jména a hesla a šifrování obsahu. Poté, co server rozpozná uživatele, začne proces přenosu souborů příslušným směrem.
FTP používá dvě paralelní připojení TCP: řídicí a datové. Řídicí spojení slouží k odesílání řídicích informací mezi dvěma hostiteli: uživatelského jména a hesla, příkazů ke změně aktuálního vzdáleného adresáře či požadavků na přenos souborů. Datové připojení je určeno k přenosu samotných souborů. Řídicí signalizační spojení zůstává otevřené po celou dobu online relace FTP. Datové připojení se vždy otevírá příkazem k přenesení souboru a po přenesení se zavře. Každé připojení umožňuje přenést pouze jeden soubor; vícenásobná výměna vyžaduje vícenásobné nastavení datového připojení.
3.3.1
Navázání spojení
Připojení pro přenos řídicích příkazů je vytvořeno ve dvou fázích:
- FTP server otevírá řídicí port TCP 21 pro poslech a čeká, až mu od vzdáleného klienta přijde požadavek na vytvoření řídícího FTP spojení.
- Klient FTP používá dočasný port a relace se aktivně otevírá.
+

Obr. 20. Navázání spojení.
Prostřednictvím řídicího spojení jsou příkazy odeslané klientem na server a odezvy serveru zapisovány v kódování ASCII pro 7bitové znaky. FTP příkazy tak může člověk snadno přečíst. Pro oddělení příkazů se používá dvojice znaků nového řádku (CRLF – „návrat vozíku a posun řádku“). Příkazy se zadávají jako tři až čtyři velká písmena, za nimiž následují parametry.
3.3.1.1
Příkazy
Všechny příkazy lze rozdělit do šesti skupin: příkazy pro přístup, správu souborů, formátování dat, detekci portu, přenos souborů a další příkazy.
- Přístupové příkazy. Tyto příkazy umožňují uživateli přístup ke vzdálenému systému:
- Příkazy pro správu souborů. Tyto příkazy umožňují uživateli přistupovat ke vzdálenému počítači, procházet strukturu adresářů, vytvářet nové adresáře, mazat soubory atd.:
- Příkazy formátování dat. Tyto příkazy umožňují uživateli určit strukturu, typ souboru a režim přenosu. Specifický formát pak používají příkazy pro přenos souborů:
- Příkazy pro definici portu. Tyto příkazy určují číslo portu pro datové připojení klienta:
- Příkazy přenosu souborů. Tyto příkazy řídí přenos souborů:
- Různé příkazy. Tyto příkazy poskytují uživateli FTP informace o klientovi:
3.3.1.2
Odpovědi
Každý příkaz FTP vyvolá alespoň jednu odpověď. Ta má dvě části: třímístné číslo a text. Číselná část definuje kód odezvy, textová část obsahuje potřebné parametry nebo další vysvětlení.
První číslice označuje stav příkazu. Na této pozici lze použít jednu z pěti číslic:
- 1yz (pozitivní předběžná reakce). Akce začala. Server před odesláním dalšího příkazu odešle další odpovědi.
- 2yz (odpověď na pozitivní dokončení). Akce je dokončena. Server přijme jiný příkaz.
- 3yz (pozitivní průběžná odezva). Příkaz je akceptován, ale je zapotřebí dalších informací.
- 4yz (negativní přechodná terminační odezva). Akce se neuskutečnila, ale chyba je dočasná. Stejný příkaz bude odeslán později.
- 5yz (negativní průběžná odpověď). Příkaz není přijat a měl by být opakován později.
Druhá číslice také označuje stav příkazu. Na této pozici lze použít jednu ze šesti číslic:
- x0z (syntaxe),
- x1z (informace),
- x2z (spojení),
- x3z (identifikace účet – odpověď na přihlášení či jiné operace s účtem),
- x4z (nedefinováno),
- x5z (systém souborů).
Třetí číslice poskytuje další informace.
3.3.2
Datové připojení
Datové připojení používá port 20. Vytvoření datového připojení se však od řídicího připojení liší:
- Klient FTP (nikoli server) vyvolá pasivní otevření krátkodobého portu.
- Klient FTP odešle číslo tohoto portu na server FTP pomocí příkazu PORT.
- Server obdrží číslo portu, vyvolá aktivní otevření portu 20 a obdrží dočasné číslo portu.
Pro přenos dat je nutné definovat tři atributy: typ, datovou strukturu a režim přenosu.
+

Obr. 21. Datové připojení.
Pomocí datového připojení lze přenášet následující typy souborů:
- Soubor ASCII. Výchozí formát používaný k překladu textových souborů.
- Soubor EBCDIC. Slouží k přenosu prostého textu v EBCDIC.
- Soubor obrázek. Tento typ je výchozí formát pro přenos binárních souborů. Soubor je přenášen jako nepřetržitý proud bitů bez jakékoli interpretace nebo kódování. Většinou se používá pro přenos binárních souborů, například kompilovaného programu.
FTP může přenášet soubor přes datové připojení pomocí jedné z následujících interpretací datové struktury:
- Struktura souborů (výchozí). Soubor nemá žádnou strukturu, jedná se o kontinuální datový proud.
- Struktura záznamů. Soubor je řada po sobě jdoucích záznamů.
- Struktura stránek. Soubor je stránkovaný, každá stránka má číslo stránky a název.
FTP může přenášet soubor přes datové připojení v jednom z následujících tří režimů přenosu:
- Inline režim (výchozí). Data jsou odesílána jako nepřetržitý tok nezpracovávaný protokolem FTP. Místo toho je zpracován na vrstvě protokolu TCP. Indikátor konce souboru není nutný, s výjimkou rozdělení dat do záznamů.
- Blokový režim. FTP rozděluje data do několika bloků (blok záhlaví, počet bajtů, datové pole) a poté je odesílá na TCP.
- Komprimovaný režim. Pokud je soubor velký, data mohou být komprimována určitým algoritmem.
Zdroj: Autor Boris Šimák a kol., Jaroslav Polívka, Lukáš Nehrkorn, VOV T257/03 – Příklad použití protokolu FTP k načtení seznamu položek v adresáři, licence Creative Commons BY 3.0.
Video 3. Příklad použití protokolu FTP k načtení seznamu položek v adresáři