ftp i email

FTP

FTP to protokół przesyłania plików między klientem a serwerem w sieciach opartych na IP. Odzwierciedla to sama nazwa która jest akronimem od angielskiego "File Transfer Protocol". Sam protokół oparty jest o TCP/IP i sam w sobie nie jest szczególnie bezpieczny. Wszystko (m.in. hasła) przesyłane jest w postaci zwykłego tekstu, i dlatego współcześnie korzysta się raczej z FTPS lub SFTP. FTPS szyfruje połączenie przy pomocy protokołu SSL, natomiast SFTP wykorzystuje w tym celu SSH.

FTP posiada bardzo prosty system komunikacji między serwerem a klientem. Przebiega ona przy użyciu 4 bajtowych kodów, które składają się z wielkich liter wziętych ze standardu ASCII. Na przykład aby stworzyć nowy folder na serwerze klient musi jedynie wysłać ciąg znaków MKD a następnie nazwę nowego katalogu z terminującym zerem na końcu. Dzięki temu że wszystkie kody mieszczą się w 4 znakach można je kodować za pomocą jednej liczby 32-bitowej, tak więc np. polecenie RETR, pytające serwer o przesłanie kopii pliku o danej nazwie da się zapisać jako 0x52455452, co znacząco ułatwia implementację zarówno klienta jak i serwera, gdyż porównywanie liczb jest dużo prostsze i bezpieczniejsze niż porównywanie ciągów znaków.

Z FTP można korzystać przy pomocy najróżniejszych klientów.

Najbardziej minimalistyczne opcje jakie udało mi się znaleźć to GNU FTP i LFTP. Z obydwu korzysta się przy pomocy interfesju konsolowego, który pozwala na podstawowe operacje na systemie plików, a w przypadku LFTP również na zarządzenie zakładkami. W podobnej kategorii znajduje się również STFTP, który korzysta z tekstowego GUI opartego na bibliotece ncurses. Wszystkie wymienione powyżej działają przynajmniej na systemach UNIX-owych, ale istnieją również porty na Windowsa.



[mn ~] $ ftp testenergetyk.prv.pl Connected to testenergetyk.prv.pl. 220 PRV ftpd Name (testenergetyk.prv.pl:mn): testenergetyk@prv.pl 331 Password required for testenergetyk@prv.pl Password: 230 User testenergetyk@prv.pl logged in Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful 150 Opening ASCII mode data connection for file list drwxr-xr-x 3 1497604 1203977 512 Nov 4 10:52 . drwxr-xr-x 3 1497604 1203977 512 Nov 4 10:52 .. -rw-r--r-- 1 1497604 1203977 51086 Nov 3 17:53 Przechwytywanie.JPG -rw-r--r-- 1 1497604 1203977 12610 Nov 3 17:35 index.34htmln -rw-r--r-- 1 1497604 1203977 959 Nov 4 11:28 index.html -rw-r--r-- 1 1497604 1203977 1535 Nov 3 18:13 index2.html -rw-r--r-- 1 0 1203977 406 Nov 3 17:43 prv_site_config_values.js drwxr-xr-x 2 0 1203977 512 Nov 3 17:35 web 226 Transfer complete ftp>

*przykładowa sesja GNU FTP


Bardziej popularnym rozwiązaniem na systemie Microsofu jest natomiast FileZilla. Tak samo jak programy konsolowe jest dystrybuowana na licencji GNU GPL, a dzięki zastosowaniu biblioteki wxWidgets, działa na praktycznie każdym systemie wspierającym aplikacje okienkowe (kosztem strony wizualnej, wxWidgets potrafi wyświetlać tylko generyczne UI). Tak naprawdę nie oferuje ona żadnych ekscytujących możliwości, być może najbardziej egzotyczną z nich jest możliwość importowania i eksportowania ustawień sesji do pliku XML.

Oprócz dedykowanych programów, w obsługę FTP wyposażonych jest wiele manadżerów plików. Np. UNIX-owy Nautilus i Dolphin posiadają taką funkcję "prosto z pudełka". Na Androidzie systuacja ma się podobnie, do tego stopnia że większość popularnych standalone file managerów dostępnych w Google Play integruje klienta FTP przynajmniej w jakimś stopniu.



EMAIL

Maile elektroniczne u swojej podstawy są po prostu plikami tesktowymi zapisanymi w formacie wstecznie kompatybilnym z ASCII (a więc tak UTF-8 jak i formaty Windowsa oparte o strony kodowania, przy czym w praktyce korzysta się  tylko z UTF-8). Plik taki zaczyna się nagłówkiem w którym znajdują się takie informacje jak kto jest nadawcą, kto jest odbiorcą, data przesłania, temat maila i inne metadane. Po nagłówku następuje faktyczna treśc maila która może być zapisana przy pomocy składni HTML lub w formie zwykłego tekstu.

Klienty email mogą komunikować się z serwerami mailowymi przy pomocy któregoś z wyspecjalizowanych protokołów. Najpopularniejszy jest zdecydowanie IMAP, który synchronizuje zawartość skrzynki na kliencie z zawartością na serwerze, i jest wspierany przez zdecydowaną większość klientów mailowych. W przeciwieństwie do protokołu POP umożliwia np. dostęp do tej samej skrzynki mailowej z wielu klientów na raz i posiada dobrze zdefiniowany mechanizm wprowadzania rozszerzeń do standardu. Wspomniany Post Office Protocol stawia raczej na prostotę implementacji i dlatego mimo pewnych ograniczeń po stronie klienta wciąż pozostaje w użyciu. Swoją dominację IMAP natomiast zawdzięcza temu, że to na nim oparte są klienty webowe poczty elektronicznej. Oprócz dwóch powyższych istnieje jeszcze MAPI. Jest to protokół który stanowi własność Microsoft i to właśnie z niego korzysta klient Microsoft Outlook.