File Transfer Protocol

FTP, atau File Transfer Protocol adalah protocol yang biasa digunakan ntuk melakukan transfer file antara dua system yang mensupport TCP/IP.

Di Wikipedia, FTP itu diartikan sebagai suatu protocol komunikasi yang mengatur perpindahan file dari satu computer ke computer yang lain di atas suatu jaringan(internetwork).

FTP menggunakan TCP untuk melakukan komunikasi data antara client dengan server, sehingga di antara keduanya dibuat sebuah sesi sebelum transfer data dimulai. Port TCP yang biasa digunakan adalah port 20 dan 21. Port 21 digunakan sebagai control port untuk:

  1. Membuat sebuah koneksi client-server
  2. Mengizinkan client untuk mengirimkan sebuah perintah FTP ke server
  3. Mengembalikan respon server ke perintah tersebut.

Port 20 digunakan untuk membentuk suatu koneksi baru dengan client untuk mentransfer data actual yang sedang dipertukarkan saat melakukan pengunduhan dan pengunggahan.

Koneksi FTP harus ditetapkan dalam dua mode berbeda, yaitu Modus aktif(PORT) dan modus pasif(PASV).

Modus aktif

server FTP diatur untuk menggunakan sambungan di mode aktif menunggu klien FTP pengguna untuk membuka port yang dinamis. Then the client sends a PORT command containing the dynamic port number on which it is listening over the control stream and waits for a connection from the FTP server. Kemudian klien mengirimkan sebuah perintah PORT berisi nomor port yang dinamis yang berisi control stream dan menunggu sambungan dari server FTP. Ketika server FTP memulai sambungan data ke klien FTP itu mengikat port sumber ke port 20 di server FTP.

Dari sudut pandang firewall server-side, untuk mendukung modus aktif FTP saluran komunikasi yang perlu dibuka adalah sebagai berikut:

  • FTP server’s port 21 dari mana saja (Client memulai koneksi)
  • Port server FTP 21 ke port> 1023 (server bereaksi terhadap port kontrol client)
  • Port server FTP 20 ke port> 1023 (server memulai koneksi data ke port data client)
  • Port server FTP 20 dari port> 1023 (Client mengirim ACKs ke port data server)

Modus Pasif

Saat suatu koneksi dibuka pada mode pasif, FTP server tidak menunggu FTP client untuk mengirim informasi data transfer.  Server menggunakan PASV command dan mengirimkan IP address  server ke FTP client untuk menghubungkan kemana dan dimana port tersebut digunakan. Dalam hal ini, FTP mengikat sambungan port sumber ke port yang dinamis. Modus PASV dirancang untuk FTP klien di belakang firewall.

Dari sudut pandang firewall server-side, untuk mendukung modus pasif FTP saluran komunikasi yang perlu dibuka adalah sebagai berikut:

  • FTP server’s port 21 dari mana saja (Client memulai koneksi)
  • Port server FTP 21 ke port> 1023 (server bereaksi terhadap port kontrol client)
  • Port server FTP> 1023 dari mana saja (Client memulai koneksi data ke port acak yang ditentukan oleh server).
  • Port server FTP> 1023 ke remote port> 1023 (Server mengirimkan ACKs (dan data) ke port data client)

Akan tetapi, beberapa administrator jaringan menonaktifkan PASV mode on FTP server karena risiko keamanan.

FTP sebenarnya cara yang tidak aman untuk mentransfer file karena file tersebut ditransfer tanpa melalui enkripsi terlebih dahulu tetapi melalui clear text. Mode text yang dipakai untuk transfer data adalah format ASCII atau format Binary. Secara default, FTP menggunakan mode ASCII untuk transfer data. Karena pengirimannya tanpa enkripsi, maka username, password, data yang ditransfer, maupun perintah yang dikirim dapat di sniffing oleh orang dengan menggunakan protocol analyzer (Sniffer). Solusi yang digunakan adalah dengan menggunakan SFTP (SSH FTP) yaitu FTP yang berbasis pada SSH atau menggunakan FTPS (FTP over SSL) sehingga data yang dikirim terlebih dahulu dienkripsi (dikodekan).

FTP menggunakan Telnet protocol  dalam mengontrol koneksinya.

Format perintahnya adalah:

MAC header IP header TCP header FTP message

Untuk format FTP message, kode perintahnya adalah string karakter abjad diakhiri dengan <space> jika diikuti parameter, dan menggunakan <CRLF> untuk sebaliknya.

Perintah FTP:

