File Transfer Protocol

**FTP** (**File Transfer Protocol**)- **Файл дамжуулах протокол** нь дэлхийн хаана ч байгаа компьютерын файлыг харах, сонирхсоноо хуулах боломж олгоно. FTP талбар нь Хост буюу интернэтэд холбогдсон компьютер бөгөөд түүнд файл хадгалагдана. FTP талбарыг коллеж, их дээд сургууль, засгийн газрын агентлаг, компани, хувь хүмүүс бүрдүүлнэ. Интернэтэд олон мянган FTP талбар бий. Зарим FTP талбар хувийнх байдаг. Ийм талбарын файлд хандахдаа нэвтрэх үгээ оруулна. Олон компани ийм талбарыг дэлхийн өнцөг булан бүрд байгаа өөрийн ажилтан, хэрэглэгчдэд мэдээлэл хүргэх зорилгоор ажиллуулдаг. Мөн нийтийн FTP талбар байх ба нийтэд зориулагдсан асар их мэдээлэл бүхий FTP талбар олон бий. Түүний файлд хандах нэвтрэх үг шаардлагагүй, хэн боловч мэдээллийг үнэгүй авч ашиглаж болно. Энэ сайтуудад холбогдохдоо User ID: anonymous, Password: и-мэйлийн хаягаа бичнэ. FTP нь терминал дээрх хэрэглэгчдэд шууд хэрэглэгдэх боломжтой боловч энэ нь үндсэндээ программуудын хэрэглээнд зориулагдсан юм. Түүнийг анх 1971 онд тодорхойлсон бөгөөд энэ хугацаанд их өөрчлөгдсөн бүрэн тодорхойлолтыг -с олж үзэж болно

FTP нь нэг системээс нөгөөд файл дамжуулахад хэрэглэгддэг стандарт арга юм. Түүний зорилго нь -д:
#Файл хуваалцахыг дэмжих
#Гадаад комьпютеруудын шууд бус далд хэрэглээг дэмжих
#Хэрэглэгчийг машинууд дээрх файл хадгалах системийн өөрчлөлтүүдээс халхлах тусгаарлах
гэж тодорхойлсон байдаг.

### FTP талбар  
FTP талбарын файлууд тус тусын хавтаст хадгалагдаж байдаг. FTP талбарт PUB хэмээх их хавтас байх ба түүнд дэд хавтас, файлууд хадгалагдана. Олонх дэд хавтсын нэр нь түүнд ямар төрлийн файл хадгалагдаж байгааг илэрхийлнэ. Тухайлбал apps хавтаст хэрэглээний программ, docs хавтаст бичгийн файлууд байдаг. Сайн зохион байгуулагдсан FTP талбар нь файлын талаар тайлбар өгөх "readme" буюу "index" файлтай байдаг. Талбарын даац гэж байх бөгөөд FTP талбарт нэг зэрэг холбогдох хүний тоо хязгаартай. Хэрэв FTP талбартай холбогдоход алдааны мэдээлэл гарвал даац нь хэтэрчээ гэсэн үг. FTP талбартай ажлын бус цагаар амралтын өдрүүдэд холбогдоход түүний ачаалал бага байдаг. Зарим нийтийн хэрэгцээний FTP талбар нь өөрийн салбаруудтай байдаг. Эдгээрт үндсэн талбарт байдаг мэдээлэл бүгд байдаг ч ачаалал нь түүнийхээс бага байна. Газар зүйн хувьд хэрэглэгчдэд илүү ойрхон салбар байвал холбогдоход хялбар, найдвартай байна. Салбаруудыг үндсэн талбарын мэдээллээр байнга баяжуулан шинэчилж байдаг.

