TCP یا “پروتکل کنترل انتقال”، یکی از ارکان اساسی اینترنت است که عملکرد روان و بدون اختلال آن را ممکن میسازد. این پروتکل تضمین میکند که دادهها با دقت و بهترتیب درست از میان شبکهها عبور کرده و به مقصد نهایی برسند. در این مقاله، نقش حیاتی TCP بررسی شده و توضیح داده خواهد شد که چگونه این فناوری، بهعنوان ستون فقرات اینترنت، زیرساخت دنیای دیجیتال را پشتیبانی کرده و ارتباطات جهانی را ممکن میسازد.
پروتکل TCP/IP چیست؟
TCP و IP دو پروتکل ارتباطی مستقل هستند که عملکرد یکدیگر را تکمیل میکنند.
پروتکل اینترنت (IP) وظیفه ارسال، مسیریابی و آدرسدهی بستههای داده را از مبدا به مقصد بر عهده دارد. این پروتکل اطمینان حاصل میکند که بستههای داده به مقصد صحیح میرسند. IP قواعد و قالبهایی را تعریف مینماید تا نرمافزارها و دستگاهها بتوانند در یک شبکه خاص یا میان شبکههای متصل بههم، با یکدیگر ارتباط برقرار کرده و بستههای داده را مبادله کنند.
پروتکل کنترل انتقال (TCP) دادهها را بهنحوی خاص سازماندهی میکند تا هنگام تبادل میان یک سرویسگیرنده (کلاینت) و یک سرویسدهنده (سرور)، از آنها محافظت گردد. این پروتکل در تمامی انواع دستگاهها و برنامههای موجود در شبکه، بهطور گستردهای استفاده میشود. TCP از صحت و یکپارچگی دادهها، از لحظه ارسال تا هنگام تحویل، محافظت میکند.
توسعه این دو پروتکل (TCP/IP) به دهه ۱۹۷۰ بازمیگردد. در آن دوران، شبکه ARPANET محبوبیت زیادی پیدا کرده بود و همین امر موجب شد تا سازمانهای مختلف اقدام به ایجاد شبکههای جدید جهت برقراری ارتباط با یکدیگر کنند. با توجه به اینکه هر شبکه از پروتکل مخصوص خود برای ارسال و دریافت داده استفاده میکرد، امکان ارتباط میان آنها وجود نداشت. در نتیجه، نیاز به یک فناوری احساس میشد که بتواند ارتباط بین شبکهها را برقرار کند.
ترکیب TCP و IP و پذیرش رسمی آن بهعنوان پروتکلی استاندارد برای ARPANET در سال ۱۹۸۳، راهحلی اساسی جهت رفع این مشکل فراهم کرد. مهم نبود که هر شبکه از چه پروتکلهای دیگری استفاده میکرد؛ بهمحض پشتیبانی از پروتکل TCP/IP، قادر بود با تمامی شبکههای مبتنی بر آن ارتباط برقرار کند.
دو فناوری TCP و IP، پایه فنی لازم را برای عملکرد و رشد اینترنت مدرن فراهم کردند. در واقع، همینجا بود که واژه “اینترنت” پدید آمد و به معنای «شبکهای از شبکههای بههمپیوسته» است.

