Tik-109/110.300 Tietoliikennearkkitehtuurit
Harjoitustehtävä 7
Saku Oja

File Transfer Protocol ja muut tiedostonsiirtoprotokollat

File Transfer Protocol (FTP) on nykypäivänä Internetin yksi käytetyimpiä sovellusprotokollia, ja sen käyttö on lisääntynyt vuosien kuluesssa täysin käsi kädessä koneiden verkottumisen kanssa. Sen perusominaisuuksiin kuuluu tiedostojen siirto etäkoneelta omalle koneelle sekä toisin päin.

Taustaa

FTP:n yleisiksi tavoitteiksi on asetettu edistää tiedostojen levitystä ja edistää (sekä suoraan että ohjelmien välityksellä tapahtuvaa) yhteydenottoa etäkoneisiin. Tavoitteeksi asetettiin myös se, että käyttäjän ei tarvitse huolehtia siitä, mitä tiedostojärjestelmää etäkoneessa käytetään sekä se, että itse tiedonsiirto tapahtuu luotettavasti ja tehokkaasti.

FTP:n idea on niinkin kaukaa kuin vuodelta 1971, jolloin Massachusetts Institute of Technologyssä ehdotettiin toteutettavaksi paikallisissa koneissa FTP:n kaltaista tiedonsiirtoprotokollaa. Vuonna 1972 FTP määriteltiin ARPANET:in (Internetin edeltäjä, USA:n puolustusministeriön verkko) koneiden väliseksi tiedonsiirtoprotokollaksi, ja sen päätoiminnoksi asetettiin tiedostojen siirto tehokkaasti ja luotettavasti. Samana vuonna tavoitteisiin lisättiin muun muassa virheenkorjaus, ja ensimmäinen suhteellisen "täydellinen" FTP-dokumentti (RFC) julkaistiin vuonna 1973. Dokumentit kehittyivät edelleen vuosien kuluessa ja 80-luvun puolivälissä FTP:n määrittely ja sisältö oli jo melko samanlainen kuin nykypäivänä. [1]

Pääperiaatteita

Yleisesti otettaessa FTP:n avulla yhteys toiseen koneeseen käyttäjältä kysytään käyttäjätunnusta ja salasanaa, eli käyttäjällä tulee olla oikeudet kyseisen koneen käyttöön. Kuitenkin on perustettu FTP-palvelimia, jotka käyttäjä loggautuu sisään nimettömänä (anonymous). Nämä palvelimet ovat siten avoimia kaikille. Niissä yhtäaikaisten käyttäjien määrä on kuitenkin usein rajoitettu, mutta niitä peilataan usein eri koneisiin (mirror sites).

Eri koneille on kehitetty omat FTP-ohjelmansa. PC:lle on muun muassa NFS- ja WS- ohjelmat ja Macintoshille on Fetch-ohjelma. Myös kaikkien koneiden WWW-selaimilla voi olla yhteydessä tiedostopalvelimiin. Edellämainittujen ohjelmien käyttö on tehty huomattavasti yksinkertaisemmaksi kuin UNIX:in "perus" FTP-ohjelman käyttö. Tässä työssä keskitytään kuitenkin lähinnä UNIX:in FTP:n käyttöön ja ominaisuuksiin.

Periaatteessa otettaessa yhteys FTP:llä etäkoneeseen tapahtuu niin, että käyttäjän protokollatulkki ottaa telnet-pohjaisen kontrolliyhteyden etäkoneeseen. Tämän jälkeen käyttäjä antaa standardin mukaisia FTP-käskyjä, jotka lähetetään kontrolliyhteyttä pitkin etäkoneeseen. Etäkoneen protokollatulkki lähettää näihin käskyihin edelleen vastaukset kontrolliyhteyttä pitkin. Näissä käskyissä spesifioidaan datayhteyden parametrit (dataportti, siirtotapa, esitystapa sekä rakenne) ja tehtävä operaatio (tiedoston haku, lisäys tai poisto). Tämän perusteella koneiden välille muodostetaan TCP-pohjainen datayhteys, jota pitkin data sitten lähetetään. FTP voi toimia myös niin, että käyttäjä luo kontrolliyhteyden kahteen eri koneeseen, ja näiden kahden koneen välille synnytetään datayhteys. Kummankin kontrolliyhteyden onkin tällöin oltava avoinna siirrettäessä dataa kahden etäkoneen välillä. [1]

