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

پروتکل

پروتِکُل ارتباطی بین واحدها در ایستگاه‌های کاری مختلف که قواعد و قالب‌هایی را برای مبادله پیام‌ها تعریف می‌کند.

پروتکل عمومآ به مجموعه قوانین و مقرراتی گفته می‌شود که چند نفر برای برقراری ارتباط با هم، باید آن را رعایت کنند.

 

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


HTTP ،‌ پروتکلی با قابلیت های فراوان است که علیرغم برخی محدودیت ها ، دارای سابقه درخشانی در  عرصه شبکه های کامپیوتری ( اینترانت ، اینترنت )  است .

HTTP پروتکلی ‌است که امکان ارتباط بین سرویس گیرندگان و سرویس دهندگان وب را فراهم می نماید .
یک سرویس دهنده وب در واقع  به عنوان یک سرویس دهنده HTTP  نیز ایفای وظیفه می نماید .

زمانی که مرورگر وب درخواست یک صفحه را از سرویس دهنده وب می نماید، در واقع یک HTTP request  را ارسال و  سرویس دهنده وب نیز پاسخ آن را با یک HTTP response  خواهد داد  . یک پیام HTTP ، یک درخواست ( request ) و یا پاسخ ( response ) است که از یک ساختار خاص تبعیت می نماید .
HTTP  به یک پروتکل خاص لایه حمل وابستگی نداشته و عموما" از پروتکل TCP استفاده می نماید (پورت شناخته شده 80 ) .

 کدهای وضعیت
همانند بسیاری از پروتکل ها ، پروتکل  HTTP بر اساس یک مدل سرویس گیرنده - سرویس دهنده کار می کند .  کدهای وضعیت توسط تعداد زیادی از پروتکل های لایه application استفاده می گردد و می توان آنان را به پنج گروه عمده تقسیم نمود . جدول زیر گروه های پنج گانه کدهای وضعیت  را در ارتباط با پروتکل HTTP  نشان می دهد .

عملکرد

کد

 اطلاع رسانی برای استفاده در آینده

1XX

 انجام موفقیت آمیز تراکنش 

2XX

 راهنمائی مجدد

3XX

 بروز خطاء سمت سرویس گیرنده

4XX

 بروز خطاء سمت سرویس دهنده

5XX

 هر یک از پنج گروه فوق، دارای کدهای وضعیت زیر مجموعه ای می باشند که بیانگر جزئیات عملیات است . جدول زیر برخی از کدهای وضعیت هر یک از گروه های پنج گانه فوق را در ارتباط با پروتکل HTTP نشان می دهد .

عملکرد

کد وضعیت

 تراکنش با موفقیت انجام شده است

200

 دستور POST با موفقیت انجام شده است

201

 درخواست ارسالی دریافت گردید.

202

 منبع درخواستی در مکان های مختلفی پیدا شده است

300

 منبع درخواستی به صورت دائم منتقل شده است

301

 منبع درخواستی به صورت موقت  منتقل شده است

302

 درخواست نامناسب از جانب سرویس گیرنده

400

 درخواست غیرمجاز

401

 منبع درخواستی پیدا نگردید

404

 بروز خطاء بر روی سرویس دهنده

500

 متد استفاده شده ، پیاده سازی نشده است

501

 درخواست های سرویس گیرندگان  و دستورات 
سرویس گیرندگان وب به منظور استفاده از خدمات سرویس دهندگان وب از مجموعه پتانسیل های ارائه شده ( دستورات )  توسط پروتکل HTTP استفاده می نمایند :

  • GET : سرویس گیرنده وب درخواست یک منبع موجود بر روی سرویس دهنده وب را می نماید .

  • POST : سرویس گیرنده وب اطلاعاتی را برای سرویس دهنده وب ارسال می نماید .

  • PUT: سرویس گیرنده وب یک مستند جایگزین را برای سرویس دهنده وب ارسال می نماید .

  • HEAD: سرویس گیرنده وب اطلاعات  خاصی را در ارتباط با یک منبع موجود بر روی سرویس دهنده  درخواست می نماید ( عدم نیاز به خود منبع ) 

  • DELETE : سرویس گیرنده وب درخواست حذف یک سند موجود بر روی سرویس دهنده را می نماید .

  • TRACE: سرویس گیرندگان وب ، پراکسی مربوط به خود را تعریف می نمایند . از متد فوق اغلب در موارد اشکال زدائی استفاده می گردد .

  • OPTIONS : سایر پتانسیل های موجود به منظور کار بر روی یک سند توسط یک سرویس گیرنده وب درخواست می گردد .

  • CONNECT : سرویس گیرنده وب به عنوان یک پراکسی به یک سرویس دهنده HTTPS متصل می گردد .

در اغلب موارد صرفا" از متد‍ GET و در برخی موارد از HEAD استفاده می گردد ( در صورت اشکال زدائی یک برنامه وب از تمامی امکانات فوق استفاده می شود ) .



مراحل ایجاد یک تراکنش 


یک سرویس گیرنده وب قبل از این که بتواند با یک سرویس دهنده وب داده ئی را مبادله نماید ، می بایست با آن ارتباط برقرار نماید . بدین منظور از پروتکل TCP/IP استفاده می گردد . همانگونه که اشاره گردید سرویس گیرنده و سرویس دهنده وب برای ارسال یک درخواست و پاسخ به آن از پروتکل HTTP استفاده نموده و   ارتباط ایجاد شده بین خود را  صرفا" برای یک تراکنش نگهداری می نمایند ( HTTP یک پروتکل Stateless است ) .
فرآیند ایجاد یک تراکنش بین سرویس گیرنده و سرویس دهنده وب را می توان در چهار مرحله زیر خلاصه نمود:

  •  مرحله اول ، برقراری ارتباط : در ابتدا می بایست یک ارتباط و یا اتصال مبتنی بر پروتکل  TCP/IP  بین یک سرویس دهنده و یک سرویس گیرنده وب ایجاد گردد .  به منظور تشخیص نوع پروتکل استفاده شده  ، برنامه ها از یک عدد منحصر بفرد با نام  شماره پورت استفاده می نمایند .( پروتکل FTP از پورت 21 ، پروتکل Telnet از پورت 32 ، پروتکل SMTP از پورت 25 ، پروتکل HTTP از پورت 80 ) .

  • مرحله دوم : ‌ایحاد و یا صدور یک درخواست توسط سرویس گیرنده

  • مرحله سوم : ‌پاسخ سرویس دهنده به درخواست سرویس گیرنده

  • مرحله چهارم ،‌ خاتمه و یا توقف ارتباط : سرویس دهنده مسئولیت خاتمه ارتباط TCP با سرویس گیرنده وب را پس از پاسخ به درخواست سرویس گیرنده برعهده دارد . به منظور برخورد با مسائل غیرقابل پیش بینی ، هم سرویس گیرنده و هم سرویس دهنده می بایست قادر به مدیریت یک ارتباط باشند . مثلا" پس از فعال نمودن دکمه stop در مرورگر ، می بایست به ارتباط ایجاد شده توسط سرویس گیرنده خاتمه داده شود .

 

 

 

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


برای بسیاری از کاربران اینترنت همه چیز محدود به وب و پروتکل مرتبط با آن یعنی 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

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

 

 

/ 1 نظر / 156 بازدید
مهم نیست

خیلی ممنون از زحمات شما امیدوارم موفق باشید ممنون