تصویر(۱)
پروتکل TCP/IP چگونه کار میکند؟
پروتکل IP توسط مجموعهای از قوانین و منابع، مانند آدرس های IP عمل میکند. برای اتصال به اینترنت، هر دامنه یا دستگاه باید یک نشانی IP منحصربهفرد داشته باشد تا بتواند شناسایی شود و با دیگر دستگاههای متصل به شبکه ارتباط برقرار نماید.
دادهها هنگام انتقال در شبکهها، به قطعات کوچکتری با نام “بسته” (packet) تقسیم میشوند. هر بسته داده بههمراه اطلاعات IP ارسال میشود تا روترها بتوانند آن را خوانده و به مقصد صحیح هدایت کنند. زمانی که بستهها به مقصد برسند، نحوه مدیریت آنها بستگی به نوع پروتکلی دارد که همراه IP برای حمل آنها استفاده شده است.
IP یک پروتکل بدوناتصال (connectionless) است. تمام بستههای داده فقط آدرسدهی، مسیریابی و ارسال میشوند؛ بدون اینکه تأییدی از سمت مقصد برای مبدأ ارسال کند. این کاستی با استفاده از پروتکل TCP جبران میشود.
TCP، انتقال ایمن و تحویل صحیح بستههای داده در سراسر شبکه را از طریق یک فرآیند خاص تضمین میکند. پیش از آنکه انتقال داده آغاز گردد، باید میان مبدا و مقصد، یک اتصال ایجاد شود زیرا TCP یک پروتکل مبتنیبر اتصال (connection-oriented) می باشد. برای عملکرد صحیح، لازم است این اتصال فعال تا پایان فرآیند ارسال و دریافت داده حفظ شود.
پس از آغاز ارتباط، TCP پیامهای ارسالکننده را دریافت کرده و به چندین بسته تقسیم میکند. برای محافظت از یکپارچگی پیامها، TCP به هر بسته یک شماره اختصاص میدهد. سپس بستهها برای انتقال به لایه IP آماده میشوند. این بستهها ممکن است از مسیرهای مختلفی در میان روترها و دروازههای (gateways) شبکه عبور کنند تا به مقصد برسند. با اینکه تمامی بستهها متعلق به یک پیام هستند، ممکن است هر کدام مسیر متفاوتی را طی کنند.
هنگامی که تمام بستهها به مقصد برسند، TCP وظیفه دارد با کنار هم قراردادن مجدد آنها، پیام اصلی را بازسازی کرده و بهشکل مناسب تحویل دهد.
با این حال، بستههای داده ممکن است در مسیر گم شده، تکراری شوند یا از ترتیب اولیه خارج گردند. مزیت پروتکل TCP/IP در این است که قابلیت تشخیص و اصلاح چنین مشکلاتی را دارد. این پروتکل میتواند درخواست ارسال مجدد بستههای گمشده را ارسال کرده و آنها را در ترتیب صحیح بازآرایی کند. در صورتی که پیامها قابل تحویل نباشند، این موضوع به مبدأ گزارش داده میشود.

تصویر(۲)
اینترنت یک شبکه مبتنی بر بسته (packet-switched) است. تمامی دادهها به بستههایی تقسیم شده و از مسیرهای گوناگون و بهصورت همزمان ارسال میشوند. پس از رسیدن به مقصد، TCP آنها را مجدداً ترکیب کرده و پیام را بازسازی میکند. IP نیز مسئول ارسال بستهها به مقصد صحیح است.
در مدل بروز پروتکل TCP/IP، چهار لایه اصلی تعریف شدهاند که همگی در راستای یک هدف مشترک یعنی “انتقال دادهها” همکاری میکنند.
لایههای مدل پروتکل TCP/IP
در ادامه با لایه های مختلف مدل پروتکل TCP/IP آشنا خواهید شد:
۱. لایه اپلیکیشن
Application layer، بالاترین لایه در مدل TCP/IP است و واسطی را برای ارتباط میان نرمافزارها و خدمات شبکه فراهم میکند. لایه اپلیکیشن مسئول شناسایی طرفین درگیر در ارتباط، تعیین نحوه دسترسی به منابع شبکه و تعریف قواعد تعامل میان پروتکلهای کاربردی و خدمات انتقال داده می باشد.
این لایه شامل تمام پروتکلهای سطح بالا مانند موارد زیر است:
-
DNS (سامانه نام دامنه)
-
HTTP (پروتکل انتقال ابرمتن)
-
SSH (پوسته امن)
-
FTP (پروتکل انتقال فایل)
-
SNMP (پروتکل ساده مدیریت شبکه)
-
SMTP (پروتکل انتقال ایمیل ساده)
-
DHCP (پروتکل پیکربندی پویای میزبان)
۲. لایه انتقال
این لایه میزان داده و سرعت انتقال آن را کنترل میکند تا از ارسال صحیح و بدون خطا اطمینان حاصل شود. لایه انتقال، پیامهای دریافتی از لایه اپلیکیشن را به بستههای کوچکتر تقسیم کرده و آنها را به مقصد ارسال مینماید، سپس در مقصد مجددا آنها را با ترتیب صحیح بازسازی میکند. در صورت بروز اشکال حین انتقال، برای حفظ یکپارچگی دادهها و تحویل دقیق آنها، اقدامات اصلاحی انجام میشود. پروتکل TCP نیز در همین لایه فعالیت میکند.
۳. لایه اینترنت
این لایه که با نام IP یا شبکه نیز شناخته میشود، مسئول ارسال بستهها و تضمین انتقال دقیق دادهها است. از آنجا که این لایه وظیفه هدایت ترافیک و مدیریت سرعت آن را برعهده دارد، میتوان آن را به یک کنترلکننده ترافیک در جاده تشبیه کرد. همچنین این لایه، مراحل و عملکردهای لازم برای انتقال توالیهای داده را فراهم میکند. پروتکلهای این لایه عبارتند از:
-
IPv4
-
IPv6
-
ICMP (پروتکل کنترل پیام اینترنتی)
-
ARP (پروتکل تفکیک آدرس)

