در این صفحه، مقالات مرتبط با IPv4، LLC، MTU، Payload، Flags، CRC، FCS، IPv6، NAT و PAT گردآوری شده است.
باشه، بیایم با دقت به جزئیات IPv4 و LLC بپردازیم و MTU و Payload و Flag ها را بررسی کنیم. من مرحله به مرحله توضیح میدهم:
هدر IPv4 شامل فیلدهای زیر است:
| فیلد | اندازه | توضیح |
|---|---|---|
| Version | 4 بیت | نسخه پروتکل (برای IPv4 مقدار 4) |
| IHL (Internet Header Length) | 4 بیت | طول هدر IPv4 به واحد 32 بیتی (میتواند ≥ 5 باشد) |
| DSCP/ECN | 8 بیت | Quality of Service و Congestion Notification |
| Total Length | 16 بیت | طول کل بسته IPv4 به بایت (هدر + Payload) |
| Identification | 16 بیت | شناسه بسته برای بازسازی در صورت Fragmentation |
| Flags | 3 بیت | کنترل Fragmentation (شرح پایین) |
| Fragment Offset | 13 بیت | محل این Fragment نسبت به بسته اصلی |
| TTL (Time To Live) | 8 بیت | محدودیت تعداد hops برای جلوگیری از Loop |
| Protocol | 8 بیت | پروتکل لایه بالاتر (TCP, UDP, ICMP) |
| Header Checksum | 16 بیت | بررسی صحت هدر |
| Source IP Address | 32 بیت | آدرس مبدا |
| Destination IP Address | 32 بیت | آدرس مقصد |
| Options + Padding | متغیر | اختیاری برای کنترل بسته |
شماتیکهای دقیق ساختار هدر IPv4 با تمام فیلدها
Bit 0: Reserved → همیشه 0.
Bit 1: DF (Don't Fragment) → اگر 1 باشد، بسته نباید Fragment شود.
Bit 2: MF (More Fragments) → اگر 1 باشد، Fragment بعدی وجود دارد؛ اگر 0 باشد، Fragment آخر است.
کارکرد مثال: وقتی یک بسته بزرگتر از MTU شبکه است، اگر DF=1 باشد، بسته Drop میشود و ICMP “Fragmentation Needed” برگشت داده میشود. MF=1 برای تمام Fragmentها به جز آخرین یکی است، MF=0 یعنی Fragment آخر.
فرآیند Fragmentation در IPv4 با نقش Flags (DF و MF)
MTU (Maximum Transmission Unit): حداکثر اندازهای که یک بسته میتواند در یک شبکه منتقل شود. اگر بسته بزرگتر از MTU باشد، به Fragment تقسیم میشود مگر اینکه DF=1 باشد.
Payload: داده واقعی لایه بالاتر (مثلاً TCP segment یا UDP datagram) که بعد از هدر IPv4 قرار میگیرد. اندازه Payload = Total Length − Header Length
LLC مربوط به لایه Data Link (Layer 2) در استاندارد IEEE 802.2 است. در Ethernet معمولاً LLC قبل از Trailer CRC (FCS) میآید. ساختار اصلی LLC:
| فیلد | اندازه | توضیح |
|---|---|---|
| DSAP (Destination Service Access Point) | 1 بایت | مشخصکننده مقصد منطقی در لایه شبکه |
| SSAP (Source Service Access Point) | 1 بایت | مشخصکننده منبع منطقی |
| Control | 1 یا 2 بایت | نوع فریم (Information, Supervisory, Unnumbered) و شماره Sequence |
I-frame (Information) → شامل شماره Sequence برای ارسال/دریافت Reliable
S-frame (Supervisory) → کنترل تایید دریافت، درخواست Retransmit
U-frame (Unnumbered) → فرمانها و مدیریت ارتباط
Payload: داده واقعی که از لایه بالاتر (IP, ARP) آمده است.
MTU: در Ethernet معمولاً 1500 بایت (Payload IP داخل Ethernet Frame نمیتواند بزرگتر باشد).
Trailer اصلی در Ethernet: FCS (Frame Check Sequence) برای بررسی خطا.
ساختار کامل فریم Ethernet با LLC، Payload، IPv4 داخل آن و FCS
| پروتکل | Flag | عملکرد |
|---|---|---|
| IPv4 | DF | جلوگیری از Fragment شدن بسته |
| IPv4 | MF | مشخص کردن اینکه Fragment بعدی وجود دارد یا این آخرین Fragment است |
| LLC | Sequence/Control bits | مدیریت ارسال Reliable، Ack/Nak، نوع فریم |
باشه، بیایم بهطور جامع و دقیق بررسی کنیم که CRC، FCS (که در Ethernet به کار میرود) و عملکرد آنها در صحتسنجی دادهها چگونه هستند و چه مفهومی دارند.
CRC یک الگوریتم ریاضی است که برای تشخیص خطاهای انتقال داده استفاده میشود. اساس آن عملیات تقسیم بیتبینی (binary division) با یک چندجملهای (polynomial) ثابت است.
مراحل عملکرد CRC:
مثال ساده (تئوری):
داده = 1101011011 Polynomial = 1011 عملیات تقسیم XOR bitwise انجام میشود، باقیمانده = CRC = 100 داده ارسال = 1101011011100
کاربرد CRC: شناسایی خطاهای تک بیت، چند بیت، burst errors در پروتکلهای شبکه و ذخیرهسازی دادهها (Ethernet, PPP, SATA, USB)
محاسبه گام به گام CRC با عملیات XOR و تقسیم چندجملهای
FCS در Ethernet، PPP و دیگر پروتکلها معمولاً پیادهسازی CRC است.
در Ethernet II، فریم شامل: [Preamble][Destination MAC][Source MAC][EtherType][Payload][FCS]
FCS (4 bytes) در انتهای فریم قرار دارد و حاصل CRC-32 از همه فیلدها قبل از FCS است.
مقصد هنگام دریافت فریم، داده دریافتی را دوباره CRC میکند و با FCS مقایسه میکند. اگر برابر بود → داده صحیح است اگر نابرابر بود → خطا رخ داده → فریم Drop میشود
فرآیند محاسبه و بررسی FCS (CRC-32) در فریم Ethernet
در Sender (فرستنده):
در Receiver (گیرنده):
توضیح ریاضی ساده: فرض کن داده = D(x)، CRC = R(x)، polynomial = G(x) در Sender: T(x) = D(x)*x^r + R(x) در Receiver: T(x) mod G(x) = 0 → داده صحیح است در صورت تغییر یک یا چند بیت، باقیمانده صفر نخواهد شد → خطا شناسایی میشود
CRC و FCS تشخیص خطا هستند، اصلاح خطا نه. (برای اصلاح، باید از FEC استفاده کرد)
قدرت شناسایی: CRC-16: خطاهای تک بیت و burst ≤ 16 بیت را شناسایی میکند CRC-32: خطاهای burst ≤ 32 بیت را شناسایی میکند، تقریباً همه خطاهای تصادفی را تشخیص میدهد
سرعت اجرای CRC بسیار بالاست چون با XOR و شیفت بیت انجام میشود
| مفهوم | اندازه | عملکرد |
|---|---|---|
| CRC | بیت یا چند بیت | محاسبه ریاضی با polynomial برای تشخیص خطا |
| FCS | 4 بایت (Ethernet) | CRC که به انتهای فریم اضافه شده و صحت داده را بررسی میکند |
| صحتسنجی | – | گیرنده دوباره CRC میگیرد و با FCS مقایسه میکند |
باشه، بیایم IPv6 را با همان جزئیات IPv4 بررسی کنیم و ببینیم Header، MTU، Payload، Flagها و کنترل صحت چگونه کار میکنند و چه تفاوتهایی با IPv4 دارند.
هدر IPv6 ثابت و سادهتر از IPv4 است و بیشتر برای بهینهسازی Forwarding و کاهش پیچیدگی طراحی شده است. اندازه هدر: ۴۰ بایت ثابت.
| فیلد | اندازه | توضیح |
|---|---|---|
| Version | 4 بیت | نسخه پروتکل (IPv6 = 6) |
| Traffic Class | 8 بیت | مشابه DSCP/ECN در IPv4، QoS و Congestion Notification |
| Flow Label | 20 بیت | برچسب جریان برای تشخیص بستههای مربوط به یک جریان خاص |
| Payload Length | 16 بیت | طول دادههای بعد از هدر (Payload) به بایت، حداکثر 65535 |
| Next Header | 8 بیت | مشخصکننده پروتکل بالاتر یا نوع هدر بعدی (TCP, UDP, ICMPv6، یا Extension Header) |
| Hop Limit | 8 بیت | مشابه TTL در IPv4، تعداد hopهای مجاز |
| Source Address | 128 بیت | آدرس مبدا |
| Destination Address | 128 بیت | آدرس مقصد |
ساختار دقیق هدر IPv6
ویژگیهای مهم IPv6: Fragmentation دیگر توسط روتر انجام نمیشود. فقط فرستنده میتواند Fragment ایجاد کند. Flagهای Fragmentation در هدر اصلی وجود ندارد؛ اگر Fragment باشد، در Extension Header مخصوص Fragment قرار میگیرد.
اگر بسته بزرگتر از MTU باشد، فرستنده باید آن را Fragment کند و هدر Fragment به شکل زیر است:
| فیلد | اندازه | توضیح |
|---|---|---|
| Next Header | 8 بیت | نوع پروتکل بعدی |
| Reserved | 8 بیت | صفر، رزرو شده |
| Fragment Offset | 13 بیت | موقعیت Fragment نسبت به داده اصلی |
| Res | 2 بیت | رزرو شده، صفر |
| M Flag | 1 بیت | More Fragments: 1 = Fragment بعدی هست، 0 = آخرین Fragment |
| Identification | 32 بیت | شناسه بسته اصلی برای بازسازی |
M Flag مشابه MF در IPv4 است. دیگر DF (Don't Fragment) وجود ندارد، چون روترها Fragment نمیکنند.
Extension Header Fragment در IPv6 و فرآیند Fragmentation
MTU لینک فیزیکی: حداقل 1280 بایت در IPv6، اگر کمتر باشد، فرستنده باید Fragment کند.
Payload Length: طول داده بعد از هدر اصلی، شامل تمام Extension Headerها و داده لایه بالاتر (TCP/UDP/ICMPv6). حداکثر طول Payload بدون Fragment Extension: 65535 بایت. با Jumbo Payload Option میتوان تا 4,294,967,295 بایت ارسال کرد.
Header Checksum حذف شده است! در IPv6 چکسام هدر وجود ندارد. دلیل: لایههای پایینتر (Ethernet, PPP, FCS) مسئول تشخیص خطا هستند TCP/UDP/ICMPv6 هر کدام checksum مخصوص خود دارند
بنابراین بررسی صحت داده در IPv6: 1. لایه Data Link → FCS/CRC (Ethernet) 2. لایه Transport → TCP/UDP/ICMPv6 checksum
| ویژگی | IPv4 | IPv6 |
|---|---|---|
| Header Length | متغیر (20–60 بایت) | ثابت 40 بایت |
| Checksum | هدر IPv4 دارد | ندارد |
| Fragmentation | روتر و فرستنده | فقط فرستنده با Extension Header |
| Flags | DF, MF | فقط M در Fragment Header |
| MTU حداقل | 68 بایت | 1280 بایت |
| Payload | Total Length – Header Length | Payload Length فیلد جداگانه، حداکثر 65535 |
مقایسه جامع هدرها و ویژگیهای IPv4 و IPv6
باشه، بیایم NAT و PAT در IPv4 و وضعیت آنها در IPv6 را بهطور دقیق و کاربردی بررسی کنیم.
تعریف: NAT یک تکنیک در IPv4 است که آدرسهای خصوصی (Private IP) را به آدرسهای عمومی (Public IP) ترجمه میکند تا امکان دسترسی به اینترنت فراهم شود و تعداد آدرسهای IPv4 محدود بهینه شود.
انواع NAT:
مزایا و کاربرد NAT/PAT در IPv4: صرفهجویی در IPv4 Public IP افزایش امنیت شبکه داخلی: آدرسهای خصوصی مستقیم در اینترنت دیده نمیشوند تسهیل تغییر آدرس شبکه داخلی بدون تغییر IPهای اینترنتی
فرآیند NAT و PAT (Overload) در IPv4 با ترجمه آدرس و پورت
تفاوت کلیدی با IPv4: IPv6 آدرسهای کافی (128 بیت) دارد → نیاز به NAT/PAT بهطور کلی از بین رفته است طراحی IPv6 بر اساس End-to-End Connectivity است، بنابراین میزبانها معمولاً با آدرس جهانی IPv6 خود مستقیم قابل دسترسی هستند
موارد جایگزین NAT در IPv6: Privacy Extensions: آدرسهای موقت برای حفظ حریم خصوصی NPTv6 (Network Prefix Translation): معادل بسیار محدود NAT statcic ترجمه Prefix شبکه (نه آدرس کامل) استفاده برای تغییر ساختار شبکه بدون تغییر آدرسها در میزبانها مثال: شرکت میتواند شبکه داخلی را از 2001:db8:100::/48 به 2001:db8:200::/48 ترجمه کند
PAT در IPv6: وجود ندارد و معمولاً استفاده نمیشود به جای آن از Firewall و Security Policies برای کنترل دسترسی استفاده میشود
مقایسه اتصال End-to-End در IPv6 با NAT در IPv4
| ویژگی | IPv4 | IPv6 |
|---|---|---|
| NAT | لازم برای صرفهجویی آدرس، امنیت | عموماً لازم نیست |
| PAT | برای چندین میزبان روی یک IP | حذف شده، استفاده نمیشود |
| End-to-End Connectivity | محدود | برقرار، هر میزبان آدرس Public دارد |
| امنیت داخلی | NAT نوعی حفاظت غیرمستقیم | Firewall و Policies |
| استفاده عملی | شبکههای خانگی و شرکتی | شبکههای جدید، IoT، شبکههای سازمانی بدون NAT |