پروتکل انتقال فایل (FTP)

پروتکل انتقال فایل که آن را ftp می نامیم ابزاریست مطمئن برای انتقال فایل بین کامپیوتر ها یی که به شبکه اینترنت متصل هستند. خدماتی که این پروتکل ارائه می کند عبارتند از :
• تهیه لیستی از فایلهای موجود ازسیستیم فایل کامپوتر راه دور
• حذف، تغییر نام و جابجا کردن فایلهای کامپیوتر راه دور

• جستجو در شاخه های ( دایر کتوریهای) کامپیوتر راه دور
• ایجاد یا حذف شاخه روی کامپیوتر راه دور
• انتقال فایل ازکامپیوتر میزبان
• انتقال فایل و ذخیره ی آن از کامپیوتر میزبان به کامپیوتر راه دور
قابلیت هایی که پروتکل FTP عرضه می کند می تواند برای سیستم سرویس دهنده بسیار خطرناک باشد چرا که بسادگی می توان فایل های یک کامپیوتر راه دور را آلوده یا نابود کرد. فلذا در این پروتکل کاربران باید قبل ازتقاضای هر سرویسی کلمه ی عبور خود را وارد نمایند و سرویس دهنده پس از شناسایی کاربر سطح دسترسی وعملیات مجاز برای کاربر را تعیین می کند و یک نشست FTP آغاز می شود. FTP این قابلیت را ندارد که بتوان همانند پروتکل Telnet برنامه ای را برروی ماشین راه دور اجرا کرد بلکه فقط روشی سریع ساده و مطمئن برای خدمات فایل به کاربران راه دور محسوب می شود. حال باید ارتباط بین سرویس دهنده و سرویس گیرنده FTP را تشریح نماییم:
در پروتکل FTP برای شروع یک نشست بین برنامه سرو.یس دهنده و برنامه ی سرویس گیرنده باید دو ارتباط همزمان ازنوع TCP بر قرار شود. به هر یک از این ارتباطات در ادبیات پروتکل FTP ،کانال گفته می شود. این دو کانال عبارتند از :
• کانال داده : یک ارتباط TCP با پورت شمارهی ۲۰ از سرویس دهنده که روی آن داده ها ( مثلا بلوکهای یک فایل ) مبادله می شوند .
• کانال فرمان: یک ارتباط TCP با پورت شمارهی ۲۱ که روی آن فرامین لازم برای مدیریت فایلها رد و بدل می شود.
دلیل لزوم برقراری دو کانال مجزا بین سروس دهنده و سرویس گپیرنده ان است که بتوان بدون قطع جریان داده ها فرامین را بطور همزمان مبادله کرد. بعنوان مثال در حین اتقاال یک فایل می توان

