TCP/IP protokol
TCP/IP (angleško TCP »Transmision Control Protocol«, protokol za nadzor prenosa, ter IP »Internet Protocol«, internetni protokol) ali Internetni sklad protokolov (angleško Internet protocol suite) je množica protokolov, ki izvaja protokolski sklad prek katerega teče internet. Največ omrežnega prometa poteka preko protokola TCP. Sporočila preko protokola TCP se zaradi vzpostavljene povezave med odjemalcem in servisom prenašajo zanesljivo v obe smeri, so brez napak, podvojevanja in v pravem vrstnem redu.
Vsak računalnik, ki podpira TCP, ima transportni osebek TCP (v jedru operacijskega sistema ali kot uporabniški proces), ki upravlja tokove TCP in vmesnik do sloja IP.
Osebek TCP sprejema uporabniške tokove podatkov od krajevnih procesov, jih razdeli v dele, krajše od 64 K zlogov (v praksi po navadi od 1.500 zlogov) in pošlje vsak kos kot en datagram IP. Vsak poslan paket ima svojo številko in je potrjen s strani prejemnika. Če je odsek za pošiljanje večji, kot je največja prenosna enota (MTU - Maximum Transmision Unit), se ta razbije na dele (fragments), ki so dovolj majhni za pošiljanje in so tudi oštevilčeni, na sprejemni strani pa se odsek obnovi iz prispelih delov. Za omrežja ethernet je največja prenosna enota enaka 1.500 zlogov.
Internetni sloj ne zagotavlja pravilnega prenosa datagramov. Za to skrbi TCP.
Ker je TCP povezovalni protokol, se najprej vzpostavi povezava med odjemalcem in strežnikom. Pri povezavi je določen odjemalčev naslov IP in vrata (1.024 ali večje), ter strežnikov naslov IP in vrata na katerih posluša servis strežnika. Naslov IP povezan z določenimi vrati tvorita vtičnico (socket) in par odjemalčeve in strežnikove vtičnice tvorita povezavo TCP, ki je edinstveno določena. Glava (header) paketa TCP vsebuje izvorni naslov IP in vrata, ciljni naslov IP in vrata, zaporedna številka paketa, številka potrditve in kontrolne zastavice. Kontrolni zastavici, pomembni za gradnjo požarnega zidu sta ACK in SYN.
Za primer si poglejmo kako poteka povezava po protokolu TCP, ko želimo naložiti spletno stran na oddaljenem strežniku. Ko vtipkamo URL (Uniform Resource Locator) v naš brskalnik, se najprej brskalnik pozanima na strežniku DNS za številski ekvivalent IP naslova URL, nato se brskalniku dodelijo nepriviligirana vrata (od 1024 do 65535), iz katerih izvira zahteva za povezavo z oddaljenim spletnim strežnikom. Ta paket ima postavljeno nadzorno zastavico SYN in je poslan na vrata 80 spletnega strežnika, storitev www, ki posluša na vratih 80, pa zazna zahtevo po vzpostavitvi povezave (zastavica SYN). S prvim paketom, to je zahtevo za povezavo, so paketi oštevilčeni z zaporednimi številkami. Ko storitev www odgovori na zahtevo, pošlje paket s postavljenima zastavicama ACK in SYN. Zastavica ACK pove, oziroma potrdi našemu brskalniku, da je storitev www prejela zahtevo za povezavo in številka paketa se poveča za ena, zastavica SYN pa je prošnja storitve www za povezavo, na katero brskalnik odgovori s paketom, ki ima postavljeno le zastavico ACK, ta paket pa ima za ena povečano zaporedno številko. Tako povezovanje se imenuje trismerno usklajevanje (three-way handshake) in s tem je povezovanje zaključeno in povezava vzpostavljena. Od tu naprej si brskalnik in storitev WWW pošiljata pakete samo s postavljenimi zastavicami ACK. Vse to pa je zelo pomembno pri gradnji požarnega zidu. Povzamemo lahko, da edino odjemalec lahko pošlje paket s postavljeno samo zastavico SYN, storitev pa tega ne sme. Zato lahko požarni zid nastavimo tako, da nam filtrira takšne zahteve, če se pojavijo. Vse povezave TCP so popolno dvosmerne in od točke do točke. TCP ne omogoča skupinske (multicast) in razpršene oddaje (broadcast).
Povezava TCP je tok zlogov, ne sporočil. To pomeni, da se meje sporočil ne ohranjajo od konca do konca.