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 Persistent Connections та налаштовувати проксі для корпоративних середовищ.

Розуміння TCP/IP необхідне для діагностики мережевих проблем: якщо додаток не може підключитися до сервера, проблема може бути на будь-якому рівні стека — від фізичного каналу до прикладного протоколу. Інструменти на кшталт tcpdump, Wireshark і Charles Proxy дозволяють аналізувати трафік на кожному рівні та знаходити вузькі місця. Для мобільних розробників Xcode надає Network Debug Dashboard, а Android Studio — Network Inspector для аналізу 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 (Address Resolution Protocol), який перетворює IP-адреси в MAC-адреси пристроїв у локальній мережі, і PPP (Point-to-Point Protocol), що використовується у 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, який приймає кількох клієнтів через потоки. Кожне підключення обробляється в окремому потоці, що дозволяє обслуговувати безліч клієнтів одночасно без блокування основного циклу.

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
З—єднанняВстановлює (рукостискання)Не встановлює
НадійністьГарантує доставкуНе гарантує
Порядок пакетівУпорядковуєНе упорядковує
ШвидкістьНижчаВища
ЗастосуванняВеб, email, файлиСтримінг, ігри, DNS

Для мобільних додатків вибір протоколу залежить від сценарію: REST-API та завантаження даних вимагають TCP, а відеодзвінки та онлайн-ігри виграють від швидкості UDP. Деякі додатки комбінують обидва протоколи — TCP для керування та UDP для медіапотоку. Сучасний протокол QUIC, що працює поверх UDP і використовується в HTTP/3, поєднує переваги обох підходів і вже підтримується на iOS та Android через URLSession автоматично.

Приклади коду TCP/IP

Розглянемо приклад TCP-клієнта на Python з обробкою помилок і тайм-аутом. Такий підхід використовується в мобільних додатках для надійного з—єднання з сервером.

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 секунд і намагається підключитися. При помилці з—єднання — наприклад, недоступності сервера або блокуванні firewall — викидається виняток з описом проблеми. У мобільних додатках тайм-аут з—єднання критичний: занадто короткий призводить до хибних помилок на повільних мережах, занадто довгий — до зависання інтерфейсу. Рекомендоване значення для мобільних мереж — 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-пристроях та peer-to-peer додатках.

Чому TCP повільніший за UDP?

TCP повільніший через додаткові механізми: триетапне рукостискання перед передачею, підтвердження кожного пакета, повторне відправлення втрачених сегментів, контроль перевантаження. UDP надсилає дейтаграми без цих перевірок, що знижує затримку ціною можливих втрат.

Підсумки

  • TCP/IP — фундаментальний стек протоколів, що забезпечує передачу даних в інтернеті та локальних мережах
  • Чотири рівні (прикладний, транспортний, мережевий, канальний) абстрагують різні аспекти передачі
  • TCP гарантує надійну доставку з контролем помилок і підтвердженнями
  • IP відповідає за маршрутизацію пакетів і адресацію вузлів у мережі
  • Вибір TCP або UDP залежить від вимог: надійність проти швидкості
  • Кожен мобільний додаток, що виконує мережеві запити, використовує стек TCP/IP

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також