روی کانال فرمان دستور لغو عمل انتقال یا تغییر مود انتقال را صادر کرد. ذکر این نکته ضروری است که در پروکتل FTP ازسیستم spooler یا صف برای انتقال فایلها استفاده نمی کند بلکه عملیات انتقال به صورت بلادر نگ انجام می گیرد . ( سیستمهایی مثل مدیریت چاپ در پس زمینه عمل می کند یعنی وقتی پروسه ای تقاضای چاپ یک سند را می دهد سیستم عامل آن را به صف میکند تادر موقع مناسب آنرا چاپ نماید فلذا مشخص نیست از زمان صدور فرمان چاپ چه مدت طول بکشد تا سند چاپ شود چرا که اولویت با پروسه هایی است که در پیش زمینه اجرا می

شوند .)
به گونه ای که اشاره شد سرویس دهنده FTP بایستی دو پروسه همزمان ایجاد نماید که یکی وظیفه مدیریت ارتباط روی کانال فرمان را به عهده داشته و اصطلاحاً مفسر پروتکل یا پروسه PI نامیده می شود . وظیفه پروسه دیگر مدیریت انتقال داده است وبه DTP یا پروسه انتقال داده معروف است . پروسه PI همیشه به پورت شماره ۲۱ گوش میدهد و پروسه DPT به پورت شماه ۲۰ مقید شده است.
روشهای برقراری یک نشست FTP
برقراری ارتباط بین سرویس دهنده وسرویس گیرنده FTP با دو روش امکان پذیر است :
• روش معمولی یا NORMAL MODE
• روش غیر فعال یا PASSIVE MODE
در روش معمولی برای برقراری یک نشست FTP مراحل زیر انجام میشود :
۱) در برنامه سمت سرویس گیرنده ( برنامه سمت مشتری ) ابتدا دو سوکت نوع TCP با شماره پورت تصادفی بالای ۱۰۲۴ ایجاد می شود .
۲) در مرحله دوم برنامه سمت مشتری سعی می کند با استفاده ازدستور () CONNECT ارتباط یکی از سوکتهای ایجاد شده را با پورت شماره ۲۱ ازسرویس دهنده برقرار نماید. اگر این ارتباط برقرار شود در حقیقت کانال فرمان باز شده و پروسه PI آماده تفسیر فرامین صادره ازسمت مشتری می باشد .
۳) برنامه سمت مشتری با فرمان PORT به برنامه سمت سرویس دهنده شماره پورت سوکت دوم را اعلام می ماند . ( در حقیقت برنامه مشتری روی سوکت دوم عمل () Iisten انجام می دهد )
۴) در ادامه برنامه سرویس دهنده سعی می کند یک ارتباط با tcp با شماره پورت اعلام شده برقرار نماید . یکی ازنکات عجیب در این پروتکل آنست که سرویس دهنده FTP موظف است اقدام به برقراری یک ارتباط TCP ازطریق دستور ()CONNECT با برنامه مشتری نماید در صورتی که معمولا سرویس دهنده پذیرنده ارتباط است نه شروع کننده ارتباط.
۵) برنامه سمت مشتری ارتباط TCP شروع شده ازسرویس دهنده را تصدیق کرده و یک نشست FTP آغاز می شود.

مثالی از یک نشست FTP به روش معمولی
حال باید روش غیر فعال را در برقراری یک نشست FTP بر رسی نمایم :
۱) در برنامه ی سمت مشتری ابتدا دو سوکت نوع TCP با شماره پورت های تصادفی بالای ۱۰۲۴ ایجاد می شود.

۲) برنامه سمت مشتری سعی می کند ارتباط TCP یکی ازسوکتهای ایجاد شده را با پورت شماره ۲۱ ازسرویس دهنده برقرار نماید. با برقراری این ارتباط کانال فرمان باز شده و پروسه PI آماده تفسیر فرامین صادره ازسمت مشتری خواهد شد.
۳) برنامه سمت مشتری با فرمان PASV به برنامه سمت سرویس دهنده اعلام می کند

که خواستار یک نشست از نوع غیرفعاال است.
۴) برنامه سمت سرویس دهنده یک سوکت با شماره پورت تصادفی ( بالای ۱۰۲۴ ) ایجاد کرده و شماره آنرا به برنامه مشتری اعلام می نماید .
۵) برنامه سمت مشتری ارتباط سوکت دوم خود را با شماره پورت اعلام شده برقرار کرده پس ازتصدیق ارتباط نشست FTP آغاز می شود.

