نگاهي به پروتكل Secure Sockets Layer     


  

اشاره :

هنگامي كه وب‌سايت amazon.com از شما مي‌خواهد «با استفاده از سرور ايمن ما وارد سيستم شويد» و سپس اطلاعات مالي مهم مانند شماره كارت اعتباري خود را وارد كنيد، براي ايمن‌سازي تبادل اطلاعات بين مرورگر و سرور، چه اتفاقاتي رخ مي‌دهد؟ براي پاسخ به اين پرسش بايد پروتكل SSL يا Secure Sockets Layer را مورد بررسي قرار دهيم. اين پروتكلِ وب‌محور، به ‌منظور ايمن‌سا‌زي تبادل داده‌ها در اينترنت ايجاد شده است و براي درك نحوه عملكرد آن بايد با دو تكنيك رمزنگاري كليد متقارن (symetric-key) و كليد عمومي (public-key: PK) كه در اين پروتكل مورد استفاده قرار مي‌گيرند، آشنا شويد.

 


منبع: IEEE Computer

تكنيك‌هاي رمزنگاري‌


شيوه‌هاي حفاظت از اطلاعات به واسطه دستكاري آن به ‌نحوي كه منجر به تبديل متن ساده به يك متن رمزشده گردد، با عنوان رمزنگاري يا Cryptography شناخته مي‌شوند. هدف اصلي تمام روش‌هاي رمزنگاري، به ‌دست‌آوردن متني است كه براي تمام افراد، ‌غير از دريافت‌كننده مجاز آن، نامفهوم باشد.

در بخش «دستگاه رمزنگاري توماس جفرسون» در همين مقاله، يك نمونه از ابزاري كه در قرن هيجدهم براي رمزگذاري و رمزگشايي پيغام‌ها به‌ كار مي‌رفت، مورد بررسي قرار گرفته است. براي رمزگشايي پيغام، فرستنده و دريافت‌كننده آن بايد تكنيك يكساني را به‌ كار بگيرند و يك كلمه رمز مشخص كنند.

در رمزگذاري به شيوه كليد متقارن، به اين كلمه رمز كه يك عدد تصادفي است، اصطلاحاً كليد (key) گفته مي‌شود. در رمزنگاري به شيوه كليد عمومي كه داراي يك جفت كليد عمومي (public) و خصوصي (private) است، اين كلمه رمز درواقع همان كليد خصوصي است. پس از بررسي روش‌هاي رمزنگاري، علت استفاده همزمان از دو شيوه مذكور مشخص خواهد شد.

رمزنگاري به ‌شيوه كليد متقارن‌

همان‌طور كه در  شكل 1 مي‌بينيد، در رمزنگاري به شيوه كليد متقارن، تابع رمزگذاري (‌)E با استفاده از يك كليد محرمانه k، پيغام متني P را به متن رمزشده C تبديل مي‌كند. دريافت‌كننده اين پيغام رمزشده، با اعمال تابع رمزگشايي (‌)D و همان كليد محرمانه k، اين پيغام را به حالت اوليه P بازمي‌گرداند.

بهترين تكنيك رمزنگاري به شيوه كليد متقارن، DES يا‌ Data Encryption Standard نام دارد و از سال 1976 مورد استفاده قرار گرفته است. تكنيك DES در واقع يك متن كدشدهِ تكراري است كه به قطعات 64 بيتي متن ساده متصل مي‌شود.

تابع رمزگذاري به‌ واسطه جابه‌جايي، توسعه، انتقال، فشرده‌سازي، تعويض و تركيب قطعات 64 بيتي متن پيغام با يك كليد 56 بيتي، هر قطعه از متن ورودي را به يك قطعه متن 64 بيتي كدشده تبديل مي‌كند. گيرنده پيغام، با اجراي معكوس مراحل رمزگذاري و با استفاده از همان كليد 56 بيتيk ، قادر است پيغام را به حالت اوليه بازگرداند.

