جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
آشنايي با پروتکل FTP
-(3 Body) 
آشنايي با پروتکل FTP
Visitor 428
Category: دنياي فن آوري
امروزه از پروتکل هاي متعددي در شبکه هاي کامپيوتري استفاده مي گردد که صرفا" تعداد اندکي از آنان به منظور انتقال داده طراحي و پياده سازي شده اند . اينترنت نيز به عنوان يک شبکه گسترده از اين قاعده مستثني نبوده و در اين رابطه از پروتکل هاي متعددي استفاده مي شود.
براي بسياري از کاربران اينترنت همه چيز محدود به وب و پروتکل مرتبط با آن يعني 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 استفاده گردد خصوصا" اگر بر روي شبکه اطلاعات مهم و حياتي ارسال و يا دريافت مي گردد .
• همانند بسياري از پروتکل هاي لايه Application ، پروتکل FTP داراي کدهاي وضعيت خطاء مختص به خود مي باشد ( همانند HTTP ) که اطلاعات لازم در خصوص وضعيت ارتباط ايجاد شده و يا درخواستي را ارايه مي نمايد . زماني که يک درخواست ( GET , PUT ) براي يک سرويس دهنده FTP ارسال مي گردد ، سرويس دهنده پاسخ خود را به صورت يک رشته اعلام مي نمايد . اولين خط اين رشته معمولا" شامل نام سرويس دهنده و نسخه نرم افزار FTP است .در ادامه مي توان دستورات GET و يا PUT را براي سرويس دهنده ارسال نمود . سرويس دهنده با ارايه يک پيام وضعيت به درخواست سرويس گيرندگان پاسخ مي دهد . کدهاي وضعيت برگردانده شده را مي توان در پنج گروه متفاوت تقسيم نمود :
کدهاي 1xx : پاسخ اوليه
کدهاي 2xx : درخواست بدون خطاء‌ اجراء گرديد .
کدهاي 3xx : به اطلاعات بشتري نياز است .
کدهاي 4xx : يک خطاء موقت ايجاد شده است .
کدهاي 5xx : يک خطاء دايمي ايجاد شده است .
متداولترين کدهاي وضعيت FTP به همراه مفهوم هريک در جدول زير نشان داده شده است :

کدهاي وضعيت سري 100

110

Restart reply

120

Service ready in x minutes

125

Connection currently open, transfer starting

150

File status okay, about to open data

کدهاي وضعيت سري 200

200

Command okay

202

Command not implemented, superfluous at this site

211

System status/help reply

212

Directory status

213

File status

214

System Help message

215

NAME system type

220

Service ready for next user.

221

Service closing control connection. Logged off where appropriate

225

Data connection open; no transfer in progress.

226

Closing data connection. Requested action successful

227

Entering Passive Mode

230

User logged in, continue

250

Requested file action okay, completed

257

"PATHNAME" created.

کدهاي وضعيت سري 300

331

User name okay, need password.

332

Need account for login

350

Requested file action pending further information.

کدهاي وضعيت سري 400

421

Service not available, closing control connection.

425

Can’t open data connection

426

Connection closed; transfer aborted.

450

Requested file action not taken. File not available - busy etc..

451

Request aborted: error on server in processing.

452

Requested action not taken. Insufficient resources on system

کدهاي وضعيت سري 500

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.

530

Not logged in.

532

Need account for storing files

550

Requested action not taken. File unavailable

552

Requested file action aborted. Exceeded storage allocation

553

Requested action not taken. File name not allowed

مفهوم برخي از کدهاي متداول

226

دستور بدون هيچگونه خطايي اجراء گرديد .

230

زماني اين کد نمايش داده مي شود که يک سرويس گيرنده رمز عبور خود را به درستي درج و عمليات loginبا موفقيت انجام شده باشد .

231

کد فوق نشاندهنده دريافت usernameارسالي سرويس گيرنده توسط سرويس دهنده مي باشد و تاييدي است بر اعلام وصول Username( نه صحت آن ) .

501

دستور تايپ شده داراي خطاء گرامري است و مي بايست مجددا" دستور تايپ گردد .

530

عمليات loginبا موفقيت انجام نشده است . ممکن است Usernameو يا رمز عبور اشتباه باشد .

550

فايل مشخص شده در دستور تايپ شده نامعتبر است .


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

Active Mode

Active Mode ، روش سنتي ارتباط بين يک سرويس گيرنده FTP و يک سرويس دهنده مي باشد که عملکرد آن بر اساس فرآيند زير است :
• سرويس گيرنده يک ارتباط با پورت 21 سرويس دهنده FTP برقرار مي نمايد . پورت 21 ، پورتي است که سرويس دهنده به آن گوش فرا مي دهد تا از صدور فرامين آگاه و آنان را به ترتيب پاسخ دهد . سرويس گيرنده براي برقراري ارتباط با سرويس دهنده از يک پورت تصادفي و موقتي ( بزرگتر از 1024 ) استفاده مي نمايد( پورت x ).
• سرويس گيرنده شماره پورت لازم براي ارتباط سرويس دهنده با خود را از طريق صدور دستور PORT N+1 به وي اطلاع مي دهد ( پورت x+1 )
• سرويس دهنده يک ارتباط را از طريق پورت 20 خود با پورت مشخص شده سرويس گيرنده ( پورت x+1 ) برقرار مي نمايد .

لطفا" به من از طريق پورت 1931 بر روي آدرس
IP: 192.168.1.2 متصل و سپس داده را ارسال نماييد .

سرويس گيرنده

تاييد دستور

سرويس دهنده