Интернэтэд зориулсан маш их мэдээллийн сантай нийтийн FTP талбар олон бий. Энэ хувийн FTP талбаруудад төрөл бүрийн программ хангамж, олон төрлийн баримтууд, сүлжээг төхируулдаг файлууд, график зураглал дүрслэлүүд, дууны үгс, MP3 төрлийн дуунууд ба бүх төрлийн мэдээллүүд хадгалагдаж байдаг. Энэ талбар нь түүн рүү нэвтэрхэд нууц үг, код асуухгүй хүн бүхэнд үнэгүйгээр хэзээ ч үйлчлэхэд бэлэн байдаг.

Зарим FTP талбар хувийнх байдаг. Ийм талбарын файлд хандахдаа нэвтрэх нууц үгээ оруулна. Олон компани ийм талбарыг дэлхийн өнцөг буланд байгаа өөрийн ажилтан, хэрэглэгчдэд мэдээлэл хүргэх зорилгоор ажиллуулдаг. Мөн электрон шуудангийн жагсаалтын архивууд мөн л хувийн FTP талбардээр хадгалагддаг.

### Ажиллах зарчим 
Клиент компьютер нь мэдээллийг авах хүсэлтээ уг компьютер руугаа илгээж сервер гэгдэх компьютер нь өгөгдөл программаа хянана. FTP дамжуулалт нь Клиент/Сервер орчинд явагддаг. Хүсэгч машин нь дээрх хүснэгтэд буй клиентүүдийн нэгийг эхэлдэг. Энэ нь түүний хандсан файл серверт (өөр сүлжээн дэх машин) хүсэлтийг хүргэдэг. Энэ хүсэлт нь ихэвчлэн inetd-ээр 21-р порт ру  илгээгддэг. Холболт үүсэх хооронд файл сервер нь FTP сервер хүлээгч эсвэл FTP хүлээгч ажиллуулж байх ѐстой. FTPD бол стандарт FTP сервер хүлээгч юм. Түүний үүрэг нь энгийн, Inetd-р ирүүлсэн холбогдох хүсэлтэд хариу өгч файл дамжуулалтаар хангах үүрэгтэй. Энэ хүлээгч нь unix-ийн ихэнх дискт байдаг. Доор бусад үйлдлийн системүүд дэх FTP серверүүдийг харуулав.  

### Клиент програм 
* Хэрэглэгчийн хүсэж байгаа мэдээллийг сервер рүү дамжуулна
* Дамжуулж байгаа мэдээллийг сервер ойлгох формат руу хувиргах
* Серверт байгаа мэдээллийг хэрэглэгч уншиж чадахаар хувиргах хэрэгтэй

### Сервер програм 
* Клиентээс ирж байгаа хүсэлтийг хүлээн авч боловсруулдаг
* Клиентийн хүсэж байгаа мэдээллийг түүн рүү илгээх үүрэгтэй

## FTP аюулгүй байдал 
Ftp протокол нь аюулгүй байдлын олон сул талтай. 1999 онд  зохиогчид дараах асуудлыг нь эмзэг гэж жагсаасан:
* Brute force attack
* FTP bounce attack
* Packet capture
* Port stealing
* Spoofing attack
* Username protection

FTP протоколоор дамжуулж байгаа өгөгдлүүд шифрлэлт байхгүй. Бүх дамжуулж байгаа хэрэглэгчийн нэр, нууц үг, командууд, цэвэр текст хэлбэрээр сүлжээн дээгүүр дамждаг учраас Сүлжээнд байгаа дурын этгээд FTP гээр дамжуулж байгаа пакетуудыг барьж (packet capture (sniffing)) авахад хэрэглэгчийн мэдээлэлээ алдах боломжтой. SMTP telnet IMAP зэрэг протоколуудад бас өгөгдлөө шифрлэлтгүй дамжуулдаг.

Энэ асуудлын нийтлэг шийдэл:
* Mэдээлэл дамжуулахад аюултай протоколын оронд аюулгүй протокол ашиглах. Жишээ нь: FTP -ийн оронд FTPS, Telnet–ийн оронд TelnetS ашиглах
* Өөр илүү найдвартай аюулгүй файл дамжуулах протокол ашиглах эсвэл SSH протокол ашиглах
* Аюулүй тунел Secure Shell (SSH), эсвэл виртуал хувийн сүлжээ (VPN) ашиглах. 
 