شکل1- فرآيند رمزگذاري از فرمول (C=E(P تبعيت مي‌کند. براي رمزگشايي پيغام از فرمول (P=D(C استفاده مي‌شود. در رمزگذاري به شيوه کليد متقارن، رابطه K1=K2 برقرار است. در رمزگذاري به شيوه کليد عمومي، کليد رمزگذاري با کليد عمومي دريافت‌کننده پيغام يکسان است و کليد رمزگشايي همان کليد خصوصي دريافت‌کننده است.

تكنيك DES از همان ابتداي كار، به عنوان يك روش ايمن براي انجام تراكنش‌هاي مالي مورد استفاده قرار گرفت، اما امروزه كارايي گذشته را ندارد. فضاي 56 بيتي كليد مورد استفاده در اين تكنيك، 2 به توان 56 كليد منحصر به‌فرد توليد مي‌كند. بنابراين، جست‌وجوي دقيق فضاي كليد، متضمن دستيابي به مقدار كليدk  و تبديل متن كدشدهC  به پيغام اوليه P خواهد بود.

با اين‌كه فضاي 256 بيتي براي انسان‌ها بسيار بزرگ به ‌نظر مي‌رسد، جست‌وجوي آن براي ماشين‌هاي ويژهِ كشف‌رمز يا سوپركامپيوترهاي امروزي، چندان مشكل نيست. در نتيجه، محققان روش‌هاي جديدي را براي پياده‌سازي الگوريتم‌هاي رمزنگاري به‌شيوه كليد متقارن ابداع كرده‌اند.

از ميان اين روش‌ها مي‌توان از DES سه‌گانه (در اين روش، تكنيك DES سه بار پياپي و با استفاده از سه كليد 56 بيتي متفاوت اجرا مي‌شود. در اين نوع رمزنگاري، فضاي كليد مود استفاده، معادل يك كليد 168 بيتي خواهد بود.)، تكنيك IDEA يا International Data Encryption Algorithm  با كليدهاي 128 بيتي، تكنيك RC4 (كليدهايي با فضاي بالاي دو كيلوبيت يا 2048 بيت) و تكنيك RC5 (كليدهايي با فضاي بالاي 256 بيت) نام برد.

هنگام استانداردسازي روش‌هاي رمزنگاري در سال 1997 مؤسسه ملي استاندارد و فناوري با برگزاري يك مسابقه عمومي، تكنيك DES را با تكنيك AES يا Advanced Encription Standard جايگزين كرد. برنده اين مسابقه روشي موسوم به Rijndael يا Rhine-doll  بود كه دو رمزنگار بلژيكي معرفي كردند.

تكنيك AES مانند DES نوعي رمزنگاري با استفاده از قطعات تكراري متن كدشده است، اما در آن از متن‌هاي 128 بيتي همراه كليدهاي 128، 192 يا 256بيتي استفاده مي‌شود. بهره‌گيري از كليد 256 بيتي، تعداد 2 به توان 256 انتخاب را براي كليد فراهم مي‌كند. جست‌وجوي اين فضا حتي براي كامپيوترهاي پيشرفتهِ امروزي نيز غيرممكن است.

از آنجايي كه براي اجراي رمزنگاري به شيوه كليد متقارن از فرمول‌هاي رياضي ساده استفاده مي‌شود، اين شيوه با سرعت نسبتاً زيادي به اجرا در مي‌آيد. صرف‌نظر از فضاي كليد، تمام رويكردهاي رمزنگاري به شيوه كليد متقارن يك ضعف مشابه دارند. براي بازگرداندن پيغام به حالت اوليه، كليد مورد استفاده در رمزگذاري بايد در اختيار دريافت‌كننده پيغام قرار بگيرد. در اين بين اگر كسي به كليد دسترسي يابد، رمزنگاري پيغام بي‌فايده خواهد بود. براي رفع مشكل انتقال كليد، مي‌توان از رمزنگاري به شيوه كليد عمومي بهره گرفت.

رمزنگاري به شيوه كليد عمومي‌

تكنيك‌هاي رمزنگاري به شيوه كليد عمومي، تابع قواعد كاملاً متفاوتي هستند. در اين شيوه، ارسال‌كننده و دريافت‌كننده پيغام‌هاي رمز‌شده از يك جفت كليد عمومي و خصوصي استفاده مي‌كنند. اين جفت كليد در واقع دو عدد هستند كه بين آن‌ها نوعي رابطه رياضي وجود دارد.

به‌ علاوه، اين اعداد داراي خصوصيتي هستند كه در صورت دسترسي به يكي از آن‌ها، هيچ اطلاعاتي در مورد عدد ديگر حاصل نمي‌شود. چنان‌كه از نام اين شيوه رمزنگاري پيداست، كليد عمومي به‌ طور كاملاً آزادانه (از طريق يك صفحه وب يا يك فهرست عمومي) منتشر مي‌شود و در اختيار همه قرار مي‌گيرد.

در نتيجه به آساني مي‌توان به مقدار كليد عمومي دسترسي يافت. اين كليد عمومي (توسط يك مرجع تأييد صلاحيت مانند Verisign) به‌سادگي مورد ارزيابي و تأييد قرار مي‌گيرد. در مقابل، يك كليد خصوصي پس از ايجاد و نگهداري توسط يكي از طرفين (دريافت‌كننده يا فرستنده پيغام)، براي هميشه محفوظ ‌مي‌ماند.

براي ارسال يك پيغام ايمن، فرستنده پيغام، آن را با استفاده از كليد عمومي دريافت‌كننده، رمزگذاري مي‌كند. سپس دريافت‌كننده پيغام به ‌منظور رمزگشايي آن، تابعي را اجرا مي‌كند كه در آن از كليد خصوصي ارسال‌كننده بهره‌گيري شده است.

از آنجا كه معمولاً كليدهاي عمومي و خصوصي از هزاران بيت اطلاعات تشكيل شده‌اند و فرمول‌هاي مورد استفاده براي رمزگذاري (يا رمزگشايي)، متن ساده (يا رمزشده) را به ‌عنوان يك عدد صحيح بزرگ مورد پردازش قرار مي‌دهند و آن را به‌ توان عددي مي‌رسانند كه توسط كليد عمومي (خصوصي) دريافت‌كننده به دست آمده است، سرعت اجراي اين تكنيك بسيار كُند خواهد بود. بنابراين، رمزنگاري به شيوه كليد عمومي در مواردي كه متن پيغام كوتاه باشد، براي مثال هنگامي كه محتواي پيغام، يك كليد متقارن با طول 56 تا 256 بيت است، كاربرد دارد.

امضاي ديجيتالي‌

يكي از مزاياي الگوريتم كليد عمومي اين است كه مي‌توان نقش كليدهاي عمومي و خصوصي را جايگزين كرد و در نتيجه عملكرد جديدي به‌ دست آورد كه براي تأييد هويت فرستنده پيغام كاربرد دارد. به اين عملكرد اصطلاحاً امضاي ديجيتالي گفته مي‌شود.

فرض كنيد عنصر Xقصد ارسال داده‌هاي ايمن را براي عنصر Yدارد و عنصر Y بخواهد از ارسال اين اطلاعات توسط عنصر Xاطمينان حاصل كند.

براي انجام اين كار ابتدا عنصر X با استفاده از كليد خصوصي مربوط به خود، تابع رمزگشايي را روي متن پيغام اجرا مي‌كند.

سپس تابع رمزگذاري را با استفاده از كليد عمومي عنصر Y روي متن پيغام اجرا مي‌كند. بدين ترتيب متن رمزشده به ‌دست مي‌آيد.

عنصر Y پس از دريافت پيغام رمز، ابتدا آن را با استفاده از كليد خصوصي مربوط به خود، رمزگشايي مي‌نمايد و سپس نتيجه حاصل را با استفاده از كليد عمومي عنصر Xرمزگذاري مي‌كند.

اگر پس از اجراي اين مراحل متن اصلي پيغام به‌ دست آيد، علاوه بر حصول اطمينان از حفاظت پيغام در هنگام انتقال، هويت منبع ارسال‌كننده آن نيز تأييد مي‌شود؛ چراكه در اولين مرحله از كار، تنها عنصر X امكان دسترسي به كليد خصوصي X را دارد.

لازم به ذكر است كه كليدهاي خصوصي بايد براي هميشه مورد محافظت قرار گيرند. در صورت افشاي يكي از كليدهاي خصوصي، بايد جفت كليدهاي خصوصي و عمومي جاري لغو شود و يك جفت كليد جديد مورد استفاده قرار گيرد.

ترجمه: محمد ناصح
ماهنامه شبکه - تير ۱۳۸۶ شماره 77

آشنایی با پروتكل LDAP



 


نوشته: میثاق محمدی‌زاده
منبع: ماهنامه شبکه - شهریور ۱۳۸۵ شماره 68

اشاره :

یكی از سرویس‌هایی كه روی لینوكس ارائه می‌شود، امكان كار با پروتكل LDAP است. این سرویس كه تا حدودی برای بسیاری از كاربران و مدیران شبكه ناآشنا است، در كنار سرویس سامبا (Samba) بستری برای ارتباط سكوی اپن‌سورس با دیگر سكوهای سیستم‌عاملی ایجاد می‌كند و موجب می‌شود بدون در نظرگیری استانداردها و پروتكل‌های سمت سرویس‌دهنده، با آن‌ها سازگاری و همسان‌سازی داشته باشد. در این مقاله خوانندگان و علاقمندان را با مفهوم این سرویس آشنا می‌كنیم. در ضمن به كاركرد آن نیز نگاهی می‌افكنیم. به دلیل آن‌كه راه‌اندازی و پیكربندی این سرویس باید همراه با یك سرویس‌‌دهنده كامل باشد، آن را به زمان دیگری موكول می‌نماییم. برای كسب اطلاعات بیشتر و دریافت بسته‌های نصب LDAP نیز می‌توانید به سایت رسمی این پروژه به نشانیwww.OpenLDAP.org مراجعه نمایید.




سرویس دایركتوری‌
دایركتوری یا فهرست راهنما، یك سرویس ویژه در شبكه‌های كامپیوتری یا اینترنت است كه برای بهبود كار با بانك‌های‌اطلاعاتی برای خواندن، جست‌وجو و مرور اطلاعات به كار می‌رود. با استفاده از سرویس دایركتوری می‌توان محتویات بانك اطلاعاتی را دسته‌بندی نمود، برای آن‌ها ویژگی‌ها و ایندكس‌هایی تعریف كرد و بر این اساس فایل‌ها و اطلاعات شبكه را برای دسترسی سریع و آسان طبقه‌بندی نمود. برای مثال، در شبكه ممكن است یك بانك اطلاعاتی از فایل‌ها وجود داشته باشد. با استفاده از سرویس دایركتوری می‌توان این فایل‌ها را طبقه‌بندی نمود، ویژگی‌های مختلفی به آن‌ها افزود و عملیات بروزرسانی و آپلود آن‌ها را انجام داد؛ به طوری كه دسترسی به آن‌ها از روی شبكه برای كاربران ساده و راحت باشد.

هر سرویس دایركتوری دارای ویژگی‌های اساسی زیر است:

‌ قابلیت بهینه‌سازی خواندن و دسترسی به فایل‌ها‌‌

مدلی توزیع شده برای مدیریت و ذخیره اطلاعات

افزایش و توسعه ویژگی‌ها و انواع اطلاعات ذخیره شده‌

ایجاد یك ابزار جست‌وجوی پیشرفته روی شبكه‌

روش‌های مختلفی برای راه‌اندازی یك سرویس دایركتوری وجود دارد. علاوه بر این، متدهای مختلفی برای  مدیریت اطلاعات و ذخیره‌سازی آن‌ها براساس آپلودكردن آن‌ها روی بانك اطلاعاتی، نحوه دسترسی، چگونگی مرجع‌دهی آن‌ها‌ ‌برای یك سرویس دایركتوری قابل استفاده است. برخی از سرویس‌های دایركتوری محلی (Local) هستند و فقط روی یك شبكه محلی یا یك ماشین سرویس‌دهنده  اجرا می‌شوند. برخی دیگر از دایركتوری‌ها عمومی (Global) هستند و روی چندین شبكه محلی یا سرویس‌دهنده توزیع می‌شوند، و امكان مدیریت و دسترسی به اطلاعات روی شبكه را از این طریق فراهم می‌كنند.‌ Domain Name System) DNS) یك مثال از سرویس دایركتوری عمومی است.


پروتكل LDAP
Lightweight Directory Access Protocol یك پروتكل مبتنی بر شبكه و  X500 برای دسترسی به سرویس‌های دایركتوری روی شبكه است. این پروتكل دارای مستندات RFC2251 و RFC3377 است. به علت آن‌كه دایركتوری‌های موجود روی شبكه یكتا نیستند و هر یك ممكن است براساس یك سكوی سیستم‌عاملی و ساختار متفاوت باشند، پروتكل LDAP امكان برقراری ارتباط و مدیریت آن‌ها را فراهم می‌كند. در حقیقت LDAP ابزاری برای مدیریت اطلاعات شبكه، حساب‌های كاربری، ماشین‌های میزبان شبكه و منابع درون شبكه است. با استفاده از این استاندارد می‌توان یك مدیریت متمركز و واحد را به كل پیكره شبكه اعمال نمود و با دسترسی به تمام سرویس‌های درون شبكه (سخت‌افزاری و نرم‌افزاری) امكان همسان‌سازی و پیكربندی آسان آن‌ها را فراهم كرد.

در حالت كلی پروتكل LDAP وظایف زیر را بر عهده دارد:

ایجاد یك زبان مشترك دسترسی دایركتوری (Directory Access) بین ماشین میزبان و سرویس‌دهنده در شبكه و امكان برقراری ارتباط و تبادل اطلاعات میان آن‌ها فارغ از سكوی سیستم‌عاملی و سخت‌افزاری.

ایجاد قابلیت استفاده از متدهای ساده رمزنگاری در پروتكل TCP/IP برای تبادل اطلاعات كنترلی و مدیریتی مانند كنترل و مدیریت كاربران در شبكه.

ایجاد یك استاندارد برای استفاده از دایركتوری در شبكه.

این استاندارد قابلیت نصب و پیكربندی ساده و انعطاف‌پذیر سرویس دایركتوری و سفارشی نمودن آن برای نیازهای گوناگون را روی شبكه فراهم می‌كند. 

پشتیبانی توابع API:
این پروتكل از C ،Netscape's Java SDK ،PerLDAP ،SunSoft's JNDI و Microsoft's Active Directory Services Interface) ADSI) پشتیبانی می‌كند و با آن‌ها سازگار است. این ویژگی امكان مدیریت و كنترل دسترسی شبكه‌های گسترده را فراهم می‌كند كه دارای چندین سكوی نرم‌افزاری/ سخت‌افزاری هستند.

استفاده از یك استاندارد با نام LDAP Data Interchange Format) LDIF) برای توصیف و تشریح اطلاعات دایركتوری. این استاندارد كه توسط یك ابزار با همین نام به كار گرفته می‌شود، تحت خط فرمان است و امكان تنظیم مجموعه‌ای از دایركتوری‌ها یا آپلودكردن آن‌ها برای استفاده در دایركتوری را در اختیار مدیر شبكه قرار می‌دهد.