در فرآيند فوق ، ارتباط توسط سرويس گيرنده آغاز و پاسخ به آن توسط سرويس دهنده و از طريق پورت x+1 که توسط سرويس گيرنده مشخص شده است ، انجام مي شود . در صورتي که سرويس گيرنده از سيستم ها و دستگاه هاي امنيتي خاصي نظير فايروال استفاده کرده باشد ، مي بايست تهميدات لازم به منظور ارتباط کامپيوترهاي ميزبان راه دور به سرويس گيرنده پيش بيني تا آنان بتوانند به هر پورت بالاتر از 1024 سرويس گيرنده دستيابي داشته باشند . بدين منظور لازم است که پورت هاي اشاره شده بر روي ماشين سرويس گيرنده open باشند . اين موضوع مي‌ تواند تهديدات و چالش هاي امنيتي متعددي را براي سرويس گيرندگان به دنبال داشته باشد .

Passive Mode

در Passive Mode ، که به آن " مديريت و يا اداره سرويس گيرندگان FTP" نيز گفته مي شود از فرآيند زير استفاده مي گردد :
• سرويس گيرنده دو پورت را فعال مي نمايد ( پورت x و x+1 )
• ارتباط اوليه از طريق پورت x سرويس گيرنده با پورت 21 سرويس دهنده آغاز مي گردد .
• سرويس دهنده يک پورت را فعال ( Y ) و به سرويس گيرنده شماره پورت را اعلام مي نمايد .
• در ادامه سرويس گيرنده يک اتصال از طريق پورت x+1 با پورت y سرويس دهنده برقرار مي نمايد .

لطفا" به من بگوييد که از کجا مي توانم داده را دريافت نمايم

سرويس گيرنده

با من از طريق پورت 4023 بر روي آدرس
IP: 192.168.1.25 ارتباط برقرار نماييد .

سرويس دهنده

در فرآيند فوق ، سرويس گيرنده داراي نقش محوري است و فايروال موجود بر روي سرويس گيرنده مي تواند درخواست هاي دريافتي غيرمجاز به پورت هاي بالاتر از 1024 را به منظور افزايش امنيت بلاک نمايند . در صورتي که بر روي کامپيوترهاي سرويس دهنده نيز فايروال نصب شده باشد ، مي بايست پيکربندي لازم به منظور استفاده از پورت هاي بالاتر از 1024 بر روي آن آنجام و آنان open گردند . باز نمودن پورت هاي فوق بر روي سرويس دهنده مي تواند چالش هاي امنيتي خاصي را براي سرويس دهنده به دنبال داشته باشد .
متاسفانه تمامي سرويس گيرندگان FTP از Passive Mode حمايت نمي نمايند . اگر يک سرويس گيرنده بتواند به يک سرويس دهنده login نمايد ولي قادر به ارسال داده بر روي آن نباشد ، نشاندهنده اين موضوع است که فايروال و يا Gateway براي استفاده از Passive Mode به درستي پيکربندي نشده است .

ملاحضات امنيتي

در صورتي که فايروال هاي موجود بر روي کامپيوترهاي سرويس گيرنده به درستي پيکربندي نگردند ، آنان نمي توانند از Active Mode استفاده نمايند . در Passive Mode استحکام سيستم امنيتي در سمت سرويس دهنده و توسط فايروال مربوطه انجام خواهد شد . بنابراين لازم است به سرويس دهنده اجازه داده شود که به اتصالات هر پورت بالاتر از 1024 پاسخ دهد . ترافيک فوق ، معمولا" توسط فايروال سرويس دهنده بلاک مي گردد . در چنين شرايطي امکان استفاده از Passive Mode وجود نخواهد داشت .

Passive Mode و يا Active Mode ؟

با توجه به مستندات درج شده در RFC 1579 ، استفاده از Passive Mode به دلايل متعددي به Active Mode ترجيح داده مي شود :
• تعداد سرويس دهندگان موجود بر روي اينترنت به مراتب کمتر از سرويس گيرندگان مي باشد .
• با استفاده از امکانات موجود مي توان سرويس دهندگان را پيکربندي تا بتوانند از مجموعه پورت هاي محدود و تعريف شده اي با در نظر گرفتن مسايل امنيتي ، استفاده نمايند.

پيکربندي فايروال

جدول زير پيکربندي فايروال در Active Mode و Passive Mode را نشان مي دهد .

Active Mode

Server Inbound

from any client port >1024to port 21on the server

Server Outbound

from port 20on the client on any port > 1024

Client Inbound

ports 20from the server to any port >1024on client

Client Outbound

from any port >1024to port 21on the server

Passive Mode

Server Inbound

port 21and any port >1024from client/anywhere, from any port >1024

Server Outbound

port 21and any port >1024to client/anywhere, to any port >1024

Client Inbound

Return traffic, any port > 1024from server using any port >1024

و اما يک نکته ديگر در رابطه با پروتکل FTP !

در صورتي که در زمان دريافت يک فايل با استفاده از پروتکل FTP مشکلات خاصي ايجاد که منجر به قطع ارتباط با سرويس دهنده FTP گردد ،‌ سرويس گيرنده مي تواند با مشخص کردن يک offset از فايل دريافتي به سرويس دهنده اعلام نمايد که عمليات ارسال را از جايي که ارتباط قطع شده است ، ادامه دهد ( سرويس گيرنده از محلي شروع به دريافت فايل مي نمايد که ارتباط غيرفعال شده بود ) . استفاده از ويژگي فوق به امکانات سرويس دهنده FTP بستگي دارد .
منبع:http://www.academist.ir
Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image