TCP/IP: چیست، پشته پروتکل و انتقال داده

نویسنده: IT Sectr منتشر شده: 2026-03-06 زمان مطالعه: 8 دقیقه

TCP/IP پشته پروتکلی است که زیربنای اینترنت و اکثر شبکه‌های کامپیوتری را تشکیل می‌دهد. این پشته پروتکل TCP را که مسئول تحویل مطمئن داده‌ها است و IP را که مسیریابی بسته‌ها بین گره‌ها را تضمین می‌کند، ترکیب می‌کند. بر اساس داده‌های IETF RFC 1180 (2024)، پشته TCP/IP بیش از 80% ترافیک جهانی شبکه از جمله برنامه‌های موبایل و وب را پردازش می‌کند. پشته پروتکل تعیین می‌کند که داده‌ها چگونه بسته‌بندی، آدرس‌دهی و بین دستگاه‌ها در شبکه منتقل می‌شوند.

نکات کلیدی

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

TCP/IP چیست؟

TCP/IP (Transmission Control Protocol / Internet Protocol) یک پشته پروتکل است که در دهه 1970 برای ARPANET توسعه یافت و به استاندارد دوفاکتو برای شبکه جهانی اینترنت تبدیل شد. این پروتکل تعیین می‌کند که داده‌ها چگونه به بسته‌ها تقسیم، آدرس‌دهی، منتقل و در سمت گیرنده سرهم می‌شوند.

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

در توسعه موبایل، TCP/IP توسط هر برنامه‌ای که درخواست‌های شبکه را انجام می‌دهد استفاده می‌شود. کتابخانه‌های URLSession، OkHttp، AFNetworking و Alamofire روی این پشته کار می‌کنند و جزئیات بسته‌بندی و مسیریابی بسته‌ها را از توسعه‌دهنده پنهان می‌کنند. با این حال، درک TCP/IP برای بهینه‌سازی عملکرد ضروری است: تنظیم پارامترهای TCP از طریق URLSessionConfiguration امکان مدیریت زمان‌های انتظار، حفظ اتصالات پایدار HTTP و تنظیم پروکسی برای محیط‌های سازمانی را فراهم می‌کند.

درک TCP/IP برای تشخیص مشکلات شبکه ضروری است: اگر برنامه نمی‌تواند به سرور متصل شود، مشکل می‌تواند در هر لایه‌ای از پشته باشد — از کانال فیزیکی تا پروتکل کاربردی. ابزارهایی مانند tcpdump، Wireshark و Charles Proxy امکان تحلیل ترافیک در هر لایه و یافتن تنگناها را فراهم می‌کنند. برای توسعه‌دهندگان موبایل، Xcode داشبورد اشکال‌زدایی شبکه و Android Studio بازرس شبکه را برای تحلیل اتصالات TCP در زمان واقعی ارائه می‌دهد.

لایه‌های مدل TCP/IP

مدل TCP/IP شامل چهار لایه است که هر کدام وظایف کاملاً مشخصی را در هنگام انتقال داده انجام می‌دهند. درک این سلسله‌مراتب برای تشخیص مشکلات شبکه و بهینه‌سازی برنامه‌ها ضروری است.

لایه کاربردی

در لایه کاربردی، پروتکل‌هایی کار می‌کنند که برنامه‌ها مستقیماً با آنها تعامل دارند: HTTP، HTTPS، FTP، SMTP، DNS، WebSocket. این لایه داده‌ها را در قالبی قابل فهم برای برنامه شکل می‌دهد و به لایه حمل‌ونقل منتقل می‌کند. توسعه‌دهندگان برنامه‌های موبایل دقیقاً در این لایه از طریق کتابخانه‌های شبکه کار می‌کنند.

لایه حمل‌ونقل

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

لایه شبکه و پیوند

لایه شبکه توسط پروتکل IP پیاده‌سازی می‌شود که آدرس‌دهی (IPv4, IPv6) و مسیریابی بسته‌ها را تعیین می‌کند. هر بسته شامل آدرس IP فرستنده و گیرنده است و مسیریاب‌ها در مسیر انتقال بر اساس جدول‌های مسیریابی درباره گره بعدی تصمیم می‌گیرند. IPv4 از آدرس‌های 32 بیتی (حدود 4.3 میلیارد) استفاده می‌کند و IPv6 از آدرس‌های 128 بیتی استفاده می‌کند که مشکل کمبود آدرس را حل می‌کند.

