Протокол за пренос на податотеки

Протокол за пренос на податотеки (ППП) е стандарден мрежен протокол кој се користни за копирање на податотека од еден на друг хост преку TCP заснована мрежа, како што е Интернет. ППП се заснова на клиент-опслужувач архитектурата.Forouzan, B.A. (2000). TCP/IP: Protocol Suite. Прво издание, Њу Делхи, Индија: Tata McGraw-Hill Publishing Company Limited. ППП клиентите се индентификуваат со користење на корисничко име и лозинка, но исто така може да се поврзат и анонимно на ППП опслужувачот доколку истиот тоа го има дозволено.

Првите ППП клиентски апликации беа интерактивни алатки за командната линија, спроведувајќи стандардни команди и синтакса. Графичките кориснички интерфејс клиенти, кои беа развиени за многу  популарните десктоп оперативни системи, се користат и денес.

 Историја 

Оригиналните спецификации за Протоколот за пренос на податотеки напишани од Abhay Brushan и објавени како RFC 114 на 16 Април 1971 и подоцна заменети со RFC 765 (Јуни 1980) и RFC 959 (Октомври 1985), тековните спецификации. Неколку предложени измени за стандардот RFC 959, на пример RFC 2228 (Јуни 1997) предлагаат безбедносни екстензии и RFC 2428 (Септември 1998) дава поддршка за IPv6 и дефинира нов тип на пасивен режим. .Clark, M.P. (2003). Data Networks IP and the Internet. Прво издание. Западен Сасекс , Англија: John Wiley & Sons Ltd.

 Преглед на протоколот 
Протоколот е наведен во RFC 959, кој е сумиран подолу. .Postel, J., & Reynolds. J. (Октомври 1985). RFC 959. In The Internet Engineering Task Force.

Клиентот прави TCP врска до опслужувачката порта 21. Оваа врска, наречена контролна врска, останува отворена за време на траењето на сесијата, со втора врска, наречена податочна врска , отворена од опслужувачот од неговата порта 20 до клиентската порта (наведени во преговарачкиот дијалог) како што е потребно за пренос на податочна податотека. Контролната врска се користи за администрација на сесија (односно, команди, идентификација, лозинки) )Kurose, J.F. & Ross, K.W. (2010). Computer Networking. Петто издание. Бостон, MA: Pearson Education, Inc. разменета помеѓу клиентот и опслужувачот користејќи telnet како протокол. На пример "RETR "filename"" веднаш ќе ја пренесе одредената податотека од опслужувачот до клиентот. Поради две-портната структура, ППП се смета за out-of-band, за разлика на in-band протоколот како што е HTTP.

опслужувачот одговара на контролната врска со статус код со три цифри во ASCII со опционална текст порака, на пример "200" (или "200 OK.") значи дека последната команда беше успешна. Бројките го претставуваат кодот број и опционалниот текст претставува објаснување (на пример ,<OK>) или се потребни параметри (на пример, <Треба корисничка сметка за зачувување на податотека>). Пренос на податотека во прогрес низ податочна врска може да биде прекинат користејќи порака на прекин испратена низ контролната врска.

ППП може да биде извршен во активен или пасивен режим, којшто одредува како податочната врска е воспоставена. Во активен режим, клиентот ја испраќа на опслужувачот IP-адресата и бројот на портата на која клиентот ќе слуша, и опслужувачот иницира TCP врска. Во ситуации кога клиентот е зад firewall и не може да ја прифати дојдовната TCP врска, пасивниот режим може да се користи. Во овој режим клиентот испраќа PASV команда на опслужувачот и добова една IP-адреса и бројот на портата за возврат. Клиентот ги користи овие податоци за отворање на врската до опслужувачот. Двете форми се ажурирани во септември 1998 година за да поддржат IPv6. Во тоа време беа направени и други промени на пасивниот режим, правејќи го продолжен пасивен режим.Allman, M. & Metz, C. & Ostermann, S. (Септември 1998). RFC 2428. In The Internet Engineering Task Force.

Додека се пренесуваат податоци низ мрежата, четири претставувања на податоци може да се користат:
 ASCII режим: секористи за текст. Податоците се претворени, ако е потребно, од испраќачкиот хост на претставувањето на карактерите во "8-битен ASCII" пред преносот, и (повторно, ако е потребно) до примачкиот хост на претставувањето на карактерите. Како последица на тоа, овој режим е несоодветен за податотеки кои содржат податоци, освен обичен текст.
 Слика режим (вообичаено се нарекува Бинарен режим): испраќачката машина ја испраќа секоја податотека бајт по бајт, и примателот ги снима овие потоци од бајти како што ги прима.(Поддршката за Image режим се препорашува за сите имплементации на ППП).
 EBCDIC режим:се користи за обичен текст помеѓу домаќините користејќи го множеството со карактери EBCDIC. Овој режим инаку е како ASCII режимот.
 Локален режим:дозволува два или повеќе компјутери со идентични поставувања  да испраќаат податоци во неслободен формат, без потреба да ги претвораат во ASCII.

За текстуални податотеки, различен формат ги контролира и евидентира опциите на структурата кои се предвидени. Овие одлики се дизајнирани за да се олеснат податотеките кои содржат Telnet или ASA форматирање.

Преносот на податоци може да се направи на било кој од трите начини:

 Поточен режим:Податоците се праќаат како континуиран поток, ослободувајќи го ППП од каква било обработка. Донекаде, сите обработки се оставени на TCP. Не е потребен индикатор End-of-file, доколку податоците се поделени во записи.
 Блок режим:ППП ги разбива податоците во неколку блокови, (наслов на блокот, број на бајт, и податочно поле) и потоа ги пренесува во TCP.
 Компресиран режим:Податоците се компресирани со еден единствен алгоритам (вообичаено run-length кодирање).

 Безбедност 
ППП не бил дизајниран да биде сигурен протокол-особено на денешните стандарди-и има многу безбедносни слабости. Во Мај 1999, авторите на RFC 2577 ги набројале следните недостатоци:Allman, M. & Ostermann, S. (Мај 1999). RFC 2577. In The Internet Engineering Task Force. Retrieved from http://www.ietf.org/rfc/rfc2577.txt

 Напади на отскокнување
 Напади од измами
 Напади од брутална сила
 Фаќање на пакети (душкање)
 Заштита на корисничкото име
 Крадење на порти

ППП не бил дизајниран за да го шифрира својот сообраќај; сите преноси се во чист текст, и корисничките имиња, лозинки, команди и податоците може лесно да бидат прочитани од било кој кој може да фаќа пакети преку ( душкање) на мрежата. Овој проблем е заеднички за многу спецификации на Интернет протоколи (како што се SMTP, Telnet, POP и IMAP) дизајнирани пред создавањето на механизми за шифрирање како што се TLS или SSL. Заедничко решение за овој проблем е користењето на “безбеден”, TLS-заштитена верзија на несигурни протоколи (на пример,  FTPS за FTP, TelnetS за Telnet и други) или избор на различен, посигурен протокол кој може да се справи со работата, како што е SFTP/SCP алатки, заедно со повеќето имплементации на Secure Shell протоколот.

 Анонимни ППП 
Хост којшто обезбедува услуги на ППП може дополнително да обезбедува анонимен ППП пристап. Корисниците обично се најавуваат на сервисот со ‘анонимна’ корисничка сметка кога ќе бидат известени за корисничко име. Иако корисниците најчесто треба да ги испраќаат своите email адреси наместо лозинка, без потврда всушност изведена доставата на податоци;Deutsch, P. & Emtage, A. & Marine, A. (May 1994). RFC 1635. In The Internet Engineering Task Force.  Retrieved from http://www.ietf.org/rfc/rfc1635.txt примери на анонимни ППП опслужувачи можат да бидат најдени овде.

 Далечински ППП или ПППmail 
Каде што ППП пристапот е ограничен, далечинскиот ППП (или ПППmail) сервисот може да се користи за да се избегне проблемот. Е-поштата која ги содржи ППП командите за да се изврши е испратен на далечинскиот ППП опслужувач, кој е опслужувач за пошта што го расчленува дојдовната е-пошта, ги извршува ППП командите, и испраќа назад е-пошта со сите преземени податотеки како прилог. Очигледно ова е помалку флексибилно од ППП клиент, како што не е можно да се погледнат директориумите интерактивно или за менување на команди, и исто така може да има проблеми со големите датотечни прикачувања во одговорите што се добиваат од опслужувачите за пошта. Услугата се користи само кога некои корисници имаат пристап до Интернет преку е-мејл портали како што е BBS или онлајн сервис.

 Поддршка за прелистувачи 
Најчестите прелистувачи можат да вчитат податоци хостирани на ППП опслужувачи, иако тие можеби не поддржуваат протокол екстензии како што е FTPS. ]].Matthews, J. (2005). Computer Networking: Internet Protocols in Action. 1st ed. Danvers, MA: John Wiley & Sons Inc. Кога ППП-наместо HTTP- URL е добиена, достапни содржини на оддалечен опслужувач се претставени на начин сличен на оној што се користи за други веб содржини. Полно-опремен ППП клиент може да се движи (run) во рамките на Firefox во форма на проширување наречена FireFTP  

ППП URL синтаксата е опишана во RFC 1738,Berners-Lee, T. & Masinter, L. & McCahill, M. (December 1994). RFC 1738. In The Internet Engineering Task Force. Retrieved from http://www.ietf.org/rfc/rfc1738.txt земајќи ја формата:

ftp://[<корисник>[:<лозинка>]@]<хост>[:<порта>]/<патека_на_url>

(Делот во заградите е опционален.) На пример:

ftp://public.ftp-servers.example.com/mydirectory/myfile.txt

или:

ftp://user001:secretpassword@private.ftp-servers.example.com/mydirectory/myfile.txt

Повеќе детали за впишувањена корисничкото име и лозинката може да се нјдат во документацијата на пребарувачите, како што се, на пример , Firefox и Internet Explorer.

Стандардно, повеќето прелистувачи користат пасивен (PASV) режим, кој полесно го преминува крајниот корисничи firewall.

 NAT и поминувањето на  огнените ѕидови 
ППП нормално пренесува податоци со тоа што опслужувачот се поврзува назад со клиентот, откако командата PORT е испратена на од страна на клиентот. Ова е проблематично и за NAT и за огнените ѕидови, кои не дозволуваат врски од Интернетот кон внатрешните домаќини. За NAT, дополнителна компликација е застапеноста на IP-адреси и бројот на портата во PORT командата што се однесува на IP-адресата на домашниот хост и портата, наместо јавната IP-адреса и портата на NAT.

Постојат два пристапа кон овој проблем. Една од нив е дека ППП клиентот и ППП опслужувачот ја користат PASV командата, која што предизвикува податочната врска да се утврди од ППП клиентот до опслужувачот. Ова е широко употребувано од современите ППП клиенти. Другиот пристап е да NAT ги менува вредностите на PORT командата, користејќи апликација на ниво на портал за оваа намена.

 Безбеден ППП 
Постојат неколку методи за безбедно пренесување на податотеки што се нарекуваат “Безбеден ППП” во една точка или друга.

 FTPS (експлицитен) 
Експлицитниот FTPS е продолжение на ППП стандардот којшто им овозможува на клиентите да побараад да ППП сесијата биде шифрирана. Тоа се прави со праќање на командата “AUTH TLS”. опслужувачот има опција да дозволи или одбие врски кои не барааат TLS. Најновата дефиниција на овој протокол е RFC 4217.

 FTPS (имплицитен) 