Itse dataa voidaan siirtää kahden koneen välillä joko ASCII- tai binäärimuodossa. Varsinainen siirto voi tapahtua joko jatkuvana virtana (stram mode), yksikköinä (block mode) tai pakattuna (compressed mode). Tiedonsiirrossa tapahtuvista virheistä huolehtii varsinaisesti TCP (Transmission Control Protocol), mutta yksikkö- tai pakatussa muodossa tapahtuvalle siirrolle on määritelty tiedon uudelleenlähetyksen aloitus (käyttäjän määräämissä kohdissa). [1]

Käskyt

Seuraavassa on käyty läpi yleisimpiä FTP-käyttäjän tarvitsemia käskyjä, sekä kerrottu, mitä kukin käsky tekee. [1]

User. Tämän käskyn avulla käyttäjä voi välittää käyttäjätunnuksensa etäkoneelle (useimmiten tapahtuu kuitenkin automaattisesti).

Pass. Tunnussanan välittäminen etäkoneelle, käyttäjätunnuksen lähettämisen jälkeen. Tapahtuu myös yleensä automaattisesti.

Cwd. Vaihtaa hakemistoa etäkoneessa. Käskyn asemesta toimii useinmiten myös MS-DOS:ista adoptoitu cd.

Cdup. Vaihtaa etäkoneen hakemiston yhtä hakemistoa ylöspäin hakemistopuussa. Yleensä toimii myös cd .. (MS-DOS).

Pwd. Tulostetaan hakemiston sisältö. Yleensä toimii myös dir (MS-DOS).

Quit. Lopettaa käyttäjän ja etäkoneen välisen kontrolliyhteyden (eli yleisesti FTP-ohjelman käytön).

Ascii / bin. Valitaan joko ASCII-muotoinen (7 bittiä) tai binäärimuotoinen (8 bittiä) siirtotapa.

Get / mget. Näillä käskyillä siirretään tiedostoja omalle koneelle etäkoneelta. Mget ottaa argumentikseen useamman tiedostonnimen kerralla.

Put / mput. Näillä käskyillä voidaan siirtää tiedostoja omalta koneelta etäkoneelle. Mput ottaa argumentikseen useamman tiedostonnimen.

Hash. Tulostaa #-merkin aina kun dataa on siirretty yhden kilotavun verran. Helpottaa siirron edistymisen seuraamista.

Turvallisuus

FTP on vanha tiedonsiirtoprotokolla, eikä siinä ole turvallisuusnäkökohtia otettu kovinkaan hyvin huomioon. Turvallisuuden lisäämiseksi tiedostopalvelimen ylläpitäjän kannalta on kuitenkin olemassa keinoja. USA:n standardi- ja teknologiainstituutti neuvookin, että Ftpd-ohjelmasta (mikä toimii FTP-ohjelmana tiedostopalvelimen päässä) tulisi käyttää mahdollisimman uutta versiota vanhemmissa olevan bugin vuoksi. Edelleen neuvotaan, että käyttäjien mahdollisuus tallettaa palvelimiin itse dataa tulisi harkita tarkkaan ja kerrotaan, miten salasana- ja käyttäjätietoihin pääsy estetään parhaiten. [2]

Helmikuussa 1994 julkaistussa RFC:ssä kerrotaan myös, miten palomuurin läpi käytetyn FTP-yhteyden turvallisuutta voidaan parantaa. Turvallisuusriskin muodostaa se, että FTP-ohjelmat avaavat yhteyden useiden eri porttien välille sattumanvaraisesti käyttäen PORT-käskyä. RFC:ssä ehdotetaankin, että PORT-käsky vaihdetaan PASV-käskyyn. Tällöin palvelin valitsee itse portin, johon käyttäjä ottaa yhteyden. [3]

Muut tiedostonsiirtoprotokollat