لایه پیوند با محیط فیزیکی انتقال کار می‌کند: Ethernet، Wi-Fi، Bluetooth. این لایه بسته‌ها را به سیگنال‌ها تبدیل می‌کند و بالعکس، دسترسی به محیط انتقال را از طریق آدرس‌های MAC مدیریت می‌کند و خطاهای لایه فیزیکی را با استفاده از جمع‌های کنترل قاب (FCS) تشخیص می‌دهد.

در لایه پیوند پروتکل‌هایی مانند ARP (پروتکل حل آدرس) کار می‌کنند که آدرس‌های IP را به آدرس‌های MAC دستگاه‌ها در شبکه محلی تبدیل می‌کند، و PPP (پروتکل نقطه‌به‌نقطه) که در اتصالات VPN و شبکه‌های انتقال داده موبایل استفاده می‌شود.

لایهپروتکل‌هاوظیفه
کاربردیHTTP, HTTPS, DNS, FTP, WebSocketشکل‌دهی داده‌های برنامه
حمل‌ونقلTCP, UDPانتقال بین برنامه‌ها، کنترل خطا
شبکهIP, ICMP, ARPمسیریابی و آدرس‌دهی بسته‌ها
پیوندEthernet, Wi-Fi, PPPانتقال در محیط فیزیکی

پروتکل TCP چگونه کار می‌کند

TCP (Transmission Control Protocol) یکی از پروتکل‌های اصلی لایه حمل‌ونقل است. این پروتکل تحویل مطمئن، مرتب و قابل بررسی خطا از جریان بایت‌ها بین برنامه‌ها را تضمین می‌کند. قبل از انتقال داده، TCP یک اتصال را از طریق دست‌دهی سه مرحله‌ای برقرار می‌کند.

دست‌دهی سه مرحله‌ای (three-way handshake) با ارسال بسته SYN توسط کلاینت آغاز می‌شود. سرور با بسته SYN-ACK پاسخ می‌دهد و دریافت را تأیید می‌کند. کلاینت دست‌دهی را با بسته ACK تکمیل می‌کند و پس از آن انتقال داده آغاز می‌شود. این فرآیند تضمین می‌کند که هر دو طرف برای تبادل آماده هستند و از نظر شماره توالی همگام شده‌اند.

python
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('example.com', 80))
sock.send(b'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n')
response = sock.recv(4096)
print(response.decode())
sock.close()

در این مثال، یک سوکت TCP از نوع SOCK_STREAM ایجاد می‌شود که هنگام فراخوانی connect به طور خودکار دست‌دهی سه مرحله‌ای را انجام می‌دهد. متد send درخواست HTTP را ارسال می‌کند، recv پاسخ را دریافت می‌کند. پس از اتمام، close بسته FIN را برای بستن صحیح اتصال ارسال می‌کند.

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

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

python
import socket
import threading

def handle_client(conn, addr):
    print(f'کلاینت متصل شد: {addr}')
    with conn:
        while True:
            data = conn.recv(1024)
            if not data:
                break
            conn.sendall(data.upper())
    print(f'کلاینت {addr} قطع شد')

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('0.0.0.0', 9090))
server.listen(5)
print('سرور TCP روی پورت 9090 راه‌اندازی شد')

while True:
    conn, addr = server.accept()
    thread = threading.Thread(target=handle_client, args=(conn, addr))
    thread.start()

سرور TCP هر اتصال را در یک نخ جداگانه پردازش می‌کند و accept را در یک حلقه بی‌نهایت فراخوانی می‌کند. تابع handle_client داده‌ها را دریافت می‌کند، آنها را به حروف بزرگ تبدیل می‌کند و از طریق sendall بازمی‌گرداند. پس از پایان حلقه recv (زمانی که کلاینت اتصال را بست)، نخ پایان می‌یابد و سوکت به طور خودکار بسته می‌شود. در برنامه‌های موبایل، چنین کار سطح پایینی با سوکت‌ها مستقیماً استفاده نمی‌شود — کتابخانه‌های HTTP موبایل اتصالات را از طریق استخر نخ‌ها مدیریت کرده و به طور خودکار از اتصالات TCP استفاده مجدد می‌کنند.

تفاوت‌های TCP و UDP

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

ویژگیTCPUDP
اتصالبرقرار می‌کند (handshake)برقرار نمی‌کند
قابلیت اطمینانتحویل را تضمین می‌کندتضمین نمی‌کند
ترتیب بسته‌هامرتب می‌کندمرتب نمی‌کند
سرعتپایین‌تربالاتر
کاربردوب، ایمیل، فایل‌هااستریم، بازی‌ها، DNS