Command Description References
ABOR Abort.
ACCT Account.
ADAT Authentication/Security Data. RFC 2228
ALLO Allocate.
APPE Append.
AUTH Authentication/Security Mechanism. RFC 2228
CCC Clear Command Channel. RFC 2228
CDUP Change to parent directory. RFC 959
CONF Confidentiality Protected Command. RFC 2228
CWD Change working directory. RFC 697
DELE Delete.
ENC Privacy Protected Command. RFC 2228
EPRT Extended Data port. RFC 2428
EPSV Extended Passive. RFC 2428
FEAT Feature. RFC 2389
HELP Help.
LANG Language negotiation. RFC 2640
LIST List.
LPRT Long data port. RFC 1639
LPSV Long passive. RFC 1639
MDTM File modification time. RFC 3659
MIC Integrity Protected Command. RFC 2228
MKD Make directory. RFC 959
MODE Transfer mode.
NLST Name list.
NOOP No operation.
OPTS Options. RFC 2389
PASS Password.
PASV Passive mode.
PBSZ Protection Buffer Size. RFC 2228
PORT Data port.
PROT Data Channel Protection Level. RFC 2228
PWD Print working directory. RFC 959
QUIT Logout.
REIN Reinitialize.
REST Restart of interrupted transfer. RFC 3659
RETR Retrieve.
RMD Remove directory. RFC 959
RNFR Rename from.
RNTO Rename to.
SITE Site parameters.
SIZE File size. RFC 3659
SMNT Structure mount. RFC 959
STAT Status.
STOR Store.
STOU Store unique. RFC 959
STRU File structure.
SYST System. RFC 959
TYPE Representation type.
USER User name.
XCUP Change to the parent of the current working directory. RFC 775
XMKD Make a directory. RFC 775
XPWD Print the current working directory. RFC 775
XRMD Remove the directory. RFC 775
XSEM Send, Mail if cannot. RFC 737
XSEN Send to terminal. RFC 737

Format FTP reply code:

Code Description
1yz Positive Preliminary reply.
2yz Positive Completion reply.
3yz Positive Intermediate reply.
4yz Transient Negative Completion reply.
5yz Permanent Negative Completion reply.
x0z Syntax. These replies refer to syntax errors, syntactically correct commands that don’t fit any functional category, unimplemented or superfluous commands.
x1z Information. These are replies to requests for information, such as status or help.
x2z Connections. Replies referring to the control and data connections.
x3z Authentication and accounting. Replies for the login process and accounting procedures.
x4z File system. These replies indicate the status of the Server file system vis-a-vis the requested transfer or other file system action.

FTP reply code:

Code Description
110 Restart marker reply.
120 Service ready in nnn minutes.
125 Data connection already open; transfer starting.
150 File status okay; about to open data connection.
200 Command okay.
202 Command not implemented, superfluous at this site.
211 System status, or system help reply.
212 Directory status.
213 File status.
214 Help message.
215 NAME system type.
220 Service ready for new user.
221 Service closing control connection.
225 Data connection open; no transfer in progress.
226 Closing data connection.
227 Entering Passive Mode <h1,h2,h3,h4,p1,p2>.
228 Entering Long Passive Mode.
229 Extended Passive Mode Entered.
230 User logged in, proceed.
250 Requested file action okay, completed.
257 “PATHNAME” created.
331 User name okay, need password.
332 Need account for login.
350 Requested file action pending further information.
421 Service not available, closing control connection.
425 Can’t open data connection.
426 Connection closed; transfer aborted.
450 Requested file action not taken.
451 Requested action aborted. Local error in processing.
452 Requested action not taken.
500 Syntax error, command unrecognized.
501 Syntax error in parameters or arguments.
502 Command not implemented.
503 Bad sequence of commands.
504 Command not implemented for that parameter.
521 Supported address families are <af1, .., afn>
522 Protocol not supported.
530 Not logged in.
532 Need account for storing files.
550 Requested action not taken.
551 Requested action aborted. Page type unknown.
552 Requested file action aborted.
553 Requested action not taken.
554 Requested action not taken: invalid REST parameter.
555 Requested action not taken: type or stru mismatch.

by: 50406199


  1. You really make it seem so easy with your presentation but I find this topic to be really something which I think I would never understand. It seems too complex and very broad for me. I’m looking forward for your next post, I will try to get the hang of it!

  2. I’ve been browsing online more than 3 hours today, yet I never found any interesting article like yours. It’s pretty worth enough for me. Personally, if all webmasters and bloggers made good content as you did, the internet will be a lot more useful than ever before.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: