4.3.1.5. Transmission Control Protocol (TCP) és User Datagram Protocol (UDP)

A TCP/IP család két legfontosabb transzport protokollja a TCP és az UDP. Ezek, bár a hálózati IP fölött mûködnek, mégsem egyértelmûen feleltethetôk meg az OSI modell 4. rétegének. Inkább úgy fogalmazhatunk, hogy a TCP-IP és UDP-IP együtt alkotja a 4. szintet vagy a 3-4. szintet együtt.

A TCP (Transmission Control Protocol) egy kapcsolatorientált, byte-stream jellegû, megbízható protokoll. A kommunikáció megkezdése elôtt ki kell építeni a kapcsolatot, majd megkezdhetjük az adatátvitelt. Hiba (elveszett vagy hibás csomag) esetén a TCP réteg maga kér újraadást, elfedve ezzel az IP szint megbízhatatlanságát. A TCP processz egy több mint 20 állapotos állapotgép, meglehetôsen bonyolult, hiszen az IP szint számos hibát képes produkálni. Az adat, amit átküldhetünk egy byte-folyam, amit a TCP csomagokra vág és elküld. A kapcsolat full-duplex és rendelkezik egy sebességszinkronizációs mechanizmussal, ami megakadályozza, hogy az adó elárassza a vevôt. A TCP ezen felül figyeli a kapcsolatot és megpróbálja megtippelni az effektív sávszélességet (torlódásokból, válaszidôbôl, ICMP üzenetekbôl, stb.), amit szintén felhasznál a kimenô adatsebesség beállításakor.

Annak érdekében, hogy egy állomás egyszerre több élô TCP kapcsolattal rendelkezhessen, az TCP adatot hordozó IP csomagokban nemcsak a cél-címet kell megadni, hanem az úgynevezett TCP portot is. Ez a 16 bites szám azonosítja a célállomáson belül megszólítandó kommunikációs partnert. A 0 és 1023 közötti portszámok foglaltak, ezeken találhatóak az ismert szolgáltatások (well-known-services), e fölött szabadon használhatóak a port-számok. Például a HTTP processz hallgatja a 80-as TCP portot, a bejövô kérelmet feldolgozza és válaszol (például küldi a WWW oldalt). Aki tehát egy állomás HTTP processzével kíván kommunikálni, az a 80-as TCP portot szólítsa meg. Minden TCP által elôállított IP csomagban a TCP protokollazonosítója található, így az állomás az IP csomag vételekor az információt el tudja juttatni a TCP feldolgozóba. Ott a TCP fejlécbôl kiolvasva, a megfelelô portot hallgató processzhez juttathatjuk el az információt.

Az UDP (User Datagram Protocol) egy összeköttetésmentes protokoll. Az UDP információját egy IP csomagba helyezi, ellenôrzô összeget számol hozzá és feladja. Így a kézbesítést nem garantálja, de a hibás kézbesítést észlelhetôvé teszi. Olyan kérdés-válasz jellegû szolgáltatásokhoz használatos, ahol ha a kérdés vagy a válasz elvész, a hiba egyszerû újrakérdezéssel megoldható. Az, ugyanis, hogy egy csomag elvész, ritka esemény és ilyen kérdés-válasz esetén könnyen felderíthetô. Az UDP egyszerûsége miatt sokkal kíméletesebben bánik a hálózati erôforrásokkal, mint a TCP. (Egy TCP kapcsolat kiépülése minimum 3 IP csomagba kerül, mielôtt még akár 1 byte-nyi felhasználói adatot átvittünk volna.) A TCP-hez hasonlóan az UDP is rendelkezik portokkal, melyek számkiosztása független a TCP portokétól. Példának okáért a BOOTP (Bootstrap Protocol, a késôbbiekben még szó lesz róla) a 67-es UDP portot használja.