شکل 1


شکل 2


ساختار LDAP
اطلاعاتی كه روی LDAP قرار می‌گیرد، اطلاعاتی ایندكس‌دار و مدخل‌مانند است. بدین معنی  كه اطلاعات به صورت مجموعه‌ای از ویژگی‌های توزیع شده قابل دسترسی هستند كه از یكدیگر متمایزند و كاربران می‌توانند از طریق ایندكس‌های موجود، به اطلاعات دسترسی پیدا نمایند.

برای مثال، عبارت می‌تواند یك ایندكس برای اطلاعات دستوری و برای آدرس‌های ایمیل باشد. cn می‌تواند ارزش یك داده یا اطلاعات برای یك كاربر یا ماشین باشد (برای مثال Misagh و mail) آدرس ایمیل مرتبط با ارزش cn باشد (برای مثال misagh؛example.com).

 روی LDAP اطلاعات به صورت مدخل‌های دایركتوری و سلسله مراتبی قرار می‌گیرند. این ساختار سلسله‌ مراتبی انعكاسی از ساختار شبكه یا اینترنت و وضعیت جغرافیایی یا قرارگیری ماشین‌های كلاینت و سرویس‌دهنده است.

در شكل 1 و 2 دو ساختار سلسله مراتبی قرارگیری اطلاعات روی دایركتوری برای دسترسی LDAP نشان داده شده است.

در شكل دو كه گویای قرارگیری اطلاعات در دایركتوری مبتنی بر اینترنت است، در بالاترین سطح از com ،net  و DE كه یك پسوند دامنه اختصاصی است، تشكیل یافته است.

اگر شاخه com را پیگیری نمایید، به سطح odyssey می‌رسید كه یك سرویس‌دهنده اختصاصی درون سازمانی است.

در ادامه سطح odyssey به دو شاخه server و  people تقسیم می‌شود كه روی هر یك می‌تواند اطلاعات مختلفی قرار گیرد و یك كاربر كه امكان دسترسی به این فهرست راهنما برایش مهیا است، می‌تواند با شناسه ID   اختصاصی خود به فایل‌ها و اطلاعات دسترسی داشته باشد.

این ساختار دسترسی به اطلاعات و كنترل مجوزها، همچنین مدیریت آن‌ها را برای سرویس‌دهنده اختصاصی سازمان و دیگر سرویس‌دهنده‌ها كه امكان اتصال به دایركتوری را دارند، ساده می‌نماید. LDAP ساز و كاری برای اتصال به این دایركتوری و برقراری یك ارتباط مدیریتی در لینوكس برای مدیران شبكه فراهم می‌كند.


LDAP در لینوكس‌
LDAP خود یك پروتكل و استاندارد برای برقراری ارتباط با سرویس دایركتوری‌های مختلف است، اما در لینوكس برای به كارگیری و مدیریت این پروتكل ابزار OpenLDAP ارائه شده است. OpenLDAP یكی از بنیادی‌ترین ابزارهای لینوكس است و به همین خاطر در غالب توزیع‌های لینوكس مشاهده می‌شود و امكان نصب و راه‌اندازی آن به راحتی وجود دارد. بنابراین نصب این سرویس كار چندان مشكلی نخواهد بود، اما پیكربندی LDAP برای دسترسی به دایركتوری‌های تعریف شده و تنظیمات آن‌ها براساس مستندات شبكه، نیازمند دقت و تمرین است.









شكل 3


علاوه بر این، هر توزیع، ابزارهای متنوع مدیریتی برای كار با این سرویس ارائه نموده است. برای نمونه در توزیع SUSE، در بخش Network Service ابزار LDAP Client ارائه شده است كه می‌توان با دادن آدرس سرویس‌دهنده LDAP و شماره DN اختصاصی تعریف شده برای كاربر، به این سرویس متصل شد (شكل 3).
 
برای تنظیمات مورد نیاز باید به سراغ پوشه /etc/openldap رفت. در این پوشه فایل‌های پیكربندی ldap.conf و slapd قرار دارند. برای شروع و خاتمه سرویس LDAP نیز از دو دستور slapd start و slapd stop استفاده می‌شود. slapd نام دایمون ابزارOpenLDAP در لینوكس است.



نصب و پیكربندی LDAP روی دبیان سارژ
دبیان بزرگ‌ترین توزیع لینوكس است كه قابلیت‌ها و ویژگی‌های آن موجب شده روی كامپیوترهای سرور و با هدف ایجاد سرویس‌دهنده به راحتی راه‌اندازی شود. سارژ یا دبیان 1/3 آخرین نسخه این توزیع است كه شامل طیف گسترده‌ای از برنامه‌ها و ابزارهای موردنیاز برای یك سیستم سرور است. در ادامه نصب و پیكربندی سرویس‌دهنده پروتكل LDAP روی این توزیع مرور می‌شود. برای نصب LDAP، اگر در هنگام نصب دبیان نصب نشده است، باید از دستور زیر استفاده نمود:

apt-get install slapd ldap-utils
با اجرای دستور فوق ابزار OpenLDAP و ابزارهای دیگر وابسته به آن نصب می‌شوند. اكنون از مسیر /etc/openldap  فایل دایمون slapd.conf را توسط یك ویرایشگر متنی باز نمایید. دو گزینه برای دسترسی به سرویس‌دهنده LDAP و مدیریت آن و كه نام دامنه سرویس LDAP است، در این فایل باید تنظیم شوند. برای مثال:

omit openLDAP server configuration? no
DNS domain name: example.org
Admin password: ldap
database backend to use: BDB
Do you want your database to be removed when slapd is purged? no
 protocol? No2Allow LDAPv

پس از انجام دادن تنظیمات موردنیاز و اجرای سرویس LDAP، با استفاده از دستور

ldapsearch -x -b dc=example,dc=org
می‌توانید سرویس‌دهنده LDAP و صحت كاركرد آن را تست نمایید. سپس باید اطلاعات پایه‌ای اولیه سلسله‌مراتبی  سرویس دایركتوری شبكه یا نام دامنه مورد نظر برای OpenLDAP تعریف شوند. برای این منظور یك فایل متنی را باز كنید و نام آن را base.ldif قرار دهید. این فایل در همان پوشه openldap ذخیره می‌شود. همان‌طور كه در ضمن مثالی در بالا اشاره شد، اطلاعات یك دایركتوری ممكن است به صورت زیر باشند:

dn: ou= People, dc= example, dc=org
ou: People
objectClass: top
objectClass: organiationalUnitz
dn: ou= Group, dc= example, dc=org
ou: Group
objectClass: top
objectClass: organiationalUnitz


اكنون برای افزودن فایل اطلاعات به دایركتوری LDAP و اجرای سرویس‌دهنده از فرمان زیر استفاده می‌شود:

‌ldapadd -x -D "cn=admin,dc=example,dc=org" -W -f base.ldif   
در صورت اجرای دستور بالا و صحیح بودن كلمه‌ عبور، خروجی مشاهده‌شده در ترمینال خط فرمان باید با عبارت
. آغاز ‌شده باشد كه بیانگر آماده بودن سرویس‌دهنده LDAP برای وارد نمودن اطلاعات جدید یا مدیریت كاربران است. در گام بعد معمولاً مدیران شبكه یك گروه كاری را تعریف می‌كنند تا كاربرانی كه می‌خواهند به اطلاعات روی سرویس دایركتوری دسترسی داشته باشند عضو این گروه شوند. نام گروه می‌تواند group.ldap  باشد. بدون این‌كه بخواهیم درگیر جزئیات و پیچیدگی‌های راه‌اندازی یك گروه كاری روی LDAP شویم، می‌توان اینگونه عمل نمود:

dn: cn= ldapusers, ou= Group, dc= example, dc=org
objectClass: PosixGroup
ObjectClass: top
cn: ldapusers
userPassword: [crypt]x
gidNumber:9000

اكنون LDAP برای برقراری یك ارتباط و استفاده روی شبكه آماده است. البته می‌توان در ادامه سرویس‌هایی مانندIDIF را نیز برای كاربران و گروه كاری تعریف و تنظیم نمود.


نتیجه‌گیری‌
برخی از سرویس‌های ارائه‌شده روی لینوكس ویژگی‌های منحصربه‌فردی دارند كه توانایی و امكانات مدیران شبكه را افزایش می‌دهند و موجب می‌شوند شبكه را آسان‌تر مدیریت كرد و سریع‌تر كارهای روزمره و عادی را پیگیری نمود.
LDAP پروتكلی است كه امكان ارتباط با سرویس‌ دایركتوری و مدیریت اطلاعات و كاربران روی یك شبكه را فراهم می‌كند. این سرویس توسط ابزار OpenLDAP در لینوكس اجرا می‌شود و مخصوص سكوی نرم‌افزاری اپن‌سورس برای سازگاری با دیگر سكوها است. در صورت نبود این پروتكل در لینوكس، مدیران شبكه مجبور می‌شدند از ابزارهای شبیه‌سازی و مجازی‌سازی برای راه‌اندازی یك كلاستر جهت ارتباط با سرویس دایركتوری سیستم‌عامل‌هایی مانند ویندوز استفاده نمایند.

با سپاس از ictna.ir

آشنایی با پروتكل SSL و عملكرد آن

مسعود راستكار
ماهنامه شبکه - آذر ۱۳۸۳ شماره 49

اشاره :

اگر مقالات الفبای رمزنگاری و PKI در شماره 42 ماهنامه شبكه را مطالعه كرده باشید به طور قطع با اصطلاحات رمزنگاری (Cryptography)، كلیدهای نامتقارن و متقارن، گواهی‌های دیجیتال (Digital Certificate) كه اساس بحث این مقاله را تشكیل می‌دهند، آشنا هستید. در غیر‌این‌صورت توصیه می‌شود كه حتماً مقالات مذكور را مطالعه كنید.




 



SSL چیست؟
(SSL یا Secure Socket Layer) راه‌حلی جهت برقراری ارتباطات ایمن میان یك سرویس‌دهنده و یك سرویس‌گیرنده است كه توسط شركت Netscape ارایه شده است. در واقع SSL پروتكلی است كه پایین‌تر از لایه كاربرد (لایه 4 از مدل TCP/IP) و بالاتر از لایه انتقال (لایه سوم از مدل TCP/IP) قرار می‌گیرد. (شكل 1)







         
                             شكل 1

مزیت استفاده از این پروتكل بهره‌گیری از موارد امنیتی تعبیه شده آن برای امن كردن پروتكل‌های غیرامن لایه كاربردی نظیرHTTP ،LDAP ،IMAP و... می‌باشد كه براساس آن الگوریتم‌های رمزنگاری بر روی داده‌های خام (plain text) كه قرار است از یك كانال ارتباطی غیرامن مثل اینترنت عبور كنند، اعمال می‌شود و محرمانه ماندن داده‌ها را در طول كانال انتقال تضمین می‌كند.
به بیان دیگر شركتی كه صلاحیت صدور و اعطاء گواهی‌های دیجیتال SSL را دارد برای هر كدام از دو طرفی كه قرار است ارتباطات میان شبكه‌ای امن داشته باشند، گواهی‌های مخصوص سرویس‌دهنده و سرویس‌گیرنده را صادر می‌كند و با مكانیزم‌های احراز هویت خاص خود، هویت هر كدام از طرفین را برای طرف مقابل تأیید می‌كند، البته غیر از این‌كار می‌بایست تضمین كند كه اگر اطلاعات حین انتقال مورد سرقت قرار گرفت، برای رباینده قابل درك و استفاده نباشد كه این‌كار را با كمك الگوریتم‌های رمزنگاری و كلیدهای رمزنگاری نامتقارن و متقارن انجام می‌دهد.


ملزومات یك ارتباط مبتنی بر پروتكل امنیتی SSL 
برای داشتن ارتباطات امن مبتنی بر SSL عموماً به دو نوع گواهی دیجیتال SSL یكی برای سرویس‌دهنده و دیگری برای سرویس‌گیرنده و یك مركز صدور و اعطای گواهینامه دیجیتال یا CA نیاز می‌باشد. وظیفه CA این است كه هویت طرفین ارتباط، نشانی‌ها، حساب‌های بانكی و تاریخ انقضای گواهینامه را بداند و  براساس آن‌ها هویت‌ها را تعیین نماید.


مكانیزم‌های تشكیل‌دهنده SSL 
1- تأیید هویت سرویس‌دهنده‌

