بخشی از مقاله
HacK و امنيت شبكه
مدل مرجع OSI و لايهبندي پروتكل
در 1980، يك سازمان بينالمللي استانداردسازي، طرحي را به نام Open System interconnection (DSI) به وجود آورد. اين مدر براساس لايهبندي پروتكل پايهگذاري شده است. و آن به اين صورت است كه وقتي دو كامپيوتر ميخواهند با هم ارتباط برقرار ككنند، سريهايي از قسمتهاي كوچك استاندارد نرمافزاري روي هر سيسيتم براي بهتر كردن اين ارتباط، عملياتي را
انجام ميدهند. يك قسمت براي حصول اطمينان از اينكه داده به طور مناسب بستهبندي شده است تلاش ميكند و قسمت ديگر از فرستادن پيامهاي گم شده به طور مجرد مراقبت ميكند و قسمتهاي ديگر پيامها را در سراسر شبكه ميفرستند. هر كدام از اين قسمتها كه تحت عنوان لايه از آنها ياد ميشود، كار مشخص و كوچكي براي انجام ارتباطات دارند. قسمتهاي ارتباطي كه با هم استفاده ميشوند. Protocl Stack (پشتة پروتكل) ناميده ميشوند زيرا آنها شامل گروهي از اين
لايهها هستند كه بر روي هم سوال شدهاند. مدل OSI شامل هفت نوع از اين لايهها ميباشد كه هر كدام نقش مشخصي در انتقال دادهها را در شبكه دارند.
در توده ارتباطاتي لايهبندي شده، يك لايه روي قسمت فرستنده با همان لايه روي سيستم (قسمت) گيرنده در ارتباط است. به علاوه لايههاي پايينتر به لايههاي بالايي سرويس ميدهند. به عنوان مثال لايه پايينتر ممكن است پيامهاي گم شده را به جاي ارسال به لايه بالاتر كه وظيفه فرمتبندي دادهها را به صورت دقيق به عهده دارد مجدداً به لاية پايين ارسال كند. اين لايه، لايه سطح بالايي خود را كه ممكن است داده را در قسمت اول توليد ميكند، سرويس دهد. وقتي كه يك لايه براي انجام امور به لايه ديگر متكي ميشود،لايهها به وجود ميآيند. بنابراين نرمافزار يك لايه ميتواند در حالي كه تمامي لايههاي ديگر يكسان باقي ميمانند، به جاي برناه ديگر جايگزين شوند.
مدل مرجع OSI از هفت لايه زير تشكيل شده است:
• لايه 7: لايه برنامه كاربردي (Application layer): اين لايه به عنوان پنجرهاي به كانال ارتباطي براي برنامه كاربردي و البته با توصيف دادهها و تبديل آنها به اطلاعات با مفهوم براي برنامههاي كاربردي عمل ميكند.
• لايه 6: لايه نمايشي (Presentation layer): اين لايه چگونگي نمايش المانهاي داده براي ارسال، از جمله منظم كردن بيتها و بايتها در اعداد و فرمتبندي اعداد نمايي و همانند آن را برعهده دارند.
• لايه 5: لايه جلسه (Session layer): اين لايه، نشستهايي را بين ماشينهاي ارتباطاتي با كمك به شروع، نگهداري و مديريت آنها هماهنگ ميكند.
• لايه 4: لايه انتقالي (Transport layer): اين لايه، براي تهيه جريان ارتباطي قابل
اعتماد بين دو سيستم، كه شامل انتقال دوباره پيامهاي گم شده، قرار دادن آنها در جاي مناسب و نظارت و بازرسي خطاها است، استفاده ميشود.
• لايه 3: لايه شبكه (Network layer): اين لايه براي انتقال داده از يك سيستم از ميان مسيريابها به ماشين نهايي در طول شبكه، مسئوليتپذير است.
• لايه 2: لايه پيوند دادهها (Data link layer): اين لايه، داده را در طول شبكه حركت ميدهد.
• لايه 1: لايه فيزيكي (Physical layer): اين لايه بيتها را در طول پيوند فيزيكي كه ميتواند فيبر نوري، ارتباط راديويي، مس و يا هر رسانه فيزيكي ديگر انتقال ميدهد.
چگونه TCP/IP سازگار ميباشد؟
وقتي كه مفهوم مدل مرجع OSI، پروتكلهاي گوناگون شبكه را پاسخ ميدهد، پس بياييد پروتكل TCP/IP را تجزيه كنيم. در TCP/IP لايه كاربردي، لايههاي جلسه و نمايش مدل مرجع OSI در لايه كاربردي قرار داده شدهاند. TCP/IP روي داده ارسالي براي برنامه كاربردي تمركز ايجاد ميكند.
• لايه كاربردي:اين لايه خود TCP/IP نميباشد. بلكه متشكل از برنامههاي خاصي است كه سعي ميكنند با استفاده از TCP/IP در طول شبكه با هم ارتباط برقرار كنند. مدل ارتباطي در اين لايه ممكن است شامل دو Mail Server، سرويسدهنده و سرويس گيرنده Telnet، سرويس دهنده و سرويس گيرنده FTP و يا ساير برنامههاي كاربردي باشد.
• لايه انتقال: اين لايه شامل پروتكل كنترلي ارسالي، (TCP) پروتكل ديتاگرام كاربر (UDP)، و پروتكل سادهاي كه ما در آينده در اين قسمت با جزييات بيشتري تجزيه ميكنيم، ميباشد. اين لايه اطمينان حاصل ميكند كه بستهها به مكان مناسب روي ماشين مقصد تحويل داده شدهاند. همچنين براي فراهم كردن بستهها به صورت منظم براي برنامهاي كاربردي كه احتياج به اين عمل دارند، ميتواند استفاده شود.
• لايه شبكه: اين لايه به پروتكل اينترنت (IP) وابسته است و هدف آن فرستادن پيامها از كامپيوتر منبع داده شده به ماشين نهايي داده شده در طول شبكه ميباشد. بر طبق اصطلاح مدل مرجع OSI، به لايه IP گاهي اوقات لايه سوم نيز گفته ميشود.
• لايه پيوند داده: اين لايه پيامها را در طول شبكه از هر كامپيوتر به كامپيوتر ديگر انتقال ميدهد. به عنوان مثال، اين لايهها روي كامپيوتر دادهها را از كامپيوتر شما به مسيرياب (Router) شبكه محلي شما حركت ميدهد. سپس مسيرياب (Router) با استفاده از اين لاية پيوندي، داده را به مسيرياب بعدي انتقال ميدهد. باز هم طبق اصطلاح مدل OSI، لاية پيوند داده به لاية دوم ارجاع ميشود.
• لايه فيزيكي: اين لايه يك واسطه فيزيكي از قبيل سيم و يا كابل كه اطلاعات از آن عبور داده ميشود، ميباشد.
لايههاي شبكه و انتقال با هم سيستم پشتهاي TCP/IP را تشكيل ميدهند كه متشكل از نرمافزارهاي اجرايي روي كامپيوتر است. همانند مدل OSI، يك لايه با لايهاي مشابه در قسمت ديگر رابطه برقرار ميكند. علاوه بر آن، لايه پاييني سرويسي را براي لايههاي بالايي تهيه ميكند.
مفهوم TCP/IP
اينكه كه درك ابتدايياي از لايه پروتكل داريم. TCP/IP را با جزئيات دقيقتري
مورد آزمايش قرار ميدهيم. خانواده پروتكلهاي TCP/IP از اجزاي گوناگوني تشكيل يافته است: پروتكل كنترل انتقال *TCP) پروتكل (UDP) User Datagram، پروتكل اينترنت (IP) و پروتكل پيام كنترل اينتر (ICMP).
TCP/IP در رشتههايي از مدارك توليد و نگهداري شده توسط گروه ويژه مهندسي اينترنت (IETF) توضيح داده ميشود. John Postel پدر خانواده TCP/IP، رشتههايي از درخواستها يكسري از اسناد و نظريههاي تئوري كه توضيح ميدهد چگونه TCP/IP كار ميكند را تهيه كرد. 193 تا 191 RFC كه IP، TCP و ICMP را توصيف ميكنند كه در www.ietf.org/rfc,html با هزاران RFC ديگر كه جنبههاي ديگر اينترنت را توصيف ميكنند قابل دسترسياند.
TCP/IP در اصل براي تحقيقات و آكادميها تهيه شده بود و هيچگونه قابليت حفاظتي را دارا نبود. پروتكل سنتي TCP/IP براي اطمينان از قا بليت اعتماد، جامعيت دادهها و اعتبار دادة ارسال شده بر روي شبكه مناسب نبود. بدون كنترلهاي مخفيانه و صادقانه، وقتي كه شما دادهاي را به اينترنت ميفرستاديد، TCP/IP به هر استفادهكننده ديگري اجازه ديدن و تغيير داده شما را ميدهد. به علاوه، بدون اعتبارسنجي (authentication) يك مهاجم ميتواند دادهاي را كه به نظر ميآيد از منابع قابل اعتماد ديگر روي شبكه به دست ميآيد، براي شما بفرستد.
درگذشته، تمام قابليتهاي حفاظتي شبكههاي TCP/IP در برنامههاي كاربردي ارتباطي به كار گرفته ميشدند و در پشتة TCP/IP عملي انجام نميگرفت. فقط اخيراً حفاظت و امنيت، به پروتكل TCP/IP در فرم توسعه پروتكل كه Ipsee ناميده ميشود و ما در آينده با جزييات دقيقتري در اين قسمت آن را توصيف خواهيم كرد، قرار داده شده است. اگرچه Ipsee آيندة خوبي دارد اما هنوز به طور گسترده به كار گرفته نشدهاند. بنابراين، بدون اين قابليتهاي حفاظتي پروتكل، برنامههيا كاربردي هنوز براي انجام امور حفاظتي اغلب به خود واگذار ميشوند.
پروتكل كنترل انتقال داده (TCP)
TCP بخشي است از اينترنت كه امروزه توسط اكثريت برنامههاي كاربردي استفاده ميشود. از ميان هزاران برنامه كاربردي كه توسط TCP استفاده ميشوند برخي از آنها قابل توجهترند.
• انتقال فايل با استفاده از پروتكل انتقالي فايل (FTP)
• telnet، يك رابط خط فرمان از راه دور
• Email با استفاده از پروتكلهاي گوناگون كه شامل پروتكل انتقالي پستي ساده (SMTP) و پروتكل (POP) Post Office ميباشد.
• مرورگر وب با استفاده از پروتكل انتقالي ابرمتنها (HTTP)
هر كدام از اين پروتكلها بستهها را تهيه كرده و آنها را به پشته TCP/IP ماشين محلي عبور ميدهند. نرمافزار لايه TCP روي سيستم اين داده را ميگيرد و با قرار دادن هدر TCP در جلوي هر پيام، بستههاي TCP را توليد ميكند.
شمارة پورت TCP
هدر هر بسته TCP شامل دو عدد درگاه ميباشد. پورت مبدأ و پورت مقصد. اين اعداد 16 بيتي همانند درهاي كوچكي بر روي سيستم يعني جايي كه داده ميتواند فرستاده و يا دريافت شود ميباشند. درگاهها درهاي فيزيكي نيستند. آنها واحدهاي منطقي هستند كه توسط نرمافزار پشتة TCP/IP توضيح داده شده است. 65535 پورت TCP مختلف روي هر ماشين وجود دارد. پورت صفر TCP رزرو شده و استفاده نميشود. هر بسته TCP از ميان يكي از اين درها از ماشين مبدأ بيرون ميآيد (عدد پورت TCP مبدأ) و پورت ديگر روي ماشين مقصد مشخص شده است.
وقتي كه يك برنامه كاربردي سرويس دهنده مبتني بر TCP روي سيستم كار ميكند، به درگاه خاصي براي بستههاي TCP كه از يك سرويسگيرنده ميآيد، گوش ميدهد. به يك پورت با سرويس شنوايي، پورت باز و به جايي كه چيزي براي شنيدن وجود ندارد پورت بسته گفته ميشود. سرويس دهندههاي گوناگون برنامه كاربردي به پورتهاي مشهور گوش ميدهند. پورتهاي TCP مورد استفاده اغلب به صورت زير ميباشد:
• TCP Port 21- پروتكل ارسالي فايل (FTP)
• TCP Port 23-Telnet
• TCP Port 25-پروتكل ارسالي پستي ساده (SMTP)
• TCP Port 80-Word Wide Web (HTTP)
• TCP Port 666-Doom (…Id بازي از نرمافزار)
براي اتصال، سرويسدهندگان برنامه كاربردي، لايه TCP سرويس گيرنده بستههايي با پورت مقصد TCP شبيه به پورتي كه برنامه كاربردي سرويس دهنده در حال گوش دادن است را توليد ميكنند.
پورت مبدأ براي درخواست بسته (Packet) به صورت ديناميكي توسط سيستم عامل به برنامه متقاضي به شمارهاي بيش از 1023 كه پورت شماره بالا (“High-numbered”) ناميده ميشود تنظيم شده است. پورت نهايي درخواست مطابق با برنامه كاربردي، جايي كه سرويسدهنده در حال گوش كردن است همانند TCP Port 80 براي عبور و مرور HTTP ميباشد. براي بيشتر برنامههاي ك اربردي، سرويس دهنده پيامهاي پاسخ را به شمارة پورتهاي ارسال شده خواهد فرستاد. پورت مبد بستة پاسخ، شمارةپورتي است كه سرويسدهنده در حال شنيدن بوده است و پورت مقصد جايي است كه سرويسگيرنده پيام اصلي را فرستاد.
هدايتگر سيستم ميتواند هر سرويسدهنده برنامه كاربردي را براي استفاده از هر شمارة پورت صادر شده مديريت كند اما برنامههاي سرويس گيرنده از برنامههاي كاربردي انتظار دارند كه روي درگاههاي نهايي مشخصي شنيده شوند. بنابراين، براي اينكه سرويسگيرنده و كاربر درباره پورت نهايي مرسوم روي سرويسدهنده اطلاعاتي داشته باشند، شمارههاي پورتي كه در REC 1700 توصيف شدهاند اغلب مورد استفاده قرار ميگيرند.
براي آنكه ببينيد چه پورتهايي در Window NT/2000 يا سيستم UNIX مورد استفادهاند ميتوانيد از دستور «netstat» استفاده كنيد. با تايپ «Netstat-na» در خط فرمان، تمام پورتهايي كه دادهها را ميفرستند، نمايانگر خواهند شد. نشان «-na» در تمام دستورات به معناي نمايش همه پورتها و ليست كردن آدرسهاي شبكه و شمارة فرمها در قالب عددي ميباشد.
بيتهاي كنترلي TCP، دست دادن سه طرفه (Three-way handshke) و شمارههاي سريال
بيتهاي كنترل TCP، كه همچنين اغلب با عنوان «code bits» ناميده ميشوند، قسمتهاي بخصوص مفيدي از هدر TCP هستند.
اين 6 فيلد كوچك (هر كدام فقط با طول 1 بيت) مشخص ميكند كه كدام قسمت از نشست (Session) بستة TCP در رابطه است با مثلاً آغاز نشست و acknowledgment، پايان دادن به يك نشست. همچنين، بيتهاي كنترل ميتواند معلوم كند كه آيا بستة درخواست شده، توجه لازم كه توسط لايه TCP هدايت شود را دارد؟
اكثري مردم به بيتهاي كنترل TCP تحت عنوان «Cod bites» مراجه ميكنند. هر كد بيت ميتواند به طور غيروابسته تنظيم شود بنابراين هر بستة TCP ميتواند شامل يك و يا حتي بيشتر كد بيتهاي 6 تايي به ارزش 0 و 1 باشد. اغلب، تنها يكي و يا دو تا از كد بيتها در پيام داده شده به ارزش 1 تنظيم شدهاند. كد بيتها به معاني زير هستند:
URG: اشارهگر ضروري در فيلد هدر TCP مهم و بامعنا است.
ACK: فيلد Acknowledgment مهم است. اين پيام براي مشخص كردن بستههاي درياف شده استفاده ميشود.
PSH: اين يك عملگر جلوبرنده است كه براي حركت دادن داده در لايه TCP استفاده ميشود.
PST: ارتباط به خاطر خطا و ساير وقفهها بايد دوباره برقرار شود.
SYN: سيستم بايد شماره سريال را همگام نمايد اين كد در طول برپايي نشست استفاده ميشود.
FIN: هيچ داده ديگري از فرستنده وجود ندارد. بنابراين، نشست بايد از بين برود.
وقتي كه ما چگونگي آغاز نشستها را در TCP تجزيه و تحليل كنيم، اهميت بيتهاي كنترل
Three-way handshake) و ابزار اوليه كه توسط TCP براي انجام كارهايش استفاده ميشود برپا شده است. دست دادن سه طرفه، ترسيم شده به سيستم اجازه ميدهد تا يك نشست ارتباطي و برقراري مجموعهاي از شمارههاي سريال براي بستههايي كه در نشست استفاده ميشوند را باز كند.
تمامي بستهها در اين نشست به جاي مناسب ميرسند. اگر دو بسته در اين انتقال برگشت داده شوند (به اين حالت كه مثلاً بستة آخر مسافت كمتري را نسبت به بستة اوليه طي كرده است) لايه TCP ميتواند مشكل بستهها را قبل از فرستادن آنها در برنامه كاربردي كشف كند. و آنها را دوباره مرتب نمايد. به طور مشابه اگر يك بسته در طول انتقال و ارسال گم شود، TCP ميتواند مشكل را با توجه به شمارههاي سريال و شمارههاي ACK بستة مفقود شده، كشف و نسبت به انتقال دوبارة اين بستهها اقدام كند. بنابراين، Three-way handshake و شمارههاي سريالي كه از آن نتيجه ميشوند، به TCP اجازه ميدهند كه ارسالهاي قابل اعتمادي داشته باشند.
هنگامي كه كد بيتهاي SYN و ACK براي برپايي نشست استفاده ميشوند، كد بيت FIN براي از ميان بردن نشست استفاده ميشود. هر طرف پيامي را كه كد بيت FIN تنظيم شده است تا نشستي را كه بايد خاتمه يابد مشخص كند، ميفرستد.
كد بيت RST براي توقف ارتباطات و آزادسازي شمارههاي سريال در حال استفاده به كار ميرود. اگر يك ماشين بستهاي كه انتظارش را ندارد دريافت كند (مانند پيامهايي شامل بيت ACK وقتي كه هيچ نشستي برپا نشده است) با پيامي كه بيت RST آن تنظيم شده است، واكنش نشان خواهد داد. اين روش بيان ماشين است. «اگر شما فكر ميكنيد كه نشستي وجود دارد، آن را از بين ببريد زيرا من نميدانم شما راجع به چه مسألهاي صحبت ميكنيد.»
كد بيتهاي URG و PSH اغلب كمتر از 4 بيت ديگر استفاده ميشوند. كد بيت URG به اين معناست كه داده شامل برخي دادههاي ضروري ميباشد. اگر كد بيت URG به يك تنظيم شده است فيلد اشارهگر مشخص ميكند كه در كدام قسمت داده رشتهاي، داده ضروري واقعي وجود دارد. TCP مشخص نميكند كه چگونه داده ضروري بايد توسط برنامه كاربردي به كار برده شود. اين فقط به لايه كاربردي در يك طرف ارتباط اجازه ميدهد تا داده واقعي را براي قسمت ديگر ارتباط نشان دهد. كد بيت PSH به اين معناست كه لايه TCP بايد بسته را از ميان پشته با سرعت عبور دهد.
فيلدهاي ديگر در هدر TCP
بجز فيلدهاي هدر TCP كه قبلاً توضيح داده شد، فيلدهاي گوناگون ديگري هم در در TCP يافت ميشوند. اين فيلدهاي اضافي از قرار زير هستند:
• Data offset: اين فيلد توضيح ميدهد كه در كجاي بستة TCP هدر پايان يافته و داده شروع ميشود. اين با طول هدر TCP در كلمات 32 بيتي برابري ميكند.
• Reserved: اين فيلد براي استفاده آتي رزرو شده است.
• Window: اين فيلد براي كنترل شمارة بستههاي ارسال شده كه بين سيستمها فرستاده ميشود استفاده ميگردد. اين به هر قسمت از ارتباط، راهي را براي كنترل جريان بستهها از قسمت ديگر ميدهد تا اطمينان حاصل كنند كه همه بستهها به طور منظم دريافت شدهاند و قبل از آنكه بستههاي جديد فرستاده شوند به طور منظم acknowledge بستههاي دريافت شده فرستاده ميشود.
• Checksum: براي رسيدگي به اينكه بستة TCP (هدر و داده) در انتقال در شبكه خراب نشده است،استفاده ميشود.
• Urgent Pointer: اين فيلد، اشارهگري به دادهاي از بسته را دارد تا مشخص كند كه اطلاعات ضروري كجا واقع شدهاند.
• Options: اين مجموعه از فيلدهاي با طول گوناگون، ميتوانند اطلاعات اضافي درباره قابليتهاي پردازشي TCP را از هر كدام از طرفهاي ارتباط مشخص كنند. به عنوان مثال اگر لايه TCP فقط بستههاي TCP از ماكزيمم سايز گرفته شده را اداره كند، سيستم ميتواند محدوديت را در گزينههاي TCP مشخص كند.
• Padding: اين فيلد بيتهاي اضافي تنظيم شده با مقدار صفر را شامل ميشود تا طول هدر TCP را توسعه دهد. بنابراين اين روي مرز 32 بيتي خاتمه مييابد.
پروتكل ديتاگرام كاربر (User Datagram Protocol)
وقتي كه به اسم پروتكل به عنوان « TCP/IP» اشاره ميشود، اعضاي ديگري از اين خانواده در كنار IP و TCP وجود دارند. UDP لايه انتقالي ديگري است كه در بالاي IP ميتواند قرار گيرد. UDP و TCP مانند دو عموزاده هستند. TCP بيشتر مورد توجه است و در اسم فاميلي استفاده ميشود ولي UDP هنوز پايه بسياري از برنامههاي كاربردي مهم است. تهيهكننده برنامه كاربردي ميتواند انتخاب كند كه داده را با استفاده از TCP بفرستند. يا UDP (با توجه به اينكه برنامه كاربردي چه چيزي را از لايه انتقال نياز دارد)، بستههاي دريافت شده و رشتة ارتباطي، يا TCP هستند يا UDP و نميتوانند هر دو پروتكل را به طور همزمان مورد استفاده قرار دهند. سرويسهايي كه UDP را مورد استفاده قرار ميدهند شامل بسياري از رشتههاي دادههاي ويديويي و صوتي برنامههاي كاربردي ميباشند كه به همان خوبي جستجوها و پاسخهاي (Domain Name Service) DNS عمل ميكند.
UDP بدون اتصال است (Connectionless) پروتكلي كه وضعيت اتصال را نميداند و يا به خاطر نميآورد و هيچ اعتقادي به نشستهاي ابتدايي، تصديق دريافت اطلاعات، خراب شدن يا چيز ديگري ندارد. به علاوه UDP پيامهاي گمشده را دوباره ارسال نميكند و يا حتي آنها را در جاي مناسب قرار نميدهد. بنابراين، اگر پيام 1، پيام 2، و پيام 3 فرستاده شوند، مقصد ممكن است پيام 2، پيام 1 و كپي ديگري از پيام 1 را دريافت كند. پيام3 گم ميشود و پيام 1 دوباره فرستاده ميشود.
UDP غيرقابل اعتماد است. ممكن است پيامها را گم كند و يا آنها را خراب بفرستد. اما گاهي اوقات عدم قابليت اطمينان، خوب است. بخصوص وقتي كه ميتواند براي شما سرعت را به ارمغان آورد. برخي از برنامههاي كاربردي به گرفتن پيامها با سرعت زياد در طول شبكه علاقهمندند و به قابليت اطمينان در سطح بالا نيازي ندارند. اين برنامههاي كاربردي به سربار Three-way handshake و شمارههاي سريال روي هر بسته و غيره احتياج ندارند. در عوض، براي اين برنا
مههاي كاربردي، سرعت و سادگي جزء نيازهاي ضروري هستند.
به علاوه برخي برنامههاي كاربردي پرسش - پاسخ، از UDP به طور چشمگيري استفاده ميكنند. وقتي كه آدرس شبكه را براي نام يك حوزه (Domain) خاص جستجو ميكنيد، DNS پيامي را با يك پرسوجو ميفرستذد تا نام دامنه را جستجو كند. (پيام كه ميگويد: آدرس «10.21.41.3» است
). اين برنامههاي كاربردي، سرباري در رابطه با برپايي ارتباط با استفاده از دست دادن سه طرفه را براي فرستادن پرسوجو و گرفتن پاسخ نميخواهند.
UDP شمارههاي پورت 16 بيتي را دارند بنابراين 65335 پورتهاي UDP قابل دسترس وجود دارند. فقط مانند TCP، داده از پورت سيستم اصلي (پورت مبدأ UDP) ميآيد و براي يك پورت روي سيستم مقصد (پورت مقصد UDP) در نظر گرفته شده است. يكي از گستردهترين سرويسهاي UDPهاي مورد استفاده (DNS) براي گوشكردن به پرسوجوهاي DNS روي پورت 53 UDP است.
سرويسهاي ديگر پايهگذاري شده براساس UDP شامل:
• پروتكل انتقالي فايل كم اهميت (TFTP)، پورت UDP69
• پروتكل مديريت شبكه ساده (SNMP)، پورت UDP161
• داده Real Player، صوتي - تصويري، يكسري از پورتهاي UDP شامل 7070، اگرچه سرويسگيرنده ميتواند فقط براي استفاده پورتهاي TCP در صورت لزوم پيكربندي شود.
پروتكل اينترنت (IP) و پروتكل كنترل پيام اينترنت (ICMP)
وقتي كه لايه UDP يا TCP بسته برا توليد ميكند، آن بايد در طول شبكه فرستاده شود. لايه انتقال (UDP يا TCP) بسته را به لايه شبكه براي بردن آن عبور خواهد داد.
پروتكل اينترنت (IP) عموميترين لايه شبكهاي است كه امروزه استفاده ميگردد و براي تمامي حركتهاي ترافيكي در طول اينترنت مورد استفاده واقع ميشود.
شبكههاي محلي و مسيريابها
هدف IP انتقال بستهها در طول شبكه ميباشد. شبكههاي كامل از بلوكهاي ساختماني اساسي و پايهاي به نام Local area networks (LANs) تشكيل يافتهاند. LAN به طور ساده گروهي از كامپيوترها ميباشند كه با استفاده از hub يا switch بدون هيچ مسيريابي كه سيستمها را مجزا كند، به هم مرتبطاند. همانطور كه نامشان مشخص ميكند LANها به طور نمونه از نظر جغرافيايي كوچكند و معمولاً ساختمان منفرد و محوطه كوچكي را دربرميگيرند.
LANها با استفاده از مسيريابها به هم متصلند. وظيفه مسيرياب اين است كه بستهها را بين LANها براي به وجود آوردن يك شبكه بزرگ، همانطور كه در شكل نشان داده شده است، حركت دهد. يك و يا چند پروتكل لايه شبكه، داده را در طول شبكه از كامپيوتر كاربر نهايي و از ميان مجموعهاي از مسيريابها، تا سيستم نهايي حركت ميدهد. همچنين، سيستمها به طور مستقيم به مسيريابها يا هر پيوند نقطه به نقطه در حال استفاده ديگري مرتبط شدهاند. خود اينترنت، چيز
ي به جز مجموعه LANهاي عظيم و ارتباطات نقطه به نقطه كه با استفاده از گروههاي مسيرياب (Router) به هم متصل شدهاند نميباشد.
يك شبكه تركيبي از lanهاي متصل شده به هم توسط مسيريابها ميباشد.
آدرس IP
آدرسهاي IP ماشين بخصوصي را روي شبكه توضيح ميدهند و طولشان 32 بيت ميباشد. هر سيستم كه به طور مستقيم به اينترنت متصل ميشود آدرس IP منحصر به فردي دارد. از آنجايي كه محدود كردن مردم به خواندن و حفظ كردن يك بلوك 32 بيتي، بسيار مشكل است. لذا آدرسهاي IP اغلب به صورت نماد dotted-qual نوشته ميشوند. نماد Dotted-qued، هر كدام از 4 بستههاي 8 بيتي از آدرس IP را به عنوان عددي بين 0 و 255 كه در آدرس IP به فرم W.X.Y.Z مانند 10.12.41.3 نتيجه ميشود را ليست ميكند.
هر كدام از بستههاي IP، آدرس IP مبدأ را با تعريف سيستمي كه بسه را ميفرستد و آدرس IP مقصد كه سيستم مقصد را براي بسته مشخص ميسازد شامل ميشود.
Netmasks
هر آدرس IP به صورت واقعي از 2 قسمت تشكيل يافته است. آدرس شبكه و آدرس ميزبان روي همان شبكه خاص، آدرس شبكه، LAN خاصي را توضيح ميدهد كه ترافيك ميتواند براي رساندن بسته هدايت شود. آدرس ميزبان، ماشين مخصوص روي LAN داده شده را توضيح ميدهد.
چگونه كامپيوتر و يا مسيرياب ميداند كه كدام قسمت از آدرس IP مربوط به شبكه و كدام مربوط به ميزبان است؟ در واقع اطلاعات پايهگذاري شده روي قسمتي كه Netmask ناميده ميشود آن را تعريف ميكند. Netmask مشخص ميكند كه كدام بيتها در آدرس شبكه هستند (و بقيه بيتهاي آدرس IP در قسمت ميزبان واقع شدهاند). Netmask عددي است كه بيتهايش را وقتي كه قسمتي از آدرس شبكه است، به مقدار 1 تنظيم مينمايد. وقتي كه بيت داده شده در آدرس IP قسمتي از آدرس ميزبان است، Netmask داراي بيت صفر است. بنابراين شما ميتوانيد آدرس Netmask را باتركيب ساده تمامي آدرس IP با Netmask با استفاده از عملگر XOR، تشخيص دهيد. همانند آدرسهاي IP، Netmaskها هم در نماد dorred-qued نوشته ميشود.
بخشبندي يك بسته در IP
رسانههاي ارسالي گوناگون، خصوصيات اجرايي مختلفي دارند. برخي رسانهها
وقتي پيامها طولانيتر باشند بهتر عمل ميكنند در حالي كه ديگر رسانهها از پيامهايي با طول كوتاهتر بهره ميبرند. به عنوان م ثال، انعاس دادن يك بسته IP از يك ماهواره بسيار متفاوت است با فرستادن يك بسته از ميان فيبر نوري. با توجه به زمان تأخير (latency) مربوط به ارسال اطلاعات به ماهواره، بستههاي بزرگتر كارايي بيشتري دارند در حالي كه بستههاي كوچكتر كارايي خوبي را در شبكههاي با تأخير كمتر (loulatency) دارند. براي بهينه ساختن طول بستهها براي پيون
دهاي گوناگون ارتباطي، IP عناصر شبكه (مانند مسيريابها و firewalls)) را كه قابليت تبديل پيامها به قطعات كوچكتر را دارند، (عملي كه fragnetations ناميده ميشود) معرفي ميكند. سيستم پاياني يا ابزار شبكه ميتواند بستههاي IP بزرگ را بگيرد و آنها را به تكههاي كوچكتر براي ارسال در طول شبكه بشكند. لايه IP سيستم نهايي موظف است كه دوباره تمامي قطعات را قبل از فرستادن داده به لايه حمل اسمبل كند.
هدر IP، يك جفت فيلد براي پشتيباني اين قطعات پيشنهاد ميكند. ابتدا فيلد fragment offset به سيستم ميگويد تا زماني كه تمامي پيام مجدداً اسمبل شد، محتويات اين قطعات بايستي شامل كدام قسمت باشند. به علاوه، فيلد شناسايي (Identification) استفاده ميشود تا به اسمبل مجدد قطعات كمك كند. فيلد شناسايي، توسط سيستم پخشكننده به مقداري واحد تنظيم شده است تا به سيستم مقصد براي اسمبل مجرد پيام كمك كند. به علاوه پرچمها (flag يا نشانه) در هدر IP، اطلاعاتي در ارتباط با fragmentation را مشخص ميكند. سيستم فرستنده ميتواند اين فيلدها را تنظيم كند تا مشخص كند كه پيامها در حين عبور از شبكه نبايد مجزا شوند. همچنين اگر يك بسته قطعه قطعه شده است، اين نشانها مشخص ميكنند كه آيا هنوز قطعاتي از پيام اصلي بر سر راه قرار دارند يا نه. اين 2 بايت ميتوانند ارزشهاي زير را داشته باشند.
• Flag Bit 1 (the Don’t Fragment bit): 0 = may fragment 1 = don’t fragment
• Flag Bit 2 (the more Fragment bit): 0 = last fragment 1 = more fragments
ديگر قسمتهاي تشكيل دهنده IP
هدر IP متشكل است از:
• Version: اين 4 بايت توضيح ميدهند كه كدام نسخه از پروتكل اينترنت در حال استفاده است نسخه چهارم IP، نسخهاي است كه به صورت گسترده در سراسر اينترنت استفاده ميشود.
• IHL: اين فيلد، the internet Header Length، طول كلي هدر IP است.
• Service type: اين فيلد با كيفيت سرويس مرتبط است. براي عناصر شبكه مشخص ميكند كه تا چه مقدار به تأخير افتادن عبور و مرور ميتواند حساس باشد.
• Total length: اين قسمت طول كلي بسته IP كه شامل هدر IP و دادههاي آن است
را معين ميكند.
• Idinification: اين فيلد براي پشتيباني از اسمبل مجدد تكهها استفاده ميشود.
• Flags: اين بيتها همانطور كه قبلاً توضيح داده شده است شامل بيت «Don’t fragment» و بيت «More fragment» ميباشند.
• Fragment offset: اين قسمت مشخص ميكند كه تكهها ميبايستي در كدام قسمت از پيام جا داده شوند.
• Time to live (TTL): اين فيلد براي مشخص كردن بيشترين تعداد جهشهاي روتر – به - روتر زماني كه بسته در طول شبكه عبور داده ميشود، مورد استفاده واقع ميشود.
• Protocol: اين فيلد، پروتكلي كه توسط پيام IP حمل ميشود را توضيح ميدهد كه اغلب مشابه TCP يا UDP ارزشگذاري ميشود.
• Header Checksum: اين اطلاعات براي حصول اطمينان از اينكه هدر اشتباهي نكرده باشد استفاده ميشود كه در هر جهش توسط مسيرياب دوباره تخمين زده ميشود.
• Source IP Address: اين فيلد آدرس شبكه و ميزبان را از جايي كه بسته آمده است، مشخص ميكند.
• Destination IP Address: اين فيلد آدرس شبكه و ميزبان را به جايي كه بسته فرستاده ميشود، مشخص ميكند.
• Options: اين فيلدهاي با طول متغير، اطلاعات گسترده شده براي لايه IP را مشخص ميكند. بخصوص، در مسيريابي مبدا، عملگري كه در زير با جزييات بيشتري توصيف ميشود، مورد استفاده قرار ميگيرد.
• Padding: اين فيلد به اين منظور مورد استفاده قرار ميگيرد كه طول هدر IP را در حد 32 بيت نگاه داشته و از 32 بيت بيشتر نگردد.
امنيت يا كمبود در IP سنتي
پروتكلي كه امروزه در اينترنت استفاده ميشود، IP با نگارش 4، هيچگونه قابليت حفاظتي اساسي را شامل نميشود. تمامي اجزاء تشكيل دهنده بسته به صورت متن واضح آورده شده و هيچ چيز پنهان نيست. هر چيزي در هدر و يا حتي در قطعه داده ميتواند مشاهده شده و يا توسط مهاجم تغيير يابد. به علاوه، پروتكل شامل شناسايي (authentication) نيست بنابراين يك مهاجم ميتواند پيامهايي را با هر آدرس IP مبدأ توليد كند.
ICMP
يكي ديگر از اعضاي فاميل TCP/ IP، پروتكل كنترل پيام اينترنت (ICMP)
است. ICMP، مانند لولهكشي شبكه است. وظيفهاي انتقال فرمان و كنترل اطلاعات بين سيستمها و شبكه براي انتشار نقل و انتقالات داده واقعي و گزارش خطاها ميباشد. يك سيستم ميتواند از ICMP براي امتحان اينكه آيا سيستم ديگر فعال است يا نه (با فرستادن «ping» كه پيام پژواك (ICMP Echo) است) استفاده كند. اگر سيستم Pinged فعال باشد، به فرستادن پيام پاسخ پژواك (ICMP Echo) واكنش نشان ميدهد. يك مسيرياب ميتواند از ICMP استفاده كند تا به سيستم مبدا اطلاع دهد كه راهي به مقصد مورد نياز ندارد (يك پيام مبني بر مقصد غيرقابل جستجو ICMP). يك ميزبان ميتواند به سيستم ديگر بگويد كه سرعت تعداد پيامهايي را كه مبدأ ICMP ميفرستد را كاهش دهد. درست متوجه شديد - ICMP براي سيستمها استفاده ميشود تا اطلاعاتي در مورد اينكه چگونه داده در طول شبكه جاري ميشود (و يا جريان نمييابد) را مبادله كحند.
ICMP از اين فرمت هدر به عنوان IP براي آدرسهاي IP مبدأ و مقصد، قطعهبندي بستهها
و ساير عملها استفاده ميكند. فيلد پروتكل هدر IP با مقداري مطابق با ICMP پر ميشود (عدد 1 به معناي ICMP ميباشد). بعد از هدر IP در اجزاء دادة بستة IP، ICMP فيلدي با نام ICMP type را ميافزايد. فرمت باقيمانده بسته IP به اين نوع ICMP بستگي دارد. انواع مختلفي از مدلهاي پيام ICMP، وجود دارد.
تفسير آدرس شبكه
بلوكهاي آدرسهاي IP به سرويسدهندگان و سازمانهاي گوناگوني داده شده است. سالهاي گذشته كه هيچگونه انتظاري براي اتصال به اينترنت نميرفت برخي سازمانها اعداد آدرس شبكه را به طور اتفاقي برگزيدهاند و شروع به ساختن شبكههاي IPشان با استفاده از اين آدرسهاي IP تصادفي كردهاند.
شما سازندگان شبكه را ميبينيدكه عدد مورد علاقهشان را برگزيدهاند («من عدد 4 را ميپسندم») و همه شبكه را با همان عدد (به همه چيز، آدرس IPبه فرم 4.x.y.z داده شده است) ميسازند. به اين آدرسها اغلب با عنوان «آدرسهاي غيرقانوني» «illegal addresses» گفته ميشود زيرا به طور رسمي در اختيار سازمانهاي ديگري قرار داده شدهاند. متأسفانه، اگر يك نفر با استفاده از آدرسهاي غيرقانوني بخواهد به اينترنت متصل شود، ما 2 شبكه با آدرس IP مشابه روي اينترنت خواهيم بود. اين موقعيت به طور جدي مسيريابي را برهم ميريزد زيرا كه مسيريابهاي اينترنت نميدانند كه عبور و مرورها را براي اين آدرسهاي مقصد تكراري به كجا بفرستند.
به علاوه با افزايش تعداد اتصال به اينترنت، آدرسهاي IP كافي براي تمامي متقاضيان، قابل دسترس نيست. بنابراين، IETF برخي اعداد آدرس را براي خلق شبكههاي IP خصوصي در RFC 1918 كنار گذاشته است.
شما ميتوانيد شبكه IP خودتان را با استفاده از اين آدرسهاي IP نظير 10.x.y.z و 112.16.y.z و 122.168.y.z تشكيل دهيد. بسياري از سازمانها با استفاده از اين آدرسهاي كنار گذاشته شده، شبكهها را خلق ميكنند. اگر بكوشيد كه داده خود را به يكي از اين آدرسها روي اينترنت بفرستيد، موفق نخواهيد شد زيرا كه اين مجموعة كنار گذاشته شده منحصر به فرد نيستند. به آنها تحت عنوان «Unroutable» اشاره ميشود زيرا هيچ مسيريابي، روي اينترنت نخواهد دانست كه چگونه به اين آدرسهاي غيرمنحصر به فرد دست يابد.
چگونه دستيابي به اينترنت را از شبكهاي كه از آدرسهاي غيرقانوني و يا كنار گذاشته شده و توضيح داده شده در RFC-1918 استفاده ميكند، پشتيباني ميكنيم؟ پاسخ اين است كه اين آدرسهاي مشكلدار را با عمل map يا نگاشت آدرسهاي IP در مسيرياب شبكه يا firewall، با استفاده از تكنيكي تحت عنوان (NAT) Network address translation معتبر و قانوني ميكنيم. براي به كارگيري NAT، يك دروازه (gateway) ميان شبكه با آدرسهاي غيرقانوني يا كنار گذ
اشته شده و اينترنت قرار ميگيرد. همانطور كه در شكل نشان داده شده است، وقتي كه هر بسته از شبكه داخلي به اينترنت ميرود، اين مدخل به آدرس IP مبدأ غيرقانوني يا غيرقابل مسيريابي شبكه داخلي در هدر بسته، اجازه ميدهد تا با آدرس IP قابل مسيريابي يكتا رونويسي شود. وقتي پاسخها دريافت شدند، دروازه اين بستهها را دريافت ميكندو آدرسهاي IP مقصد را قبل از آنكه بسته را به شبكه داخلي انتقال دهد دوبارهنويسي ميكند.
تفسير آدرس شبكه، آدرسهاي IP غيرقابل مسيريابي را از شبكه داخلي
رونويسي (Overwrit) ميكند
يك دروازه ميتواند آدرسها را براي NAT از راههاي مختلفي map كند، از جمله:
• نگاشت به آدرس IP منفرد خارجي (mapping to a single external IP address): براي اين نوع از NAT، هر بسته كه از شبكه داخلي ميآيد به آدرس IP منفردي map شده است. روي شبكه اينترنت، تمامي عبور و مرورها به نظر ميرسد كه از آدرس IP دستگاه NAT بيايند. اين تكنيك مؤثر آدرسدهي اغلب براي اتصال شبكههاي بزرگ به اينترنت وقتي كه آدرسهاي IP محدودي قابل دسترسياند استفاده ميشود.
• نگاشت يك به يك (one to one mapping): يك دروازه ميتواند هر ماشيني روي شبكه دا خلي را به آردس IP معتبر منحصر به فري كه با هر ماشين يكتا در ارتباط است map كند. بنابراين تمامي عبور و مرورها به نظر ميآيد كه از گروهي از آدرسهاي IP بيايند. اين تكنيك اغلب براي نگاشت درخواستهاي كاربر در طول شبكه به سرويسدهنده روي شبكه، همانند سرويسدهنده وب استفاده ميشود.
• آدرسهاي تخصيص داده شده به صورت پويا (Dynamically allocated address): يك دروازه ميتواند تعداد زيادي از آدرسهاي IP غيرقابل مسيريابي را به تعداد كوچكتري از آدرسهاي IP معتبر بخش كند. اين نوع دستيابي كمتر از تكنيكهاي ديگر معمول است.
براي آنكه آدرسهاي IP را از تغيير مصون بداريم. NAT امروزه به طور معمول روي اينترنت استفاده ميشود. اگرچه، آيا NAT از نظر امنيتي پيشرفت ميكند؟ اين ميتواند به مخفي كردن كاربردهاي آدرس IP شبكه داخلي كه مهاجم ميتواند براي تهيه نقشه توپولوژي شبكه استفاده كند، كمك نمايد. اگرچ، به خودي خود، NAT مزاياي امنيتي كمي را داراست. هنگامي كه مهاجمان نميتوانند بستهها را به آدرسهاي غيرقابل مسيريابي روي شبكه داخلي بفرستند، اما هنوز ميتوانند آنها را از درون دروازه NAT بفرستند. دروازةNAT اآدرسها را به نمايندگي از مهاجم نگاشت خواهد كرد. به همين علت، اگر قرار است حفاظتي صورت گيرد، تكنيكهاي NAT بايد با اعمال firewall امنيتي تركيب شود.
ديوارة آتش: نگهبانان ترافيك شبكه و دروازهبانانهاي فوتبال
ديوارههاي آتش ابزاري براي كنترل جريان عبور و مرور بين شبكهها هستند.
آنها در مرز بين شبكهها قرار گرفته و به عنوان دروازهاي براي اخذ تصميماتي در ارتباط با اينكه چه ارتباطاتي بايد پذيرفته و چه ارتباطاتي بايد تكذيب شوند، عمل ميكنند. با نگاهي به سرويسها، آدرسها و حتي كاربرهاي مرتبط با ترافيك، ديوارههاي آتش مشخص ميكنند كه آيا ارتباطات بايد به درون شبكههاي ديگر فرستاده شوند و يا اينكه بايستي از بين بروند. با اين قابليت، ديوارههاي آتش همانند پليسهاي ترافيك شبكه عمل ميكنند.
اگر آنها به طور صحيح پيكربندي شوند، سيستمها در يك طرف ديوارة آتش (Firewall) از مهاجمان طرف ديگر ديوارة آتش محافظت ميشوند. مهاجمان فقط از راههايي كه توسط ديوارههاي آتش اجازه داده ميشود ميتوانند به سيستمهاي حفاظت شده دست يابند. سازمانها به طور معمول از ديوارههاي آتش استفاده ميكنند تا ساختار زيربنايي شبكه خود را از اينترنت و حملة رقباي تجاري خود در طول برقراري ارتباط حفاظت كنند.
تشابه مفيد ديگر براي ديوارة آتش، دروازهبان در بازي فوتبال است كه وظيفهاش محافظت از تور در برابر شوتهاي تيم مقابل ميباشد. توپ فوتبال مانند يك بسته است. وظيفه ديوارة آتش
اين است كه مهاجم را از رستادن پيامهاي تقاضا نشده به شبكه منع كند. اگرچه، دروازهبان بايد به توپ اجازه دهد تا به خارج از تور شوت شود. ديوارة آتش بايد به برخي از ارتباطات در جهت خروجي را اجازه دهد، بنابراين كاربرهاي داخلي ميتوانند به شبكههاي خارجي دست يابند د
هدف مهاجم اين است كه توپ را ازدروازهبان عبور داده به داخل تور بفرستد. براي آنكه استحكام دفاعي خود را دريابيم، بياييد به قابليتهاي دورازهبان با تجزيه و تحليل تكنولوژيهاي ديوارة آتش كه امروزه به طور گسترده استفاده ميشوند، نگاهي بيندازيم: فيلترهاي بسته رايج، فيلترهاي بسته Stateful و ديوارههاي آتش مبتني بر Proxy.