A TCP/IP protokollcsalád két transzport-szintu protokollja a TCP (Transmission Control Protocol) és az UDP (User Datagram Protocol). A TCP öszeköttetés-alapú, míg az UDP nem az.
Az UDP protokoll
Az UDP által nyújtott szolgáltatások lényegében megegyeznek az IP által biztosított szolgáltatásokkal. Egy lényeges bovítés az IP-hez képest az, hogy az UDP több kommunikációs portot (TSAP-ot, Transport Service Access Point-ot) biztosít, ahonnan ill. ahova csomagokat lehet küldeni, és ha egy program UDP-n keresztül akar kommunikálni másokkal, akkor az UDP csomagok elküldésekor meg kell adni a cél-host IP-címe mellett annak az ottani UDP-portnak a sorszámát, ahova a csomagot küldeni akarja (az UDP fejléc tartalmazza annak a helyi UDP-portnak a sorszámát is, ahonnan a csomagot küldték, így a célállomás azt kiolvasva tudja, hogy honnan küldték a csomagot, és ez alapján tudhatja, hogy hova küldjön egy esetleges választ). Ezzel -- mármint az UDP portokkal -- lehetoség van egy hoston egyszerre több UDP-kapcsolat létrehozására is, és nincsenek olyan megkötések, hogy egy folyamat egyszerre csak egy darab UDP kapcsolatot létesíthet (mert az UDP-portok azonosítói és a folyamatok azonosítói egymástól teljesen függetlenek).
Az UDP fejrész a következo mezokbol áll:
|------------------------------------------------------| | Forras-port | Cel-port | |------------------------------------------------------| | Csomaghossz | Ellenorzo-osszeg | |------------------------------------------------------| | | | Felhasznaloi adatok | | | . ... . | | |------------------------------------------------------|
Az ellenorzo összeg számítása a következoképpen történik: 2-byteos szavanként kell összeadni az UDP fejrészt, az IP pszeudo-fejrészt, és az elküldendo adatokat, majd az összeg 1-es komplemensét kell képezni. Az említett IP pszeudo-fejrész itt a forrás ill. cél-hoszt IP címébol, valamint a forrás/cél UDP-port sorszámból áll.
A TCP protokoll
A TCP a protokollcsaládnak talán a leggyakrabban használt kommunikációs transzportprotokollja. (FONTOS: A TCP egy protokoll, és nem a kommunikációt megvalósító program!) Ha TCP protokollal küldünk egy byte-folyamot (tetszoleges adatokat), akkor a TCP azt maximum 64 byteos darabokra bontja, és ezeket a darabokat egyenként átadja az IP-nek (természetesen a TCP fejléccel ellátva), hogy küldje el a rendeltetési helyére. Az IP nem garantálja azt, hogy a csomagok a célállomásnál meg is érkeznek, ezért a TCP feladata az, hogy adott esetben (pl. egy bizonyos ido lejártával) az egyes csomagokat újra elküldje, mivel lehet, hogy az elozo példány elveszett valahol. A célállomáson a megérkezett csomagok sorrendje nem biztos, hogy az elküldés sorrendjével megegyezik, ezért a TCP feladata ennek a rendezése is (ha szükséges). A TCP természetesen a csomagduplázás ellen is védelmet nyújt.
A TCP protokoll a megbízhatóságot az ún. PAR (Positive Acknowledgement with Retransmission) technikával biztosítja. Ez azt jelenti, hogy a célállomás TCP-t megvalósító szoftvere nyugtázza a csomag kézbesítését, miután a hálózati szinttol (az IP-tol) megkapta.
Egy hoston egyszerre több TCP kapcsolat is élhet, és itt is, mint az UDP-nél az egyes kapcsolatok külön-külön TCP-porton (TSAP-on) vannak. A TCP-kapcsolatok full-duplexek, vagyis kétirányúak, és az elküldött adatokat a TCP strukturálatlan byte- folyamnak tekinti. A TCP-vel ezen kívül lehetoség van sürgos adatok továbbítására is. A protokoll eloírja, hogy ha sürgos adatot küldtünk, akkor az adat fogadóját a cél-hoston errol értesíteni kell, és meg kell adni a lehetoséget a sürgos adat soron kívüli feldolgozására is. Az értesítés módja (mivel oprendszer-függo) nincs a protokoll által specifikálva.
A TCP fejrész a következo mezokbol áll:
|------------------------------------------------------| | Forras-port | Cel-port | |------------------------------------------------------| | Byte-sorszam | |------------------------------------------------------| | Nyugta | |------------------------------------------------------| | TCP fejreszhossz| |URG|ACK|EOM|RST|SYN|FIN| Ablak | |------------------------------------------------------| | Ellenorzo osszeg | Surgos adatok offsetje | |------------------------------------------------------| | | | | . Felhasznaloi adatok . . . | | |------------------------------------------------------|
(A rajzon a TCP fejrész vízszintes mérete 32 bit.)
A TCP portok 0-tól 1023-ig ún. foglalt portok. Ezeknek a kiosztási jogát a DARPA fenntartja magának. Például a távoli bejelentkezés (TELNET) protokoll szervere mindig a 23-as TCP porton vár arra, hogy valaki rákapcsolódjon és bejelentkezzen rajta az adott hostra. Az általában jellemzo, hogy a fontosabb, szélesebb körben használt protokollok egy "mindenki által ismert" ( well-known) sorszámú port-on várnak kapcsolatokra.
A TCP fejrész bitjei a következok:
Az ellenorzo összeg számítása a következoképpen megy: 2-byteos szavanként kell összeadni a TCP fejrészt, az IP pszeudo-fejrészt, és az elküldendo adatokat, majd az összeg 1-es komplemensét kell képezni. A byte sorszám megmondja, hogy az egész átküldendo adatfolyamból most épp hányadik byteot küldjük át (a TCP üzenet elso bytejának az adatfolyamon belüli sorszáma). A nyugta mezo megmondja, hogy a kommunikációs partner az elküldendo adatfolyamunknak hányadik byteját várja (és ez nem lehet és nem is lesz monoton csökkeno!). A TCP ellenorzo összegnél említett IP pszeudo-fejrész a forrás ill. cél-hoszt IP címébol, valamint egyéb protokoll-információkból és az aktuális TCP üzenet hosszából áll. (A byte sorszám kezdoértéke nem minden kapcsolat esetén nulla - a kezdeti értéket a kapcsolat létrehozásakor a két partner egyezteti.)