برای برنامه‌های موبایل، انتخاب پروتکل به سناریو بستگی دارد: REST-API و بارگذاری داده به TCP نیاز دارند، در حالی که تماس‌های ویدیویی و بازی‌های آنلاین از سرعت UDP بهره می‌برند. برخی برنامه‌ها هر دو پروتکل را ترکیب می‌کنند — TCP برای مدیریت و UDP برای جریان رسانه. پروتکل مدرن QUIC که روی UDP کار می‌کند و در HTTP/3 استفاده می‌شود، مزایای هر دو رویکرد را ترکیب می‌کند و در iOS و Android از طریق URLSession به طور خودکار پشتیبانی می‌شود.

نمونه کد TCP/IP

بیایید یک مثال از کلاینت TCP در پایتون با مدیریت خطا و زمان انتظار را بررسی کنیم. این رویکرد در برنامه‌های موبایل برای اتصال مطمئن به سرور استفاده می‌شود.

python
import socket
import sys

def tcp_client(host, port):
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(10)
        sock.connect((host, port))
        print(f'متصل به {host}:{port}')
        return sock
    except socket.error as err:
        print(f'خطای اتصال: {err}')
        sys.exit(1)

sock = tcp_client('api.example.com', 443)
sock.close()

تابع tcp_client میزبان و پورت را دریافت می‌کند، یک سوکت با زمان انتظار 10 ثانیه ایجاد می‌کند و سعی در اتصال دارد. در صورت خطای اتصال — به عنوان مثال، عدم دسترسی به سرور یا مسدود شدن توسط فایروال — یک استثنا با توضیح مشکل پرتاب می‌شود. در برنامه‌های موبایل، زمان انتظار اتصال حیاتی است: خیلی کوتاه باعث خطاهای کاذب در شبکه‌های کند می‌شود، خیلی طولانی باعث قفل شدن رابط می‌شود. مقدار توصیه‌شده برای شبکه‌های موبایل 10 تا 15 ثانیه برای timeoutIntervalForRequest و 30 تا 60 ثانیه برای timeoutIntervalForResource در پیکربندی URLSession است.

سوالات متداول

تفاوت بین TCP و IP چیست؟

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

TCP/IP به طور پیش‌فرض از چه پورتی استفاده می‌کند؟

TCP/IP از یک پورت ثابت استفاده نمی‌کند — پورت توسط برنامه تعیین می‌شود. پورت‌های استاندارد: 80 (HTTP)، 443 (HTTPS)، 22 (SSH)، 25 (SMTP). پورت 443 اصلی‌ترین پورت برای ترافیک وب امن در برنامه‌های موبایل است.

اتصال TCP چیست؟

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

آیا می‌توان از TCP/IP در برنامه‌های موبایل بدون اینترنت استفاده کرد؟

بله، TCP/IP در شبکه‌های محلی (LAN) بدون دسترسی به اینترنت کار می‌کند. دستگاه‌ها از طریق Wi-Fi Direct، Bluetooth PAN یا Ethernet متصل می‌شوند و داده‌ها را از طریق آدرس‌های IP محلی مبادله می‌کنند. TCP/IP محلی در دستگاه‌های IoT و برنامه‌های همتابه‌همتا استفاده می‌شود.

چرا TCP از UDP کندتر است؟

TCP به دلیل مکانیسم‌های اضافی کندتر است: دست‌دهی سه مرحله‌ای قبل از انتقال، تأیید هر بسته، ارسال مجدد بخش‌های از دست رفته، کنترل ازدحام. UDP دیتاگرام‌ها را بدون این بررسی‌ها ارسال می‌کند که تأخیر را به قیمت تلفات احتمالی کاهش می‌دهد.

خلاصه

  • TCP/IP — پشته پروتکل بنیادی که انتقال داده را در اینترنت و شبکه‌های محلی تضمین می‌کند
  • چهار لایه (کاربردی، حمل‌ونقل، شبکه، پیوند) جنبه‌های مختلف انتقال را انتزاع می‌کنند
  • TCP تحویل مطمئن با کنترل خطا و تأییدیه‌ها را تضمین می‌کند
  • IP مسئول مسیریابی بسته‌ها و آدرس‌دهی گره‌ها در شبکه است
  • انتخاب TCP یا UDP به نیازها بستگی دارد: قابلیت اطمینان در مقابل سرعت
  • هر برنامه موبایل که درخواست‌های شبکه را انجام می‌دهد از پشته TCP/IP استفاده می‌کند

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید