قالب یک بسته ی IP

از ویکی جامع پردیس دانشگاهی دانشگاه قم
پرش به: ناوبری، جستجو
مهندسی اینترنت
مقاله بعدی:آدرس های IP
مقاله قبلی:مسیریاب


یک بسته ی IP از دو قسمت سرآیند ( Header ) و بار مفید ( Payload ) تشکیل شده است. اطلاعات موجود در سرآیند توسط هر مسیریاب حاضر در مسیر بسته مورد استفاده قرار می گیرد. Mef2sh4.jpg

شکل ۴ نمایش دهنده ی قالب یک بسته ی IP است. در ادامه، بخشهای مختلف یک بسته ی IP و کاربرد آنها معرفی می شوند.

فیلد Version :

یک فیلد چهار بیتی است که نسخه ی پروتکل IP را مشخص می کند. به طور مثال، پروتکل IP نسخه ی چهار با عدد 0100 و پروتکل IP نسخه ی شش با عدد 0110 مشخص می شوند.

فیلد Header Length :

این فیلد هم چهار بیتی است و طول کل سرآیند بسته را بر مبنای کلمات 32 بیتی مشخص می نماید. به طور مثال، در صورتی که عدد 10 در این فیلد قرار گرفته باشد، نشان دهنده ی 320 بیت است که یک سرآیند ۴0 بایتی را مشخص می نماید. لازم به ذکر است که طول قسمت اجباری سرآیند (بدون فیلد Options ) برابر با 20 بایت است. در نتیجه، حداقل مقداری که در این فیلد قرار می گیرد برابر با 5 است. همچنین، با توجه به اینکه طول این فیلد برابر با ۴ بیت است، حداکثر میتواند (شامل عدد 15 1111 ) باشد که در این صورت حداکثر طول کل قسمت سرآیند برابر با 60 بایت خواهد بود که 20 بایت آن اجباری و ۴0 بایت آن اختیاری است.

فیلد Type of Service :

این فیلد 8 بیتی است و توسط ماشین مبدأ بسته و به منظور درخواست یک خدمت ویژه از مسیریاب های حاضر در مسیر تا مقصد مورد استفاده قرار می گیرد. جدول 1 نمایش دهنده ی معنی و کاربرد مقادیر بکاررفته برای هر کدام از این 8 بیت میباشد. همانطور که مشاهده میشود، 3 بیت سمت چپ تقدم و اولویت بسته را مشخص می کنند. هر چه این 3 بیت مقدار بزرگتری را شامل شود، بسته از اولویت بالاتری برخوردار خواهد بود و مسیریاب آنرا پیش از سایر بسته ها ارسال می نماید. بیت D بدین معنی است که بسته ی مورد نظر تحمل پایینی نسبت به تأخیر دارد و مسیریاب بهتر است آنرا از مسیرهای دارای تأخیر کمتر ارسال کند. بیت T نیاز بسته به گذردهی بالا را مشخص میکند و بیت R نیز، باعث میشود که مسیریاب از دور انداختن بسته ها اجتناب نماید. برای دو بیت آخر نیز هیچ کاربردی تعریف نشده است (ممکن است برای موارد خاص استفاده قرار گیرند؛ مثلاً بیت هفتم مربوط به هزینه است).


جدول 1 قالب فیلد 8 بیتی Type of Service Mef2j1.PNG

فیلد Datagram Length :

این فیلد 16 بیتی طول کل بسته شامل بخش سرآیند و بار مفید را مشخص می نماید. مبنای طول بر حسب بایت است و در نتیجه، طول کل دیتاگرام حداکثر برابر با 6۴ کیلوبایت خواهد بود (در واقع برابر با 1-(64^2) خواهد بود که کمی کمتر از 6۴ کیلوبایت است).

فیلد 16-bit Identifier :

ممکن است شرایطی پیش بیاید که یک مسیریاب مجبور شود که یک بسته را به تکه های کوچکتر بشکند. به طور مثال، ممکن است که پروتکل بکاررفته در لایه ی دوم اجازه ی ارسال بسته های بیشتر از 1500 بیت را ندهد. به هر کدام از تکه های ایجاد شده یک fragment گفته میشود و تمام این fragment ها دارای یک شناسه ی یکسان هستند که در این فیلد قرار داده می شود. در نتیجه، مقصد بسته ها میتواند تکه های مربوط به یک دیتاگرام واحد را تشخیص دهد و آنها را مجددا به هم پیوند بزند. وظیفه ی بازسازی قطعات همیشه بر عهده ی مقصد است. در ادامه تکه تکه کردن بسته ها با جزئیات بیشتری مورد بررسی قرار می گیرد.

فیلد Flags :

از سه بیت تشکیل شده است که بیت اول برای اهداف خاص رزرو شده است و استفاده نمی شود. دو بیت دیگر DF و MF نامیده می شوند. در صورتی که بیت DF در یک بسته برابر با 1 باشد، مسیریابها حق شکستن آن به تکه های کوچکتر را ندارند زیرا، مقصد توانایی بازسازی آنها را ندارد. در صورتی که یک مسیریاب به دلیل اندازه ی بزرگ بسته قادر به ارسال آن نباشد و این بیت نیز شامل مقدار 1 باشد، مسیریاب مجبور است که آنرا دور بیاندازد. بیت MF نیز برای تمام تکه های یک دیتاگرام واحد به جز آخرین تکه برابر با 1 است.

فیلد 13-bit Fragmentation Offset :

این فیلد 13 بیتی شماره ی ترتیب هر تکه در دیتاگرام شکسته شده را مشخص می نماید. اندازه ی هر تکه به استثنای تکه ی آخر باید مضربی از 8 باشد.

فیلد Time to Live یا TTL :

این فیلد 8 بیتی یک شمارنده است که طول عمر بسته را در مسیر آن به سمت مقصد مشخص می نماید. با توجه به اینکه این فیل شامل 8 بیت است، حداکثر طور عمر بسته برابر با 255 است که ممکن است به پیمودن 255 گام (Hop) در یک شبکه اشاره نماید. در واقع، به ازای عبور از هر مسیریاب در مسیر، یکی از مقدار مشخص شده در این فیلد کاسته میشود. همچنین، در صورتی که یک بسته در بافر یک مسیریاب برای خروج منتظر بماند، به ازای هر واحد زمان یکی از مقدار TTL آن کاسته خواهد شد. در نتیجه، زمانی که مقدار این بیت برابر با صفر شود، مسیریاب آنرا دور می اندازد. در واقع، علت استفاده از این فیلد این است که گاهاً ممکن است شرایطی در شبکه (در جداول پیشرانی مسیریابها) پیش بیاید که بسته ها در یک مسیر تکراری (دور) قرار بگیرند. در صورتی که از مقدار TTL استفاده نشود، ممکن است شبکه با بسته های بدردنخور اشباع گردد.

فیلد Upper Layer Protocol :

این فیلد در سیستم انتهایی مبدأ بسته و با مقدار متناظر با پروتکل لایه ی بالاتر (لایه ی انتقال) که بسته را به لایه ی شبکه تحویل داده پیکربندی می شود. در نتیجه، لایه ی شبکه در سیستم انتهایی مقصد با بررسی این فیلد، پروتکل لایه ی بالاتر را تشخیص میدهد و بسته را به آن تحویل میدهد. به طور مثال ممکن است بخش بار مفید بسته شامل یک بسته ی پروتکل TCP باشد که لایه ی شبکه در مقصد باید آنرا به به پروتکل TCP در مقصد تحویل دهد. این فیلد 8 بیتی است و پروتکلهای لایه ی بالاتر نیز دارای یک شناسه ی 8 بیتی منحصر به فرد هستند.

فیلد Header Checksum :

این فیلد 16 بیتی به منظور کشف خطاهای موجود در سرآیند هر بسته ی IP مورد استفاده قرار میگیرد. عمل محاسبه ی مقدار این فیلد بدین صورت انجام میشود که هر دو بایت در" مکمل یک " سرآیند به عنوان یک عدد در نظر گرفته میشود و جمع تمام این اعداد بر اساس محاسبات ( one's complement ) انجام می گردد. هر مسیریاب مقدار checksum را برای سرآیند هر دیتاگرام ورودی محاسبه میکند و وجود خطا را در صورت مغایرت مقدار محاسبه شده با مقدار موجود در فیلد Header Checksum تشخیص میدهد و دیتاگرام دارای خطا را دور میاندازد. به علت تغییر فیلد TTL در هر گره از مسیر یک دیتاگرام و تغییر احتمالی فیلد Options ، هر مسیریاب حاضر در مسیر باید مقدار checksum را مجددا محاسبه کند و در فیلد مربوطه قرار دهد. نحوه ی محاسبه ی مقدار checksum بعداً مورد بررسی قرار خواهد گرفت.

فیلد 32-bit Source IP Address :

آدرس IP میزبان مبدأ بسته در این فیلد قرار داده میشود.

فیلد 32-bit Destination IP Address :

آدرس IP میزبان مقصد بسته در این فیلد قرار داده میشود.

فیلد Options :

با توجه به اینکه بخش اجباری سرآیند بسته ی IP برابر با 20 بایت است، در این فیلد میتوان حداکثر ۴0 بایت اطلاعات قرار داد. ممکن است این اطلاعات به مسیریابها در یافتن مسیر بهینه کمک کنند و یا اینکه، به منظور اشکال زدایی از شبکه پیکربندی شوند. در این فیلد چند گزینه ی مختلف قابل استفاده هستند که هر کدام اطلاعات خاصی را مشخص می کنند و هر گزینه نیز با یک بایت خاص که معرفی کننده ی آن است آغاز می گردد. 1 بیت سمت چپ از این بایت ( Copy Flag ) مشخص می کند که اگر مسیریابی مقدار آنرا برابر با 1 مشاهده کرد، این گزینه باید در تمام تکه های ایجاد شده از یک دیتاگرام واحد (در صورتی که مسیریاب مجبور به تکه تکه کردن دیتاگرام باشد) تکرار شود و اگر مقدار آنرا برابر با 0 مشاهده کرد، این گزینه فقط در تکه ی اول درج شود. دو بیت بعد ( Option Class ) نوع عملکرد (اطلاع رسانی یا تقاضا، اشکال زدایی و مدیریت شبکه) گزینه ی مورد نظر را مشخص میکنند. 5 بیت بعد ( Option Number ) نیز نوع و معنای گزینه ی مورد نظر را با یک شماره ی خاص مشخص می کنند. جدول 2 نمایش دهنده ی انواع گزینه های قابل کاربرد در یک بسته ی IP است. جدول 2 گزینه های قابل درج در فیلد Option از بسته ی IP است

Mef2j2.PNG Mef2j2-2.PNG

فیلد Data :

این فیلد شامل بسته ی دریافت شده از لایه ی بالاتر میباشد. مثلاً segment دریافت شده از پروتکل TCP در این فیلد قرار داده میشود. در این قسمت به بررسی بیشتر عمل تکه تکه کردن دیتاگرامها یا IP Datagram Fragmentation پرداخته میشود. قبلاً گفته شد که یک دیتاگرام تولید شده در لایه ی شبکه در یک فریم لایه ی پیوند بسته بندی میشود و به سمت مسیریاب بعدی در شبکه ارسال میگردد. پروتکل های مختلف بکاررفته در لایه ی پیوند، ممکن است در اندازه ی بسته هایی که بر روی شبکه ارسال می کنند با محدودیت مواجه باشند (به حداکثر مقدار دادهای که یک فریم لایه ی پیوند میتواند حمل کند حداکثر واحد انتقال یا Maximum Transmission Unit)MTU) گفته میشود). بنابراین، به علت تفاوت بین پروتکل های بکاررفته بر روی لینکهای ورودی و خروجی متصل به مسیریاب، ممکن است لینک خروجی مشخص شده برای یک بسته، توانایی حمل بسته ی مورد نظر رابه خاطر اندازه ی بزرگ آن نداشته باشد ( MTU لینک خروجی کمتر از MTU لینک ورودی است). راه حل این مشکل تکه تکه کردن داده ی موجود در دیتاگرام IP به دو یا چند دیتاگرام کوچکتر و سپس، بسته بندی هر کدام از این دیتاگرام های کوچکتر در یک فریم لایه ی پیوند مجزا و ارسال آنها بر روی لینک خروجی است. هر کدام از این دیتاگرام های کوچکتر به عنوان یک تکه یا fragment شناخته میشود. اما، یک دیتاگرام تکهتکه شده باید پیش از تحویل داده شدن به پروتکل لایه ی انتقال در مقصد مجدداً سرهمبندی شده و segment اولیه را تشکیل دهد (پروتکلهای لایه ی انتقال منتظر دریافت یک segment کامل هستند). بنابراین، سیستم انتهایی مقصد وظیفه ی سرهمبندی مجدد دیتاگرام را بر عهده دارد. در واقع، با هدف ساده تر کردن پیاده سازی هسته ی شبکه، این کار فقط در ماشین مقصد امکانپذیر است. استفاده از فیلدهای Identifier ، Flags و Fragmentation Offset در سرآیند IP به منظور تشخیص یک fragment ، تشخیص آخرین fragment و تعیین نحوه ی سرهمبندی مجدد تکه ها انجام میشود. سیستم انتهاییِ مبدأ هر دیتاگرام تولید شده را با یک شماره ی شناسه ( Identifier ) و آدرس های مبدأ و مقصد نشانه گذاری می کند. با تقسیم یک دیتاگرام به چند تکه، هر کدام از این تکه ها نیز با آدرسهای مبدأ و مقصد و همچنین، شمارهی شناسه ی دیتاگرام اولیه نشانه گذاری میشوند. در نتیجه، با دریافت مجموعهای از دیتاگرامها از یک مبدأ یکسان توسط یک سیستم انتهایی، مقصد مورد نظر میتواند شماره ی شناسه ی بسته ها را به منظور تعیین تکه های مختلف یک دیتاگرام واحد بررسی نماید. با توجه به اینکه پروتکل IP هیچ تضمینی در رابطه با تحویل تکه ها به مقصد فراهم نمی کند، لازم است که در آخرین تکه ی دیتاگرام اصلی بیت MF از فیلد Flags دارای مقدار 0 و برای سایر تکه ها دارای مقدار 1 باشد. همچنین، به منظور تعیین محل درست قرارگیری هر تکه در دیتاگرام اصلی و تشخیص تکه های مواجه شده با افت، از فیلد Fragmentation Offset استفاده میشود. در ادامه با یک مثال به بررسی بیشتر مسأله ی مورد نظر پرداخته میشود. فرض شود که یک دیتاگرام با طول ۴000 بایت ( 20 بایت سرآیند بعلاوه ی 3980 بایت بار مفید یا payload ) باید بر روی یک لینک خروجی با MTU برابر با 1500 بایت ارسال شود. در نتیجه بار مفید دیتاگرام باید به سه تکه ی مجزا (که هر کدام یک دیتاگرام جدید را تشکیل میدهد) تقسیم شود تا شرایط برای انتقال آن بر روی لینک خروجی فراهم گردد. نمایشدهنده ی مشخصات هر کدام از تکه های ایجاد شده است. Mef2j3.PNG

