تشریح کامل قالب یک بسته IP

قالب یک بسته IP از ، دو قسمت های Header که همان آدرس های بسته و قسمت Data که شامل بسته اطلاعاتی است تشکیل شده مجموعه اطلاعاتی که در سرآیند (header) بسته IP درج می شود توسط مسیریاب مورد استفاده قرار می گیرد

دقت کنید که برای تحلیل برخی از مکانیزمها و تاکتیک های حمله، مجبور هستید با فیلدهای متعدد بسته IP آشنا باشید زیرا برخی از این فیلدها مورد سو استفاده نفوذگران قرار می گیرند . در مقاله های بعد، یاد خواهید گرفت که هرگاه برخی از این فیلدها به صورت عمدی و حساب شده دستکاری شود، منجر به اختلال در ماشین نهایی خواهد شد

فیلد IHL مخفف (IP Header Length) : این فیلد هم چهاربیتی است و طول کل سرآیند بسته را بر مبنای کلمات ۳۲ بیتی مشخص می نماید . به عنوان مثال اگر در این فیلد عدد ۱۰ قرار گرفته باشد بدین معناست که کل سرآیند ۳۲۰ بیت معادل چهل بایت خواهد بود .

اگر به ساختار یک بسته IP دقت شود به غیر از فیلد options که اختیاری است، وجود تمام فیلدهای سرآیند الزامی می باشد . در حقیقت این فیلد به عنوان یک اش اره گر ، مرز بین سرآیند و داده ها را مشخص می کند

فیلد Version : اولین فیلد در سرآیند یک بسته IP که چهار بیت است نسخه پروتکل IP که این بسته بر اساس آن سازماندهی و ارسال شده است را تعیین می کند . در حال حاضر تمام شبکه ها و مسیریابها از نسخه شماره ۴ پروتکل IP پشتیبانی می کنند . اگرچه امروز نسخه شماره ۶ پروتکل IP به نام های IPng یا IPV6 معرفی و در حال بررسی و نصب است، ولیکن بسیاری ا ز مسیریابها در شبکه های دنیا هنوز برای پذیرش این پروتکل آمادگی ندارند و به نظر می رسد که تا سال ۲۰۰۵ نگارش جدید ، جهانی نشود . عددی که در حال حاض ر در این فیلد قرار می گیرد ۴ می باشد که معادل ۰۱۰۰ ) بیت است.

فیلد Type of service : این فیلد هشت بیتی است و توسط آن ماشین میزبان (یعنی ماشین تولید کننده بسته IP که به آن Source Machine نیز می گویند از مجموعه زیر شبکه تقاضای سرویس ویژه ای برای ارسال یک دیتاگرام می نماید .

به عنوان مثال ممکن است یک ماشین میزبان بخواهد دیتاگرام صدا یا تصویر برای ماشین مقصد ارسال نما ید؛ در چنین شرایطی از زیر شبکه تقاضای ارسال سریع و به موقع اطلاعات را دارد ، نه قابلیت اطمینان صد در صد، چرا که اگر یک یا چند بیت از داده های ارسالی در مسیر دچار خرابی شود تاثیر چندانی در کیفیت کار نخواهد گذاشت ولی اگر بسته های حاوی اطلاعات صدا یا تصویر به سرعت و سر موقع تحویل نشود اشکال عمده بوجود خواهد آمد (که این مورد را با همه موارد اصطلاحی می توان در خطوط ارتباطی ایران مشاهده کرد ). در چنین مواقعی ماشین میزبان از زیر شبکه تقاضای سرویس سریع (و لاجرم غیر اطمینان ) می نماید .

در برخی از محیط های دیگر مثل ارسا ل نامه الکترونیکی یا مبادله فایل انتظار اطمینان صد درصد از زیر شبکه وجود دارد و سرعت تاثیر چندانی بر کیفیت کار نخواهد داشت . اکثر مسیریابهای تجاری فیلد

Type of service را نادیده می گیرند و اهمیتی به محتوای آن نمی دهند.

 

فیلد Total Length : در این فیلدِ ۱۶ بیتی عددی قرار می گیرد که طول کل بسته IP را که شامل مجموع اندازه سرآیند و ناحیه داده است، تعیین می کند . مبنای طول بر حسب بایت است و بنابراین حداکثر طول کل بسته IP می تواند ۶۵۵۳۵ بایت باشد.

 

فیلد Identification : همانگونه که قبلا اشاره شد برخی از مواقع مسیریابها یا ماشین های میزبان مجبورند یک دیتاگرام را به قطعات کوچکتر بشکنند و ماشین مقصد مجبور است آنها را بازسازی کند، بنابراین وقتی یک دیتاگرامِ واحد شکسته می شود باید مشخصه ای داشته باشد تا در هنگام بازسازیِ آن در مقصد بتوان قطعه های آن دیتاگرام را از بقیه جدا ک رد کلیه بسته های IP که با این شماره وارد می شوند قطعه های مربوط به یک دیتاگرام بوده و باید پس از گردآوری قطعه ها، آن را مجددا بازسازی کرد .

به عنوان مثال اگر در این فیلد عدد ۱۶۵۲ قرار بگیرد تمام بسته های IP که مشخصه ۱۶۵۲ دارند، قطعه های مربوط به یک دیتاگرا م هستند و پس از دریافت کل قطعه ها باید بازسازی شوند و یک واحد کل را تشکیل دهند . البته برای حفظ ترتیب، هر قطعه گذشته از یک شماره مشخصه (همین مورد ) بایستی دارای شماره ترتیب نیز باشد (Fragment Offset – FO) تا بتوان آنها را طبق این شماره مرتب و بازسازی کرد.

فیلد Fragment Offset : این فیلد در سه بخش سازماندهی شده است (نکته ای که باید به خاطر داشت ، آن است که معمولا در این گونه بحث ها، عدد ۱ تقریبا معادل با YES خواهد بود و عدد ۰ معادل NO یا No Way می باشد

۱ ) بیت DF یا Don’t Fragment : همان طور که از معنی انگلیسی آن نیز پیداست، با یک شدن این بیت در یک بسته IP هیچ مسیریابی حق ندارد آن را قطعه قطعه کند، چرا که مقصد قادر به بازسازی دیتاگرام های تکه تکه شده نیست . اگر این بیت به ۱ تنظیم شده باشد و مسیریاب نتواند آنرا به دلیل بزرگی اندازه، انتقال بدهد لاجرم حذف خواهد شد

۲ ) بیت MF یا More Fragment : این بیت مشخص می کند که آیا بسته IP آخرین ق طعه از یک دیتاگرام محسوب می شود یا باز هم قطعه های بعدی وجود دارد . در آخرین قطعه از یک دیتاگرام بیت MF صفر خواهد بود و در بقیه الزاماً ۱ می باشد.

۳ ) Fragment Offset : این قسمت که سیزده بیتی است در حقیقت شماره ترتیب هر قطعه در یک دیتاگرام شکسته شده محسوب می شود . با توجه به سیزده بیتی بودن این فیلد، یک دیتاگرام حداکثر می تواند به ۸۱۹۲ تکه تقسیم شود . نکته بسیار مهم در مورد این فیلد آن است که اندازه هر قطعه باید ضرایبی از ۸ باشد . یعنی به استثنای قطعه آخر، اندازه بقیه قطعه ها بایستی به گونه ای انتخاب شود که ضریبی از ۸ بایت باشد مثلا اگر در فیلد OFFSET مقدار ۷ قرار بگیرد نشان می دهد که محل قرار گرفتن قطعه جاری در دیتاگرام بازسازی شده در موقعیت بایت پنجاه و ششم خواهد بود به عنو ان مثالی دیگر فرض کنید مسیریابی مجبور است یک دیتاگرام به طول ۵۰۰۰ بایت را قطعه قطعه کند به گونه ای که اندازه هر قطعه زیر ۱۵۰۰ بایت باشد .

در چنین موردی نمی تواند اندازه هر قطعه را ۱۲۵۰ بایت در نظر بگیرد چرا که ضریبی از ۸ نیست ولی اندازه ۱۲۸۰ مناسب است. در این حالت مسیریاب، دیتاگرام را به سه بسته ۱۲۸۰ بایتی و یک بسته ۱۱۶۰ (اجبارا بازمانده طول دیتاگرام از تقسیم طول بر ۸، در بسته آخر قرار خواهد گرفت که مسلما از طول دیگر بسته کمتر خواهد بود) بایتی می شکند

در این مثال فرض کنید مسیریاب شماره ۲۳۲۲ را به عنوان مشخصه دیتاگرام انتخاب کرده است . بنابراین هر یک از چهار حلقه دیتاگرام، فیلد OFFSET و مشخصه به صورت زیر خواهد بود:

 نکته اینجاست که : ممکن است یک دیتاگرامِ واحد از یک ماشین میزبان ، روی شبکه تزریق شود و در طول مسیر ، به مسیریابی برسد که به دلیلی مجبور به شکستن آن به قطعات کوچکتر شود. عمل شکستن یک دیتاگرام ممکن است در هر جای زیر شبکه اتفاق بیافتد ولیکن عمل بازسازی فقط در ماشین مقصد انجام خواهد گرفت.
بعدا به مکانیزمی آشنا می شوید که بر اساس آن نفوذگر سعی می کند تلاش خود برای حمله به یک سیستم را مخفی نگه دارد . این مکانیزم مبتنی بر بسته های قطعه قطعه شده IP است (مبحث FragRouter که در مقاله های بعد به طور مفصل توضیح داده خواهد شد). همچنین خواهید دید که نفوذگر با دستکاری عمدی در فیلد Fragment Offset حملاتی را برای اختلال در ماشین گیرنده نهای بسته، تدارک می بیند

فیلد Time To Live یا TTL : این فیلد هشت بیتی در نقش یک شمارنده (counter) طول عمر بسته را مشخص می کند . طول عمر یک بسته بطور ضمنی به زمانی اشاره می کند که یک بسته IP می تواند بر روی شبکه سرگردان باشد .

حداکثر طول عمر یک بسته، ۲۵۵ خواهد بود که به ازای عبور از هر مسیریاب (در شبکه به عبور بسته از یک مسیریاب یک جهش یا HOP گفته می شود ) از مقدار این فیلد یک واحد کم می شود . هر گاه یک بسته IP به دلیل بافر شدن در حافظه یک مسیریاب زمانی را معطل بماند، به ازای هر ثانیه یک واحد از این فیلد کم خواهد شد .

به محض آنکه مقدار این فیلد به صفر برسد بسته IP در هر نقطه از مسیر باشد حذف شده و از ادامه سیر و حرکت آن به سمت مقصد جلوگیری خواهد شد . البته معمولا یک پیام هشدار به ماشینی که آن بسته را تولید کرده باز پس فرستاده خواهد شد . اگرچه بزرگترین عددی که در فیلد طول عمر بسته قرار می گ یرد عدد ۲۵۵ است ولی در عمل مقداری که سیستم های عامل در این فیلد قرار می دهند چیزی حدود ۶۴ است (البته می توان مقدار پیش فرض آن را عوض کرد ). می توانید نمونه ای از TTL را هنگام ping کردن یک سرور ببینید

این فیلد برای پاکسازی زیر شبکه از بسته های IP که به هر دلیل در یک مسیر بسته می چرخند بسیار حیاتی است وگرنه پس از مدتی کل زیر شبکه از بسته های آشغال پر خواهد شد . بسته های سرگردان گاها به این دلیل بوجود می آیند که جداول مسیریابی در بعضی از مسیریابها آلوده به اطلاعات نادرست (Corrupt) شده اند . سرگردانی یک بسته در زیر شبکه مسئله غیرممکنی نیست و گاهی اتفاق می افتد

در استفاده از Cheops ،traceroute و FireWalk همگی به نحوی از فیلد TTL در بسته IP استفاده می کنند.

فیلد Protocol : دیتاگرامی که در فیلد داده از یک بسته IP حمل م ی شود ، با ساختمان داده خاص از لایه بالاتر تحویل پروتکل IP شده ، تا روی شبکه ارسال شود . به عنوان مثال ممکن است این داده ها را پروتکل TCP در لایه بالاتر ارسال کرده باشد و یا ممکن است این کار توسط پروتکل UDP انجام شده باشد. بنابراین مقدار این فیلد شماره پروتکل ی است که در لایه بالاتر تقاضای ارسال یک دیتاگرام کرده است؛ بسته ها پس از دریافت در مقصد باید به پروتکل تعیین شده تحویل داده شود

فیلد Header Checksum : این فیلد که شانزده بیتی است به منظور کشف خطاهای احتمالی در سرآیند هر بسته IP استفاده می شود . برای محاسبه کد کشف خطا، کل سرآیند به صورت دو بایت، دوبایت با یکدیگر جمع می شود . نهایتاً حاصلجمع به روش ”مکمل یک منفی می شود و این عدد منفی در این فیلد از سرآیند و HEADER قرار می گیرد . در هر مسیریاب قبل از پردازش و مسیریابی ابتدا صحت اطلاعات درون سر آیند بررسی می شو ند. دقت کنید که فیلد Checksum در هر مسیریاب باید از نو محاسبه و مقداردهی شود زیرا وقتی یک بسته IP وارد یک مسیریاب می شود حداقل فیلد TTL از آن بسته عوض خواهد شد

فیلد Source Address :هر ماشین میزبان در شبکه اینترنت یک آدرس جهانی و یکتای ۳۲ بیتی دارد . بنابراین هر ماشین میزبان در هنگام تولید یک بسته IP باید آدرس خودش را در این فیلد قرار بدهد . بحث آدرس ها در اینترنت یکی از مسائل بسیار مهمی است که در بخشی مجزا به آن خواهیم پرداخت (به این آدرس از این به بعد، ”آدرس IP می گوئیم).

فیلد Destination Address : در این فیلد آدرس ۳۲ بیتی مربوط به ماشین مقصد که باید بسته IP تحویل آن بشود قرار می گیرد

فیلد اختیاری Options : در این فیلد اختیاری ، می توان تا حداکثر ۴۰ بایت قرار داد . به دلیل بی اهمیت بودن این فیلد از توضیح آن صرف نظر می کنم.

فیلد Payload : در این فیلد داده های دریافتی از لایه بالاتر قرار می گیرد

221

اسماعیلی هستم مدیر عصر فنون. فارغ التحصیل مقطع کارشناسی ارشد رشته مهندسی فناوری اطلاعات (IT)

پیشنهاد لحظه ای
ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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

توسط
تومان