Имплицитниот FTPS е застарен стандард за ППП којшто бара употреба на SLL или TLS врска. ТОј бил определен да користи различни порти од обичниот ППП.

 SFTP 
SFTP,  "SSH Протокол за пренос на податотеки," не е поврзан со ППП освен тоа што и тој исто така пренесува податотеки и има слично командно множество за корисниците.

 ППП преку SSH (не SFTP) 
''ППП преку SSH (не БППП)” се однесува на праксата на тунелирање на нормална ППП сесија во текот на SSH врска.
Бидејќи ППП користи повеќе TCP врски (невообичаено за TCT/IP протокол кој сè уште е во употреба), особено е тешко да се пробие преку SSH. Со многу SSH клиенти, којшто се обидуваат да се пробијат за “каналот за контрола” (почетна клиент-опслужувач врска на портата 21) ќе биде заштитен само тој канал; кога податоците се пренесени, ППП софтверот на двата краја ќе постави нови TCP врски (“податочни канали”),  којшто ја заобиколуваат SSH врската, според тоа нема доверливост, интегрирана заштита итн.

Во спротивно, е неопходно за SSH клиент софтверот да има специфични знаења за ППП протоколот, и да се следи и да се поправи ППП каналот за контрола на пораки и автономно да се отвораат нови препраќања за ППП податочните канали. Верзијата 3 на [[SSH Комуникациската безбедност , GPL лиценцирано FONC, и Co:Z FTPSSH Proxy  се трите софтверски пакети кои го поддржувааат овој режим.

ППП преку SSH, понекогаш се нарекува “безбеден ППП”; ова не треба да се меша со другите методи за обезбедување на ППП, како на пример со SSL/TLS (FTPS). Други методи на пренос на податотеки со користење на SSH кои не се поврзани со ППП вклучуваат  SFTP и БКП; во секоја од овие, целиот разговор (акредитиви и податоци) е секогаш заштитен со SSH протоколот.

 Список на ППП команди 
Подолу е Список на ППП команди кои мошат да бидат до ППП  опслужувач, вклучувајќи ги сите команди кои се стандардизирани во RFC 959 од страна на IETF. Сите команди подолу се RFC 959 засновани освен ако не е поинаку назначено. Имајте на ум дека повеќето командни линии на ППП клиентите на корисниците им презентираат свое множество команди. На пример, GET е заедничка корисничка команда за да ја спуштите податотеката наместо необработената (сурова) команда RETR.

 Команда RFCОпис ABOR  Прекини активен пренос на податотека. ACCT  Информации за корисничката сметка. ADAT  RFC 2228 Проверка за автентичност/Безбедност на податоци. ALLO  Додели доволно простор за да се прими податотека. APPE  Додава. AUTH  RFC 2228 Проверка за автентичност/Безбедносен механизам. CCC   RFC 2228 Јасен Команден Канал CDUP  Промена на главниот директориум. CONF  RFC 2228 Доверлива заштитна команда. CWD   Промена на работниот директориум. DELE  Бришење на податотека. ENC   RFC 2228 Заштита на приватен канал. EPRT  RFC 2428 Одредува проширена адреса и портата на која што опслужувачот треба да се поврзе. EPSV  RFC 2428 Внесете продолжен пасивен режим. FEAT  RFC 2389 Добиј список на функции имплементирана од страна на опслужувачот.  LANG  RFC 2640 Договарање на јазик. LIST Ако е одредено враќа информации за податотеката или директориумот, инаку враќа информации од тековниот директориум. LPRT  RFC 1639 Одредува долга адреса и порта на која што опслужувачот треба да се поврзе.  LPSV  RFC 1639 Внеси долг пасивен режим.  MDTM  RFC 3659 Врати го последното изменето време на наведената податотека.  MIC   RFC 2228 Интегрирана заштитена команда.  MKD   Направи директориум. MLSD  RFC 3659 Листај ја содржината на директориумот ако директориумот е именуван.  MLST  RFC 3659 Обезбедува податоци за точно именуван објект на командната линија, и за никој друг.  MODE  Го поставува режимот на пренос (Поток, Блок, или Компресиран). NLST  Враќа список на имињата на податотеките во одреден директориум. NOOP  Нема операција (лажен пакет;се користи главно за keepalives). OPTS  RFC 2389 Одбери опција за функција.  PASS  Лозинка за автентикација. PASV  Внесете пасивен режим. PBSZ  RFC 2228 Заштита на големината на буферот.  PORT  Ја одредува адресата и портата на која опслужувачот треба да се поврзе. PROT  RFC 2228 Безбедносно ниво на податочни канали. PWD   Печати работен директориум. Го враќа тековниот директориум на хостот. QUIT  Исклучување. REIN  Ре иницијализирање на врската. REST  Рестартирај го преносот од назначена точка. RETR  Испрати копија од податотеката. RMD   Отстрани директориум. RNFR  Преименувај од. RNTO  Преименувај до. SITE  Испрати страна специфични команди до оддалечен опслужувач. SIZE  RFC 3659 Ја враќа големината на податотеката.  SMNT  Качи датотечна структура. STAT  Го враќа тековниот статус. STOR  Прифати ги податоците и сними ги податоците како податотека на опслужувачката страна STOU  Да се чува податотеката посебно. STRU  Постави ја структурата на пренос на податотеки. SYST  Врати го типот на системот. TYPE  Го поставува режимот (ASCII/Бинарен). USER  Автентичност на корисничкото име.

 Список на повратни кодови на ППП опслужувачот – како одговор накоманди од клиентот, ППП опслужувачето враќа одговор кодови.

 Поврзано 
 Спередба на ППП клинет софтверот
 Споредба на ППП опслужувач софтверот
 Curl-loader - FTP/S loading/testing open-source SW
 File eXchange Protocol (FXP)
 File Service Protocol (FSP)
 FTAM
 FTPFS
 List of file transfer protocols
 List of FTP commands
 List of FTP server return codes
 Managed File Transfer
 OBEX
 Shared file access
 TCP Wrapper

 Наводи 

 Натамошно читање 
 RFC 959 – (Standard) протокол за пренос на податотеки (FTP). J. Postel, J. Reynolds. October 1985.
 RFC 1579 – (Informational) Firewall-Friendly FTP. February 1994.
 RFC 1635 – (Informational) How to Use Anonymous FTP. May 1994.
 RFC 1639 – FTP Operation Over Big Address Records (FOOBAR). June 1994.
 RFC 1738 – Uniform Resource Locators (URL). December 1994.
 RFC 2228 – (Proposed Standard) FTP Security Extensions. October 1997.
 RFC 2389 – (Proposed Standard) Feature negotiation mechanism for the протокол за пренос на податотеки. August 1998.
 RFC 2428 – (Proposed Standard) Extensions for IPv6, NAT, and Extended passive mode. September 1998.
 RFC 2577 – (Informational) FTP Security Considerations. May 1999.
 RFC 2640 – (Proposed Standard) Internationalization of the протокол за пренос на податотеки. July 1999.
 RFC 3659 – (Proposed Standard) Extensions to FTP. P. Hethmon. March 2007.
 RFC 5797 – (Proposed Standard) FTP Command and Extension Registry. March 2010.
 RFC 7151 – (Proposed Standard) протокол за пренос на податотеки HOST Command for Virtual Hosts.  March 2014.

 Надворешни врски 

 FTP Commands and Extensions registry
 Raw FTP command list
 FTP Sequence Diagram 
 VsFTPd (Unix)
 ProFTPd (Unix)
 Pure-FTPd (Unix)
 FileZilla Server (Windows)
 FTP Server Test (Online)

Категорија:FTP
FTP commands
Категорија:Clear text protocols
Категорија:Network file transfer protocols
Категорија:History of the Internet
Категорија:Application layer protocols
Категорија:Internet protocols
Категорија:Internet standards
Категорија:Unix network-related software