TCP (Transmission Control Protocol) چیست و چگونه کار میکند ؟
نویسنده :
اکبر اصغری
- انتشار :
یک سال قبل
- آخرین ویرایش :
یک سال قبل
اینترنت یک اختراع شگفتانگیز است، اما فناوریهای مختلفی وجود دارد که ارزش دانستن پشت آن را دارد. صرفاً به این دلیل که بدون آنها، اینترنت و بسیاری از شبکه های دیگر به اندازه امروز کارآمد و لذت بخش نخواهند بود.
TCP/IP چیست ؟
TCP و IP دو پروتکل ارتباطی متفاوت هستند که عملکرد یکدیگر را تکمیل می کنند.
پروتکل اینترنت (Internet Protocol) یا IP بسته های داده (شامل مسیرها و آدرس ها) را بین یک منبع (دستگاه یا برنامه) و مقصد آنها تحویل می دهد. این اطمینان حاصل می کند که آن بسته ها به مقصد مناسب می رسند. قوانین و قالبهای برنامهها و دستگاهها را برای برقراری ارتباط و تبادل آن بستههای داده در یک شبکه خاص یا در شبکههای مختلف متصل تعریف میکند.
پروتکل کنترل انتقال (transmission control protocol) یا TCP داده ها را به شیوه ای خاص سازماندهی می کند تا از آنها در هنگام تبادل بین مشتری و سرور محافظت کند. این یک پروتکل بسیار مورد استفاده در شبکه ها توسط انواع دستگاه ها و برنامه ها است. TCP از یکپارچگی داده ها در برابر ارسال و تا تحویل آنها محافظت می کند.
توسعه این پروتکل ها (TCP/IP) در دهه 1970 اتفاق افتاد. در آن دهه، ARPANET واقعاً محبوب شد، که انگیزه ایجاد شبکههای بیشتری برای اتصال سازمانهای مختلف شد. از آنجایی که آن شبکه ها از پروتکل متفاوتی برای ارسال داده ها و دریافت آن استفاده می کردند، نمی توانستند زیاد از آن استفاده کنند. ایجاد فناوری که بتواند به عنوان یک واسطه برای اجازه دادن به چنین ارتباطاتی عمل کند، به یک نیاز تبدیل شد.
ترکیب TCP و IP و پذیرش رسمی آن به عنوان پروتکل استاندارد -در سال 1983 برای ARPANET راه حل بود. مهم نیست که شبکهها از چه پروتکلهای دیگری استفاده میکنند، اگر از TCP/IP پشتیبانی میکردند، میتوانستند با تمام شبکههای TCP/IP موجود ارتباط برقرار کنند.
دو فناوری TCP و IP به پایگاه فنی اینترنت مدرن برای کار و رشد تبدیل شدند. در واقع، در اینجا کلمه اینترنت به معنای "شبکه به هم پیوسته شبکه ها" ظاهر شد.
چگونه کار میکند ؟
پروتکل IP از طریق قوانین و منابع مختلف مانند آدرس های IP کار می کند. برای اتصال به اینترنت، دامنهها و دستگاهها یک آدرس IP منحصربفرد دریافت میکنند تا شناسایی شوند و اجازه برقراری ارتباط (تبادل داده) با سایر دستگاههای متصل را بدهند.
انتقال داده در سراسر شبکه ها به قطعات (packet) جدا شده است. هر قطعه اطلاعات IP (آدرس IP) را دریافت می کند تا روترها آن را بخوانند و بسته را به مقصد صحیح ارسال کنند. پس از رسیدن به آنجا، نحوه مدیریت آن بسته ها به نوع پروتکل (معمولاً TCP یا UDP) که با IP ترکیب شده برای انتقال آنها بستگی دارد.
IP یک پروتکل بدون اتصال (Connectionless) است. تمام بسته های داده فقط آدرس دهی می شوند، مسیریابی می شوند و بدون تصدیق از مقصد به مبدا تحویل داده می شوند. این کمبود از طریق پروتکل کنترل انتقال (TCP) برطرف شده است.
TCP انتقال و تحویل بسته های داده در سراسر شبکه را از طریق یک فرآیند خاص ایمن می کند. برای شروع، حتی قبل از شروع انتقال داده ها، اتصال بین منبع و مقصد مورد نیاز است. زیرا TCP یک پروتکل اتصال گرا است. برای اینکه به درستی کار کند، باید این اتصال فعال را تا پایان ارسال و دریافت داده تضمین کند.
هنگامی که ارتباط شروع می شود، TCP پیام های فرستنده را می گیرد و آنها را به بسته ها (packet) خرد می کند. برای محافظت از یکپارچگی پیام ها، TCP هر بسته را شماره گذاری می کند. سپس بسته ها برای انتقال به لایه IP آماده می شوند. آنها برای گذشتن در مسیریاب ها و دروازه های (Gateway) مختلف شبکه برای رسیدن به مقصد اعزام خواهند شد. مهم نیست که همه بسته ها بخشی از یک پیام باشند، آنها می توانند مسیرهای مختلفی برای رسیدن به یک مقصد داشته باشند.
هنگامی که همه آنها به مقصد خود رسیدند، TCP با کنار هم قرار دادن مجدد همه قطعات (packets) آنها برای تحویل مناسب، اقدام به ساخت مجدد پیام می کند.
اگر شبکه ها با مشکل مواجه شوند، این سناریوی ایده آل می تواند تحت تأثیر قرار گیرد. بسته های داده ممکن است در حین انتقال گم شوند، تکراری یا بی نظم شوند. مزیت این است که عملکرد TCP می تواند چنین مشکلاتی را شناسایی و آنها را برطرف کند. پروتکل میتواند از بستههای گمشده بخواهد که دوباره ارسال شوند تا آنها را دوباره به ترتیب صحیح سازماندهی کند. در صورتی که پیام ها قابل تحویل نباشد، این موضوع به فرستنده (منبع) گزارش می شود.
همانطور که می بینید، اینترنت یک شبکه سوئیچ packet است. تمام داده ها به بسته هایی تقسیم می شوند که از طریق بسیاری از مسیرهای مختلف به طور همزمان ارسال می شوند. هنگامی که آنها در نهایت به مقصد خود رسیدند، توسط TCP دوباره ساخته می شوند. و IP وظیفه ارسال بسته ها به مقصد صحیح را بر عهده دارد.
![](https://api.dnslab.link/Files/GetFile?fileName=04f6c0a4-d609-4680-9552-15185c4665a7.png)
لایه TCP/IP
به روزترین مدل TCP/IP شامل چهار لایه زیر است. همه برای یک هدف، یعنی انتقال داده ها، همکاری می کنند.
Application Layer. این لایه بالایی است و یک رابط برای برنامه ها و سرویس های شبکه برای برقراری ارتباط فراهم می کند. شرکت کنندگان درگیر در یک ارتباط را شناسایی می کند، دسترسی به منابع شبکه و قوانین پروتکل های کاربردی و تعامل خدمات حمل و نقل را تعریف می کند. لایه برنامه شامل تمام پروتکل های سطح بالاتر مانند DNS، HTTP، SSH، FTP، SNMP، SMTP، DHCP و غیره است.
Transport Layer. مقدار داده و نرخ انتقال داده را به درستی مشخص می کند. پیامها را از لایه برنامه (Application Layer) دریافت میکند، آنها را به قطعات تقسیم میکند، آنها را حمل میکند، با دنبالهای مناسب دوباره آنها را میسازد، و مسائل احتمالی را برای تضمین یکپارچگی و تحویل مناسب حل میکند. TCP در این لایه عمل می کند.
Internet Layer. لایه اینترنت که به عنوان لایه IP یا شبکه نیز شناخته می شود (با لایه دسترسی به شبکه اشتباه نشود) وظیفه ارسال بسته ها و اطمینان از انتقال داده ها را تا حد امکان دقیق بر عهده دارد. از آنجایی که جهت و سرعت ترافیک را کنترل می کند، تا حدودی شبیه یک کنترل کننده ترافیک در مسیر است. علاوه بر این، مراحل رویهای و قابلیتهای انتقال توالی دادهها را فراهم میکند. پروتکل های این لایه شامل IPv4، IPv6، ICMP و ARP است.
Network Access Layer. لایه پیوند داده مدل OSI و لایه فیزیکی با هم ترکیب می شوند تا لایه دسترسی به شبکه یا Network Access Layer را تشکیل دهند. این فرآیندی را که از طریق آن داده ها در واقع از طریق شبکه منتقل می شوند را تشریح می کند. همچنین نحوه تعامل اجزای سخت افزاری که به طور فیزیکی با یک شبکه تعامل دارند، مانند سیم مسی جفت تابیده، فیبر نوری و کابل کواکسیال، داده ها را از طریق ابزارهای نوری یا الکتریکی منتقل می کنند. لایه دسترسی به شبکه لایه پایینی در مدل TCP/IP است.
تفاوت بین TCP و IP چیست؟
TCP و IP دو پروتکل شبکه کامپیوتری متفاوت هستند. هر تابع در فرآیند انتقال داده، TCP (پروتکل کنترل انتقال) را از IP (پروتکل اینترنت) متمایز می کند. با استفاده از IP، ممکن است متوجه شوید که دادهها به کجا ارسال میشوند (دستگاه شما یک آدرس IP دارد). هنگامی که آن آدرس IP کشف شد، TCP تحویل دقیق داده ها را تضمین می کند. این جفت مجموعه پروتکل TCP/IP را تشکیل می دهند.
به عبارت دیگر، TCP پیام را ارسال و دریافت می کند در حالی که IP آن را مرتب می کند. پروتکل های دیگر مانند UDP (User Datagram Protocol) می توانند داده ها را در سیستم IP بدون استفاده از TCP انتقال دهند، حتی اگر این دو پروتکل معمولاً به عنوان یک جفت در نظر گرفته شوند. اما برای اینکه TCP بتواند داده را تحویل دهد، به یک آدرس IP نیاز دارد. بنابراین یکی دیگر از تمایز بین IP و TCP این است.
آیا بسته های داده امن هستند؟
پاسخ منفی است. چرا؟ هنگامی که بسته ها بین دستگاه ها ارسال می شوند، بسیار مستعد رهگیری توسط دیگران هستند. بنابراین، به همین دلیل است که بهتر است هنگام انتقال پیام هایی که باید مخفی بماند، از رمزگذاری استفاده کنید و از شبکه های Wi-Fi عمومی دوری کنید. اما متأسفانه گاهی اوقات این کافی نیست، به همین دلیل است که باید اقدامات دیگری انجام دهید. در اینجا به چند مورد اشاره میکنیم:
- از سرویس مانیتورینگ استفاده کنید
نظارت سیستماتیک شبکه شما برای هرگونه فعالیت غیرمعمول. این باعث کاهش آسیب در معرض حملات سایبری می شود. علاوه بر این، مانیتورینگ TCP، که یکی از ویژگی های سرویس مانیتورینگ است، از یک پروتکل بسیار تخصصی برای بررسی اتصال و یافتن مشکلات ارتباطی در ماشین های شبکه استفاده می کند. در نتیجه می تواند به سرعت مشکلات را شناسایی کرده و به شما هشدار دهد.
- VPN
VPN یک راه عالی برای تضمین رمزگذاری ایمن داده های شما و محافظت از بسته های شما در سراسر ترافیک شبکه است. یک VPN را می توان به صورت دستی پیکربندی یا خریداری کرد. علاوه بر این، VPN دارای مزایای اضافی متعددی است. به عنوان مثال، رفع انسداد وبسایت، مخفی کردن مکان، و مخفی کردن صفحاتی که مرور میکنید تا توسط ISP (ارائهدهنده خدمات اینترنتی) شما دیده نشوند.
- از پروتکل های HTTPS استفاده کنید
Hypertext Transfer Protocol Secure (HTTPS)، پیشوند وب سایت های رمزگذاری شده، نشان دهنده امنیت فعالیت کاربر در آنجا است. وبسایتهایی که با «HTTP» شروع میشوند، قادر به ارائه همان سطح حفاظت نیستند. اتصالات لایه سوکت ایمن (SSL) با علامت "s" در HTTPS نشان داده می شود که مخفف Secure است. انجام این کار تضمین می کند که داده ها قبل از تحویل به سرور رمزگذاری می شوند. بنابراین، برای جلوگیری از شنود بسته ها، ترجیحاً فقط از وب سایت هایی بازدید کنید که با "HTTPS" شروع می شوند.
- از DNS خصوصی استفاده کنید
یکی دیگر از راه های مهم برای ایمن سازی داده های خود استفاده از DNS خصوصی است. امروزه استفاده از DNS عمومی خطرات زیادی دارد. با DNS خصوصی، در برابر حملات سایبری ایمن تر خواهید بود. چرا؟ زیرا می توانید از امنیت لایه حمل و نقل (TLS) و پروتکل امن انتقال (HTTPS) استفاده کنید. این پروتکلها هرگونه درخواست DNS ارسال شده را رمزگذاری میکنند و DNS روی این پروتکلها با نامهای DoH (DNS از طریق HTTPS) و DoT (DNS روی TLS) شناخته میشوند.
مزایای TCP/IP
امکان اتصال انواع مختلف دستگاه ها را فراهم می کند.
ارتباطات بین پلتفرمی را در بین شبکههای متنوع ممکن میسازد.
از پروتکل های مختلف برای مسیریابی پشتیبانی می کند.
امکانات بالایی از مقیاس پذیری را ارائه می دهد. می توانید بدون ایجاد مشکل، شبکه ها را اضافه کنید.
آدرس های IP را به دستگاه ها برای شناسایی آنها ارائه می دهد.
مستقل از سیستم عامل است.
این یک پروتکل باز است. کسی مالک آن نیست. همه می توانند از آن استفاده کنند.
معایب TCP/IP
- جایگزینی پروتکل ها در TCP/IP ساده نیست.
- مفاهیم سرویس ها، پروتکل ها و رابط ها را به وضوح تعریف نمی کند. تخصیص یک دسته به فناوری های جدید موجود در شبکه های مدرن می تواند دشوار باشد.
- برای شبکه های گسترده کار می کند. برای کوچک (PAN یا LAN) مناسب نیست.
تفاوت TCP و UDP
تفاوت های واضحی بین پروتکل کنترل انتقال (TCP) و پروتکل دیتاگرام کاربر (UDP) وجود دارد.
- TCP اتصال گرا است، در حالی که UDP بدون اتصال است. TCP برای شروع و تکمیل انتقال داده به یک اتصال فعال نیاز دارد، در حالی که UDP اینطور نیست.
- TCP می تواند بسته های از دست رفته را با نیاز به ارسال مجدد بازیابی کند. UDP نمی تواند آنها را بازیابی کند.
- TCP بسیار کندتر از UDP است زیرا فرآیند آن تقریباً در هر مرحله شامل تأیید می شود. برای تضمین فعال بودن اتصال و آماده بودن منبع برای دریافت پیام، تأیید تحویل و غیره. UDP فقط ارسال میکند و از این مراحل تأیید اجتناب میکند.
- TCP از یکپارچگی بسته ها به طور موثر محافظت می کند. محافظت از این نقطه قوت UDP نیست. مکانیسم آن برای بررسی یکپارچگی (checksum) دقیق تر است.
- TCP پیام های مرتب شده را (با جمع آوری مجدد آنها بر اساس یک دنباله عددی) تحویل می دهد. UDP این تابع را ارائه نمی دهد.
- TCP تحویل داده ها را به گیرنده خود تضمین می کند. UDP ندارد.
- TCP خطاهای احتمالی را بهتر شناسایی و رفع می کند. همچنین در صورت عدم امکان تحویل، تأییدیه تحویل را ارائه می دهد یا مشکل را گزارش می کند.
- مکانیسم UDP برای تشخیص خطا (checksum) ساده تر و محدودتر است. تحویل را تأیید یا اطلاع رسانی نمی کند.
- سرعت TCP تأخیر را حل نمی کند. UDP واقعا این کار را انجام می دهد.
- TCP از پخش (ارسال به چند نفر بصورت همزمان) پشتیبانی نمی کند، در حالی که UDP واقعاً پشتیبانی می کند زیرا نیازی به پاسخ یا تأیید ندارد.
- کارایی TCP آن را برای برنامههایی که نیاز به یکپارچگی کامل دادهها، بدون از دست دادن دیتا (HTTP، FTP، IMAP، SSH، SMTP) دارند، ایدهآل میکند.
- UDP برای برنامه هایی که به سرعت بالا نیاز دارند و می توانند از دست دادن داده ها را تامین کنند، بسیار خوب عمل می کند. به برنامه های بلادرنگ مانند پخش زنده ویدیو، VoIp یا بازی آنلاین فکر کنید.
تفاوت TCP و HTTP
بین TCP و HTTP هم تفاوت های بسیاری وجود دارد از جمله :
- TCP برای تنظیم ارتباط یا یک نشست (Session) بین دو ماشین (مشتری و سرور) استفاده می شود. در مقابل، HTTP برای دسترسی به داده های صفحات وب و دسترسی به محتوا (وب سایت ها) از یک وب سرور استفاده می شود. این یک پروتکل مشتری-سرور است. درخواست ها مانند یک مرورگر با گیرنده شروع می شوند.
- TCP یک پروتکل انتقال داده است. HTTP از TCP برای انتقال داده استفاده می کند.
- TCP از آدرسهای IP استفاده میکند، در حالی که HTTP از لینکهایی استفاده میکند که به عنوان URL نیز شناخته میشوند.
- TCP متصل گرا است، در حالی که HTTP بدون حالت است اما بدون جلسه (Session) نیست.
- TCP نیاز به احراز هویت (TCP-AO) دارد. HTTP ندارد.
- فرآیند TCP شامل یک دست دادن سه طرفه است و این مدتی طول می کشد. HTTP یک ارتباط یک طرفه است. TCP کندتر از HTTP است.
- TCP از پورت های مختلف (80، 8000، 8080 و غیره) استفاده می کند. HTTP معمولا از پورت 80 استفاده می کند.
نتیجه
پروتکل های مختلفی وجود دارد، و درک پتانسیل آنها برای انتخاب پروتکلی که بیشتر با نیازهای شبکه شما مطابقت دارد، اساسی است. در بسیاری از موارد، این فناوری ها دیگران را تحسین می کنند. TCP، به طور مستقل و همراه با IP، به طور کلی یک پروتکل کارآمد با عملکرد مفید برای اینترنت و شبکه ها است. آنها را امتحان کنید و بهترین نتیجه را از آنها بگیرید!