مثالی از یک نشست FTP به روش غیر فعال
در دنیای یونیکس برنامه سمت سرویس دهنده بنام FTPD و برنامه سمت مشتری بنام FTP مشهور است. دقت کنید که برخی ازسرویس دهنده ازروش غیر فعال حمایت نمی کنند و فقط روش معمولی را می پذیرند.
در برنامه FTP دو نوع فرمان تعریف شده است که گاهاً با هم اشتباه می شوند. نوع اول فرامینی هستند که روی کانال فرمان یعنی بین سرویس دهنده و سرویس گیرنده رد و بدل می شود. این فرامین که در ادامه معرفی می شوند فرامین داخلی هستند که بین کاربر و برنامه FTP تعریف شده و کاربر برای بکار گیری برنامه FTP باید آنها را بداند. ( همانند فرامین داخلی DOS )
فرامین داخلی FTP
اگر به مراحل برقراری نشست FTP دقت کنید، متوجه خواهید شد که در هر دو روش ابتدا کانال فرمان برقرار می شد و تا پایان نشست این کانال برقرار خواهد شد در این بخش بررسی می کنیم که روی این کانال چه فرامینی مبادله می شود. فرامین داخلی FTP تماماً حالت متنی داشته و حداکثر چهار حرفی هستند. برخی ازفرامین دارای پارامتر هستند که این پارامتر ها نیز به صورت متنی پس از یک فاصله خالی در ادامه فرمان قرار می گیرند. خاتمه فرمان باکدهای r/ و n/ مشخص شده است. مثلا:
PASV/ r/ n
اولین مزیت بهره گیری ازفرامین متنی آن است که کابر می تواند سلسله فرامین را دیده و به آسانی بفهمد و این مزیت به یک کاربر حرفه ای تا حد زیادی به درک روند عملیات و اشکال زدایی کمک خواهد کرد. دومین مزیت آن است که یک متخصص می تواند براحتی ( بدون نیاز به برنامه ftp و با ابزاری مثل telnet یا برنامه نویسی سوکت ) مستقیما با سرویس دهنده ارتباط برقرار کند. مجموعه فرامین FTP با توضیح مختصر در جدول زیر آمده است. به گونه ای که مشاهده می شود این فرامین برای سه دسته عملیات در نظر گرفته شده است:

• فرایند برقراری و ختم یک نشست ftp ( مثل فرمان PASV، PORT ،QUIT )
• ارسال کلمه عبور جهت تعیین جواز و سطح سرویس دهی
• فرامین مربوط به انتقال فایل، فهرست شاخه ها و عملیات مدیریت فایلها

عملکرد فرمان نام فرمان
تقاضای لغو و ناتمام رها کردن دستور قبلی ABOR

اعلام مشخصه کاربری ACCT
تقاضای تخصیص حافظه ALLO
تقاضای ضمیمه شدن داده های ارسالی به یک فیل موجود APPE
تقاضای تغییر شاخه جاری به شاخه بالاتر آن CDUP
تقاضای تغییر شاخه جاری به شاخه ای که نامش به همراه دستور درج شده است CWD
تقاضای حذف فایلی که نامش در جلوی دستور درج شده است DELE
تقاضای راهنمایی و اخذ اطلاعات مفید در مورد فرامین HELP
تقاضای انتقال فهرست شاخه ها LIST
تقاضای ایجاد یک زیر شاخه در شاخه جاری MKD
تنظیم روش انتقال (متنی و دودویی) MODE
تقاضای فهرست گیری از شاخه جاری NLST
تقاضای حذف شاخه جاری RMD
ارسال کلمه عبور PASS
تقاضا برای برقراری یک نشست غیر فعال PASV
اعلام شماره پورت TCP برای برقراری کانال داده PORT
تقاضای ختم نشست QUIT
در پاسخ به هر فرمان صادره یک کد سه رقمی برمی گردد تا وضعیت اجرای فرمان را مشخص نماید. برنامه سمت مشتری با پردازش این کد می تواند در مورد عمل بعدی خود تصمیم بگیرد. ( تصمیماتی مثل لغو فرمان ، تلاش مجدد صدور فرمان جای گزینی یا ختم نشست ) . هر یک از ارقام صدگان، دهگان ، یکان کد بازگشتی معنای خاصی دارد بعنوان مثال اگر رقم صدگان کد ۱ یا ۲ یا ۳ باشد فرمان ارسالی موفقیت آمیز بوده ولی اگر ۴ یا ۵ باشد به معنای بروز خطا تلقی می شود. در ادامه معنای متفاوت رقم صدگان و دهگان که سه رقمی باز گشتی توسط سرویس دهنده را معرفی شده است. معانی رقم سوم ( یگان ) ازکد بازگشتی در اینجا نیامده زیرا تعداد آنها در سیستمهای متفاوت با هم فرق می کنند.