بحث بعدی در رابطه با تولید مقدار بکاررفته برای فیلد checksum در سرآیند دیتاگرام IP است. همانطور که قبلاً گفته شد، مقدار checksum از مکمل یک جمع تمام کلمات 16 بیتی در سرآیند حاصل میشود. هر مقدار سرریز شده نیز، با کم ارزشترین بیت نتیجه جمع میشود. به عنوان یک مثال برای انجام محاسبات مشابه، سه کلمه ی 16 بیتی 0110011001100000 و 0101010101010101 و 1000111100001100 در نظر گرفته میشود. جمع دو کلمه ی اول برابر با 1011101110110101 است و در نهایت حاصل جمع هر سه کلمه برابر با 0100101011000010 خواهد بود. توجه شود که در محاسبات انجام شده یک مقدار سرریز شده وجود داشت که با کم ارزشترین بیت جمع شد. مکمل یک با تبدیل تمام 0ها به 1 و تبدیل تمام 1ها به 0 بدست میآید. در مثال مطرح شده مقدار نهایی پس از محاسبه ی مکمل یک برابر با 1011010100111101 است. در هر مسیریاب و سیستم انتهایی مقصد، تمام کلمات 16 بیتی (شامل checksum ) سرآیند با هم جمع میشوند و در صورتی که تمام بیتهای حاصلجمع برابر با 1 باشند (به صورت 1111111111111111)، دیتاگرام بدون خطا وارد مقصد شده و در صورتی که حتی یکی از این 16 بیت برابر با 0 باشد، مشخص میشود که بسته به همراه خطا به گره مورد نظر رسیده است.