Eräs tällainen on FSP (File Service Protocol). Sitä käytetään UNIX-ympäristössä monesti tavallisten UNIX-käskyjen tavoin (tätä varten on tehty aliakset). Protokolla eroaa FTP:stä siinä mielessä, että se on yhteydetön. Se vain pyytää etäkonetta lähettämään datan paketteina tai lähettää datan etäkoneelle samaa menetelmää käyttäen. Tiedonsiirtomenetelmää voisi verrata lähinnä peräkkäisten sähköpostiviestien kulkuun. Kullakin tietopaketilla on oma tunnuslukunsa, joiden avulla käyttäjä ja etäkone pysyvät selvillä tiedon kulusta koneiden välillä.

Protokollan etuja on se, että se "kestää" etäkoneen tai verkon kaatumisen. Tiedoston siirtoa on helppo jatkaa siitä kohdasta, mihin jäätiin siirron keskeytyessä. Protokollan käyttöön ei myöskään vaadita käyttäjätunnusta eikä salasanaa, vaan kaikki tapahtuu täysin nimettömästi. [4]

Toinen FTP:n kaltainen ohjelma on TFTP (Trivial File Transfer Protocol). Se käyttää (kuten FSP:kin) hyväkseen UDP:tä (User Datagram Protocol) ja yhteydetöntä siirtotapaa, eikä vaadi käyttäjän autentikointia. Se on hyvin pelkistetty versio FTP:stä, ja siinä on vain murto-osa FTP:ssä olevista käskyistä. [5]

Lähteet

[1] RFC 765: File Transfer Protocol - 1985 *****
<< A HREF="ftp://ftp.funet.fi/pub/standards/RFC/rfc959.txt">ftp://ftp.funet.fi/pub/standards/RFC/rfc959.txt>

[2] Improving the Security of FTP - 1994 ***
<< A HREF="http://csrc.ncsl.nist.gov/nistpubs/800-7/node140.html">http://csrc.ncsl.nist.gov/nistpubs/800-7/node140.html>

[3] RFC 1579: Firewall-Friendly FTP - 1994 **
<< A HREF="ftp://ftp.funet.fi/pub/standards/RFC/rfc1579.txt">ftp://ftp.funet.fi/pub/standards/RFC/rfc1579.txt>

[4] File Service Protocol - 1997 ***
<< A HREF="http://www.cybozone.com/wwm/fsp.html">http://www.cybozone.com/wwm/fsp.html>

[5] RFC 783: Trivial File Transfer Protocol - 1981 ***
<< A HREF="ftp://ftp.funet.fi/pub/standards/RFC/rfc783.txt">ftp://ftp.funet.fi/pub/standards/RFC/rfc783.txt>


Muut linkit

FTP:

RFC 1635: How to Use Anonymous FTP - 1994 ****
<< A HREF="ftp://ftp.funet.fi/pub/standards/RFC/rfc1635.txt">ftp://ftp.funet.fi/pub/standards/RFC/rfc1635.txt>

Käyttöohje ftp.funet.fi -palvelimeen - 1994 ***
<< A HREF="http://www.nixu.fi/~kiravuo/funic.html">http://www.nixu.fi/~kiravuo/funic.html>

The Internet and FTP - 1995 ***
<< A HREF="http://www.islandnet.com/~tmc/html/articles/ftp.htm">http://www.islandnet.com/~tmc/html/articles/ftp.htm>

The Art of Internet: Anonymous FTP - 1992 **
<< A HREF="http://www.iprolink.co.nz/zen-1.0/zen-1.0_5.html">http://www.iprolink.co.nz/zen-1.0/zen-1.0_5.html>

FTP Tutorial - 1996 **
<< A HREF="http://ncrbkp.ncr.usace.army.mil/docs/ab/ftptutor.html">http://ncrbkp.ncr.usace.army.mil/docs/ab/ftptutor.html>

FSP:

FSP Frequently Asked Questions - 1996 ***
<< A HREF="http://www.cyber-net.net/fsp/faq.htm">http://www.cyber-net.net/fsp/faq.htm>

FSP Commands ***
<< A HREF="http://west.cscwc.pima.edu/htbin/helpgate/HELP/FSP">http://west.cscwc.pima.edu/htbin/helpgate/HELP/FSP>

TFTP:

RFC 2090: TFTP Multicast Option - 1997 **
<< A HREF="ftp://ftp.funet.fi/pub/standards/RFC/rfc2090.txt">ftp://ftp.funet.fi/pub/standards/RFC/rfc2090.txt>

Saku Oja
4.11.1997