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

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

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

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

پروتکل FTP ، اولین تلاش انجام شدهبرای ایجاد یک استاندارد به منظور مبادله فایل بر روی شبکه های مبتنی برپروتکل TCP/IP است که از اوایل سال ۱۹۷۰ مطرح و مشخصات استاندارد آن طیRFC ۹۵۹ در اکتبر سال ۱۹۸۵ ارایه گردید .

پروتکل 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 ویک شماره پورت استفاده می نماید . برقراری ارتباط بین یک سرویس گیرنده ویک سرویس دهنده منوط به وجود چهار عنصر اطلاعاتی است : آدرس سرویس دهنده،پورت سرویس دهنده ، آدرس سرویس گیرنده و پورت سرویس گیرنده . در زمانبرقراری یک ارتباط ، سرویس گیرنده از یک شماره پورت استفاده می نماید .این شماره پورت می تواند متناسب با نوع عملکرد برنامه سرویس گیرنده بهصورت اختیاری و یا اجباری باشد . مثلا" برخی برنامه های سرویس گیرنده بهمنظور ارتباط با سرویس دهنده ، نیازمند استفاده از یک شماره پورت خاص میباشند ( نظیر برنامه های سرویس گیرنده وب و یا مرورگرهای وب که از پورتشماره ۸۰ به منظور ارتباط با سرویس دهنده وب استفاده می نماید) . درمواردی که الزامی در خصوص شماره پورت وجود ندارد از یک شماره پورت موقتی ویا ephemeral استفاده می گردد . این نوع پورت ها موقتی بوده و توسط IPstack ماشین مربوطه به متقاضیان نسبت داده شده و پس از خاتمه ارتباط ،پورت آزاد می گردد . با توجه به این که اکثر IP Stacks بلافاصله از پورتموقت آزاد شده استفاده نخواهند کرد ( تا زمانی که تمام pool تکمیل نشدهباشد ) ،در صورتی که سرویس گیرنده مجددا" درخواست برقراری یک ارتباط رانماید ، یک شماره پورت موقتی دیگر به وی تخصیص داده می شود .

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

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