X
تبلیغات
نماشا
رایتل
پروتکل انتقال فایل (FTP)

آشنائی با پروتکل FTP

FTP=File Transfer Protocol

امروزه از پروتکل های متعددی در شبکه های کامپیوتری استفاده می گردد که صرفا" تعداد اندکی از آنان به منظور انتقال داده طراحی و پیاده سازی شده اند . اینترنت نیز به عنوان یک شبکه گسترده از این قاعده مستثنی نبوده و در این رابطه از پروتکل های متعددی استفاده می شود.
برای بسیاری از کاربران اینترنت همه چیز محدود به وب و پروتکل مرتبط با آن یعنی HTTP است ، در صورتی که در این عرصه از پروتکل های متعدد دیگری نیز  استفاده می گردد. FTP  نمونه ای در این زمینه است .

پروتکل FTP چیست ؟
تصویر اولیه اینترنت در ذهن بسیاری از کاربران،  استفاده از منابع اطلاعاتی و حرکت از سایتی به سایت دیگر است و شاید به همین دلیل باشد که اینترنت در طی سالیان اخیر به سرعت رشد و متداول شده است . بسیاری از کارشناسان این عرصه اعتقاد دارند که اینترنت گسترش و  عمومیت خود را مدیون  سرویس وب می باشد .
فرض کنید که سرویس وب را از اینترنت حذف نمائیم . برای بسیاری از ما این سوال مطرح خواهد شد که چه نوع استفاده ای را می توانیم از اینترنت داشته باشیم ؟ در صورت تحقق چنین شرایطی ،  یکی از عملیاتی که کاربران قادر به انجام آن خواهند بود ،  دریافت داده ، فایل های صوتی ، تصویری و سایر نمونه فایل های دیگر با استفاده از پروتکل FTP (مخفف File Transfer Protocol ) است.
 

