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
ВезаУспоставља (handshake)Не успоставља
ПоузданостГарантује доставуНе гарантује
Редослед пакетаУређујеНе уређује
БрзинаНижаВиша
ПрименаВеб, 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. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође