تصور کنید پیامی به افراد مختلفی در سراسر جهان ارسال کرده اید و اطمینان دارید که دقیق و بدون مشکل به مقصد می رسند. این موضوع همان Transmission Control Protocol اختصارا TCP و به معنای "پروتکل کنترل انتقال" است. پروتکل TCP تضمین می کند که داده ها مطمئن، دقیق و با ترتیب درست، در شبکه ها منتقل شوند.
تصویر(1)
پروتکل TCP/IP چیست؟
پروتکل TCP/IP چیست؟ پروتکل TCP (پروتکل کنترل انتقال) و IP (پروتکل اینترنت) دو پروتکل ارتباطی مجزا هستند که عملکرد یکدیگر را تکمیل می کنند.
IP وظیفه مسیریابی و آدرس دهی بسته های داده بین مبدا و مقصد را بر عهده دارد. این پروتکل اطمینان حاصل می کند که بسته ها به مقصد صحیح تحویل داده شوند. IP قوانین و فرمت هایی را تعریف می کند که بر اساس آن برنامه ها و دستگاه ها می توانند در یک شبکه مشخص یا بین شبکه های متصل، با یکدیگر ارتباط برقرار کرده و بسته های داده را تبادل کنند. این پروتکل پایه ای ترین نقش را در انتقال داده ها بر بستر اینترنت ایفا می کند.
پروتکل TCP داده ها را به شکلی سازماندهی می کند که هنگام تبادل بین یک کلاینت و سرور، محافظت شوند. TCP یکی از پرکاربردترین پروتکل ها در شبکه ها بوده که توسط دستگاه ها و برنامه های مختلف مورد استفاده قرار می گیرد. پروتکل TCP داده ها را از لحظه ارسال آنها تا زمان تحویل به مقصد، محافظت می کند. این پروتکل با مدیریت جریان داده ها، ارسال مجدد بسته های گم شده و اطمینان از ترتیب صحیح هنگام تحویل، انتقالی قابل اعتماد را تضمین می نماید.
ترکیب TCP با IP باعث شد که تمام شبکه ها، بدون توجه به پروتکل های مورد استفاده، در صورتی که از مدل TCP/IP پشتیبانی کنند، بتوانند با هم ارتباط داشته باشند. دو پروتکل TCP و IP به عنوان پایه های فنی اینترنت مدرن عمل کرده و زمینه را برای فعالیت و گسترش آن فراهم ساخته اند. در واقع، واژه Internet از همین مورد شکل گرفته و "شبکه ای به هم پیوسته از چندین شبکه" می باشد. این ترکیب، اساس ارتباطات جهانی بوده و اینترنت را به مفهومی که امروزه می شناسید تبدیل کرده است.
تصویر(2)
مدل TCP/IP چگونه کار می کند؟
برای اتصال به اینترنت، دامنه ها و دستگاه ها یک آدرس IP یکتا جهت شناسایی دریافت می کنند تا امکان ارتباط (تبادل داده) با سایر دستگاه های متصل را داشته باشند. این آدرس ها نقشی کلیدی در مسیریابی و هدایت داده ها ایفا کرده و به دستگاه ها اجازه می دهند در شبکه های محلی یا جهانی به درستی با هم ارتباط برقرار نمایند. اطلاعات در شبکه ها به قطعات کوچکی با نام packets یا "بسته ها" تقسیم می شوند. هر بسته شامل اطلاعات IP بوده که به روترها اجازه می دهد packet ها را برای آن ارسال کنند. در مقصد، نحوه پردازش این بسته ها به نوع پروتکل مورد استفاده (TCP یا UDP) که همراه با IP جهت انتقال آنها به کار می رود، بستگی دارد.
IP یک پروتکل "بدون اتصال" (connectionless) است. یعنی بسته های داده بدون تایید دریافت از سمت مقصد، فقط آدرس دهی، مسیریابی و ارسال می شوند. این محدودیت با استفاده از پروتکل کنترل انتقال (TCP) برطرف می گردد.
پروتکل TCP انتقال و تحویل مطمئن بسته های داده در شبکه ها را از طریق یک فرآیند مشخص تضمین می کند. قبل از آغاز انتقال داده، باید ارتباطی میان مبدا و مقصد برقرار شود زیرا TCP یک پروتکل مبتنی بر اتصال بوده و برای عملکرد صحیح، نیاز دارد که این ارتباط فعال تا پایان ارسال و دریافت داده ها حفظ گردد.
وقتی ارتباط آغاز می شود، پروتکل TCP پیام های فرستنده را به بسته های کوچکی تقسیم می کند. برای حفظ یکپارچگی پیام ها، پروتکل TCP به هر بسته یک شماره اختصاص می دهد. سپس بسته ها آماده انتقال به لایه IP شده تا برای مقصد ارسال شوند. حتی اگر همه بسته ها بخشی از یک پیام واحد باشند، ممکن است برای رسیدن به مقصد از مسیرهای مختلفی عبور کنند.
هنگامی که تمام بسته ها به مقصد می رسند، پروتکل TCP پیام را با کنار هم قرار دادن تمام قطعات (packets) مجددا بازسازی کرده تا آن را به درستی تحویل دهد. این سناریو ممکن است در صورت بروز مشکل درون شبکه، مختل شود. احتمال دارد که بسته های داده در طول مسیر گم شده، تکرار شوند یا با ترتیب نادرست برسند. مزیت پروتکل TCP در این است که می تواند چنین مشکلاتی را تشخیص داده و برطرف کند. این پروتکل می تواند درخواست ارسال مجدد بسته های گم شده را داده و با ترتیب درست سازماندهی نماید. اگر پیام ها قابل تحویل نباشند، این موضوع به فرستنده گزارش داده می شود.
همان طور که مشاهده می کنید، اینترنت یک شبکه مبتنی بر ارسال بسته ها می باشد. تمام داده ها به بسته های کوچک تقسیم شده و از مسیرهای مختلف و همزمان به سمت مقصد حرکت می کنند. هنگامی که به مقصد می رسند، پروتکل TCP آنها را بازسازی کرده و IP وظیفه دارد بسته ها را به مقصد درست ارسال کند.
تصویر(3)
لایه های مدل TCP/IP
مدل TCP/IP شامل چهار لایه است که همگی برای یک هدف مشترک، یعنی انتقال داده، با یکدیگر همکاری می کنند.
لایه اپلیکیشن: این لایه در بالاترین سطح مدل شبکه قرار دارد و یک رابط کاربری برای برقراری ارتباط برنامه ها و خدمات شبکه فراهم می کند. این لایه، شرکت کنندگان در یک ارتباط را شناسایی، دسترسی به منابع شبکه را تعریف و قوانین مربوط به تعامل بین پروتکل های کاربردی و خدمات انتقال داده را تعیین می کند. لایه اپلیکیشن شامل تمام پروتکل های سطح بالاتر مانند DNS، HTTP، SSH، FTP، SNMP، SMTP، DHCP و غیره است.
لایه انتقال: این لایه مقدار و سرعت انتقال داده ها را به صورت صحیح تعیین می کند و با دریافت پیام ها از لایه اپلیکیشن، آنها را به قطعات کوچک تر تقسیم نموده و داده ها را انتقال می دهد. سپس اطلاعات را در مقصد به ترتیب بازسازی می کند. همچنین لایه انتقال مشکلات احتمالی را شناسایی و حل کرده تا اطلاعات یکپارچه و صحیح تحویل داده شوند. پروتکل TCP در این لایه عمل می کند.
لایه اینترنت: لایه اینترنت که به عنوان لایه IP یا شبکه نیز شناخته می شود، مسئول ارسال بسته ها و اطمینان از انتقال دقیق داده ها است. این لایه به کنترل مسیر و سرعت ترافیک پرداخته و مشابه یک راهنما در جاده عمل می کند. پروتکل های این لایه شامل IPv4، IPv6، ICMP و ARP هستند.
لایه دسترسی به شبکه: لایه دسترسی به شبکه، ترکیبی از لایه پیوند داده و فیزیکی در مدل OSI است. این لایه فرآیند انتقال واقعی داده ها در شبکه را مشخص می کند. همچنین نحوه عملکرد اجزای سخت افزاری که به صورت فیزیکی با شبکه تعامل دارند، مانند کابل های مسی، فیبر نوری، کواکسیال و همچنین انتقال داده ها از طریق روش های نوری یا الکتریکی را پوشش می دهد. لایه دسترسی به شبکه، پایین ترین لایه در مدل TCP/IP است.
درک فرآیند TCP Handshake
فرآیند TCP Handshake کلیدی برای برقراری یک ارتباط قابل اعتماد بین دو دستگاه است. به این روش "three-way handshake" نیز گفته می شود و اطمینان می دهد که فرستنده و گیرنده قبل از انتقال هر گونه داده، آماده برقراری ارتباط هستند. در ادامه مراحل آن توضیح داده شده است:
SYN (همگام سازی): این فرآیند زمانی آغاز می شود که کلاینت یک بسته SYN به سرور ارسال می کند تا درخواست شروع ارتباط را اعلام نماید. این بسته حاوی یک شماره توالی اولیه بوده که به کلاینت اجازه می دهد نقطه شروع انتقال داده ها را مشخص کند.
SYN-ACK (تایید همگام سازی): سرور با ارسال یک بسته SYN-ACK پاسخ داده و درخواست کلاینت را تایید می کند. این بسته شامل شماره توالی خود سرور نیز می باشد. این پیام نشان می دهد که سرور آماده دریافت اطلاعات بوده و نقطه شروع را برای ردیابی بخش های داده مشخص کرده است.
ACK (تایید نهایی): کلاینت یک بسته ACK به سرور ارسال کرده تا پاسخ را تایید کند. این مرحله نهایی، با تکمیل فرآیند Handshake، یک ارتباط پایدار برقرار نموده تا تبادل داده ها آغاز شود.
تفاوت بین TCP و IP
TCP و IP دو پروتکل مختلف در شبکه های کامپیوتری هستند. هر کدام در فرآیند انتقال داده ها وظیفه خاصی دارند که TCP (پروتکل کنترل انتقال) را از IP (پروتکل اینترنت) متمایز می کند. با استفاده از IP، می توانید مشخص کنید که داده ها به کجا ارسال گردند (هر دستگاه یک آدرس IP دارد). پس از شناسایی این آدرس آی پی، پروتکل TCP تضمین می کند که داده ها به طور دقیق تحویل داده شوند. این دو پروتکل TCP/IP را تشکیل می دهند.
به عبارت دیگر، پروتکل TCP نامه ها را ارسال و دریافت کرده در حالی که IP آنها را مرتب می کند. سایر پروتکل ها، مانند UDP (پروتکل دیتاگرام کاربر)، می توانند داده ها را درون سیستم IP بدون اینکه از TCP استفاده کنند، انتقال دهند. برای اینکه پروتکل TCP داده ها را ارسال کند، به یک آدرس IP نیاز دارد. این مورد یکی دیگر از تفاوت های بین IP و TCP می باشد.
تصویر(4)
نحوه یافتن آدرس در مدل TCP/IP
می توانید از روش های ساده ای برای یافتن آدرس های IP عمومی و خصوصی خود استفاده کنید. آدرس IP عمومی که دستگاه شما را در اینترنت قابل شناسایی می کند، به راحتی با جستجوی عبارت "What is my IP address" در اکثر موتورهای جستجو قابل مشاهده است. این روش آدرس IP اختصاص داده شده به شبکه شما توسط ارائه دهنده خدمات اینترنتی تان (ISP) را نمایش می دهد. برای یافتن آدرس IP خصوصی که در شبکه محلی مورد استفاده قرار می گیرد، فرآیند با توجه به نوع دستگاه کمی متفاوت است.
در ویندوز:
1. Command Prompt را باز کنید.
2. دستور `ipconfig` را تایپ نمایید.
3. آدرس IP شما در زیر آداپتور شبکه مربوطه با عنوان IPv4 Address نمایش داده می شود.
در macOS:
1. به System Preferences بروید.
2. Network را انتخاب کرده و روی شبکه ای که به آن متصل هستید کلیک کنید.
3. آدرس IP شما در آنجا نمایش داده می شود.
در لینوکس:
1. Terminal را باز کنید.
2. برای ورژن های های قدیمی تر، دستور `ifconfig` و در ورژن های جدیدتر، دستور `ip addr` را تایپ نمایید.
3. آدرس IP شما در زیر رابط شبکه مربوطه نمایش داده می شود.
در دستگاه های موبایل:
1. به تنظیمات Wi-Fi بروید.
2. بسته به نوع دستگاه، ممکن است نیاز باشد روی شبکه ای که به آن متصل هستید ضربه بزنید تا جزئیاتی مانند آدرس IP را مشاهده نمایید.
برای مشخص کردن پورت های TCP مورد استفاده توسط دستگاه می توانید از ابزارهای شبکه یا خط فرمان (command-line) کمک بگیرید. این ابزارها به شما کمک کرده تا مشخص کنید کدام پورت ها باز و در حال استفاده هستند. این موضوع برای عیب یابی شبکه یا پیکربندی تنظیمات فایروال بسیار مفید می باشد. به یاد داشته باشید که دانستن آدرس TCP/IP برای انجام وظایف مختلف شبکه، از تنظیم شبکه خانگی تا عیب یابی مشکلات اتصال، بسیار مهم است.
تصویر(5)
آیا بسته های داده شما امن هستند؟
زمانی که بسته ها بین دستگاه ها رد و بدل می شوند، در معرض خطر شنود قرار می گیرند. به همین دلیل، توصیه می شود رمزنگاری انجام دهید و چنانچه قصد ارسال پیام های مهم و محرمانه دارید، به هیچ عنوان از شبکه های Wi-Fi عمومی استفاده نکنید. گاهی رمزگذاری نیز کافی نبوده و باید اقدامات دیگری انجام دهید. در ادامه راهکارهای لازم ذکر شده اند:
1. استفاده از سرویس مانیتورینگ
نظارت سیستماتیک بر شبکه برای هرگونه فعالیت غیرمعمول، می تواند احتمال حملات سایبری را کاهش دهد. علاوه بر این، مانیتورینگ TCP از یک پروتکل بسیار تخصصی برای بررسی اتصال و شناسایی مشکلات ارتباطی در ماشین های شبکه استفاده می کند. در نتیجه، این سیستم می تواند سریعا مشکلات را شناسایی کرده و به کاربر اطلاع دهد.
2. استفاده از پروتکل های HTTPS
پروتکل انتقال ابرمتن امن (HTTPS)، پیشوند سایت های رمزگذاری شده است و نشان دهنده امنیت فعالیت کاربران در آنجا می باشد. وب سایت هایی که با "HTTP" آغاز می شوند، نمی توانند همان سطح حفاظت را ارائه دهند. فعال بودن HTTPS تضمین می کند که داده ها قبل از ارسال به سرور رمزگذاری می شوند. بنابراین برای جلوگیری از شنود بسته ها، بهتر است به وب سایت هایی که با "HTTPS" شروع می شوند مراجعه کنید.
تصویر(6)
3. استفاده از DNS های خصوصی
راهکار مهم دیگر برای تامین امنیت داده ها DNS خصوصی می باشد. امروزه استفاده از DNS عمومی خطرات زیادی دارد. به کمک DNS خصوصی، اطلاعات کاربران در برابر حملات سایبری ایمن تر خواهند بود زیرا می توان از TLS و HTTPS استفاده نمود. این پروتکل ها هر درخواستی که سرور دی ان اس ارسال می کند را رمزگذاری کرده و به عنوان DoH یا DNS over HTTPS و TLS یا DoT DNS over شناخته می شوند.
تصویر(7)
مزایای مدل TCP/IP
- این امکان را فراهم می کند که دستگاه های مختلف به هم متصل شوند.
- ارتباطات میان پلتفرمی بین شبکه های متنوع را ممکن می سازد.
- از پروتکل های مختلف برای مسیریابی پشتیبانی می کند.
- امکانات زیادی برای مقیاس پذیری ارائه می دهد که می توانید شبکه ها را به آسانی و بدون مشکل اضافه کنید.
- برای شناسایی دستگاه ها، به آنها آدرس IP اختصاص می دهد.
- به سیستم عامل وابسته نیست.
- هیچ کس مالک TCP/IP نیست، بنابراین همه می توانند از آن استفاده کنند.
- ارتباط قابل اعتمادی از طریق ارسال مجدد بسته های داده در صورت گم شدن، فراهم نموده و از یکپارچگی داده ها اطمینان حاصل می کند.
- امکان تشخیص و اصلاح خطا را فراهم نموده که به افزایش قابلیت اطمینان انتقال داده کمک می کند.
معایب مدل TCP/IP
- جایگزینی پروتکل ها در TCP/IP کار ساده ای نیست.
- مفاهیم خدمات، پروتکل ها و رابط ها شفاف نبوده و ممکن است دسته بندی فناوری های جدید دشوار باشد.
- این پروتکل ها مناسب شبکه های بزرگ بوده و برای شبکه های کوچک (PAN یا LAN) توصیه نمی شوند.
- اگر ایمن سازی درست انجام نشود، مستعد آسیب پذیری های امنیتی بوده و به همین دلیل استفاده از رمزگذاری و سایر اقدامات مشابه، ضروری می باشد.
تصویر(8)
تفاوت TCP و UDP
تفاوت TCP و UDP چیست؟ تفاوت های زیادی بین پروتکل کنترل انتقال (TCP) و پروتکل دیتاگرام کاربر (UDP) وجود دارد:
- TCP یک پروتکل اتصال گرا است، در حالی که UDP بدون اتصال عمل می کند. پروتکل TCP بر خلاف UDP برای شروع و تکمیل انتقال داده به یک ارتباط فعال نیاز دارد و این مورد یک تفاوت TCP و UDP به حساب می آید.
- تفاوت TCP و UDP در بازیابی بسته های گم شده می باشد. پروتکل TCP می تواند بسته های گم شده را با درخواست ارسال مجدد بازیابی کند، در حالی که UDP امکان بازیابی آنها را ندارد.
- پروتکل TCP به مراتب کندتر از UDP می باشد زیرا جهت اطمینان از فعال بودن اتصال و آمادگی مبدا برای دریافت پیام، گزارش تحویل و غیره، نیاز به تاییدیه دارد که همین مورد زمان بر می باشد. در مقابل، UDP تنها ارسال را انجام داده و نیاز به تایید کردن مراحل ندارد. در نتیجه سرعت نیز یک تفاوت TCP و UDP به حساب می آید.
- پروتکل TCP بسته ها را به صورت یکپارچه محافظت می کند اما این ویژگی در UDP وجود ندارد.
- پروتکل TCP پیام ها را به صورت مرتب شده تحویل می دهد، در حالی که UDP این قابلیت را ندارد.
- تفاوت TCP و UDP در این است که TCP تضمین می کند که داده ها به گیرنده تحویل داده می شوند، در حالی که UDP چنین تضمینی ندارد.
- TCP قادر به شناسایی و اصلاح خطاهای احتمالی است. در مقابل، مکانیزم شناسایی خطای UDP ساده تر و محدودتر بوده و هیچ تایید یا گزارشی در خصوص تحویل داده ارائه نمی دهد.
- سرعت پروتکل TCP مشکلات مربوط به تاخیر را برطرف نکرده اما UDP آنها را رفع می کند.
- پروتکل TCP از broadcast پشتیبانی نمی کند، در حالی که UDP این کار را انجام می دهد زیرا نیازی به تایید ندارد.
- کارایی پروتکل TCP آن را برای اتصالاتی مانند HTTP، FTP، IMAP، SSH، SMTP که به یکپارچگی کامل داده ها و حفظ اطلاعات نیاز دارند، ایده آل می سازد.
- UDP برای برنامه هایی مانند پخش زنده ویدیو، مکالمه اینترنتی یا بازی های آنلاین که به سرعت بالا نیاز دارند و از دست دادن اطلاعات در آنها اهمیتی ندارد، بسیار مناسب است.
مقایسه TCP و HTTP
پروتکل کنترل انتقال (TCP) و پروتکل انتقال ابرمتن (HTTP) نیز از نظر عملکرد با یکدیگر متفاوت هستند:
- TCP برای برقراری ارتباط یا یک سشن بین دو دستگاه (کلاینت و سرور) استفاده می شود. در مقابل، HTTP جهت دسترسی به داده های صفحات و محتوای سایت ها از یک وب سرور کاربرد دارد. HTTP یک پروتکل کلاینت-سرور است که در آن درخواست ها از سمت گیرنده (مانند مرورگر) آغاز می شوند.
- TCP یک پروتکل انتقال داده است. HTTP از TCP برای انتقال داده ها استفاده می نماید.
- TCP از آدرس IP استفاده می کند اما HTTP از هایپرلینک ها که به آنها URL نیز گفته می شود، بهره می برد.
- TCP اتصالگرا است، در حالی که HTTP بدون وضعیت یا stateless بوده اما بدون سشن یا sessionless نیست.
- TCP به احراز هویت (TCP-AO) نیاز دارد، در حالی که HTTP این گونه نیست.
- فرآیند TCP شامل یک three-way handshake است که زمان بر می باشد. HTTP ارتباط یک طرفه دارد. پروتکل TCP از HTTP کندتر است.
- پروتکل TCP از پورت های مختلف (80، 8000، 8080 و غیره) استفاده می کند، در حالی که HTTP معمولا از پورت 80 می گذرد.
جمع بندی
انتخاب پروتکل سازگار برای شبکه، نیازمند درک کارایی و پتانسیل آنها می باشد. در بسیاری از موارد، این فناوری ها مکمل یکدیگر هستند. پروتکل TCP به صورت مستقل یا ترکیبی، یک پروتکل کارآمد با قابلیت های مفید برای اینترنت و شبکه ها است.