FTP یا File Transfer Protocol یا پروتکل انتقال فایل یک پروتکل لایه 7 (لایه کاربرد) است که با هدف انتقال فایل بین کامپیوترها بوجود آمده است. این پروتکل به کاربران اجازه میدهد که فایلهای خود را در شبکههای مبتنی بر TCP/IP انتقال دهند. این شبکه میتواند شبکه داخلی یا حتی شبکه اینترنت باشد.
این پروتکل در سال 1971 توسط ابـهی بـوشن (Abhay Bhushan) توسعه داده شد.
از آنجایی که FTP توانسته مشکل دیرینه انتقال فایل بین کامپیوترها را حل کند، بسیار مجبوب است. کاربرد این پروتکل بسیار گسترده و البته مشخص میباشد. برای مثال یک سازمان بوسیله این پروتکل، این امکان را به کارمندان خود میدهد که فایلها را در سطح سازمان به اشتراک بگذارند.
یک ارتباط FTP به اینصورت است که یک FTP سرور وجود دارد که مدیریت فایلهای ذخیره شده برروی سرور را به عهده دارد. سپس کاربران مجاز به آدرس سرور متصل میشوند و فایلهایی را دانلود و یا آپلود میکنند.
در یک ارتباط FTP دو کانال وجود دارد:
•کانال دستور (Command Channel)
•کانال داده (Data Channel)
همانطور که از اسم آن پیداست، کانال دستور برای انتقال دستورات و پاسخ آنها بین کلاینت و سرور میباشد. این تبادلات از طریق پورت 21 انجام میشود.
برای مثال وقتی یک کاربر میخواهد به یک سرور FTP وصل شود و یا میخواهد درخواست دانلود و یا آپلود بدهد، این درخواست از کانال دستور یا همان Command Channel منتقل میشود. در اصل کنترل FTP از این کانال صورت میگیرد.
در کنار کانال دستور، یک کانال به اسم داده وجود دارد که دیتا از طریق آن منتقل میشود. یعنی بعد از اینکه کاربر و سرور از طریق کانال دستور، ارتباط خود را برقرار و دستورات موردنظر را تبادل کردند، داده موردنظرشان را از کانال داده منتقل میکنند. پورت مربوط به کانال داده وابسته به نوع انتقال داده میباشد. اگر از Active Mode استفاده شود، پورت 20 در نظر گرفته میشود. اما در Passive Mode یک پورت تصادفی انتخاب میشود. پس یعنی FTP را میتوان در دو حالت Active و Passive در نظر گرفت.
مُد فعال یا همان Active Mode، حالت قدیمیتر FTP است. این مُد به طور خلاصه به اینصورت است که در ابتدا کاربر از یک پورت تصادفی به پورت 21 از سرور دستور PORT را ارسال میکند تا به سرور بفهماند که از چه پورتی در حال برقراری ارتباط میباشد. سپس سرور از پورت 20 خود به پورتی از سیستم کاربر که در مرحله قبل متوجه آن شد، دادهها را ارسال میکند.
مد Passive حالتی است که در آن کاربر ارتباط را با ارسال دستور PASV به پورت 21 سرور، آغاز میکند. با این دستور کاربر به سرور میگوید که یک پورت را برای من باز کن تا از طریق آن بتوانیم داده موردنظر را رد و بدل کنیم. FTP در جواب این درخواست یک پورت را باز میکند و شماره پورت را به کاربر اعلام میکند. سپس کاربر به پورتی که در جوابِ سرور به او اعلام شده است، وصل میشود و دیتا را رد و بدل میکند.