تصویر(۳)
۴. لایه دسترسی به شبکه
Network access layer، ترکیبی از ۲ لایه پیوند داده و فیزیکی در مدل OSI است و بهعنوان پایینترین لایه در مدل پروتکل TCP/IP شناخته میشود. لایه دسترسی به شبکه، نحوه انتقال واقعی دادهها در بستر فیزیکی شبکه را مشخص میکند و شامل نحوه عملکرد سختافزارهایی مانند کابل های زوج به هم تابیده (twisted pair)، فیبر نوری یا کابل کواکسیال میگردد که مستقیماً با شبکه در ارتباط هستند. در این لایه، دادهها از طریق سیگنالهای الکتریکی یا نوری منتقل میشوند و پایه فیزیکی ارتباطات شبکه را شکل میدهند.
درک فرآیند TCP Handshake
فرآیند TCP Handshake کلید برقراری ارتباط مطمئن میان دو دستگاه است. این فرآیند که با نام Three-way Handshake شناخته میشود، اطمینان حاصل میکند که هر دو طرف (فرستنده و گیرنده) پیش از آغاز تبادل داده آماده هستند. مراحل این فرآیند بهشرح زیر است:
-
مرحله ۱: SYN (همگامسازی): فرآیند با ارسال یک بسته SYN از سمت سرویسگیرنده (کلاینت) به سرویسدهنده (سرور) آغاز میشود که حاوی درخواست آغاز ارتباط است. این بسته شامل یک عدد توالی اولیه نیز می باشد که نقطه شروع برای انتقال داده را مشخص میکند.
-
مرحله ۲: SYN-ACK (تأیید همگامسازی): سرور با ارسال یک بسته SYN-ACK پاسخ میدهد؛ این بسته، درخواست کلاینت را تأیید میکند و حاوی عدد توالی سرور نیز می باشد. این مرحله بهمعنای آمادگی سرور برای دریافت دادهها است.
-
مرحله ۳: ACK (تایید نهایی): کلاینت با ارسال بسته ACK پاسخ سرور را تایید مینماید. در این مرحله، فرآیند Handshake تکمیل شده و یک اتصال پایدار برقرار میشود که پس از آن میتوان تبادل داده را آغاز کرد.

تصویر(۴)
تفاوت TCP و IP
TCP و IP دو پروتکل شبکه هستند که عملکرد متفاوتی در فرآیند انتقال داده دارند. پروتکل IP وظیفه دارد مقصد داده را تعیین نماید، درحالیکه TCP تضمین میکند که دادهها بهدرستی تحویل داده شوند. این دو در کنار یکدیگر مجموعه پروتکل TCP/IP را تشکیل میدهند.
برای مثال، IP همانند کسی است که بستههای پستی را دستهبندی و به آدرس مربوطه میفرستد، در حالیکه TCP مسئول ارسال و دریافت صحیح آن بستهها است.
گرچه این دو معمولاً بهصورت جفت کاربرد دارند اما پروتکلهای دیگری مانند UDP (پروتکل دیتاگرام کاربر) نیز میتوانند بدون استفاده از TCP، دادهها را در بستر IP منتقل کنند. با اینحال، برای آنکه TCP بتواند دادهای را تحویل دهد، به یک آدرس IP نیاز دارد.
پیدا کردن آدرس پروتکل TCP/IP
برای یافتن آدرس پروتکل TCP/IP خود، میتوانید از روشهای سادهای برای هر دو نوع آدرس عمومی (Public IP) و خصوصی (Private IP) استفاده کنید.
آدرس عمومی (Public IP): آدرسی است که دستگاه شما را در اینترنت قابل شناسایی میکند. برای یافتن آن، کافی است در یک موتور جستجو عبارت “?What is my IP address” را جسجو کنید. این آدرس توسط ارائهدهنده خدمات اینترنت (ISP) به شبکه شما اختصاص داده شده است.
آدرس خصوصی (Private IP): این آدرس در شبکه محلی شما استفاده میشود و روش یافتن آن بسته به نوع دستگاه متفاوت است:
-
در ویندوز: خط فرمان (Command Prompt) را باز کرده و دستور ipconfig را تایپ کنید. آدرس IP شما در بخش آداپتور شبکه مربوطه، در مقابل عبارت IPv4 Address نمایش داده میشود.
-
در macOS: وارد بخش System Preferences شوید، سپس روی گزینه Network کلیک کنید. در لیست سمت چپ، شبکهای که هم اکنون به آن متصل هستید را انتخاب نمایید. آدرس IP شما در قسمت جزئیات اتصال نمایش داده میشود.
-
در لینوکس: ترمینال را باز کرده و دستور ifconfig یا ip addr را وارد کنید. آدرس IP در مقابل Network Interface مرتبط درج شده است.
-
در موبایل:
به تنظیمات Wi-Fi بروید و با انتخاب شبکه متصل، جزئیاتی نظیر آدرس IP را مشاهده کنید.

تصویر(۵)
برای مشاهده پورتهای دستگاه شما، به گامهای فنیتری نیاز است. میتوان از ابزارهای شبکه یا دستورات خط فرمان برای فهرستکردن پورتهای فعال استفاده کرد. این ابزارها به شناسایی پورتهای باز کمک میکنند که در عیبیابی شبکه یا پیکربندی فایروال بسیار مفید است.
یافتن آدرس پروتکل TCP/IP برای اکثر وظایف شبکهای، از راهاندازی شبکه خانگی گرفته تا رفع مشکلات اتصال، اهمیت دارد. در حالی که پروتکل TCP/IP برای اطمینان از ارتباطات مطمئن طراحی شده است اما ساختار قابلپیشبینی آن میتواند مورد سوءاستفاده مهاجمان قرار گیرد. در ادامه، برخی از رایجترین حملات مبتنی بر TCP که آسیبپذیریهای این پروتکل را هدف قرار میدهند، معرفی میشوند:
-
SYN Flood: در این نوع حمله DoS، مهاجم سیلی از درخواستهای SYN را به سمت یک سرور ارسال مینماید اما هرگز فرآیند Handshake را کامل نمیکند. در نتیجه منابع سیستم اشباع شده و کاربران واقعی قادر به برقراری ارتباط نخواهند بود.
-
ربودن سشن TCP یا TCP Session Hijacking: با پیشبینی یا شناسایی شمارههای توالی TCP، مهاجم قادر است کنترل یک ارتباط فعال بین دو دستگاه را در دست بگیرد و در حین انتقال، اطلاعات حساس را سرقت کرده یا آنها را دستکاری کند.
-
تزریق بسته RST یا TCP RST Injection: در این حمله، بسته تقلبی RST به یکی یا هر دو سمت ارتباط ارسال میشود تا دستگاهها به اشتباه تصور کنند که سشن باید خاتمه یابد. این حمله میتواند بدون دسترسی محتوای سشن، ارتباط را مختل کند.
-
حملات Man-in-the-Middle: از آنجا که ترافیک پروتکل TCP/IP بهطور پیشفرض رمزنگاری نشده است، اگر مهاجم به مسیر شبکه دسترسی پیدا کند، میتواند دادههای مبادلهشده میان دو نقطه انتهایی را رهگیری کرده، مشاهده نموده یا تغییر دهد.
-
اسکن پورت: مهاجمان با اسکن پورتهای TCP در سیستم هدف، سرویسهای فعال یا با ضعف امنیتی را شناسایی میکنند. این فرآیند اغلب بهعنوان گام اولیه برای اجرای حملات پیچیدهتر و نفوذهای بعدی استفاده می گردد.