### FTPS 
Хэрэглэгч FTPS шифрлэгдсэн хүсэлт гаргах боломжийг олгодог учраас мэдээлэл алдах боломжгүй. FTP стандартын өргөтгөл юм. Хэрэглэгчийн нэр User команд ашиглан сервер лүү илгээх ба нууц үгээ Pass команд ашиглан илгээнэ. Хэрэглэгчийн илгээсэн мэдээллийг сервер шалгаад серверээс клиент рүү хариу илгээнэ. Сервер холбогдох хүсэлтийг зөвшөөрсөн бол хэрэглэгч нэвтрэх нууц үгээрээ нэвтэрч болно, гэхдээ сервер уг хандалтыг зөвхөн хязгаарлагдмал олгоно.

## Түүх 
;Эхэн үе
*1971 - Файл дамжуулах Протоколын анхны FTP стандарт нь  бөгөөд Abhay Bhushan 1971 оны 4 сарын 16-нд үүсгэсэн.
*1971-1980 - Стандарт RTC 172 RTC 265 мөн RTC 354 энгийн FTP-гийн коммандаар тодорхойлогдсон.
*1980 - Орчин үеийн FTP стандарт нь   ба ITI ийг Жон Фостед үүсгэсэн.
;2 дугаар үе
*1985 - FTP стандарт  ISI–ийн 1985 онд Joyce Reynolds гаргаcан. 
*1980-1997 - Нөхөрсөг галт хана мөн хэрэглэгчийн нууц үг баталгаажуулалтын функцүүдийг клиент болон сервер хоёрын дунд тодорхойлж өгсөн.
;3–р үе
* FTPS (FTP –SSL эсвэл FTP secure протокол нь FTP ийн нэгэн төрөлийн протокол бөгөөд энэ нь FTP д SSL TLC ийн хамгаалтуудыг нэмж өгсөн RTC 2228 –ийг RFS 4217 болгож өргөтгөсөн.
* 1988 өргөтгөл нь ipv6, нат өргөтгөсөн идэвхгүй тусламжийг багтаасан  стандартын нэг хэсэг юм. MID 2000s Managed Sftp анх 1997  cтандартын нэг хэсэг болж хөгжүүлсэн. Байгууллагууд managed file fransfer-ийг хэрэглэж эхэлсэн бөгөөд энэ нь ftp серверийн бас нэгэн шийдэл юм. MTP нь маш өндөр түвшний хамгаалалтуудыг санал болгодог ба Засгийн газарт ихэвчлэн хэрэглэдэг. Мөн FTPS SFTP –ыг дэмжин ажилладаг.

## Файл сервер систем 
Ихэнх сүлжээ нь файл хуваалцахад зориулагдан хөгжүүлэгдсэн байдаг. Файл дамжуулах протокол (FTP) нь энэ зорилгоор ашиглагддаг. FTP протокол нь сервер дээрээс файл татах болон upload хийхэд чухал ач холбогдолтойгоор ашиглагддаг ба мөн халдлагын бай болж байдаг. Клиент компьютер (хэрэглэгч) шинээр файл бий болгох, үүсгэсэн файлыг унших, шинэчлэх болон устгах боломжийг файл системийн интерфейсээр хангаж өгдөг. FTP болон HTTP гэх мэт протокол ашиглан клиент компьютер нь өөрийн хандах эрхийн хүрээн дэх хязлаарлалтайгаар файлуудад ханддаг. Сервер нь өндөр хүчин чадалтай үйлдлийн систем шаардагдах ба энэ нь хэрэглэгчдэд нэг дор олноор үйлчлүүлэхэд хангалттай хүчин чадалтай байх хэрэгтэй, нөгөө талаас найдвартай байх шаардлагатай. Сервер нь серверийн програмуудыг суулгасан байнгын асаалттай компьютер дээр байрлах бөгөөд тухайн компьютер нь ip хаягтай байх ба түүнийг нь домэйн нэртэй холбосноор тухайн вэбсайтыг үзэх боломжтой болдог. Бүх файлуудыг нэгдсэн сервэрүүд дээр хадгалж, хэрэглэгчид өөрийн эрхийн хүрээн дэх файлуудад хандах боломжтой байдаг. Тус файлуудад эрх бүхий хэрэглэгч, админууд хандах болон тус файлд бичих эрхтэй байна. Мэдээж хэрэглээний онцлог гэх мэт зүйлсээс нь хамааруулан зөвхөн өөрөө хандах боломжтойгоор ч файлыг байршуулж болох юм. 

Хэрэглэгчид өөрийн эрхийн хүрээнд уг сервэр лүү вэб хөтөчөөр дамжиж, файлыг устгах, бичих, үүсгэх гэх мэт бүхий л үйлдлүүдийг өөрийн эрхийн хүрээнд тус сервэр дээрх файлуудад гүйцэтгэх боложмтой юм.

Сүлжээнд холбогдсон компьютерууд хооронд файл дамжуулах vvрэгтэй. Энэ файл дамжуулах протокол бүхий төв нь хэрэглэгчийн тавьсан мэдээлэл агуулсан файлуудыг хадгалж байдаг. Вэб хуудсаа хийж дууссан бол түүнийг Интернэтэд байрлуулахдаа энэ тусгай зориулалтын програм хангамжаас ашигладаг. Ийм зориулалтын програм хангамжаас WsFTP, CuteFTP , FileZilla програмуудыг түгээмэл хэрэглэдэг. Өөрөөр хэлбэл, энэ 3 програм хангамжийн аль нэгийг нь компьютертоо суулгасан байхад хангалттай. Мөн файлаа байрлуулах сервэрийн нэр, зам болон хэрэглэгчийн нэр, нууц үгээ мэдэж байж програмаа ашиглан сервэртээ хандан файлаа байрлуулж чадна. Вэб хуудас зөөж байршуулдаг ийм төрлийн програм хангамжуудын хийж гүйцэтгэх зорилго нэг учраас ажиллах зарчим ерөнхийдөө адилхан, харин команд, цэсний байрлал болон харагдах цонхны байрлал өөр байх нөхцөлтэй. Дээр дурдсан WsFTP, CuteFTP, FileZilla програмууд түгээмэл ашиглагддаг файл дамжуулах програм хангамж юм. Энэ 2 програм хангамжийн аль нэгийг сонгон зааврын дагуу ажиллахад файлаа сэрверт амжилттай хуулж чадна.

### FileZilla 
Filezilla – Програм хангамжийг татаж, FTP-сервер файлуудыг хуулж байна. Програм хангамжийн гол онцлог Filezilla аюулгүй өөр өөр сервертэй файлыг шилжүүлэх FTPS ба SFTP протоколуудыг дэмждэг эвдэрсэн файл татаж авах, каталог нь кэш, алсын хайх гэх мэт сангуудын харьцуулах сэргээж аюулгүй холболт, талбайн менежер, дэмжлэг ордог. Програм хангамжийн FTP серверүүдтэй ажиллаж байхдаа дамжуулсан өгөгдлийг хамгаалдаг олон холболт нь галт ханаар хамтран ажилладаг. Filezilla нь бас таныг сүлжээг өөрчлөх болон зурвасын ачааллыг бууруулахын тулд хурдны хязгаарыг тогтоох боломжийг олгодог.

#### Үндсэн шинж чанар 
* FTP-сервер татаж авах, файлуудыг хуулах
* Төрөл бүрийн өгөгдөл дамжуулах протокол дэмжих
* Төрөл бүрийн галт ханануудын хамтран ажиллах
* Сүлжээний холболтын тохируулах нь

**Cute FTP 5.0**

XP - Хэрэглэгч энэхүү програмтай ажиллахад зайлшгүй мэдэх шаардлагатай анхан шатны мэдлэгт доорх зүйл хамаарна. Үүнд: 

-    CuteFTP програмыг компьютертээ суулгах, 

-    CuteFTP програм хангамжтай ажиллах,

-    CuteFTP програмыг холболтонд бэлтгэж, тохируулах,

-    CuteFTP програмаар холболт хийх, файл дамжуулах,

-    CuteFTP програмын холболтоо салгах,   Татаж авах хаяг:   

### **WsFTP** 
Уг програмыг татаж авах болон суулгах процесс нь дээрх FTP програмтай зарчмын хувь адилхан юм. 

-    WsFTP програм хангамжийн ерөнхий тохируулга, 

-    WsFTP програмын ажлын директорыг тохируулах,

-    WsFTP програмаар холбогдох, файл дамжуулах,   Татаж авах хаяг: www.ipswitch.com
### NFS, SMB 
Нэг сүлжээнд байгаа хэрэглэгчид өөрсдийн файлуудыг хуваалцах боломжтой. Сүлжээнд ингэж ажиллах боломжыг Unix төрлийн үйлдлийн систем дээр NFS, харин Windows төрлийн үйлдлийн системд SMB/CIFS буюу SAMBA протоколууд тус тус олгодог. Үүнийг ашигласнаар өргөн хэрэглэгддэг өгөгдлийг нэгтгэн нэг машин дээр байрлуулж, түүнд алсаас хандах боломжтой болсноор дотоод машинууд илүү бага диск хэрэглэх болно, хэрэглэгчийн хувьд сүлжээнд байгаа машин бүр дээр тус тусдаа гэрийн сантай байх шаардлагагүй болно. Гэрийн санг нэг удаа NFS сервер дээр үүсгээд түүнийгээ сүлжээгээр дамжин хэрэглэх боломжтой гэх мэт давуу талуудтай. Network File System буюу Сүлжээний Файлын Систем буюу NFS нь сүлжээний орчинд файл болон санг бусадтай хуваалцах боломжийг олгодог. NFS-г хэрэглэн, хэрэглэгчид болон програмууд алслагдсан систем рүү дотоод файл руу хандаж байгаатай адилаар хандах боломжтой. Samba бол Microsoft® Windows® харилцагчдад файл болон хэвлэх үйлчилгээг үзүүлдэг, өргөн хэрэглэгддэг нээлттэй эхийн програм хангамжийн багц юм.

### FreeBSD 
File Transfer Protocol буюу Файл Дамжуулах Протокол (FTP) нь хэрэглэгчдэд  серверээс файлыг авах болон тавих хялбар замыг бий болгодог. FreeBSD үндсэн систем дотроо  сервер програм **ftpd**-г агуулж байдаг. Энэ нь FreeBSD дээр  серверийг босгох, удирдах ажлыг төвөггүй болгодог. File Transfer Protocol буюу Файл Дамжуулах Протокол (FTP) нь хэрэглэгчдэд  серверээс файлыг авах болон тавих хялбар замыг бий болгодог. FreeBSD үндсэн систем дотроо  сервер програм **ftpd**-г агуулж байдаг. Энэ нь FreeBSD дээр  серверийг босгох, удирдах ажлыг төвөггүй болгодог.

## **FTP ашиглах командууд** 
FTP комманд нь интернэтийн файл зөөх стандарт протокол юм. FTP-ийн тусламжтайгаар алслагдсан сүлжээнээс файлыг зөөж, хуулж, устгаж болно. FTP - ийн үндсэн коммандууд ! [ commad ] Энэ коммандыг ажиллууснаар ftp> гэсэн урилгыг сольж локал машин дээр ажилах боломжийг олгоно. Эргээд ftp> урилга гаргахын тулд exit-ийг бичиж орно. 
* **help** - боломжтой бүх FTP  коммандуудын жагсаалт харах
* **ls** -  алсын сервер дахь файлуудын жагсаалт харах

* **open** – өөр FTP сервер уруу холбогдох

* **rmdir** -  алсын зайнаас хандаж байгаа серверт  сан устгах 
* **mikdir** - алсын зайнаас хандаж байгаа серверт шинэ сан үүсгэх

* **append** local file [ remote file ] Remote хост дээр байгаа файлтай хавсаргах файлыг сервэр рүү хуулах ба түүний тухай мэдээлэлийг агуулах дагалдах файл.

* **ascii**  Энэ комманд нь текст горимд шилжүүлнэ.

* **binary** Хоёртын горимд шилжүүлнэ. Энэ нь хост руу exe, com, bat файлуудыг хуулах ба хуулж авахад хэрэглэгдэнэ.

* **bye** Remote хостоос холболтоо тасалж, Мөн FTP програмаас гарна..

* **cd** [ directory name ] FTP-ээр холбогдсон машин дээр ажиллах сангаа солих.

* **close** Мөн Remote хостоос холболтоо таслах ба bye коммандаас ялгаатай нь цонх хаагдахгүй DOS-ийн урилга (C:\>_) ажиллахад бэлэн байдалтай байна.

* **disconnect** close коммандтай адил.

* **delete** [ file name ] Remote хост дээр байгаа файлыг устгах.

* **get** remote file [ local file ] Энэ комманд нь локал машинаас remote хост руу файл хуулах боломжийг олгоно. Хэрвээ файл хуудагдахгүй гэсэн тусгайлсан мэдээлэл гарахгүй бол remote хост дээр хуулах гэж байгаа файлтай ижил нэртэй файл байна гэсэн үг.
* **hash** Зөөх, хуулах явцыг # (hash sign) тэмдэгт ашиглах харуулах. Нэг дата блокийн хэмжээ нь 2048 байт байна. help [ command name ] Энэ комманд нь коммандуудын тухай мэдээлэлийг гаргана. Харин аргументийг нь өгөхгүй. Коммандуудын жагсаалтыг гаргахын тулд промтын ард help гэж бичнэ.

* **lcd** [ directory name ] Идэвхтэй локал директорыг харуулах ба сольж болно. Директорын нэрийг коммандын ард бичихгүй бол одоо ажиллаж байгаа байрлалыг харуулна.

* **ftp>lcd** c:\windows\..... сангаа сольж болно.

* **ls** [ remote-directory ] Энэ команд нь зөвхөн файлын нэрийг өргөтгөлийн хамт дэлгэцний зүүн талд багана хэлбэрээр жагсаан гаргана. Мөн ftp>ls /home командынхаа ард сангийнхаа нэрийг бичвэл тухайн сангийн доторхи зүйлийг жагсаан харуулна.

* **mdelete** remote-files Remote хостоос файл устгах. Delete командаасаа ялгагдах зүйл нь олон файлыг нэгэн зэрэг устгах боломжтой.

* **get remote files** Энэ команд нь remote хостоос олон файл татаж авах боломжийг олгоно. Команд өгсний дараа файлуудыг локал идэвхтэй байгаа сан руу хуулна.

## Цахим холбоос 
* RFC 959 – File Transfer Protocol
* RFC 1579 – Firewall Friendly FTP
* RFC 2228 – FTP Security Extensions
* RFC 2428 – FTP Extensions for IPv6 and NATs
* RFC 2640 – Internationalization of the File Transfer Protocol
* RFC 3659 – Extensions to FTP

;Серверүүд
* VsFTPd (Unix)
* ProFTPd (Unix)
* Pure-FTPd (Unix)
* FileZilla Server (Windows)
* FTP Server Test (Online)

;Протокол
* Raw FTP Command List
* FTP Sequence Diagram


Ангилал:Интернэт-Файл дамжуулалтын протокол