مدل های شبکه

اکنون که متوجه شدیم LAN چیست و چرا از آن استفاده می شود، مهم است که آن را یک قدم فراتر برداریم و ساختار و سازماندهی شبکه ها را در سطح وسیع تری در نظر بگیریم. اینجاست که مدل‌های شبکه به‌ویژه مدل TCP/IP و مدل OSI وارد عمل می‌شوند.

این مدل‌ها به ما کمک می‌کنند تا بفهمیم شبکه‌ها چگونه سازماندهی می‌شوند و انتقال داده چگونه کار می‌کند. آن‌ها مانند نقشه‌هایی هستند که به ما نشان می‌دهند چه «لایه‌هایی» در یک شبکه وجود دارد و چگونه آن لایه‌ها با هم کار می‌کنند تا ارتباط بین دستگاه‌ها را فعال کنند.

No alt text provided for this image  

مدل TCP/IP

 

TCP/IP: What Is the TCP/IP Model & How Does It Work?

برای درک بهتر نحوه ارتباط دستگاه‌ها در یک شبکه، نیاز داریم تا ساختار و سازمان‌دهی شبکه‌ها را بررسی کنیم. مدل‌های شبکه، به‌ویژه مدل TCP/IP، به ما کمک می‌کنند تا ارتباطات دیجیتالی را به شکل منظم و قابل فهمی مشاهده کنیم. TCP/IP که به عنوان چارچوب اصلی اینترنت شناخته می‌شود، ساختاری فراهم می‌آورد که ارتباطات بین دستگاه‌ها را ممکن ساخته و انتقال داده‌ها را به صورت قابل اعتماد انجام می‌دهد.

چرا مدل TCP/IP مهم است؟

What is TCP? Why is it used?

در شبکه‌ها، داده‌ها باید از یک دستگاه به دستگاه دیگر منتقل شوند، اما این انتقال نیازمند قوانینی است که تضمین کند داده‌ها به‌درستی و با امنیت ارسال و دریافت می‌شوند. این قوانین توسط پروتکل‌ها تعریف می‌شوند. پروتکل‌ها، قوانین و استانداردهایی هستند که شیوه ارتباط و تبادل داده بین دستگاه‌ها را تنظیم می‌کنند. بدون وجود پروتکل‌ها، دستگاه‌های مختلف نمی‌توانند به‌طور موثر و هماهنگ با یکدیگر ارتباط برقرار کنند.

داده و هدر (Header): نقش آن‌ها در انتقال اطلاعات

네트워크 통신 스토리텔링💁‍♀️ - 서버/클라이언트, IP, TCP, UDP 쉬운 설명 

در هر انتقال داده‌ای، اطلاعات به بسته‌هایی به نام پکت شکسته می‌شود. هر پکت دارای بخشی از داده اصلی (Data) و یک قسمت اطلاعاتی به نام هدر (Header) است. هدر شامل اطلاعاتی است که برای انتقال و مسیریابی داده‌ها به کار می‌رود، از جمله آدرس فرستنده، آدرس گیرنده و تنظیمات پروتکل. به کمک هدر، دستگاه‌های شبکه می‌دانند داده‌ها به کجا باید ارسال شوند و چگونه آن‌ها را مدیریت کنند.

نقش پروتکل TCP/IP در انتقال داده‌ها

قبل از اینکه بیشتر به مبحث مدل های LAN و شبکه بپردازیم، درک نقش پروتکل ها در مدل TCP/IP مهم است.

پروتکل ها اساساً زبان هایی هستند که دستگاه های موجود در شبکه برای برقراری ارتباط با یکدیگر از آنها استفاده می کنند. آنها قوانینی را برای تبادل اطلاعات تعریف می کنند – دقیقاً مانند قواعد گرامری که تعیین می کند جملات چگونه شکل می گیرند تا برای دیگران قابل درک باشند. در زمینه TCP/IP، یکی از مدل‌های اساسی شبکه، این پروتکل‌ها نقش مهمی در فعال‌سازی و بهینه‌سازی ارتباطات دیجیتال دارند.

مدل TCP/IP از چهار لایه تشکیل شده است، و هر لایه مجموعه‌ای از پروتکل‌ها را در بر دارد که وظایف مختلفی را انجام می‌دهند.

  1. Network access layer
  2. Internet layer
  3. Transport layer
  4. Application layer

     

    No alt text provided for this image

  • لایه رابط شبکه: این لایه با سخت‌افزار شبکه مانند کارت شبکه و کابل در ارتباط است و مسئول انتقال داده‌ها در محیط فیزیکی شبکه است.
  • لایه اینترنت: این لایه مسیریابی پکت‌ها در شبکه‌های مختلف را بر عهده دارد و به داده‌ها کمک می‌کند از مسیری مناسب به مقصد برسند.
  • لایه انتقال: لایه انتقال، به‌ویژه پروتکل TCP، وظیفه اطمینان از انتقال صحیح داده‌ها بین دستگاه‌ها را دارد. TCP یک پروتکل اتصال‌گرا است، به این معنی که قبل از ارسال داده‌ها، یک ارتباط مطمئن بین دو دستگاه برقرار می‌کند.
  • لایه کاربردی: این لایه با برنامه‌های کاربردی کاربر، مانند وب‌گردی و ایمیل، سروکار دارد و داده‌ها را برای استفاده نهایی آماده می‌کند.

ویژگی‌های مدل TCP/IP:

  • قابلیت اطمینان: TCP تضمین می‌کند که داده‌ها به‌صورت کامل و بدون خطا به مقصد می‌رسند. در صورت بروز خطا، TCP از طریق مکانیسم‌هایی مانند ارسال مجدد، از رسیدن داده صحیح اطمینان حاصل می‌کند.
  • انعطاف‌پذیری: مدل TCP/IP به شبکه‌ها اجازه می‌دهد که سیستم‌های بیشتری به شبکه اضافه شوند بدون آنکه ساختار شبکه مختل شود.
  • کنترل جریان: TCP به گونه‌ای تنظیم می‌شود که فرستنده هرگز گیرنده را با حجم زیاد داده‌ها غرق نکند.

درک بهتر TCP/IP:

برای درک بهتر بیایید ارتباط شبکه را با هم با استفاده از یک مثال از طریق TCP/IP نشان دهیم. برای نشان دادن فرآیند ارسال ایمیل بین دو نفر با استفاده از مدل TCP/IP، بیایید تصور کنیم که شخص A (آلیس) می خواهد برای شخص B (باب) ایمیل ارسال کند. ما در چهار لایه مدل TCP/IP قدم می زنیم تا بفهمیم چگونه داده ها از آلیس به باب منتقل می شوند.

Introduction to Network — #3 Protocols and Models | by Ghifari Nur |  netSHOOT | Medium

1. لایه کاربردی / Application Layer

آلیس فرآیند را با باز کردن برنامه ایمیل خود (به عنوان مثال Outlook، Gmail در مرورگر) و نوشتن پیامی برای باب آغاز می کند. این لایه از پروتکل های ایمیل مانند SMTP (پروتکل انتقال نامه ساده) برای ارسال ایمیل و IMAP یا POP3 برای دریافت ایمیل استفاده می کند. آلیس آدرس ایمیل باب را وارد می کند، پیام او را می نویسد و روی ارسال کلیک می کند. برنامه از SMTP برای آماده سازی پیام برای انتقال استفاده می کند.

2. لایه حمل و نقل / Transport Layer

پس از آماده شدن ایمیل برای ارسال، به لایه انتقال داده می شود. TCP (پروتکل کنترل انتقال) در اینجا برای اطمینان از انتقال مطمئن داده های ایمیل استفاده می شود. TCP پیام را به بسته‌های داده کوچک‌تر تقسیم می‌کند، آن‌ها را شماره‌گذاری می‌کند و اطلاعات کنترلی را برای اطمینان از نظم و کامل بودن صحیح در گیرنده اضافه می‌کند. TCP همچنین یک اتصال به سرور ایمیل آلیس برقرار می کند تا اطمینان حاصل شود که بسته های داده به درستی منتقل می شوند.

3. لایه اینترنت / Internet Layer

در لایه اینترنت، IP (پروتکل اینترنت) برای مسیریابی بسته های داده از کامپیوتر آلیس به سرور ایمیل و در نهایت به سرور ایمیل باب استفاده می شود. هر بسته داده یک آدرس IP مبدا (رایانه آلیس) و یک آدرس IP مقصد (سرور ایمیل) را دریافت می کند. روترها در طول مسیر این آدرس ها را می خوانند تا بسته ها را از طریق اینترنت هدایت کنند. این لایه تضمین می‌کند که بسته‌ها مسیر درست را پیدا می‌کنند حتی اگر قسمت‌هایی از شبکه از کار بیفتد یا بارگذاری بیش از حد داشته باشد.

4. لایه دسترسی به شبکه / Network Interface Layer

در لایه دسترسی به شبکه، بسته‌های داده IP در قالب‌هایی برای انتقال از طریق رسانه فیزیکی شبکه بسته‌بندی می‌شوند. این می تواند اترنت در یک LAN یا پروتکل دیگری در یک WAN (شبکه گسترده) باشد. فریم ها حاوی آدرس MAC دستگاه فرستنده و بعدی در مسیر شبکه هستند. هنگامی که داده ها به سرور ایمیل آلیس می رسد، روند معکوس را طی می کند تا به سرور ایمیل باب برسد. سپس سرور از TCP برای جمع آوری مجدد پیام و قرار دادن آن در صندوق ورودی Bob از طریق IMAP یا POP3 استفاده می کند.

هنگامی که ایمیل به صندوق ورودی باب رسید، باب می تواند از برنامه ایمیل خود برای ورود به سیستم و خواندن پیام آلیس استفاده کند. کل فرآیند، از آلیس تا باب، نشان می‌دهد که چگونه مدل TCP/IP از پروتکل‌ها و فن‌آوری‌های مختلف برای برقراری ارتباط مطمئن و کارآمد از طریق اینترنت استفاده می‌کند.

1. لایه کاربرد (Application Layer):

لایه کاربرد، بالاترین لایه در مدل TCP/IP است که به‌عنوان رابطی بین برنامه‌های کاربردی کاربر نهایی و شبکه عمل می‌کند. این لایه شامل پروتکل‌ها و خدماتی است که به‌طور مستقیم با نرم‌افزارهایی که روزانه از آن‌ها استفاده می‌کنیم، در تعامل هستند. در این لایه، داده‌ها از شکل قابل فهم برای برنامه‌های کاربردی به فرمتی تبدیل می‌شوند که بتوانند در شبکه انتقال یابند.

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

همچنین، لایه کاربرد مسئول مدیریت برخی از مسائل امنیتی مانند تأیید هویت (Authentication)، رمزنگاری (Encryption) و کنترل دسترسی (Access Control) است. پروتکل‌هایی مانند HTTPS (Hypertext Transfer Protocol Secure) با استفاده از SSL/TLS (Secure Sockets Layer/Transport Layer Security) ارتباطات امنی را بین کلاینت و سرور برقرار می‌کنند تا اطلاعات حساس کاربران محافظت شود. 

فرض کنید شما می خواهید یک ایمیل ارسال کنید. لایه کاربرد از پروتکل هایی مانند SMTP (Simple Mail Transfer Protocol) برای ارسال پیام شما و IMAP یا POP3 برای دریافت پیام ها استفاده می کند. این پروتکل ها به برنامه ایمیل شما اجازه می دهند تا با پیروی از مجموعه ای از قوانین لازم برای انتقال موفق، پیام ها را قالب بندی، ارسال و دریافت کند.

پروتکل های رایج در لایه کاربرد:

Pin page

    • HTTP: پروتکل http یا Hypertext Transfer Protocol یک استاندارد تعریف شده برای شبکه‌های کامپیوتری است که برای نمایش صفحات وب مورد استفاده قرار می‌گیرد. این پروتکل اولین بار پس از ایجاد اولین سایت‌ها در سطح اینترنت به وجود آمد و به کار گرفته شد، چرا که این پروتکل قابلیت ارتباط بین سرور و کلاینت را برقرار می‌کند، بنابراین بدون این پروتکل دسترسی به صفحات وب در سطح اینترنت وجود نخواهد داشت.در این پروتکل ابتدا از سمت کلاینت به سرور یک درخواست HTTP ارسال می‌شود. سرور درخواست را بررسی کرده و پاسخ را به کلاینت ارسال می‌کند یا عملیات لازم را انجام می‌دهد.
      What is The Hypertext Transfer Protocol (HTTP)?
    • HTTPS پروتکل: بزرگ‌ترین مشکل HTTP این بود که داده‌ها در آن رمزنگاری نمی‌شدند و به‌ همین خاطر، امکان وقوع نشت‌های امنیتی بسیار بالا بود. هر هکری، می‌تواند خیلی راحت به پیام‌های HTTP دسترسی پیدا کند و آن‌ها را بخواند. برای رفع این مشکل، نسخه پیشرفته HTTP، یعنی HTTPS معرفی شد که در آن داده‌ها رمزنگاری می‌شوند. حرف S که به انتهای HTTP اضافه‌ شده است، از کلمه Secure به معنای ایمن گرفته شده است.
    • FTP: بسیاری از مردم قبلاً بدون اینکه متوجه باشند از FTP استفاده کرده اند. اگر تا به حال فایلی را از یک صفحه وب دانلود کرده اید، از FTP استفاده کرده اید. پروتکل انتقال فایل یا همان File Transfer Protocol رایج ترین پروتکل برای برقراری ارتباط و انتقال فایل‌ها بین رایانه‌ها به صورت گسترده در شبکه TCP/IP استفاده می‌شود.
      What is FTP? The Essential Guide to the FTP protocol

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

    • پروتکل DHCP: DHCP یکی از پروتکل‌های موجود در لایه‌ی اپلیکیشن شبکه است که وظیفه‌ی آدرس دهیIP خودکار به  دستگاهای موجود در شبکه را بر عهده دارد، DHCP از عبارت Dynamic Host Configuration Protocol تشکیل شده و همانطور که از نامش پیداست دستگاه‌های موجود در شبکه را به صورت خودکار(داینامیک) آدرس‌دهی و پیکربندی می‌کند.
      What is DHCP? How does the DHCP server work? - ClouDNS Blog
    • Telnet: برای ورود و کنترل از راه دور یک کامپیوتر دیگر

      Telnet Explained: What Is It and How It Works? - ClouDNS Blog

       

      Example of TCP/IP operation over Ethernet - Xiphera

    • SSH: برای ایجاد یک اتصال امن برای ورود و کنترل از راه دور یک کامپیوتر دیگر
    • پروتکل ( Domain Name System ) DNS : یک پروتکل شناخته شده در زمینه شبکه می باشد. از پروتکل DNS در جهت تبدیل اسم به IP  و همچنین تبدیل IP به اسم استفاده می‌کنند. وقتی می خواهید وارد سایتی شوید ، باید آدرس وب سرور آن را بدانید. آدرس وب سرور با IP مشخص میشود. اما به خاطر سپردن آدرس IP دشوار است. می توان به جای IP از اسم‌های دامنه ها نیز استفاده کرد. برای هر IP یک اسم دامنه در نظر گرفته شده است. برای مثال فرض کنید IPآدرس گوگل 66.249.91.103 است. که در این صورت برای دسترسی به گوگل میتوانیم از IP یا آدرس www.google.comاستفاده کنید.

      What is DNS? | How Does DNS Work? | Gcore

در حقیقت  سرویس DNS آی پی آدرس را به اسامی مشخص و ساده ترجمه می کند. هم نامه دامنه و هم   IP Address، کاربر را به یک وب سرور مشخص هدایت می کند ، اما نام دامنه، هم برای استفاده ، و هم برای به خاطر سپردن به مراتب راحت تر از IP Address است. بدون DNS کاربرها مجبور هستند برای وارد شدن به هر بخشی از اینترنت از اعداد خسته کننده IP  Address  استفاده کنند.

2. لایه انتقال (Transport Layer):

لایه انتقال (Transport Layer) در مدل TCP/IP نقش کلیدی در مدیریت ارتباطات و انتقال داده‌ها بین دستگاه‌های مختلف ایفا می‌کند. این لایه مسئول دریافت داده‌ها از لایه کاربرد (Application Layer) و تقسیم آن‌ها به قطعات کوچکتر برای ارسال به شبکه است. این قطعات که به صورت بخش‌ها (Segments) یا دیتاگرام‌ها (Datagrams) ساخته می‌شوند، اطلاعات کنترلی خاصی را در هدر (Header) خود دارند که برای هدایت و مدیریت انتقال داده‌ها استفاده می‌شود. اطلاعاتی مانند شماره توالی (Sequence Number)، شماره تأیید (Acknowledgment Number)، و پورت‌های مبدأ و مقصد، از جمله این داده‌های کنترلی هستند که اطمینان از تحویل درست و مدیریت جریان ارتباطات را ممکن می‌سازند.

پروتکل‌های اصلی در لایه انتقال شامل TCP (Transmission Control Protocol) و UDP (User Datagram Protocol) هستند. این دو پروتکل با اهداف متفاوت طراحی شده‌اند و پایه و اساس بسیاری از برنامه‌های کاربردی را تشکیل می‌دهند. برنامه‌های کاربردی بر اساس نیازهای خود از یکی از این دو پروتکل استفاده می‌کنند. پروتکل‌هایی مانند HTTP/HTTPS (برای انتقال صفحات وب)، FTP (برای انتقال فایل‌ها)، SMTP (برای ارسال ایمیل)، و SSH (برای ارتباطات امن از راه دور) بر پایه TCP اجرا می‌شوند و از ویژگی‌های اطمینان و اتصال‌گرایی آن بهره‌مند می‌شوند. از طرف دیگر، پروتکل‌هایی مانند VoIP (برای انتقال صدا بر روی اینترنت)، TFTP (برای انتقال فایل‌های ساده)، و SNMP (برای مدیریت و نظارت بر تجهیزات شبکه) بر پایه UDP هستند و از سرعت بالا و سادگی آن استفاده می‌کنند.

پروتکل‌های TCP و UDP در لایه انتقال مدل TCP/IP

TCP IP Model | Layers and Importance - InterviewBit

پروتکل TCP به‌عنوان یک پروتکل اتصال‌گرا (Connection-Oriented Protocol) پیش از شروع ارسال داده‌ها یک ارتباط مطمئن بین فرستنده و گیرنده برقرار می‌کند. این پروتکل از طریق یک فرآیند ارتباط سه مرحله‌ای (Three-Way Handshake) که شامل تبادل پیام‌های SYN، SYN-ACK، و ACK است، پارامترهای ارتباطی را تنظیم و تایید می‌کند. پس از برقراری اتصال، TCP داده‌ها را به بخش‌های کوچکتر تقسیم کرده و هر بخش را با یک هدر TCP همراه می‌کند. این پروتکل با استفاده از شماره‌های توالی به هر بخش، ترتیب درست انتقال داده‌ها را تضمین می‌کند و در صورت گم شدن یا خراب شدن بخش‌ها، امکان ارسال مجدد آن‌ها را فراهم می‌سازد. TCP همچنین مکانیزم‌های کنترل جریان (Flow Control) و کنترل ازدحام (Congestion Control) را به‌کار می‌گیرد تا سرعت ارسال داده‌ها تنظیم شود و از ازدحام شبکه جلوگیری گردد.

پروتکل UDP برخلاف TCP، یک پروتکل بدون اتصال (Connectionless Protocol) است که داده‌ها را به شکل دیتاگرام‌های مستقل و بدون تأیید دریافت به مقصد ارسال می‌کند. UDP به دلیل ساختار ساده و نبود مکانیزم‌های پیچیده مانند کنترل جریان و تأیید دریافت، سرعت بالاتری دارد و سربار پردازشی کمتری ایجاد می‌کند. با این حال، این پروتکل تضمینی برای تحویل داده‌ها ارائه نمی‌دهد؛ به همین دلیل ممکن است بسته‌ها گم شوند یا خارج از ترتیب برسند. UDP برای کاربردهای بلادرنگ (Real-Time Applications) مانند استریمینگ ویدئو و صدا، بازی‌های آنلاین و پروتکل‌هایی مانند DNS و DHCP که نیاز به تأخیر کم و سرعت بالا دارند، ایده‌آل است.

User Datagram Protocol (UDP) - CyberHoot

به منظور درک بهتر تفاوت این دو پروتکل، می‌توان آن‌ها را با روش‌های ارسال نامه مقایسه کرد. ارسال داده با TCP مشابه ارسال نامه‌ای به‌صورت سفارشی با تأیید دریافت است؛ به‌طوری که دریافت هر نامه تأیید شده و در صورت گم شدن، دوباره ارسال می‌شود. در مقابل، UDP مانند ارسال نامه به‌صورت معمولی و بدون ردیابی است؛ سریع‌تر و ساده‌تر، اما بدون تضمین تحویل به مقصد.

انتخاب بین TCP و UDP به نیازهای برنامه بستگی دارد. TCP انتقال داده قابل اعتماد را فراهم می کند و زمانی که صحت و کامل بودن داده ها حیاتی است، انتخاب بهتری است. از طرف دیگر UDP انتقال سریعتر با سربار کمتر را ارائه می دهد و برای موقعیت هایی که سرعت مهمتر از دقت کامل داده های ارسالی است مناسب است.

(Transmission Control Protocol (TCP

پروتکل TCP به گونه‌ای طراحی شده است که قابلیت اطمینان بالایی را در انتقال داده‌ها فراهم می‌کند. این پروتکل تضمین می‌کند که داده‌ها به‌درستی و بدون خطا به مقصد می‌رسند. اگر بسته‌ای در طول مسیر گم شود، خراب شود یا خارج از ترتیب به مقصد برسد، TCP با استفاده از مکانیزم‌های داخلی خود، مانند درخواست ارسال مجدد و بازچینی بسته‌ها، مشکل را برطرف می‌کند. این ویژگی‌ها به‌ویژه در برنامه‌هایی که به انتقال دقیق و بدون نقص داده‌ها نیاز دارند، مانند بارگذاری صفحات وب، ارسال و دریافت ایمیل و انتقال فایل‌ها، بسیار حائز اهمیت است.

یکی از ویژگی‌های کلیدی TCP کنترل جریان و ازدحام در شبکه است. این پروتکل با استفاده از مکانیزم‌هایی مانند پنجره لغزان (Sliding Window) و الگوریتم‌های کنترل ازدحام، سرعت انتقال داده‌ها را به‌گونه‌ای تنظیم می‌کند که گیرنده بتواند داده‌ها را به‌درستی پردازش کند و شبکه دچار ازدحام نشود. این مکانیزم‌ها به جلوگیری از ترافیک بیش از حد در شبکه و اطمینان از عملکرد بهینه آن کمک می‌کنند. به این ترتیب، TCP تضمین می‌کند که فرستنده هرگز گیرنده را با حجم زیاد داده‌ها غرق نمی‌کند و انتقال داده‌ها به صورت هموار انجام می‌شود.

نحوه عملکرد TCP در انتقال داده‌ها به این صورت است که ابتدا داده‌های ارسال‌شده از برنامه‌های کاربردی در لایه کاربردی را دریافت می‌کند. این داده‌ها معمولاً به صورت جریان‌های بزرگی از اطلاعات هستند که نیاز به تقسیم‌بندی دارند. TCP این داده‌ها را به بخش‌های کوچکتری به نام “قطعه‌ها” (Segments) تقسیم می‌کند تا انتقال آن‌ها در شبکه امکان‌پذیر شود. هر قطعه با افزودن یک هدر TCP، که شامل اطلاعات کنترلی حیاتی مانند شماره توالی، شماره تأییدیه، فلگ‌ها (Flags) و اندازه پنجره است، بسته‌بندی می‌شود. این اطلاعات به گیرنده کمک می‌کند تا قطعه‌ها را به ترتیب صحیح مرتب کند، صحت آن‌ها را بررسی کند و در صورت لزوم درخواست ارسال مجدد دهد.

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

TCP Header

TCP Segment

یک بسته TCP از دو بخش اصلی تشکیل شده است: هدر و ناحیه داده (Data Payload). هدر TCP شامل اطلاعات حیاتی برای کنترل و مدیریت ارتباطات شبکه است. این اطلاعات به دستگاه‌های فرستنده و گیرنده کمک می‌کند تا انتقال داده‌ها را به‌صورت مؤثر و قابل اعتماد انجام دهند.

اجزای اصلی هدر TCP:

  1. پورت مبدأ و پورت مقصد (Source Port & Destination Port):

    • این فیلدها شماره پورت‌های برنامه‌های ارسال‌کننده و دریافت‌کننده را مشخص می‌کنند. پورت‌ها به سیستم‌ها اجازه می‌دهند که داده‌ها را به برنامه‌های صحیح هدایت کنند. به‌عنوان مثال، پورت 80 برای HTTP و پورت 443 برای HTTPS استفاده می‌شود.
  2. شماره توالی (Sequence Number):

    • این شماره نشان‌دهنده ترتیب بایت‌های ارسال‌شده است. با استفاده از شماره توالی، گیرنده می‌تواند داده‌ها را به ترتیب صحیح بازسازی کند، حتی اگر بسته‌ها خارج از ترتیب دریافت شوند.
  3. شماره تأییدیه (Acknowledgment Number):

    • این شماره به فرستنده اعلام می‌کند که تا کدام بایت از داده‌ها به‌درستی دریافت شده است. این مکانیزم به اطمینان از دریافت صحیح داده‌ها کمک می‌کند و در صورت نیاز، ارسال مجدد بسته‌های گم‌شده را ممکن می‌سازد.
  4. طول هدر (Data Offset):

    • این فیلد اندازه هدر TCP را مشخص می‌کند و به گیرنده اطلاع می‌دهد که داده‌های اصلی از کجا شروع می‌شوند.
  5. بیت‌های رزرو شده (Reserved Bits):

    • فیلدهایی که برای استفاده‌های آینده نگه داشته شده‌اند و معمولاً مقدارشان صفر است.
  6. بیت‌های کنترلی یا فلگ‌ها (Control Bits/Flags):

    • این فیلد شامل بیت‌هایی است که هر یک نقش خاصی دارند:

      • URG: نشان‌دهنده وجود داده‌های فوری (Urgent) است.
      • ACK: نشان می‌دهد که فیلد شماره تأییدیه معتبر است.
      • PSH: درخواست می‌کند که داده‌ها به‌سرعت به برنامه کاربردی تحویل داده شوند.
      • RST: برای بازنشانی اتصال استفاده می‌شود.
      • SYN: برای هماهنگی شماره‌های توالی در هنگام برقراری اتصال استفاده می‌شود.
      • FIN: نشان‌دهنده پایان ارسال داده از طرف فرستنده است.
  7. اندازه پنجره (Window Size):

    • این فیلد مقدار داده‌هایی را که گیرنده می‌تواند بدون نیاز به تأییدیه دریافت کند، مشخص می‌کند. این مکانیزم به کنترل جریان داده‌ها کمک می‌کند تا فرستنده، گیرنده را با حجم زیاد داده‌ها غرق نکند.
  8. مجموع بررسی (Checksum):

    • یک مقدار کنترلی که برای تشخیص خطا در هدر و داده‌ها استفاده می‌شود. اگر مجموع بررسی مطابقت نداشته باشد، بسته دور انداخته می‌شود تا از انتقال داده‌های خراب جلوگیری شود.
  9. اشاره‌گر فوری (Urgent Pointer):

    • اگر بیت URG تنظیم شده باشد، این فیلد موقعیت داده‌های فوری در جریان داده‌ها را نشان می‌دهد. این امکان را می‌دهد که داده‌های حساس به زمان سریع‌تر پردازش شوند.
  10. گزینه‌ها (Options):

    • یک فیلد متغیر که برای ویژگی‌های اضافی مانند اندازه پنجره‌های بزرگ‌تر یا مقادیر خاص زمان‌بندی استفاده می‌شود.
  11. پدینگ (Padding):

    • این فیلد برای اطمینان از اینکه هدر TCP به طولی می‌رسد که مضربی از 32 بیت باشد، استفاده می‌شود.

اهمیت هدر TCP در ارتباطات شبکه:

جزئیات دقیق موجود در هدر TCP به پروتکل اجازه می‌دهد تا ارتباطات قابل اعتماد و مطمئنی را بین دستگاه‌ها برقرار کند. مکانیزم‌هایی مانند شماره‌های توالی و تأییدیه، کنترل جریان و فلگ‌های کنترلی به TCP امکان می‌دهند تا:

  • قابلیت اطمینان بالا: اطمینان حاصل شود که تمام داده‌ها به‌درستی و به ترتیب صحیح به مقصد می‌رسند. در صورت گم شدن یا خراب شدن بسته‌ها، TCP آن‌ها را دوباره ارسال می‌کند.

  • کنترل جریان و ازدحام: با استفاده از اندازه پنجره، TCP می‌تواند سرعت ارسال داده‌ها را تنظیم کند تا گیرنده توانایی پردازش آن‌ها را داشته باشد و از ازدحام شبکه جلوگیری شود.

  • مدیریت اتصالات: با استفاده از فلگ‌های SYN، ACK، و FIN، TCP می‌تواند اتصالات را برقرار، نگهداری و خاتمه دهد.

پروتکل TCP و ارتباط سه مرحله‌ای (Three-Way Handshake)

Three-way handshaking

ارتباط سه مرحله‌ای TCP (Three-Way Handshake):

از آنجایی که TCP یک پروتکل اتصال‌گرا است، برقراری یک ارتباط قبل از شروع انتقال داده‌ها ضروری است. TCP از یک فرآیند به نام “ارتباط سه مرحله‌ای” برای هماهنگی مقادیر شماره توالی (Sequence Number) و شماره تأییدیه (Acknowledgment Number) برای شروع یک جلسه ارتباطی استفاده می‌کند.

مراحل ارتباط سه مرحله‌ای:

  1. ارسال SYN از طرف کلاینت:

    • دستگاه مبدأ (مثلاً کلاینت) یک بسته TCP با فلگ SYN تنظیم‌شده به مقصد ارسال می‌کند. این بسته حاوی یک شماره توالی تصادفی (مثلاً 1234) است که نشان‌دهنده شروع شماره توالی داده‌هایی است که کلاینت قصد ارسال آن‌ها را دارد.
  2. پاسخ SYN + ACK از طرف سرور:

    • سرور بسته SYN را دریافت کرده و با یک بسته TCP پاسخ می‌دهد که فلگ‌های SYN و ACK هر دو تنظیم‌شده‌اند. این بسته حاوی یک شماره توالی جدید از طرف سرور (مثلاً 5678) و یک شماره تأییدیه است که برابر است با شماره توالی کلاینت به‌علاوه یک (1234 + 1 = 1235).
  3. ارسال ACK از طرف کلاینت:

    • کلاینت بسته SYN + ACK سرور را دریافت کرده و با ارسال یک بسته ACK پاسخ می‌دهد. این بسته حاوی شماره تأییدیه‌ای است که برابر است با شماره توالی سرور به‌علاوه یک (5678 + 1 = 5679). با این تبادل، ارتباط برقرار شده و انتقال داده‌های واقعی می‌تواند آغاز شود.

پایان ارتباط TCP:

پس از اتمام انتقال داده‌ها، TCP ارتباط را در یک فرآیند چهار مرحله‌ای خاتمه می‌دهد:

  1. ارسال FIN از طرف کلاینت:

    • کلاینت یک بسته TCP با فلگ FIN تنظیم‌شده به سرور ارسال می‌کند تا نشان دهد قصد بستن ارتباط را دارد.
  2. ارسال ACK از طرف سرور:

    • سرور بسته FIN را دریافت کرده و با یک بسته ACK پاسخ می‌دهد تا تأیید کند که درخواست خاتمه را دریافت کرده است.
  3. ارسال FIN از طرف سرور:

    • سرور سپس بسته‌ای با فلگ FIN تنظیم‌شده به کلاینت ارسال می‌کند تا نشان دهد آماده بستن ارتباط است.
  4. ارسال ACK از طرف کلاینت:

    • کلاینت بسته FIN سرور را دریافت کرده و با یک بسته ACK پاسخ می‌دهد. با این تبادل، ارتباط به‌طور کامل بسته می‌شود.

اهمیت ارتباط سه مرحله‌ای:

  • قابلیت اطمینان: این فرآیند تضمین می‌کند که هر دو طرف آماده انتقال داده‌ها هستند و پارامترهای ارتباطی (مانند شماره‌های توالی) هماهنگ شده‌اند.
  • امنیت: ارتباط سه مرحله‌ای می‌تواند به تشخیص حملات و جلوگیری از ارتباطات ناخواسته کمک کند.
  • کنترل جریان: با تنظیم پارامترها، TCP می‌تواند سرعت انتقال داده‌ها را به‌گونه‌ای تنظیم کند که گیرنده بتواند آن‌ها را به‌درستی پردازش کند.

User Datagram Protocol (UDP)

UDP (User Datagram Protocol) – VPN-Wiki – FineVPN-Glossar

پروتکل UDP (User Datagram Protocol) یکی از پروتکل‌های اصلی در لایه انتقال (Transport Layer) مدل TCP/IP است. این پروتکل به‌عنوان یک پروتکل بدون اتصال (Connectionless Protocol) شناخته می‌شود که برای انتقال سریع و کارآمد داده‌ها بین برنامه‌های کاربردی مورد استفاده قرار می‌گیرد. برخلاف پروتکل TCP، UDP تضمینی برای تحویل قابل اعتماد داده‌ها ارائه نمی‌دهد، اما به دلیل سادگی و سرعت بالا، در بسیاری از کاربردها مفید است.

پروتکل UDP داده‌ها را به صورت دیتاگرام‌های مستقل (Datagrams) ارسال می‌کند، بدون آنکه قبل از ارسال، یک ارتباط منطقی بین فرستنده و گیرنده برقرار شود. این بدان معناست که UDP نیازی به فرآیند برقراری ارتباط (Connection Establishment) ندارد و می‌تواند داده‌ها را به‌سرعت ارسال کند. هر دیتاگرام UDP شامل یک هدر ساده و یک بخش داده است. هدر UDP شامل اطلاعات اساسی مانند پورت مبدأ و پورت مقصد (Source Port & Destination Port)، طول پیام (Length) و مجموع بررسی (Checksum) است.

به دلیل عدم وجود مکانیزم‌های پیچیده مانند کنترل جریان (Flow Control) و تصحیح خطا (Error Correction)، UDP سربار کمتری بر روی سیستم ایجاد می‌کند و انتقال داده‌ها را با سرعت بیشتری انجام می‌دهد. این ویژگی‌ها UDP را برای کاربردهایی که سرعت و کارایی در آن‌ها اهمیت بیشتری نسبت به قابلیت اطمینان دارد، ایده‌آل می‌کند.

از جمله کاربردهای مهم UDP می‌توان به استریمینگ ویدئو و صدا، بازی‌های آنلاین و برنامه‌های تعاملی اشاره کرد. در این نوع برنامه‌ها، از دست دادن چند بسته داده تأثیر قابل توجهی بر کیفیت کلی سرویس ندارد و تأخیر کم در انتقال داده‌ها اهمیت بیشتری دارد. علاوه بر این، پروتکل‌های مهمی مانند DNS (Domain Name System) و DHCP (Dynamic Host Configuration Protocol) که نیاز به ارسال و دریافت سریع پیام‌های کوتاه دارند، از UDP استفاده می‌کنند.

یکی دیگر از ویژگی‌های UDP امکان پشتیبانی از پخش گروهی یا چندپخشی (Multicasting) است. این قابلیت به یک فرستنده اجازه می‌دهد تا یک پیام را به چندین گیرنده به‌طور همزمان ارسال کند، که در برنامه‌هایی مانند کنفرانس‌های ویدئویی و پخش زنده بسیار مفید است.

با این حال، باید توجه داشت که UDP تضمینی برای تحویل داده‌ها، ترتیب صحیح بسته‌ها یا جلوگیری از تکرار بسته‌ها ارائه نمی‌دهد. بنابراین، در کاربردهایی که قابلیت اطمینان بالا و تحویل دقیق داده‌ها ضروری است، از پروتکل TCP استفاده می‌شود. در صورتی که برنامه‌ای نیاز به ویژگی‌های UDP داشته باشد اما به نوعی از قابلیت اطمینان نیز نیاز داشته باشد، باید مکانیزم‌های اضافی در سطح برنامه برای مدیریت خطاها و بازفرستادن داده‌های گم‌شده پیاده‌سازی شود.

 

UDP Header

 یک بسته UDP ساده تر از یک بسته TCP ساختار یافته است. همچنین از یک هدر و یک ناحیه داده تشکیل شده است، اما هدر حاوی اطلاعات کمتری است:

  • پورت منبع و مقصد: مانند TCP برای شناسایی برنامه های درگیر.
  • Length: طول کل بسته UDP.
  • Checksum: نوعی بررسی خطا برای تشخیص اینکه آیا بسته خراب شده است یا خیر.

UDP اغلب برای برنامه هایی استفاده می شود که سرعت آن مهم است و از دست دادن گاه به گاه داده قابل قبول است، مانند پخش زنده ویدیو یا صدا، بازی آنلاین و برخی از انواع VPN ها.
Internet protocol suite - Wikipedia

مقدمه‌ای بر پورت‌های شبکه (Network Ports) و نقش آن‌ها در ارتباطات شبکه‌ای

پورت‌های شبکه (Network Ports) یکی از اساسی‌ترین مفاهیم در دنیای ارتباطات دیجیتال هستند. هر پورت به‌عنوان یک دروازه مجازی عمل می‌کند که سرویس‌ها، فرآیندها و برنامه‌های مختلف از آن برای تبادل داده‌ها استفاده می‌کنند. این دروازه‌ها به کامپیوترها و دستگاه‌های شبکه‌ای امکان می‌دهند که انواع مختلف ترافیک را به مقصد صحیح هدایت کنند. پورت‌ها همراه با آدرس‌های IP، یک آدرس سوکت کامل (Socket Address) تشکیل می‌دهند که مسیریابی دقیق داده‌ها در شبکه را ممکن می‌سازد.

وقتی یک دستگاه داده‌هایی را از طریق شبکه ارسال یا دریافت می‌کند، پورت‌ها تضمین می‌کنند که این داده‌ها به برنامه‌های مربوطه هدایت شوند. به عنوان مثال، مرورگر وب شما ممکن است از پورت 80 یا 443 برای وب‌گردی استفاده کند، در حالی که سرویس ایمیل از پورت 25 برای ارسال ایمیل بهره می‌برد. این تقسیم‌بندی به دستگاه‌ها اجازه می‌دهد چندین سرویس و برنامه را به‌طور همزمان اجرا کنند.

دسته‌بندی پورت‌ها

پورت‌های شبکه به سه دسته اصلی تقسیم می‌شوند که هر کدام نقش متفاوتی در ارتباطات شبکه‌ای دارند:

  1. پورت‌های شناخته‌شده (Well-Known Ports): این پورت‌ها در بازه 0 تا 1023 قرار دارند و برای سرویس‌ها و پروتکل‌های پرکاربرد و شناخته‌شده رزرو شده‌اند. برای مثال:

    • پورت 80: برای HTTP (وب‌گردی)
    • پورت 443: برای HTTPS (وب‌گردی امن)
    • پورت 22: برای SSH (دسترسی امن به دستگاه‌ها)
  2. پورت‌های ثبت‌شده (Registered Ports): این پورت‌ها در بازه 1024 تا 49151 قرار دارند و به برنامه‌ها و سرویس‌هایی که کمتر رایج هستند اختصاص داده می‌شوند. برای مثال:

    • پورت 3389: برای RDP (دسترسی از راه دور به ویندوز)
    • پورت 3306: برای MySQL (پایگاه داده)
  3. پورت‌های پویا/خصوصی (Dynamic/Private Ports): این پورت‌ها در بازه 49152 تا 65535 قرار دارند و معمولاً برای اتصالات موقتی یا کوتاه‌مدت استفاده می‌شوند. این پورت‌ها معمولاً به‌صورت خودکار توسط سیستم عامل به فرآیندها اختصاص داده می‌شوند و پس از پایان اتصال آزاد می‌شوند.

نقش پروتکل‌های TCP و UDP در استفاده از پورت‌ها

پروتکل‌های TCP و UDP که در لایه انتقال (Transport Layer) مدل TCP/IP فعالیت می‌کنند، از پورت‌ها برای مدیریت ارتباطات شبکه‌ای استفاده می‌کنند.

  • TCP (Transmission Control Protocol): پروتکل TCP یک پروتکل اتصال‌گرا (Connection-Oriented Protocol) است که قبل از انتقال داده‌ها، یک ارتباط پایدار و مطمئن بین دستگاه‌ها ایجاد می‌کند. TCP تضمین می‌کند که تمام داده‌ها به‌درستی و به ترتیب صحیح تحویل داده شوند. این پروتکل برای سرویس‌هایی که به دقت و قابلیت اطمینان نیاز دارند، مانند مرورگرهای وب، ایمیل، و انتقال فایل استفاده می‌شود.

  • UDP (User Datagram Protocol): در مقابل، UDP یک پروتکل بدون اتصال (Connectionless Protocol) است که داده‌ها را بدون اطمینان از تحویل یا ترتیب ارسال می‌کند. این پروتکل سریع‌تر و ساده‌تر از TCP است و در برنامه‌هایی مانند استریمینگ ویدئو، بازی‌های آنلاین و تماس‌های صوتی (VoIP) که تأخیر کمتر از دقت مهم‌تر است، استفاده می‌شود.

نقش پورت‌ها در امنیت و مدیریت شبکه

باز بودن پورت‌ها در شبکه می‌تواند فرصت‌هایی برای سوءاستفاده ایجاد کند. به عنوان مثال، پورت‌های 80 و 443 ممکن است هدف حملات DDoS یا SQL Injection قرار بگیرند. از سوی دیگر، پورت‌هایی مانند 21 (FTP) یا 23 (Telnet) که از پروتکل‌های رمزنگاری نشده استفاده می‌کنند، در برابر حملات استراق سمع بسیار آسیب‌پذیر هستند.

برای حفاظت از شبکه، مدیران باید:

  • از ابزارهایی مانند Nmap برای اسکن پورت‌ها و شناسایی پورت‌های باز استفاده کنند.
  • تنها پورت‌های ضروری را باز نگه دارند و سایر پورت‌ها را از طریق فایروال مسدود کنند.
  • پروتکل‌های امن مانند HTTPS (به‌جای HTTP) و SFTP (به‌جای FTP) را استفاده کنند.
  • گزارشات مربوط به فعالیت پورت‌ها را بررسی کرده و هرگونه فعالیت مشکوک را پیگیری کنند.

استفاده‌های روزمره از پورت‌ها

پورت‌ها در بسیاری از فعالیت‌های روزمره ما نقش دارند:

  • مرور وب: از پورت 80 برای HTTP و 443 برای HTTPS استفاده می‌شود.
  • ارسال ایمیل: SMTP روی پورت 25 عمل می‌کند.
  • انتقال فایل: FTP از پورت 21 برای انتقال فایل استفاده می‌کند.
  • دسترسی از راه دور: RDP از پورت 3389 و SSH از پورت 22 برای دسترسی ایمن به دستگاه‌ها استفاده می‌کنند.

3. لایه شبکه (Internet Layer):

Everything You Always Wanted to Know About TCP But Too Afraid to Ask

 

لایه شبکه هسته مدل TCP/IP است. این لایه امکان اتصال بین شبکه ها را فراهم می کند و مسیریابی / routing بسته های داده را از طریق مسیرهای مختلف در سراسر اینترنت مدیریت می کند.

مثال: Routing / مسیریابی بسته داده

تصور کنید که شما یک پیام از آلمان به ژاپن ارسال می کنید. لایه شبکه از پروتکل اینترنت (IP) برای تقسیم پیام شما به بسته های داده و اختصاص آدرس IP به آنها استفاده می کند. این بسته ها از طریق شبکه ها و روترهای مختلف بر اساس کارآمدترین مسیرهای موجود در زمان انتقال سفر می کنند. آدرس های IP تضمین می کنند که بسته ها در نهایت به مقصد صحیح برسند.

پروتکل های رایج در لایه شبکه:

    • IP: برای آدرس دهی و مسیریابی بسته های داده
    • ICMP: برای ارسال پیام های کنترلی و گزارش خطا
IP Address / آدرس IP

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

آدرس IP: آدرس دیجیتال

در دنیای دیجیتال ارتباطات شبکه، آدرس IP (آدرس پروتکل اینترنت) به عنوان “آدرس پستی” برای هر دستگاه متصل به شبکه عمل می کند. درست همانطور که آدرس پستی اطمینان می دهد که نامه شما به گیرنده مناسب می رسد، آدرس IP نیز تضمین می کند که بسته های داده مقصد خاص خود را در اینترنت یا در یک شبکه محلی (LAN) پیدا می کنند.

یک بسته IP مانند یک نامه دیجیتال است که اطلاعات را از یک دستگاه به دستگاه دیگر منتقل می کند. از دو بخش اصلی تشکیل شده است:

Header: حاوی اطلاعات مهم برای تحویل است، مشابه اطلاعات روی پاکت. این شامل آدرس IP مبدا (فرستنده)، آدرس IP مقصد (گیرنده)، نسخه پروتکل IPv4 یا IPv6، طول بسته و سایر اطلاعات کنترلی لازم برای تحویل صحیح می باشد.

Payload (داده): این محتوای “نامه” است، یعنی داده های واقعی که قرار است ارسال شود. اندازه این قسمت بسته به نوع اطلاعات در حال انتقال ممکن است متفاوت باشد.

​​

IPv4 Header:

    •    version / نسخه (4 بیت) – نشان دهنده نسخه پروتکل IP مورد استفاده است. همیشه برای بسته های IPv4 روی 4 تنظیم کنید.
    •   header length / طول سرصفحه (4 بیت) – طول هدر را در کلمات 32 بیتی مشخص می کند که به دلیل فیلدهای اختیاری از 5 تا 15 متغیر است.
    •   TOS /  نوع سرویس (8 بیت) – نیازمندی های رسیدگی و اولویت بسته را شرح می دهد.
    •  Total length /  طول کل (16 بیت) – طول کل بسته را بر حسب بایت، از جمله هدر و داده را مشخص می کند.
    •   Identification / شناسایی (16 بیت) – برای تکه تکه کردن و مونتاژ مجدد استفاده می شود و یک شماره شناسایی منحصر به فرد به بسته اختصاص می دهد.
    •  Flags /  پرچم ها (3 بیت) – تکه تکه شدن را با پرچم های More Fragments و Don’t Fragment کنترل می کند.
    •  Fragment Offset / (اندازه 8 بیت) – افست داده های بسته را نسبت به بسته اصلی و بدون تکه تکه مشخص می کند.
    •   Time to Live / (اندازه 8 بیت) – حداکثر تعداد پرش هایی را که یک بسته می تواند قبل از رها شدن انجام دهد را مشخص می کند.
    •      پروتکل (8 بیت) – پروتکل مورد استفاده در ناحیه داده را شناسایی می کند، به عنوان مثال TCP، UDP یا ICMP.
    •      Header Checksum / (اندازه 16 بیت) – برای تایید یکپارچگی هدر استفاده می شود.
    •      آدرس منبع (32 بیت) – شامل آدرس IP فرستنده است.
    •      آدرس مقصد (32 بیت) – شامل آدرس IP گیرنده است.
    •      گزینه ها (متغیر) – فیلد اختیاری برای اطلاعات اضافی مانند امنیت و داده های مسیریابی.

در مدل TCP/IP از آدرس IP در لایه اینترنت استفاده می شود که وظیفه یافتن مسیر بسته های داده در سراسر شبکه را بر عهده دارد. در مدل OSI، این مربوط به لایه شبکه (لایه 3) است. این لایه از آدرس دهی منطقی و انتخاب مسیر بسته ها در طول شبکه مراقبت می کند.

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

(Internet Control Message Protocol  (ICMP

پروتکل پیام کنترل اینترنت (ICMP) بخشی ضروری از اینترنت است که با علائم و علائم ترافیکی که نظم را در خیابان ها حفظ می کنند قابل مقایسه است. تصور کنید که در جاده ای رانندگی می کنید و با علائم مختلفی روبرو می شوید که به شما در مورد مکان های ساخت و ساز، انحرافات یا محدودیت های سرعت اطلاع می دهند. این نکات به شما کمک می کند تا با اطلاع رسانی از شرایط فعلی و موانع احتمالی در مسیر، ایمن و کارآمد به مقصد برسید. ICMP به طور مشابه در اینترنت با ارسال پیام هایی که جریان بسته های داده را بین رایانه ها و شبکه ها کنترل و نظارت می کند، کار می کند.

توابع اساسی ICMP

ICMP در درجه اول برای دو نوع پیام استفاده می شود: پیام های خطا و عملکردهای تشخیصی. پیام‌های خطا به دستگاه‌های فرستنده درباره مشکلاتی که هنگام انتقال بسته‌های داده‌شان رخ داده است، مانند یک شبکه مقصد غیرقابل دسترسی یا خطای مهلت زمانی، اطلاع می‌دهد. توابع تشخیصی مانند پینگ امکان تست دسترسی و زمان پاسخگویی به یک مقصد در شبکه را فراهم می کند.

ساختار یک پیام ICMP

یک پیام ICMP از یک هدر و یک ناحیه داده تشکیل شده است:

Header: شامل نوع پیام (به عنوان مثال درخواست پژواک، پاسخ پژواک، مقصد غیرقابل دسترس)، کدی است که بیشتر دلیل یا ماهیت مشکل را توضیح می‌دهد، و یک فیلد جمع کنترلی که برای تأیید صحت پیام استفاده می‌شود.

Data: به طور معمول شامل یک کپی از هدر IP و 8 بایت اول بسته داده است که باعث ایجاد مشکل می شود تا به فرستنده کمک کند تا مشکل را شناسایی و تشخیص دهد. برای درخواست‌ها و پاسخ‌های اکو (پینگ)، این ناحیه حاوی اطلاعات اضافی مانند مهر زمان است.

ICMP بخشی جدایی ناپذیر از لایه اینترنت در مدل TCP/IP است که معادل لایه شبکه در مدل OSI است. اگرچه ICMP برای کنترل و گزارش خطا در شبکه استفاده می شود، اما خود داده های برنامه مانند TCP یا UDP را منتقل نمی کند. در عوض، با پروتکل IP کار می کند تا امکان انتقال اطلاعات کنترلی و پیام های وضعیت را فراهم کند.

نحوه استفاده روترها و دستگاه های پایانی از ICMP

روترها از ICMP برای ارسال پیام های خطا به منبع بسته داده استفاده می کنند، اگر بسته داده با موفقیت به مقصد ارسال نشود. دستگاه های پایانی از ICMP برای انجام عیب یابی شبکه استفاده می کنند. یک مثال رایج ابزار پینگ / Ping است که درخواست‌های اکو ICMP را به مقصد ارسال می‌کند و پاسخ‌های اکو ICMP را برای اندازه‌گیری دسترسی و زمان رفت و برگشت (RTT) برای بسته‌ها به مقصد و برگشت دریافت می‌کند.

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

کاربردهای ICMP

IP و برنامه های دیگر، که در میان آنها برنامه های Ping و (tracert (traceroute رایج ترین هستند، می توانند از پیام های ICMP برای پیاده سازی چندین برنامه استفاده کنند. در مدیریت و نظارت شبکه، تجزیه و تحلیل کیفیت شبکه (NQA) از ICMP استفاده کامل می کند.

Ping

پینگ رایج ترین روش اشکال زدایی برای تشخیص قابل دسترسی بودن دستگاه های شبکه IPv4/IPv6 است. از پیام های اکو ICMP برای آزمایش موارد زیر استفاده می کند:

    •      قابلیت دسترسی به یک دستگاه از راه دور
    •      تاخیر رفت و برگشت در برقراری ارتباط با میزبان راه دور
    •      این که آیا بسته ها گم می شوند

Tracert

Tracert اتصال شبکه را با بررسی مسیر بسته ها از مبدا به مقصد بررسی می کند. هنگامی که یک خطای شبکه رخ می دهد، می توانید از tracert برای تعیین محل خطا استفاده کنید.

Tracert مسیرهای یک میزبان به میزبان های دیگر در شبکه را بر اساس پیام های وقفه زمانی ICMP و پیام های غیر قابل دسترس مقصد تعیین می کند. علاوه بر این، به تعیین تاخیر هر پرش در شبکه IP کمک می کند. تاخیر نشان دهنده زمان مورد نیاز برای ارسال یک بسته از منبع اطلاعات به مقصد است. تاخیر را می توان به تاخیر انتشار، تاخیر انتقال، تاخیر پردازش و تاخیر در صف طبقه بندی کرد.

NQA

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

NQA توابع پینگ و ردیابی را با استفاده از انواع مختلف پیام های ICMP گسترش داده و بهبود می بخشد. این می تواند وضعیت عملکرد شبکه و آمار خروجی را به طور دقیق آزمایش کند. تست‌های NQA شامل تست‌های ICMP، تست‌های جیتر ICMP و تست‌های ردیابی هستند.

  تست ICMP

 در یک آزمایش ICMP، پیام‌های ICMP Echo Request و Echo Response برای آزمایش دسترسی به مقصد و محاسبه زمان پاسخ شبکه و نرخ تلفات بسته ارسال می‌شوند. نتیجه آزمایش به وضوح عملکرد و اتصال شبکه را منعکس می کند. تست ICMP مشابه دستور ping عمل می کند. تفاوت این است که تست ICMP می تواند اطلاعات خروجی دقیقی را ارائه دهد.

  تست جیتر ICMP

یک تست جیتر ICMP با استفاده از مُهرهای زمانی که در پیام‌های ICMP حمل می‌شود، تأخیر، جیتر و نرخ از دست دادن بسته را محاسبه می‌کند. جیتر با کم کردن فاصله ارسال دو پیام متوالی از فاصله دریافت دو پیام محاسبه می شود.

تست Tracert

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

امنیت ICMP

ICMP برای امنیت شبکه اهمیت زیادی دارد. ICMP مکانیزم احراز هویت ندارد. در نتیجه، ICMP برای حمله به دستگاه های شبکه مانند سوئیچ ها و روترها آسان است.

حملات ICMP

در حال حاضر، بیشتر حملات ICMP حملات انکار سرویس (DoS) هستند. رایج ترین حمله سیل ICMP زمانی رخ می دهد که یک مهاجم تعداد زیادی بسته ICMP جعلی را در مدت زمان کوتاهی به دستگاه مورد نظر ارسال کند. در نتیجه، دستگاه مورد نظر مشغول پردازش این بسته های بی فایده است و نمی تواند خدماتی را برای کاربران قانونی ارائه دهد. شکل زیر روند کار را نشان می دهد.

4. لایه دسترسی به شبکه (Network Interface Layer):

لایه دسترسی به شبکه به جنبه های فیزیکی انتقال داده ها از طریق رسانه های شبکه می پردازد. این لایه شامل آدرس دهی سخت افزاری (MAC) و مسئولیت انتقال بسته های داده از طریق شبکه محلی و اتصالات فیزیکی است.

مثال: انتقال اترنت / Ethernet transmission 

هنگامی که فایلی را از طریق کابل اترنت در شبکه محلی خود ارسال می کنید، لایه دسترسی به شبکه با استفاده از پروتکل اترنت / Ethernet کار می کند. این پروتکل تعیین می‌کند که چگونه بسته‌های داده / IP Packets در فریم ها / Frames قالب‌بندی شده و از طریق کابل ارسال می‌شوند. اترنت از آدرس های (Media Access Control (MAC برای شناسایی منحصر به فرد دستگاه های موجود در شبکه استفاده می کند. هر دستگاه در یک شبکه اترنت دارای یک آدرس MAC منحصر به فرد است که در فریم اترنت برای شناسایی مبدا و مقصد هر بسته داده تعبیه شده است.

Frame Header format Ethernet II 

آدرس MAC یک آدرس مبتنی بر سخت افزار است که به کارت رابط شبکه (NIC) دستگاه متصل شده است. این شامل 48 بیت است که معمولاً به صورت شش گروه از دو رقم هگزادسیمال نمایش داده می شود ( 00-B0-D0-63-C2-26). این آدرس‌ها در سراسر جهان منحصربه‌فرد هستند و به شبکه اجازه می‌دهند تا هر دستگاه را به‌طور منحصربه‌فرد شناسایی کند.

به این ترتیب می توانید آدرس MAC خود را در ویندوز پیدا کنید:

    1. از میانبر صفحه کلید Windows + R برای باز کردن پنجره “Run” استفاده کنید و “cmd” را تایپ کنید تا Command Prompt ویندوز باز شود.
    1. اکنون دستور getmac /v را در خط فرمان وارد کنید.
    1. آدرس فیزیکی ورودی “Ethernet” آدرس MAC برای ثبت دستگاه شما است.

هنگامی که یک فریم داده از طریق اترنت ارسال می شود، حاوی آدرس MAC دستگاه فرستنده و گیرنده است. سوئیچ های روی شبکه از این آدرس ها برای تصمیم گیری در مورد مسیریابی فریم های داده در داخل شبکه استفاده می کنند. هنگامی که یک سوئیچ یک فریم را دریافت می کند، آدرس MAC مقصد را می خواند و به طور مناسب فریم را به دستگاهی که با آن آدرس مطابقت دارد، ارسال می کند. اگر آدرس مقصد مشخص نباشد یا فریم به همه دستگاه ها ارسال شود (پخش)، سوئیچ فریم را به همه پورت های خود به جز پورتی که از آن دریافت شده است ارسال می کند.

این رویکرد ارتباطات کارآمد و هدفمند را در داخل LAN امکان پذیر می کند زیرا داده ها مستقیماً به دستگاه مورد نظر بدون ایجاد ترافیک شبکه غیر ضروری ارسال می شوند. استفاده از آدرس‌های MAC و پروتکل اترنت عناصر اساسی هستند که بر عملکرد لایه دسترسی به شبکه در مدل TCP/IP و لایه پیوند داده در مدل OSI تأکید می‌کنند.