تصویر(۶)
اقدامات حفاظتی برای ایمنسازی پروتکل TCP/IP
زمانی که بستهها میان دستگاهها ارسال میشوند، بهشدت مستعد رهگیری توسط دیگران هستند. به همین دلیل، استفاده از رمزنگاری و عدم اتصال به شبکههای Wi-Fi عمومی هنگام ارسال پیامهای محرمانه، توصیه میگردد. متأسفانه این اقدامات بهتنهایی کافی نیستند. در ادامه، سایر اقدامات حفاظتی ضروری معرفی شدهاند:
-
استفاده از سرویس مانیتورینگ: نظارت مداوم روی شبکه برای شناسایی فعالیتهای غیرعادی، میتواند فاصله زمانی میان نفوذ و شناسایی را کاهش دهد. مانیتورینگ TCP از پروتکلی تخصصی برای بررسی ارتباطات و شناسایی مشکلات ارتباطی در دستگاههای شبکه استفاده میکند. این ابزار میتواند بهسرعت مشکلات را تشخیص داده و هشدارهای لازم را صادر نماید.
-
استفاده از پروتکل HTTPS: پروتکل «HTTP امن» یا HTTPS نشاندهنده رمزنگاری فعالیتهای کاربر در وبسایتها می باشد. حرف “s” در HTTPS مخفف “Secure” بوده که نشاندهنده استفاده از اتصال SSL است. در نتیجه، دادهها پیش از ارسال به سرور، رمزنگاری میشوند. برای جلوگیری از شنود بستهها (packet sniffing)، توصیه میشود تنها از وبسایتهایی استفاده گردد که با HTTPS آغاز شده اند.
-
استفاده از DNS خصوصی: روش مهم دیگر برای افزایش امنیت دادهها، استفاده از DNS خصوصی است. استفاده از DNS عمومی خطرات زیادی دارد. DNS خصوصی با بهرهگیری از پروتکلهای امنیتی مانند TLS (امنیت لایه انتقال) و HTTPS، درخواست های DNS را رمزنگاری میکند. این روشها با نامهای DoH یا DNS over HTTPS و DoT یا DNS over TLS شناخته میشوند.

تصویر(۷)
مقایسه TCP و UDP
تفاوتهای مشخصی میان پروتکل کنترل انتقال (TCP) و پروتکل دیتاگرام کاربر (UDP) وجود دارد که در جدول زیر ذکر شده اند:
|
ویژگی |
TCP |
UDP |
|
نوع ارتباط |
اتصالگرا (Connection-Oriented) |
بدون اتصال (Connectionless) |
|
نحوه انتقال |
نیاز به اتصال فعال پیش از ارسال |
فقط ارسال بدون اتصال قبلی |
|
بازیابی دادههای ازدسترفته |
دارد (با ارسال مجدد) |
ندارد |
|
سرعت انتقال |
کندتر بهدلیل بررسیها و تاییدها |
سریعتر |
|
یکپارچگی داده |
تضمینشده و دقیق |
دقت کمتر |
|
تضمین تحویل داده |
دارد |
ندارد |
|
ترتیب بستهها |
بازسازیشده بر اساس توالی عددی |
تضمینی ندارد |
|
تشخیص و رفع خطا |
دقیق و گزارشدهی شده |
ساده و محدود |
|
پشتیبانی از Broadcast |
ندارد |
دارد |
|
مناسب برای |
برنامههای حساس به از دسترفتن داده (HTTP، FTP، SSH) |
برنامههای آنلاین با امکان تحمل خطا (پخش زنده، VoIP، بازیهای آنلاین) |
جدول(۱)
تصویر(۸)
مقایسه TCP و HTTP
پروتکل کنترل انتقال (TCP) و پروتکل انتقال ابرمتن (HTTP) نیز تفاوتهایی با یکدیگر دارند:
|
ویژگی |
TCP |
HTTP |
|
نوع عملکرد |
ایجاد ارتباط بین دو دستگاه |
درخواست داده از وب سرور |
|
هدف اصلی |
انتقال داده |
دسترسی به محتوای صفحات وب |
|
وابستگی |
مستقل؛ پایه انتقال برای پروتکلهای دیگر |
برای انتقال به TCP وابسته است |
|
آدرسدهی |
مبتنی بر آدرس IP |
مبتنی بر URL |
|
وضعیت اتصال |
اتصالگرا |
بیحالت (Stateless) |
|
نیاز به احراز هویت |
دارد (TCP-AO) |
ندارد |
|
فرآیند آغاز |
Handshake سهمرحلهای (زمانبر) |
ارتباط یکطرفه و سریعتر |
|
پورتها |
متنوع (۸۰، ۸۰۰۰، ۸۰۸۰ و …) |
معمولاً پورت ۸۰ |
جدول(۲)
جمعبندی
پروتکلهای متعددی وجود دارند و درک قابلیتهای آنها برای انتخاب بهترین گزینه متناسب با نیازهای شبکه، امری اساسی است. در بسیاری از موارد، این فناوریها یکدیگر را تکمیل میکنند. در این بین، پروتکل TCP/IP برای اینترنت و شبکهها بسیار مؤثر و کاربردی محسوب می شود.