با استفاده از این ویژگی در SSL، یك كاربر از صحت هویت یك سرویس‌دهنده مطمئن می‌شود. نرم‌افزارهای مبتنی بر SSL سمت سرویس‌گیرنده (مثلاً یك مرورگر وب نظیرInternet Explerer از تكنیك‌های استاندارد رمزنگاری مبتنی بر كلید عمومی و مقایسه با كلیدهای عمومی یك سرویس‌دهنده (مثلاً یك برنامه سرویس‌دهنده وب نظیر (IIS  می‌تواند از هویت او مطلع شود و پس از اطمینان كامل، كاربر می‌تواند نسبت به وارد نمودن اطلا‌عات خود مانند شماره كارت‌های اعتباری و یا گذرواژه‌ها اقدام نماید.

2- تأیید هویت سرویس‌گیرنده
برعكس حالت قبلی در اینجا سرویس‌دهنده است كه می‌بایست از صحت هویت سرویس‌گیرنده اطمینان یابد. طی این مكانیزم، نرم‌افزار مبتنی بر SSL سمت سرویس‌دهنده پس از مقایسه نام سرویس‌گیرنده با نام‌های مجاز موجود در لیست سرویس‌گیرنده‌های مجاز كه در داخل سرویس‌دهنده تعریف می‌شود و در صورت وجود، اجازه استفاده از سرویس های مجاز را به او می‌دهد.

3- ارتباطات رمز شده 
كلیه اطلاعات مبادله شده میان سرویس‌دهنده و گیرنده می‌بایست توسط نرم‌افزارهای موجود در سمت سرویس‌دهنده و سرویس‌گیرنده رمزنگاری (Encrypt) شده و در طرف مقابل رمزگشایی (Decrypt) شوند تا حداكثر محرمانگی (Confidentiality) در این‌گونه سیستم‌ها لحاظ شود.

اجزای پروتكل SSL 
پروتكل SSL  دارای دو زیر پروتكل تحت عناوین زیر می‌باشد.
1- ‌SSL Rocord Protocol كه نوع قالب‌بندی داده‌های ارسالی را تعیین می‌كند.
2- SSL Handshake Protocol كه براساس قالب تعیین شده در پروتكل قبلی، مقدمات ارسال داده‌ها میان سرویس‌دهنده‌ها و سرویس‌گیرنده‌های مبتنی بر SSL را تهیه می‌كند.
بخش‌بندی پروتكل SSL به دو زیر پروتكل دارای مزایای چندی است. از جمله:
اول: در ابتدای كار و طی مراحل اولیه ارتباط (Handshake) هویت سرویس‌دهنده برای سرویس‌گیرنده مشخص می‌گردد.
دوم:‌ در همان ابتدای شروع مبادلات، سرویس‌دهنده و گیرنده بر سر نوع الگوریتم رمزنگاری تبادلی توافق می‌كنند.
سوم: در صورت لزوم، هویت سرویس گیرنده نیز برای سرویس‌دهنده احراز می‌گردد.
چهارم: در صورت استفاده از تكنیك‌های رمزنگاری مبتنی بر كلید عمومی، می‌توانند كلیدهای اشتراكی مخفی را ایجاد نمایند.
پنجم: ارتباطات بر مبنای SSL رمزنگاری می‌شوند.










شكل 2

الگوریتم‌های رمزنگاری پشتیبانی شده درSSL 
در استانداردSSL ،  از اغلب الگورتیم‌های عمومی رمزنگاری و مبادلات كلید (Key Exchcenge Algorithm) نظیر DES ،DSA ،KEA ، MD5، RC2،RC4، RSA و RSA Key Exchauge ،SHA-1 ،Skipjack و 3DES پشتیبانی می‌شود و بسته به این‌كه نرم‌افزارهای سمت سرویس‌دهنده و سرویس‌دهنده نیز از موارد مذكور پشتیبانی نمایید، ارتباطاتSSL  می‌تواند براساس هر كدام این از الگوریتم‌ها صورت ‌پذیرد. البته بسته به طول كلید مورد استفاده در الگوریتم و قدرت ذاتی الگوریتم می‌توان آن‌ها را در رده‌های مختلفی قرار دارد كه توصیه می‌شود با توجه به سناریوهای موردنظر، از الگوریتم‌های قوی‌تر نظیر 3DES با طول كلید 168 بیت برای رمزنگاری داده‌ها و همچنین الگوریتم 1-SHA برای مكانیزم‌های تأیید پیغام 5 MD استفاده شود و یا این‌كه اگر امنیت در این حد موردنیاز نبود، می‌توان در مواردی خاص از الگوریتم رمزنگاری 4 RC با طول كلید 40 بیت و الگوریتم تأیید پیغام 5 MD استفاده نمود. (شكل 2 )




نحوه عملكرد داخلی پروتكلSSL
  
همان‌طور كه می‌دانید SSL می‌تواند از تركیب رمزنگاری متقارن و نامتقارن استفاده كند. رمزنگاری كلید متقارن سریع‌تر از رمزنگاری كلیدعمومی است و از طرف دیگر رمزنگاری كلید عمومی تكنیك‌های احراز هویت قوی‌تری را ارایه می‌كند. یك جلسه SSL Session) SSL) با یك تبادل پیغام ساده تحت عنوان SSL Handshake شروع می‌شود. این پیغام اولیه به سرویس‌دهنده این امكان را می‌دهد تا خودش را به سرویس‌دهنده دارای كلید عمومی معرفی نماید و سپس به سرویس‌گیرنده و سرویس‌دهنده این اجازه را می‌دهد كه یك كلید متقارن را ایجاد نمایند كه برای رمزنگاری‌ها و رمزگشایی‌ سریع‌تر در جریان ادامه مبادلات مورد استفاده قرار می‌گیرد. گام‌هایی كه قبل از برگزاری این جلسه انجام می‌شوند براساس الگوریتم RSA Key Exchange عبارتند از:
1- سرویس‌گیرنده، نسخه SSL مورد استفاده خود، تنظیمات اولیه درباره نحوه رمزگذاری و یك داده تصادفی را برای شروع درخواست یك ارتباط امن مبتنی بر SSL به سمت سرویس‌دهنده ارسال می‌كند.
2- سرویس‌دهنده نیز در پاسخ نسخه SSL مورد استفاده خود، تنظیمات رمزگذاری و داده تصادفی تولید شده توسط خود را به سرویس‌گیرنده می‌فرستد و همچنین سرویس‌دهنده گواهینامه خود را نیز برای سرویس‌گیرنده ارسال می‌كند و اگر سرویس‌گیرنده از سرویس‌دهنده، درخواستی داشت كه نیازمند احراز هویت سرویس‌گیرنده بود، آن را نیز از سرویس‌گیرنده درخواست می‌كند.
3- سپس سرویس‌گیرنده با استفاده از اطلا‌عاتی كه از سرویس‌دهنده مجاز در خود دارد، داده‌ها را بررسی می‌كند و اگر سرویس‌دهنده مذكور تأیید هویت شد، وارد مرحله بعدی می‌شود و در غیراین‌صورت با پیغام هشداری به كاربر، ادامه عملیات قطع می‌گردد.
4- سرویس‌گیرنده یك مقدار به نام Premaster Secret را برای شروع جلسه ایجاد می‌كند و آن را با استفاده از كلید عمومی (كه اطلاعات آن معمولاً در سرویس‌دهنده موجود است) رمزنگاری می‌كند و این مقدار رمز شده را به سرویس‌دهنده ارسال می‌كند.
5- اگر سرویس‌دهنده به گواهینامه سرویس‌گیرنده نیاز داشت می‌بایست در این گام برای سرویس‌دهنده ارسال شود و اگر سرویس‌گیرنده نتواند هویت خود را به سرویس‌دهنده اثبات كند، ارتباط در همین‌جا قطع می‌شود.
6- به محض این‌كه هویت سرویس‌گیرنده برای سرویس‌دهنده احراز شد، سرویس‌دهنده با استفاده از كلید اختصاصی خودش مقدار Premaster Secret را رمزگشایی می‌كند و سپس اقدام به تهیه مقداری به نام Master Secret می‌نماید.
7- هم سرویس‌دهنده و هم سرویس‌گیرنده با استفاده از مقدار master Secret كلید جلسه (Session Key) را تولید می‌كنند كه در واقع كلید متقارن مورد استفاده در عمل رمزنگاری و رمزگشایی داد‌ه‌ها حین انتقال اطلاعات است و در این مرحله به نوعی جامعیت داد‌ها بررسی می‌شود.
8- سرویس‌گیرنده پیغامی را به سرویس‌دهنده می‌فرستد تا به او اطلاع دهد، داده بعدی كه توسط سرویس‌گیرنده ارسال می‌شود به وسیله كلید جلسه رمزنگاری خواهد شد و در ادامه، پیغام رمز شده نیز ارسال می‌شود تا سرویس‌دهنده از پایان یافتن Handshake  سمت سرویس‌گیرنده مطلع شود.
9- سرویس‌دهنده پیغامی را به سرویس‌گیرنده ارسال می‌كند تا او را از پایان Handshake سمت سرویس‌دهنده آگاه نماید و همچنین این‌كه داده بعدی كه ارسال خواهد شد توسط كلید جلسه رمز می‌شود.
10- در این مرحله SSL Handshake تمام می‌شود و از این به بعد جلسه SSL شروع می‌شود و هر دو عضو سرویس‌دهنده و گیرنده شروع به رمزنگاری و رمزگشایی و ارسال داده‌ها می‌كنند.  (همانند شكل 2)


حملا‌ت تأثیرگذار برSSL 
SSL نیز از حملا‌ت و نفوذهای مختلف در امان نیست. بعضی از حملا‌ت متداولی كه براین پروتكل واقع می‌شود عبارتند ازTraffic Analysis : یا تحلیل ترافیك، حملا‌تCut ِ Paste بلووین، حملا‌ت Certification Injection و حملا‌ت از نوع Man in the middle.

با سپاس از سایت ictna.ir

آشنائی با پروتکل های  SLIP و PPP

آشنائی با پروتکل های  SLIP و PPP

مبادله اطلاعات بر روی اينترنت با استفاده از پروتکل TCP/IP انجام می شود . با اين که پروتکل فوق يک راه حل مناسب در شبکه های محلی و جهانی را ارائه می نمايد ، ولی به منظور ارتباطات از نوع Dial-up طراحی نشده است .
ارتباط Dail-up ، يک لينک نقطه به نقطه ( Point-To-Point ) با استفاده  از تلفن است . در چنين مواردی يک روتر و يا سرويس دهنده، نقطه ارتباطی شما به شبکه با استفاده از يک  مودم خواهد بود. سرويس دهنده دستيابی راه دور موجود در مراکز ISP ، مسئوليت ايجاد يک ارتباط نقطه به نقطه با سريس گيرندگان Dial-up را برعهده دارد . در ارتباطات فوق ، می بايست از امکانات خاصی به منظور ارسال IP و ساير پروتکل ها استفاده گردد . با توجه به اين که لينک ايجاد شده بين دو نقطه برقرار می گردد ، آدرس دهی مشکل خاصی را نخواهد داشت. 
SLIP ( اقتباس شده از   Serial Line Internet Protocol  ) و PPP ( اقتباس شده از  Point-To-Point )  پروتکل هائی  می باشند که امکان استفاده از  TCP/IP بر روی کابل های سريال نظير خطوط تلفن را فراهم  می نمايند ( SLIP و PPP  : دو روش متفاوت به منظور اتصال به اينترنت ).  با استفاده از پروتکل های فوق ، کاربران می توانند توسط يک کامپيوتر و مودم به اينترنت متصل شوند . از پروتکل SLIP در ابتدا در سيستم عامل يونيکس استفاده می گرديد ولی امروزه تعداد بيشتری از سيستم های عامل نظير لينوکس و ويندوز نيز از آن حمايت می نمايند . در حال حاضر استفاده از پروتکل SLIP نسبت به PPP بمراتب کمتر است .

PPP نسبت به SLIP دارای مزايای متعددی است :

  • امکان مبادله اطلاعات به صورت همزمان و غير همزمان . در پروتکل SLIP صرفا" امکان مبادله اطلاعات به صورت همزمان وجود دارد  .

  • ارائه امکانات لازم به منظور تصحيح خطاء . تصحيح خطاء در پروتکل SLIP  عموما" مبتنی بر سخت افزار استفاده شده به منظور برقراری ارتباط ( نظير مودم ) و يا استفاده از قابليت های پروتکل TCP/IP است .

  • ارائه امکانات لازم برای فشرده سازی .پروتکل SLIP در اغلب بخش های آن چنين ويژگی را دارا نمی باشد . در اين رابطه نسخه هائی از SLIP به منظور فشرده سازی نظير Compressed SLIP و يا CSLIP طراحی شده است ولی متداول نمی باشند .

  • ارائه امکانات لازم به منظور نسبت دهی آدرس ها به صورت پويا و اتوماتيک .پروتکل SLIP می بايست به صورت دستی پيکربندی گردد ( در زمان  Dial-up و يا تنظيم اوليه Session ) .

  • امکان استفاده از چندين پروتکل بر روی لينک های PPP وجود دارد ( نظير IP و يا IPX ) . در پروتکل SLIP صرفا" امکان استفاده از پروتکل IP وجود خواهد داشت .

وجه اشتراک پروتکل های PPP و SLIP 

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

  •  هر دو پروتکل  قادر به کپسوله نمودن ساير پروتکل هائی می باشند که در ادامه برای روتر و ساير دستگاه ها ارسال می گردند . در  مقصد، اطلاعات مربوط به پروتکل های SLIP و يا PPP برداشته شده و پروتکل های ارسالی توسط  لينک سريال نظير IP ، در طول شبکه فرستاده می گردد .

يک کامپيوتر با استفاده از  يک ارتباط  SLIP و يا PPP قادر به شبيه سازی يک اتصال مستقيم به اينترنت است . در اين رابطه به امکانات زير نياز می باشد  :

  • يک کامپيوتر و مودم

  • يک account از نوع SLIP و يا PPP از ISP مربوطه

  • نصب نرم افزارهای TCP/IP و SLIP/PPP بر روی کامپيوتر کاربر ( نرم افزارهای فوق معمولا" در زمان استقرار سيستم عامل بر روی کامپيوتر نصب خواهند شد ).

  • يک آدرس IP . آدرس فوق ممکن است به صورت دائم و يا پويا ( استفاده از سرويس دهنده DHCP ) به کامپيوتر کاربر نسبت داده شود.

نحوه عملکرد يک اتصال SLIP و يا PPP

  • مودم موجود بر روی کامپيوتر اقدام به شماره گيری يک کامپيوتر از راه دور در يک ISP می نمايد .

  • نرم افزار SLIP/PPP درخواست يک اتصال SLIP/PPP را می نمايد .

  • پس از برقراری ارتباط ، ISP مربوطه به کامپيوتر کاربر يک آدرس IP را اختصاص خواهد داد ( در مواردی که از يک سرويس دهنده DHCP استفاده می گردد ) .

  • نرم افزار TCP/IP بر روی کامپيوتر کاربر ، کنترل و مديريت مبادله اطلاعات بين کامپيوتر کاربر و اينترنت را برعهده خواهد گرفت .


استفاده از اين مطلب  با ذکر منبع و اهداف غيرانتفاعی بلامانع است .
باتشکر از شرکت سخاروش

آشنائی با پروتكل HTTP ( بخش اول )



در اينترنت همانند ساير شبكه های كامپيوتری از پروتكل های متعدد و با اهداف مختلف استفاده می گردد. هر پروتكل از يك ساختار خاص برای ارسال و دريافت اطلاعات  (بسته های اطلاعاتی ) استفاده نموده و ترافيك مختص به خود را در شبكه ايجاد می نمايد .  HTTP  ( برگرفته از Hyper Text Transfer Protocol ) ، يكی از متداولترين پروتكل های لايه application است  كه مسئوليت ارتباط بين سرويس گيرندگان و سرويس دهندگان وب را برعهده دارد .
در ادامه با پروتكل فوق بيشتر آشنا خواهيم شد.

پروتكل HTTP چيست ؟
دنيای شبكه های كامپيوتری دارای عمری چند ساله است و بسياری از كاربران ، ضرورت استفاده از شبكه را همزمان با متداول شدن اينترنت در اوايل سال 1990 دريافتند . عموميت اينترنت، رشد و گسترش شبكه های كامپيوتر‌ی را به دنبال داشته است . اينترنت نيز با سرعتی باورنكردنی رشد و  امروزه شاهد ايجاد ده ها  ميليون وب سايت در طی يك سال در اين عرصه می باشيم .
تمامی وب سايت های موجود بر روی‌ اينترنت از پروتكل HTTP استفاده می نمايند . با اين كه پروتكل HTTP  با استفاده از پروتكل های ديگری نظير IP و TCP ماموريت خود را انجام می دهد ، ولی اين پروتكل HTTP است كه به عنوان زبان مشترك ارتباطی بين سرويس گيرنده و سرويس دهنده وب به رسميت شناخته شده و از‌ آن استفاده می گردد . در واقع مرورگر وب صدای خود را با استفاده از پروتكل HTTP به گوش سرويس دهنده وب رسانده و از وی درخواست يك صفحه وب را می نمايد.
به منظور انجام يك تراكنش موفقيت آميز بين سرويس گيرندگان وب ( نظير IE )  و سرويس دهندگان وب ( نظير IIS ) ، به اطلاعات زيادی نياز خواهد بود . پس از handshake پروتكل TCP/IP ، مرورگر اطلاعات گسترده ای را ‌ برای سرويس دهنده وب  ارسال می نمايد .
يك بسته اطلاعاتی نمونه در شكل زير نشان داده شده است :

توضيحات  :
داده مربوط به پروتكل لايه application ( در اين مورد خاص پروتكل HTTP ) ، پس از هدر TCP/IP قرار می گيرد  . جدول زير برخی اطلاعات مبادله شده بين سرويس گيرنده و سرويس دهنده وب را نشان می دهد .

عملكرد

نوع اطلاعات

سرويس گيرنده وب يك درخواست GET را برای سرويس دهنده وب ارسال و از وی درخواست اطلاعاتی را با استفاده از  پروتكل HTTP 1.1 می نمايد.
پروتكل HTTP دارای نسخه شماره يك نيز می باشد كه امروزه عموما" از نسخه فوق استفاده نمی گردد و در مقابل از نسخه 1 . 1 استفاده می شود.

GET /HTTP/1.1

وب سايتی است كه سرويس گيرنده قصد ارتباط با آن را دارد .

Host:
 www.google.ca

به سرويس دهنده وب ، نوع  نرم افزار سرويس گيرنده ( در اين مورد خاص   Mozilla version 5.0 ) و  نوع سيستم عامل نصب شده بر روی كامپيوتر ( در اين مورد خاص Windows version NT 5.1 و يا همان ويندوز XP  ) اعلام می گردد.

User-agent:
 Mozilla/5.0 (Windows; U; Windows NT 5.1;

نوع character set استفاده شده به سرويس دهنده اعلام می گردد ( در اين مورد خاص از  en:us  و نسخه شماره  10 . 7 . 1  استفاده شده است ) .

en-US; rv: 1.7.10)

نام مرورگر استفاده شده توسط سرويس گيرنده به سرويس دهنده وب اعلام می گردد ( در اين مورد خاص از مرورگر FireFox استفاده شده است ) .

Gecko/20050716 Firefox/1.0.6

سرويس گيرنده به سرويس دهنده وب فرمت  اطلاعاتی را كه می تواند دريافت نمايد ، اعلام می نمايد ( در اين مورد خاص هم برای متن و هم برای   application  از فرمت xml استفاده می گردد ) . 

Accept:
 text/xml, application/xml, application/xhtml+xml

سرويس گيرنده  به سرويس دهنده نوع فرمت متن دريافتی را اعلام می نمايد ( در اين مورد خاص html و يا plain text ) .
همچنين فرمت فايل های گرافيكی ( در اين مورد خاص png . و ساير فرمت های متداول ) نيز اعلام می گردد .

 text/html; q=0.9, text/plain; q=0.8, image/png, */*;q=0.5

ليست character set كه سرويس گيرنده وب قادر به فهم آنان است،  اعلام می گردد ( در اين مورد خاص  ISO-8859 , و يا utf-8  ) .

Accept-Charset:
 ISO-8859-1, utf-8; q=0.7, *;q=0/7

به  سرويس دهنده وب مدت زمان نگهداری  session  اعلام می گردد ( در اين مورد خاص 300 ثانيه ) .
سرويس گيرندگان می توانند با صراحت پايان يك session را اعلام نمايند . در نسخه شماره 1 . 1  پروتكل HTTP ، ارتباط و يا اتصال برقرار شده فعال و يا open باقی خواهد ماند تا زمانی كه سرويس گيرنده خاتمه آن را اعلام  و يا مدت زمان حيات آن به اتمام رسيده باشد .
در نسخه شماره يك پروتكل HTTP ، پس از هر درخواست و اتمام تراكنش ، ارتباط ايجاد شده غيرفعال و يا close می گردد .

Keep-Alive:
 300 Connection: keep-alive

cookie  و مقدار مربوطه  به آن اعلام می گردد. كوكی يك متن اسكی فلت می باشد كه اطلاعات متفاوتی را در خود نگهداری می نمايد .
مدت زمان حيات يك كوكی می تواند موقت ( تا زمانی كه مرورگر فعال است ) و يا دائم ( ذخيره بر روی هارد ديسك كامپيوتر  و در يك محدوده زمانی تعريف شده ) باشد .

 Cookie: PREF=ID=01a0822454acb293: LD=en:TM=1121638094?..

 User agent نوع مرورگر و سيستم عامل  سرويس گيرنده را مشخص می نمايد و اين موضوع می تواند  مواد اوليه لازم برای تدارك برخی حملات توسط مهاجمان را تامين نمايد .


استفاده از اين مطلب  با ذکر منبع و اهداف غيرانتفاعی بلامانع است .
با تشکر از شرکت سخاروش

آشنائی با پروتكل FTP ( بخش دوم )

 

 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 >1024 to port 21 on the server

Server Outbound

from port 20 on the client on any port > 1024

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

from any port >1024 to port 21 on the server

Passive Mode
Server Inbound port 21 and any port >1024 from client/anywhere, from any port >1024
Server Outbound port 21 and any port >1024 to client/anywhere, to any port >1024
Client Inbound Return traffic, any port > 1024 from server using any port >1024

و اما يك نكته ديگر در رابطه با پروتكل FTP !
در صورتی كه در زمان دريافت يك فايل با استفاده از پروتكل FTP مشكلات خاصی ايجاد  كه منجر به قطع ارتباط با سرويس دهنده FTP گردد ،‌ سرويس گيرنده می تواند با مشخص كردن يك offset از فايل دريافتی  به سرويس دهنده اعلام نمايد كه عمليات ارسال را از جائی كه ارتباط قطع شده است ، ادامه دهد ( سرويس گيرنده از محلی شروع به دريافت فايل می نمايد كه ارتباط غيرفعال شده بود ) . استفاده از ويژگی فوق به امكانات سرويس دهنده FTP بستگی دارد . 

با تشکر از شرکت سخاروش

آشنائی با پروتكل 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 فايل مشخص شده در دستور تايپ شده نامعتبر است .

در بخش دوم به بررسی نحوه عملكرد پروتكل FTP خواهيم پرداخت .

با تشکر از شرکت سخاروش

آشنائی با پروتكل HTTP ( بخش دوم )



در بخش اول با  جايگاه پروتكل HTTP به منظور مبادله اطلاعات بين سرويس گيرندگان و سرويس دهندگان وب اشاره و در ادامه با نوع و ماهيت اطلاعات ارسالی سرويس گيرندگان وب به منظور دريافت خدمات از سرويس دهندگان ، آشنا شديم .
در اين بخش با نوع و ماهيت اطلاعات ارسالی سرويس دهندگان وب به منظور پاسخ به درخواست سرويس گيرندگان آشنا خواهيم شد. 

مرورگر وب ، صدای خود را با استفاده از پروتكل HTTP به گوش سرويس دهنده وب می رساند و از وی درخواست يك صفحه وب را می نمايد.
سرويس دهنده وب علاوه بر اين كه با اين صدا آشنا است خود نيز برای پاسخ به مرورگر وب از مجموعه قوانين آن تبعيت می كند .

پروتكل HTTP  : يك معماری سرويس گيرنده و سرويس دهنده
سرويس گيرنده وب ، مقادير خاصی را با اهداف كاملا" مشخص شده برای سرويس دهنده وب ارسال می نمايد ( حصول اطمينان از وجود يك زبان مشترك برای گفتگو بين سرويس گيرنده و سرويس دهنده وب ) .  سرويس دهنده پس از بررسی اطلاعات ارسالی ، آنان را تفسير و متناسب با آن اطلاعاتی را برای سرويس گيرنده ارسال می نمايد . در معماری فوق يك نرم افزار در سمت سرويس گيرنده و به عنوان يك سرويس گيرنده وب ( نظير IE و يا  Mozilla Firefox   ) ايفای وظيفه می نمايد و در سمت سرويس دهنده يك نرم افزار به عنوان سرويس دهنده وب ( نظير : IIS و يا   Apache  ) وظايف تعريف شده خود را انجام می دهد.
سناريوی فوق مدل و يا معماری سرويس گيرنده - سرويس دهنده را در ذهن تداعی می نمايد ( معماری مبتنی بر درخواست و پاسخ ) .

پاسخ سرويس دهنده 
شكل زير يك بسته اطلاعاتی HTTP از مبداء يك سرويس دهنده به مقصد يك سرويس گيرنده  را نشان می دهد ( پاسخ سرويس دهنده ). 

 توضيحات  :
جدول زير برخی اطلاعات ارسالی توسط سرويس دهنده را نشان می دهد .

عملكرد

نوع اطلاعات

به سرويس گيرنده اعلام می گردد كه :

  • سرويس دهنده وب از پروتكل  HTTP نسخه  1 .1  استفاده می نمايد.

  • فايل درخواستی وی توسط سرويس دهنده پيدا شده است .

200 ، يك كد وضعيت است كه وضعيت پاسخ به درخواست را مشخص می نمايد .

HTTP/1.1 200 OK  

مستند و يا فايل درخواستی سرويس گيرنده  توسط يك پراكسی cache نخواهد شد و هدف آن صرفا" برای كاربر متقاضی فايل است .

Cache-Control:
 private

فرمت ارسال فايل و يا مستند درخواستی به سرويس گيرنده وب اعلام می شود . در اين مورد خاص ، اطلاعات با فرمت  text/html ارسال می گردند .
سرويس گيرنده وب دارای دانش لازم به منظور بررسی و نمايش اطلاعات با فرمت اشاره شده می باشد .

Content-type:
 text/html

نوع سرويس دهنده و يا نرم افزار سرويس دهنده ( سرويس دهنده وب ) مشخص می گردد .
در اين مورد خاص ،  سرويس دهنده وب Google نمايش داده شده است .

Server:
 GWS/2.1

پروتكل HTTP نسخه شماره 1 .1  از ارسال اطلاعات به صورت chuncked حمايت می نمايد. در روش فوق ، بدنه يك پيام به منظور ارسال مجموعه ای از ماژول ها اصلاح می گردد . مسوليت مشخص كردن اندازه هر ماژول ارسالی بر عهده يكی از فيلدهای موجود در اين ساختار گذاشته می شود .
در صورت ارسال معمولی اطلاعات  توسط پروتكل HTTP ، از يك فيلد با نام "Content-Length" به منظور مشخص نمودن حجم داده ارسالی،استفاده می گردد .

Transfer-Encoding: chunked
 

زمان و تاريخ سرويس دهنده وب مشخص می گردد.

Date:
 Sat 30 Jul 2005 14:14:50 GMT
 

تگ های HTML ارسالی توسط سرويس دهنده وب به مقصد سرويس گيرنده وب می باشند كه توسط سرويس گيرندگان وب ( نظير IE  ) تفسير و نمايش داده می شوند .
با استفاده از گزينه view موجود در برنامه های مرورگر ، می توان تگ های HTML يك صفحه وب را مشاهده نمود . 

 

با تشکر از شرکت سخاروش