معنای رقم اول کد برگشتی در پروتکل FTP
معــنا مقدار رقم
فرمان درخواستی شروع به اجرا شد . منتظر کد برگشتی بعدی باشید . ۱
فرمان کاملا اجرا شد . ارسال فرمان بعدی مجاز است . ۲
فرمان اجرا شده اما به دلیل کمبود اطلاعات لازم برای اجرا، معلق مانده است . ۳
فرمان پذیرفته نشد ولی اجرای مجدد آن بلامانع است . ۴
فرمان پذیرفته نشد و صدور مجدد آن بی فایده خواهد بود . ۵
معنای رقم دوم کد برگشتی در پروتکل FTP
معــنا مقدار رقم
فرمان صادره بی معنا بوده و تشخیص داده نشده است . ۰
کد بازگشتی کدی است در پاسخ به تقاضای اطلاعات ۱
کد بازگشتی کدی است در ارتباط با مدیریت نشست ۲
کد بازگشتی کدی است در ارتباط با احراز هویت کاربر. ۳
بلااستفاده . ۴
کد بازگشتی کدی است در ارتباط با وضعیت سرویس دهنده ۵

در پروتکل FTP ، انتقال فایل می تواند در چند حالت متفاوت انجام شود . اکثر سیستمهای عامل ( مثل یونیکس ) فقط دارای دو روش انتقال هستند : روش متنی و روش دودویی .
هر نوع فایل اعم از فایل های اجرایی،صدا،تصویرو حتی فایل های متنی را می توان به حالت دودوئی انتقال داد و سرعت انتقال در این روش رضایت بخش است.با حالت متنی فقط فایل های

متن(با کد ها ASCII )قابل مبادله هستند.فایل های متنی مجموعه ای از کاراکتر های ASCII به همراه برخی از کد های کنترلی همانند n / ، t / هستند که می توان با دستورات معمولی از این نوع فایل ها خواند و در آن نوشت.معمولا تمام سرویس دهنده ها حالت پیش فرض یک نشست را حالت دودوئی فرض می کنند.کاربر باید قبل از انتقال فایل اطمینان حاصل کند که از یک مود انتقال صحیح استفاده می نماید چرا که مثلا انتقال یک فایل تصویر در مود متنی نتیجه مخرب خواهد داشت.

فرامین کاربری برنامه FTP
بغیر از فرامین داخلی پروتکل FTP که روی کانال فرمان مبادله می شوند یکسری فرمان کاربری وجود دارد که کاربر برای استفاد از FTP باید از آن ها اطلاعات داشته باشد.برنامه های FTP در سمت کاربر معمولا بر دو نوع هستند:
الف) برنامه هایی که در خط فرمان اجرا می شود و کاربر مجبور است همانند محیط DOS یا یونیکس فرامین استفاده برنامه FTP را حفظ باشد.
ب) برنامه هایی که دارای ظاهر گرافیکی هستند(برنامه های GUI )و کاربر از طریق آیکن یا منوها فرمان مورد نظر خود را اجرا می نماید.

برای به کارگیری برنامه FTP در خط فرمان لازم است ضمن اجرای برنامه،نام ماشینی که سرویس FTP می دهد،به عنوان پارامتر ورودی برنامه مشخص شود:

یا مثلا ftp rtfm.mit.edu
ftp tpci_hpws4
نامی که در جلوی اسم برنامه FTP نوشته می شود باید قابل تحلیل وترجمه به یک آدرس IP باشد. اگر آدرس IP ماشین سرویس دهنده را می دانید می توانید مستقیما آدرس IP را در جلوی نام برنامه FTP وارد نمایید:
مثال: ftp 205.150.89.5
وقتی که ارتباط بین برنامه کاربر و سرویس دهنده FTP برقرار شد باید اعتبار کاربر برای سرویس دهنده ومشخص شود تا امکانات لازم را در اختیار او قرار بدهد.در حقیقت وقتی به عنوان یک کاربر معتبر شناخته شدید به شما اجازه ورود به سیستم FTP داده خواهد شد؛به این عمل اصطلاحا Login گفته می شود.پروسه ای که اعتبار کاربران را از لحاظ مجوز ورود و سطح دسترسی،کنترل می نماید(پروسه ورود) نامیده می شود . برای اجازه ی ورود به سیستم کاربر به یک کلمه شناسایی و رمز عبور احتیاج دارد که این دو را مدیر شبکه در اختیار او می گذارد.البته بسیاری از سرویس دهنده ها ی FTP در دنیا موجود است که اجازه ی دسترسی آزادانه فایل ها را (فقط برای خواندن و دریافت فایل ها)را به کاربر می دهد.به اینگونه سرویس دهنده های FTP بی نام گفته می شود و شما می توانید به جای کلمه شناسایی کلمه ی anonymous یا کلمه guest را تایپ کنید.
بر خلاف برنامه ی Telnet بعد از برقراری ارتباط با ماشین سرویس دهنده ی FTP ،شما واقعا روی ماشین را دور نیستید و عملا با پردازنده و سیستم عامل خود کار می کنید.از دیدگاه کاربر ،فرایندی که برنامه ی FTP برای برقراری یک نشست دنبال می کند به شرح ذیل است:
الف)عمل Login :شامل تعیین کلمه ی شناسایی و رمز عبور و تایید آنها توسط سرویس