ویژگی های پروتکل FTP

  • پروتکل FTP ، اولین تلاش انجام شده برای‌ ایجاد یک استاندارد به منظور مبادله فایل بر روی شبکه های مبتنی بر پروتکل TCP/IP  است که از اوایل سال 1970 مطرح  و مشخصات استاندارد آن طی RFC 959  در اکتبر سال 1985 ارائه گردید .

  • پروتکل FTP  دارای حداکثر انعطاف لازم و در عین حال امکان پذیر به منظور استفاده در شبکه های مختلف با توجه به نوع پروتکل شبکه است .

  • پروتکل FTP از مدل سرویس گیرنده - سرویس دهنده تبعیت می نماید . برخلاف HTTP که یک حاکم مطلق در عرصه مرورگرهای وب و سرویس دهندگان وب است ، نمی توان ادعای مشابهی را در رابطه با پروتکل FTP  داشت و هم اینک مجموعه ای گسترده از سرویس گیرندگان و سرویس دهندگان FTP وجود دارد .

  • برای ارسال فایل با استفاده از پروتکل FTP به یک سرویس گیرنده FTP نیاز می باشد . ویندوز دارای یک برنامه سرویس گیرنده FTP از قبل تعبیه شده می باشد ولی دارای محدودیت های مختص به خود می باشد . در این رابطه نرم افزارهای متعددی تاکنون طراحی و پیاده سازی شده است:
    ulletProof FTP  ، WS FTP Professional، FTP Explorer  و Smart FTP  نمونه هائی در این زمینه می باشند .

  • پروتکل FTP را می توان به عنوان یک سیستم پرس وجو نیز تلقی نمود چراکه سرویس گیرندگان و سرویس دهندگان گفتگوی لازم به منظور تائید یکدیگر و ارسال فایل را انجام می دهند. علاوه بر این، پروتکل فوق مشخص می نماید  که سرویس گیرنده و سرویس دهنده، داده را بر روی کانال گفتگو ارسال نمی نمایند . در مقابل ،‌ سرویس گیرنده و سرویس دهنده در خصوص نحوه ارسال فایل ها بر روی اتصالات مجزا و جداگانه ( یک اتصال برای هر ارسال داده ) با یکدیگر گفتگو خواهند کرد ( نمایش لیست فایل های موجود در یک دایرکتوری نیز به عنوان یک ارسال فایل تلقی می گردد ) .

  • پروتکل FTP امکان استفاده از سیستم فایل را مشابه پوسته یونیکس و یا خط دستور ویندوز در اختیار کاربران قرار می دهد .

  • سرویس گیرنده در ابتدا یک پیام را برای سرویس دهنده ارسال و سرویس دهنده نیز به آن پاسخ خواهد داد و در ادامه ارتباط غیرفعال می گردد . وضعیت فوق با سایر پروتکل هائی که به صورت تراکنشی کار می کنند ،‌ متفاوت می باشد ( نظیر پروتکل HTTP ) . برنامه های سرویس گیرنده زمانی قادر به شبیه سازی یک محیط تراکنشی می باشند که از مسائلی که قرار است در آینده محقق شوند ، آگاهی داشته باشند . در واقع ، پروتکل FTP یک دنباله stateful  از یک و یا چندین تراکنش است.

  • سرویس گیرندگان ، مسئولیت ایجاد و مقداردهی اولیه درخواست ها را برعهده دارند که  با استفاده از  دستورات اولیه FTP انجام می گردد. دستورات فوق ،  عموما" سه و یا چهار حرفی می باشند (مثلا" برای تغییر دایرکتوری از دستور CWD استفاده می شود ).  سرویس دهنده نیز بر اساس یک فرمت استاندارد به سرویس گیرندگان پاسخ خواهد داد ( سه رقم که به دنبال آن از  space استفاده شده است به همراه یک متن تشریحی ) . سرویس گیرندگان می بایست صرفا" به کد عددی نتیجه استناد نمایند چراکه متن تشریحی تغییر پذیر بوده و در عمل برای اشکال زدائی مفید است ( برای کاربران حرفه ای ) .

  • پروتکل FTP دارای امکانات حمایتی لازم برای ارسال داده با نوع های مختلف می باشد . دو فرمت  متداول،  اسکی برای متن ( سرویس گیرنده  با ارسال دستور  TYPE A ،‌موضوع را به اطلاع سرویس دهنده می رساند ) و image برای داده های باینری است ( توسط  TYPE I  مشخص می گردد) . ارسال داده با فرمت اسکی در مواردی که ماشین سرویس دهنده و ماشین سرویس گیرنده از استانداردهای متفاوتی برای متن استفاده می نمایند ، مفید بوده و  یک سرویس گیرنده می تواند پس از دریافت داده آن را به فرمت مورد نظر خود ترجمه و استفاده نماید . مثلا" در نسخه های ویندوز  از یک دنباله  carriage return و  linefeed برای نشان دادن انتهای خط استفاده می گردد در صورتی که در  سیستم های مبتنی بر یونیکس صرفا" از یک  linefeed استفاده می شود . برای ارسال هرنوع داده که به ترجمه نیاز نداشته باشد،می توان از ارسال باینری استفاده نمود.

  •  اتخاذ تصمیم در رابطه با نوع ارسال فایل ها  در اختیار سرویس گیرنده است ( برخلاف HTTP که می تواند به سرویس گیرنده نوع داده ارسالی را اطلاع دهد ) . معمولا" سرویس گیرندگان ارسال باینری را انتخاب می نمایند و پس از دریافت فایل ، ترجمه لازم را انجام خواهند داد . ارسال باینری ذاتا" دارای کارآئی بیشتری است چراکه سرویس دهنده و سرویس گیرنده نیازی به انجام تراکنش های on the fly نخواهند داشت . ارسال اسکی گزینه پیش فرض انتخابی توسط پروتکل FTP  است و در صورت نیاز به ارسال باینری ، سرویس گیرنده می بایست این موضوع را از سرویس دهنده درخواست نماید .

  • یک اتصال پروتکل TCP/IP ( نسخه شماره چهار)  شامل دو  نقطه مجزا می باشد که هر نقطه از یک آدرس IP و یک شماره پورت استفاده می نماید . برقراری ارتباط بین یک سرویس گیرنده و یک سرویس دهنده منوط به وجود چهار عنصر اطلاعاتی است : آدرس سرویس دهنده ،‌پورت سرویس دهنده ، آدرس سرویس گیرنده و پورت سرویس گیرنده . در زمان برقراری یک ارتباط ، سرویس گیرنده از یک شماره پورت استفاده می نماید . این شماره پورت می تواند متناسب با نوع عملکرد برنامه سرویس گیرنده به صورت اختیاری و یا اجباری باشد . مثلا"  برخی برنامه های سرویس گیرنده به منظور ارتباط با سرویس دهنده ، نیازمند استفاده از یک شماره پورت خاص می باشند ( نظیر برنامه های سرویس گیرنده وب و یا مرورگرهای وب که از پورت شماره 80 به منظور ارتباط با سرویس دهنده وب استفاده می نماید) . در مواردی که الزامی در خصوص شماره پورت وجود ندارد از یک شماره پورت موقتی و یا   ephemeral  استفاده می گردد . این نوع پورت ها موقتی بوده و توسط IP stack ماشین مربوطه به متقاضیان نسبت داده شده و پس از خاتمه ارتباط ، پورت آزاد می گردد . با توجه به این که اکثر IP Stacks بلافاصله از پورت موقت آزاد شده استفاده نخواهند کرد ( تا زمانی که تمام pool تکمیل نشده باشد ) ،‌در صورتی که سرویس گیرنده مجددا" درخواست  برقراری یک ارتباط را نماید ، یک شماره پورت موقتی دیگر به وی تخصیص داده می شود .

  •  پروتکل FTP منحصرا" از پروتکل TCP استفاده می نماید( هرگز از پروتکل UDP  استفاده نمی شود) . معمولا" پروتکل های لایه Application ( با توجه به مدل مرجع OSI ) از یکی از پروتکل های TCP و یا UDP استفاده می نمایند ( به جزء پروتکل DNS  ) . پروتکل FTP نیز از برخی جهات شرایط خاص خود را دارد و برای انجام وظایف محوله از دو پورت استفاده می نماید . این پروتکل معمولا" از پورت شماره 20 برای ارسال داده و از پورت 21 برای گوش دادن به فرامین استفاده می نماید . توجه داشته باشید که برای ارسال داده همواره از پورت 20 استفاده نمی گردد و ممکن است در برخی موارد از پورت های دیگر استفاده شود .

  • اکثر سرویس دهندگان FTP  از روش خاصی برای رمزنگاری اطلاعات استفاده نمی نمایند و در زمان  login  سرویس گیرنده به سرویس دهنده ، اطلاعات مربوط به نام و  رمز عبور کاربر به صورت متن معمولی در شبکه ارسال می گردد . افرادی که دارای یک Packet sniffer  بین سرویس گیرنده و سرویس دهنده می باشند ، می توانند به سادگی اقدام به سرقت نام و رمز عبور نمایند . علاوه بر سرقت رمزهای عبور ، مهاجمان می توانند تمامی مکالمات بر روی اتصالات FTP را شنود و محتویات داده های ارسالی را مشاهده نمایند . پیشنهادات متعددی به منظور ایمن سازی سرویس دهنده FTP مطرح می گردد ولی تا زمانی که رمزنگاری و امکانات حفاظتی در سطح لایه پروتکل IP اعمال نگردد ( مثلا" رمزنگاری توسط  IPsecs  ) ،‌ نمی بایست از FTP استفاده گردد خصوصا" اگر بر روی شبکه اطلاعات مهم و حیاتی ارسال و یا دریافت می گردد .