دهنده
ب)Define Directory :تعیین شاخه ای که پس از برقراری ارتباط بصورت پیش فرض برای شروع عملیات کاربر در نظر گرفته می شود.
ج)Define file Transfer Mode :تعیین روش انتقال(حالت متنی یت دودوئی )
د) start data transfer : امکان صدور فرمان را برای کاربر فراهم می آورد.
ه) stop data transfer : ارتباط را خاتمه می دهد.ی FTP در جدول زیر معرفی شده اند .
معنای فرمان فرامین کاربری
تنظیم حالت انتقال فایل به حالت متنی Ascii
تنظیم حالت انتقال فایل به حالت دودویی Binary
تغییر شاخه جاری به شاخه جدید بر روی سرویس دهنده Cd
ختم نشست Close
حذف فایل از روی سرویس دهنده Del
فهرست گیری از شاخه جاری سرویس گیرنده Dir
تقاضای انتقال فایل از روی سرویس دهنده Get
هرگاه یک بلوک داده از فایل در حال انتقال سالم رسید ، علامت ویژه ای را نشان دهد Hash
راهنمایی Help
تقاضای تغییر شاخه جاری بر روی ماشین کاربر Lcd
دریافت چند فایل از ماشین سرویس دهنده Mget
ارسال چند فایل بر روی ماشین سرویس دهنده Mput
تقاضای برقاری یک نشست Open
ارسال یک فایل بر روی سرویس دهنده Put
نمایش شاخه جاری سرویس دهنده Pwd
ارسال مستقیم یکی از فرامین داخلی Qoute
تقاضای ختم نشست Quit
انتقال با واسطه در پروتکل FTP
FTP این امکان را نیز فراهم می سازد که انتقال فایل ها از طریق ماشین سومی که بین برنامه مشتری و برنامه سرویس دهنده قرار گرفته است ، انجام شود . این رویه به عنوان انتقال باواسطه شناخته شده است و اجازه دسترسی به سیستم فایل ماشین سرویس دهنده و نظارت بر فرامین صادره ، از طریق این ماشین انجام می شود . استفاده از یک سیستم واسطه باعث می شود که حجم پردازش روی سرویس دهنده FTP کاهش یافته و سرعت انتقال افزایش یابد
دسترسی بی نام به FTP
FTP برای توانا ساختن قابلیت های انتقال فایل نیاز به کد کاربری و کلمه عبور کاربر دارد . روش بسیار راحت تری برای ایجاد دسترسی عمومی به یک مجموعه فایل یا دایرکتوری وجود دارد که FTP بی نام خوانده می شود . با این FTP دیگر نیازی به داشتن مجوز روی یک ماشین نیست .FTP این کار را معمولاً با فعال کردن حالت “ورود بی نام” توسط یک کلمه عبور به نام “مهمان یا Guest” و یا کلمه عبور پوچ(خالی) انجام می دهد .

فهرست منابع مورد استفاده :
۱- اصول مهندسی اینترنت – نوشته مهندس احسان ملکیان – انتشارات نص .
۲- مرجع کامل اینترنت – نوشته دنیس جونز – ترجمه محمود حافظیان – انتشارات ناقوس

تهیه کننده :
مهدی مرتضوی