Szállítási réteg (Transport Layer) Az OSI protokoll készletben a szállítási réteg és az alkalmazási réteg között helyezkedik el a viszony réteg és a megjelenítési réteg.
TCP/IP szállítási protokollok
A TCP/IP protokoll készletben a szállítási réteg (UDP vagy TCP) közvetlenül szolgálja ki az alkalmazási réteget. A viszony réteg és a megjelenítési réteg funkciói az alkalmazási protokollba vannak beépítve.
Készítette: Schubert Tamás (BMF)
Schubert Tamás
Szállítási protokollok/1
Számítógép-hálózatok
TCP/IP protokollkészlet 5–7. réteg
File Transfer Protocol (FTP) Remote Terminal Protocol (TELNET) Simple Mail Transfer Protocol (SMTP) Name Server Protocol (NSP) Simple Network Management Protocol (SNMP)
UDP
TCP
4. réteg IP
Schubert Tamás
Szállítási protokollok/2
Számítógép-hálózatok
Szállítási réteg (Transport Layer) Ez a protokoll a hierarchia szíve: az alhálózattól független adatszállítást biztosít a két állomás egy-egy folyamata között. A szállítási réteg a hálózati réteghez hasonlóan lehet: • Összeköttetés mentes • Összeköttetés alapú (felépítés, adatszállítás, lebontás)
ICMP ARP
1–3. réteg
RARP
IEEE 802.x /X.25
Schubert Tamás
TCP UDP
Transmission Control Protocol User Datagram Protocol
IP ARP RARP ICMP
Internet Protocol Address Resolution Protocol Reverse Address Resolution Protocol Internet Control Message Protocol
Szállítási protokollok/3
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/4
Számítógép-hálózatok
User Datagramm Protocol (UDP) • • •
• •
• • • •
Összeköttetés mentes protokoll. Az egymástól függetlenül feladott üzeneteket továbbítja a két kommunikáló folyamat között. A szintén összeköttetés nélküli, megbízhatatlan IP hálózati protokoll szolgáltatásait veszi igénybe. (A csomagok elveszhetnek, kettızıdhetnek, és a feladás sorrendjétıl eltérı sorrendben is érkezhetnek a különbözı útvonalak miatt) Nem javítja fel a hálózati szolgáltatást. Olyan alkalmazásoknál használják, amelyek kevésbé érzékenyek az adatvesztéssel szemben (pl. kép átvitel), vagy az üzenetek mindössze egy csomagból állnak. Ha bizonyos idın belül nincs válasz, az adatgrammot újra el kell küldeni. Elınye a hatékonysága: kis overhead, kevés adminisztráció. A kommunikáló folyamatok azonosítása (címzése) azonos a TCP protokolléval. Ha megbízható átvitelre van szükség, az alkalmazások a TCP-t használják.
Schubert Tamás
Szállítási protokollok/5
Számítógép-hálózatok
Transmission Control Protocol (TCP) Összeköttetés alapú protokoll. Az alacsony szintő hálózati szolgáltatást (IP) feljavítja. Az alkalmazásokat egy szabványos primitív halmazzal lehet megírni: • Logikai kapcsolatot kell létesíteni két alkalmazás között. • A két folyamat duplex (egyidejőleg kétirányú) kommunikációt folytat • Le kell bontani a kapcsolatot. A kapcsolat ideje alatt az átvitel megbízható: • hibamentes, • nincs adatvesztés és adatkettızés, • az adatok sorrendhelyesek, • ha az összeköttetés lebomlik, újra létesíti a másik szállítási réteggel. A TCP az üzenetet: • csomagokra darabolja, • a vételi oldalon újra összeállítja, • az elveszett adatot újra küldi, • az adatokat helyes sorrendbe rakja. Schubert Tamás
Szállítási protokollok/6
Számítógép-hálózatok
A protokollhierarchia mőködése: TCP - IP - Ethernet
Transmission Control Protocol (TCP) Címzés A szállítási folyamatnak az összeköttetés létesítéséhez ki kell jelölnie a távoli folyamatot: • •
Megadjuk a hálózati címet (IP), és a folyamatot (process), amellyel dolgozni szeretnénk (pl. Telnet). A hálózati réteg felépíti az összeköttetést a két gép között.
TCP feje
Szegmens
Csomag feje
Csomag
Keret
Keret feje
TCP adat-része
Csomad adat-része
Keret adat-része
TCP beágyazása csomagokba, majd a csomag keretbe foglalása
Schubert Tamás
Szállítási protokollok/7
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/8
Számítógép-hálózatok
Port-ok
Port-ok és socket-ek A portok és socketek a kommunikáló felek folyamatainak azonosításában játszanak szerepet. A hálózaton továbbított adatszegmenseket össze kell kapcsolni a számítógépen futó folyamatokkal. Problémák: • Az alkalmazói folyamatokat az operációs rendszerek egy-egy folyamatazonosítóval (process ID) azonosítják. Ezek különbözhetnek a folyamat minden indításakor. • A folyamatazonosítók nem szabványosak, operációs rendszerenként különbözhetnek. • A szerver folyamatok egyszerre több ügyfél folyamattal is tarthatnak kapcsolatot, ezért egyszerő folyamatazonosítók használata nem lenne egyértelmő. A portok és socketek a folyamatok és a hálózaton továbbított adategységek (adatszegmensek) egységes és egyértelmő egymáshoz rendelését segítik és függetleníti az adott operációs rendszer folyamatazonosítójától. Schubert Tamás
Szállítási protokollok/9
Számítógép-hálózatok
A folyamatok egy vagy több 16 bites port azonosítóval azonosítsák magukat TCP/IP protokollkészletben. A port azonosító jelzi, hogy a bejövı üzeneteket melyik folyamatnak kell továbbítani. A portok típusai: • Jól ismert portok (well-known): Standard szolgáltatásokhoz tartoznak: 1-1023. Pl. Telnet port = 23. A legtöbb szolgáltatás egyetlen portot használ. Az Ftp szerver 2 portot használ: 20 and 21. A jól ismert portokat az Internet Assigned Number Authority (IANA) felügyeli. Többségüket a rendszerfolyamatok vagy privilégizált felhasználók programjai használják. A jól ismert portok használata lehetıvé teszi, hogy az ügyfél programok konfigurálás nélkül is megtalálják a szolgáltatást. Schubert Tamás
Port-ok
Szállítási protokollok/10
Számítógép-hálózatok
Socket-ek
A portok típusai (folytatás): • Ideiglenesen használt portok (ephemeral): Az ügyfeleknek nincs szükségük jól ismert portokra. Az ügyfél port azonosítókat az ügyfelek az operációs rendszertıl kapják. Az ügyfél portok 1024 – 65535 közötti értékek. Az operációs rendszer úgy választja, hogy a <szállítási protokoll, IP cím, port azonosító> hármas egyedi legyen. Az ideiglenesen használt portokat az IANA nem felügyeli, szabadon használható a felhasználói programokban.
A socket interfész egy API (application programming interface), amely hozzáférést biztosít a kommunikációs protokollhoz. Elıször a 4.2 BSD UNIXban vezették be, majd továbbfejlesztették a 4.3 és a 4.4 BSD-ben. Terminológia: • Socket: speciális file handle, amely lehetıvé teszi hálózati szolgáltatás kérését az operációs rendszertıl. • Socket cím: számhármas: <protokoll, helyi cím, helyi folyamat>. Pl. a TCP/IP-ben:
• Beszélgetés (conversation): kommunikációs kapcsolat két folyamat között. • Asszociáció: számötös, amely teljesen azonosítja a két kommunikáló
Az UDP, a TCP és az ISO TP-4 a fenti port sémát használja.
folyamatot: <protokoll, helyi cím, helyi folyamat, távoli cím, távoli folyamat>. Pl. a TCP/IP-ben: Schubert Tamás
Szállítási protokollok/11
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/12
Számítógép-hálózatok
Socket-ek
User Datagram Protocol (UDP)
Terminológia (folytatás): • Fél asszociáció: egyenként azonosítja a kapcsolat végpontjait: <protokoll, helyi cím, helyi folyamat> vagy <protokoll, távoli cím, távoli folyamat> • A fél asszociációt socket-nek vagy szállítási címnek is nevezik. Ez a kommunikáció megnevezhetı, címezhetı végpontja. Két folyamat TCP socket-eken keresztül kommunikál. A socket modell duplex byte csatornákat biztosít a két folyamat számára. Az alkalmazásnak nem kell foglalkoznia a csatorna menedzselésével, ezt elvégzi a TCP. A szerver folyamatok gyakran egyetlen porton keresztül egyidejőleg több
• Az IP protokoll csak két gép közötti adattovábbítást biztosít. • Nem teszi lehetıvé az alkalmazások vagy a felhasználók azonosítását. • Az UDP szállítási protokoll biztosítja, hogy egy gépen egyidejőleg futó több alkalmazói program egymástól függetlenül küldhessen és fogadhasson csomagokat. • A csomag legvégsı célpontját a portokkal lehet azonosítani. • A port-ok elérése általában szinkronizált, ami azt jelenti, hogy ha egy folyamat adatot kér egy portról, a futása felfüggesztıdik, mindaddig, amíg az adat be nem érkezik. Ekkor az operációs rendszer a pufferben tárolt adatot átadja a folyamatnak, majd újra engedélyezi a futását. • A protokoll szoftver az adatokat átmenetileg egy, a porthoz rendelt sorban tárolja, amíg a folyamat feldolgozza. • A folyamatok közötti kommunikációhoz a folyamatoknak ismerniük kell a
kapcsolatot is kiszolgálnak.
cél gép IP címét és a protokoll port számát, és minden üzenetnek
A port koncepciót az UDP és a TCP hasonlóan használja.
tartalmaznia kell a cél és a forrás protokoll port számot. Schubert Tamás
Szállítási protokollok/13
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/14
Számítógép-hálózatok
Az UDP üzenet formátuma
User Datagram Protocol (UDP) • Az UDP csomag fejlécében lévı cél és forrás port szám biztosítja, hogy a csomag a megfelelı folyamathoz kerüljön feldolgozásra, és hogy a
0
válasz üzenet is a megfelelı helyre érkezzen. • Az UDP az IP protokollt használja az üzenet továbbítására. • Az IP szolgáltatását nem javítja fel, ugyanolyan megbízhatatlan,
16
31
UDP SOURCE PORT
UDP DESTINATION PORT
UDP MESSAGE LENGTH
UDP CHECKSUM DATA
összeköttetés nélküli protokoll, mint az IP.
...
• Az üzeneteket nem nyugtázza. • A megbízhatatlanságból eredı problémák megoldása az alkalmazói programok feladata. UDP adatszegmens formátum
Schubert Tamás
Szállítási protokollok/15
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/16
Számítógép-hálózatok
Az UDP üzenet beágyazása
Az UDP üzenet beágyazása
• Az hálózati réteg (IP) a teljes UDP üzenetet egy IP csomagba ágyazza, majd az adatkapcsolati réteg fizikai keretbe ágyazva továbbítja a fizikai UDP feje
UDP adat-része
hálózaton. • A vételi oldalon a beágyazás ellenkezıje zajlik le. A fizikai keretbıl elıkerül az IP csomag, az IP csomagból az UDP üzenet, ebbıl pedig az
Csomag feje
adat.
Csomag adat-része
• Az UDP üzenet pontosan megegyezik a küldı állomáson elıállított üzenettel, így az UDP pontosan ugyanazt az adatot továbbítja az Keret feje
alkalmazói programnak, amelyet a küldı állomás adott át az UDP
Keret adat-része
protokollnak. • A forrás és a cél IP címeket csak az IP fejrésze tartalmazza, a forrás és
UDP beágyazása IP csomagba, majd a csomag keretbe foglalása
Schubert Tamás
Szállítási protokollok/17
a cél port számokat pedig csak az UDP fejrésze hordozza.
Számítógép-hálózatok
UDP multiplexálás/demultiplexálás
Schubert Tamás
Szállítási protokollok/18
Számítógép-hálózatok
UDP multiplexálás/demultiplexálás
• A protokoll hierarchiában egy-egy réteg objektuma és a következı réteg Port 1
több objektuma között multiplexálni ill. demultiplexálni kell.
Port 3
Por 2
• Például az UDP szoftver üzeneteket fogad számos alkalmazástól és átadja az IP-nek továbbításra, és megfordítva, az IP-tıl kapott
UDP: demultiplexálás port alapján
csomagokat továbbítja a megfelelı alkalmazásnak.
UDP szegmens érkezik
• Ha az alkalmazás egy bizonyos protokoll port-on küld egy üzenetet, a port szám bekerül az UDP üzenet SOURCE PORT mezıjébe.
IP réteg
• Bejövı üzenet esetén az UDP az IP-tıl kapott üzenetet az UDP DESTINATION PORT száma alapján demultiplexálja a megfelelı
IP fölötti réteg demultiplexálása
alkalmazásnak. A port-ot leginkább egy sornak tekinthetjük. Ebben tároljuk a bejövı üzeneteket feldolgozás elıtt. Az UDP megvizsgálja a bejövı üzenetek port számát, hogy az megfelel-e egy létezı port-nak. Ha nem, ICMP port unreachable hibaüzenetet generál, és eldobja az üzenetet, egyébként a megfelelı alkalmazásnak továbbítja. Schubert Tamás
Szállítási protokollok/19
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/20
Számítógép-hálózatok
UDP well-known portok (részlet) Decimális
Kulcsszó
0
-
7
ECHO
UNIX kulcsszó
Leírás Decimális
Reserved echo
Echo
9
DISCARD
discard
Discard
11
USERS
sysstat
Active Users
13
DAYTIME
daytime
Daytime
15
-
netstat
Who is up or NETSTAT
17
QUOTE
qotd
Qoute of the day
19
CHARGEN
chargen
Character generator
37
TIME
time
Time
42
NAMESERVER
name
Host Name Server
43
NICNAME
whois
Who Is
53
DOMAIN
nameserver
Domain Name Server
67
BOOTPS
bootps
Bootstrap Protocol Server
68
BOOTPC
bootpc
Bootstrap Protocol Client
69
TFTP
tftp
Trivial File Transfer
Schubert Tamás
UDP well-known portok (részlet)
Szállítási protokollok/21
Számítógép-hálózatok
Transmission Control Protocol (TCP)
Kulcsszó
UNIX kulcsszó
Leírás
111
SUNRPC
sunrpc
Sun Microsystem RPC
123
NTP
ntp
Network Time Protocol
161
-
snmp
SNMP net monitor
162
-
snmp-trap
SNMP traps
512
-
biff
UNIX comstat
513
-
who
UNIX rwho daemon
514
-
syslog
system log
525
-
timed
Time daemon
Schubert Tamás
Szállítási protokollok/22
Számítógép-hálózatok
Transmission Control Protocol (TCP) A megbízható adatfolyam szolgáltatás jellemzıi:
• Megbízható adatfolyam átviteli protokoll. • A szállítási réteg protokollja. • Azon alkalmazások számára, amelyek nagy adatmennyiségeket
1. Adatfolyam orientált (Stream oriented)
forgalmaznak a hálózaton, nem megfelelı az IP és az UDP által
2. Virtuális áramköri kapcsolat (Virtual Circuit Connection)
biztosított megbízhatatlan szállítási szolgáltatás.
3. Pufferelt átvitel (Buffered Transfer)
• Nem praktikus minden egyes alkalmazásba külön-külön beépíteni a
4. Strukturálatlan adatfolyam (Unstructured Stream) 5. Egyszerre kétirányú kapcsolat (Full Duplex Connection)
hibavizsgálatot és annak korrekcióját. • Ezért szükség van egy megbízható adatfolyam átviteli protokollra.
Schubert Tamás
Szállítási protokollok/23
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/24
Számítógép-hálózatok
Transmission Control Protocol (TCP) A megbízható adatfolyam szolgáltatás jellemzıi:
Transmission Control Protocol (TCP) A megbízható adatfolyam szolgáltatás jellemzıi:
1. Adatfolyam orientált (Stream oriented)
2. Virtuális áramköri kapcsolat (Virtual Circuit Connection)
Az alkalmazás által továbbítani kívánt adatokat bit-ek ill. byte-ok
Telefon kapcsolathoz hasonlítható.
sorozatának fogjuk fel.
Az alkalmazások az operációs rendszerhez fordulnak, kérik az átviteli
Az adatfolyam szolgáltatás pontosan ugyanazt a byte sorozatot adja át
szolgáltatást.
a cél gép alkalmazásának, amelyet a küldı gép adott átvitelre az
Az operációs rendszerek kérésére a protokoll szoftverek
átviteli szolgáltatásnak.
kommunikálnak egymással, megbeszélik, hogy mindkét fél kész-e a kapcsolat létrehozására, majd megállapodnak a részletekben. Ezután, a protokoll értesíti az alkalmazásokat, hogy a kapcsolat létrejött, kezdhetik az átvitelt.
Schubert Tamás
Szállítási protokollok/25
Számítógép-hálózatok
Transmission Control Protocol (TCP) A megbízható adatfolyam szolgáltatás jellemzıi:
Schubert Tamás
Szállítási protokollok/26
Számítógép-hálózatok
Transmission Control Protocol (TCP) A megbízható adatfolyam szolgáltatás jellemzıi:
2. Virtuális áramköri kapcsolat (Virtual Circuit Connection)
3. Pufferelt átvitel (Buffered Transfer)
Az átvitel alatt a két gép protokoll programja állandóan kommunikál, és
Az alkalmazások tetszıleges mennyiségő adatot adhatnak át átvitelre
biztosítja, hogy az átvitt adatok hibátlanok legyenek.
a szállítási szolgáltatásnak, a protokoll szoftver pufferben győjti, majd
Csak a helyrehozhatatlan hibákat jelentik az alkalmazásoknak.
a hatékonyságot szem elıtt tartva kisebb-nagyobb csomagokban
Azért nevezzük a kapcsolatot virtuális áramköröknek, mert az
továbbítja.
alkalmazások úgy látják, mintha egy dedikált hardver kapcsolat lenne.
Szükség lehet, hogy akár egy-egy byte-ot is átvigyünk, (pl. egy
A megbízhatóságot az adatfolyam átviteli protokoll biztosítja.
billentyőleütést). Az erre szolgáló ún. push mechanizmus kényszeríti a protokollt, hogy a puffer megtelte elıtt vigye át az adatot. A vételi oldalon a protokoll szoftver késleltetés nélkül átadja az adatot az alkalmazásnak.
Schubert Tamás
Szállítási protokollok/27
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/28
Számítógép-hálózatok
Transmission Control Protocol (TCP) A megbízható adatfolyam szolgáltatás jellemzıi:
Transmission Control Protocol (TCP) A megbízható adatfolyam szolgáltatás jellemzıi:
4. Strukturálatlan adatfolyam (Unstructured Stream)
5. Egyszerre kétirányú kapcsolat (Full Duplex Connection)
A szolgáltatás által kézbesített adat nem strukturált.
A TCP kapcsolat egyidejő adatfolyam átvitelt biztosít mindkét irányba
A szállítási szolgáltatás semmit sem tud az átviendı adat tartalmáról,
(full duplex).
azok struktúrájáról.
Az alkalmazások lezárhatják az egyik irányú adatfolyamot, ha kívánják
Az alkalmazásoknak kell megegyezniük az adatok szerkezetében és
(half duplex).
megérteniük az adatfolyamot.
A full duplex kapcsolat azért is elınyös, mert az ellenkezı irányban haladó adatfolyam vezérlı információt is továbbíthat. Ez a piggybacking csökkenti a hálózati forgalmat.
Schubert Tamás
Szállítási protokollok/29
Számítógép-hálózatok
Transmission Control Protocol (TCP)
Schubert Tamás
Szállítási protokollok/30
Számítógép-hálózatok
Transmission Control Protocol (TCP) Küldı oldal
Üzenet
Vételi oldal
A megbízhatóság biztosítása 1. Üzenet elküldése
1. Üzenet vétele
ACK 1. vétele
ACK 1. elküldése
Hogyan tud a protokoll szoftver megbízható szállítási szolgáltatást nyújtani megbízhatatlan csomagátviteli szolgáltatással (IP)? A megoldás:
2. Üzenet elküldése 2. Üzenet vétele
pozitív nyugtázás ismételt átvitellel (positive acknowledgement with retransmission)
ACK 2. vétele
ACK 2. elküldése
Pozitív nyugtázás újraküldéssel
A vételi oldalon lévı protokoll szoftver nyugtát (acknowledgement=ACK) küld a feladónak, ha adat érkezik. A küldı minden átküldött üzenetet nyilvántart, és vár a nyugtára. Schubert Tamás
Szállítási protokollok/31
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/32
Számítógép-hálózatok
Transmission Control Protocol (TCP) Küldı oldal 1. üzenet elküldése, idızítés indul
Üzenet
A megbízhatóság biztosítása
Vételi oldal
Ha az átviteli rendszernek nagy a késleltetése, az üzenetek kettızıdhetnek (adat és a nyugtája egyaránt). A protokoll szoftver minden üzenetet egy sorszámmal lát el, és a vevınek emlékeznie kell, hogy mely sorszámú üzenetek érkeztek meg. A nyugtában a protokoll szoftver visszaküldi a sorszámot a küldınek, így az a nyugtákat és az elküldött üzeneteket egymáshoz tudja rendelni.
Csomag elvész 1. üzenetnek meg kellene érkezni
ACK 1.-nek meg kellene érkezni
Transmission Control Protocol (TCP)
ACK 1.-et el kellene küldeni
Idızítés lejár 1. üzenet újraküldése, idızítés indul 1. üzenet vétele ACK 1. elküldése ACK 1. vétele, idızítés törlése
Újraküldés, ha a csomag elvész
Schubert Tamás
Szállítási protokollok/33
Számítógép-hálózatok
Transmission Control Protocol (TCP)
Schubert Tamás
Szállítási protokollok/34
Számítógép-hálózatok
Transmission Control Protocol (TCP) Kezdı ablak
Csúszó ablakok (Sliding Windows) Nem lenne hatékony a protokoll mőködése, ha minden átküldött üzenet után megvárná a nyugtát, mielıtt a következı üzenetet küldené. Ekkor egyszerre csak egy irányba haladnának az üzenetek. A csúszó ablakos technikával több üzenetet küldhetı, mielıtt a korábban elküldött üzenetek nyugtája megérkezne. A protokoll szoftver az átküldendı üzenetek sorozatára egy kis mérető ablakot fektet, és az ablak összes üzenetét elküldi.
1
2
3
4
5
6
7
8
9
10
...
8
9
10
...
Ablak csúszik
1
2
3
4
5
6
7
Csúszó ablakos protokoll 8 csomaggal
Ha az ablak bal szélsı üzenetére pozitív nyugat érkezik, az ablak eggyel jobbra csúszik. Az ablakban lehetnek elküldetlen üzenetek, és elküldött, de nem nyugtázott üzenetek.
Schubert Tamás
Szállítási protokollok/35
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/36
Számítógép-hálózatok
Transmission Control Protocol (TCP)
Transmission Control Protocol (TCP) Csúszó ablakok (Sliding Windows)
Küldı oldal
Üzenet
• Az ablak méretének helyes megválasztása nagyban befolyásolja a
Vételi oldal
protokoll hatékonyságát. 1. üzenet elküldése
• A csúszó ablakos protokoll minden üzenetre külön idızítıt mőködtet.
2. üzenet elküldése
1. üzenet megérkezése 1. ACK elküldése
3. üzenet elküldése
2. üzenet megérkezése 2. ACK elküldése
1. ACK vétele
3. üzenet megérkezése 3. ACK elküldése
2. ACK vétele
• A protokoll szoftver a vételi oldalon hasonló ablakkal rendelkezik, amelyben összeállítja a bejövı adatokat, és tárolja, hogy melyeket nyugtázta. • A full duplex kommunikáció miatt valójában mindkét oldalon két-két ablak van a független kétirányú kommunikációra. • A TCP-ben alkalmazott csúszó ablak technikával a flow control
3. ACK vétele
(végállomások közötti adatfolyam vezérlés) is megoldható. 3 csomag elküldése csúszó ablakos protokoll használatával
Schubert Tamás
Szállítási protokollok/37
Számítógép-hálózatok
Transmission Control Protocol (TCP)
Schubert Tamás
Szállítási protokollok/38
Számítógép-hálózatok
Transmission Control Protocol (TCP) Portok, kapcsolatok és végpontok
Csúszó ablakok (Sliding Windows) • Az állomások az ablak méretét tudják változtatni. • A fogadott nyugták tartalmaznak az ablakra vonatkozó információt (window advertisment), amely lényegében a másik fél szabad puffer méretét tartalmazza. • A küldı fél ennek alapján változtatja a saját ablakának méretét. • Ha a fogadó pufferei kezdenek megtelni, kisebb ablakot jelölı közleményt küld a feladónak.
• A TCP lehetıvé teszi, hogy több alkalmazás egyidejőleg kommunikáljon, és az üzenetet a megfelelı alkalmazáshoz továbbítja. • Az UDP-hez hasonlóan a TCP is a protokoll port számokat használja, az üzenet végsı címzettjének azonosításához. • A TCP port azonban önmagában nem azonosítja a cél objektumot. A TCP a kapcsolat (connection) fogalmát használja fel az azonosításhoz. Két végpont azonosítja a kapcsolatot. Pl.: (192.190.173.37, 25) és (192.190.173.55, 1071) Egy másik kapcsolat ugyanazon a gépen: (192.190.173.37, 25) és (192.190.173.55, 1156)
Elegendı, ha a kapcsolatot azonosító 4 szám közül 1 különbözik! Schubert Tamás
Szállítási protokollok/39
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/40
Számítógép-hálózatok
Transmission Control Protocol (TCP) Passzív és aktív megnyitás
Transmission Control Protocol (TCP) A TCP szegmens formátuma
• A TCP, ellentétben az UDP-vel kapcsolat orientált, tehát mindkét végpontnak egyet kell értenie a részvételben.
Minden TCP forgalom: • kapcsolat felépítése, • adatok átvitele,
• Az alkalmazás az egyik végponton végrehajt egy ún. passzív megnyitást, jelezve, hogy hajlandó bejövı kapcsolatot fogadni.
• nyugta küldése,
• Ekkor egy TCP port szám lesz hozzárendelve ehhez a végponthoz.
• ablak méret hirdetmény,
• Az alkalmazás a másik végponton pedig kéri az operációs rendszert,
• kapcsolat lezárása,
hogy végezzen aktív megnyitást a kapcsolat létrehozására.
az alábbi szerkezető szegmensben lesz továbbítva:
• A két TCP szoftver felépíti a kapcsolatot, majd kezdıdhet az alkalmazások adatcseréje.
Schubert Tamás
Szállítási protokollok/41
Számítógép-hálózatok
Transmission Control Protocol (TCP) 0
4
10
16
SOURCE PORT
24
Schubert Tamás
Szállítási protokollok/42
Transmission Control Protocol (TCP) SOURCE PORT
Feladó TCP port száma
DESTINATION PORT
Cél TCP port száma
SEQUENCE NUMBER
A küldött adatok pozíciója a byte folyamban
ACKNOWLEDGEMENT NUMBER
Annak byte-nak a sorszáma az adatfolyamban, amelyet a feladó legközelebb meg akar kapni. Ez az ellenkezı irányú folyamra vonatkozik!
HLEN
A szegmens hossza 32 bit-es egységekben
CODE BITS
Az üzenet tartalmára utal
WINDOW
Mekkora puffer áll rendelkezésére, mennyi adatot képes fogadni
31
DESTINATION PORT
SEQUENCE NUMBER ACKNOWLEDGEMENT NUMBER HLEN
RESERVED
WINDOW
CODE BITS
CHECKSUM
URGENT POINTR PADDING
OPTIONS
Számítógép-hálózatok
DATA ...
TCP szegmensformátum
Schubert Tamás
Szállítási protokollok/43
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/44
Számítógép-hálózatok
TCP well-known portok (részlet)
Transmission Control Protocol (TCP)
Decimális
A CODE mezı jelentése
Bit (balról jobbra)
Jelentés
URG
Urgent Pointer mezı használva van
ACK
Acknowledgement mezı használva van
0
-
1
TCPMUX
UNIX kulcsszó
Leírás Reserved
-
TCP multiplexor
5
RJE
-
Remote Job Entry
7
ECHO
echo
Echo
9
DISCARD
discard
Discard
11
USERS
systat
Active Users
PSH
A szegmens push mőveletet kér
13
DAYTIME
daytime
Daytime
RST
A kapcsolat bontása
15
-
netstat
Network status program
SYN
A sorszámok szinkronizálása (kapcsolat felépítése)
17
QUOTE
qotd
Quote of the Day
19
CHARGEN
chargen
Character Generator
20
FTP-DATA
ftp-data
File Transfer Protocol (data)
21
FTP
ftp
File Transfer Protocol
23
TELNET
telnet
Terminal Connection
FIN
A küldı az adatfolyam végére ért
Schubert Tamás
Szállítási protokollok/45
Számítógép-hálózatok
TCP well-known portok (részlet) Decimális 25
Kulcsszó
Kulcsszó
UNIX kulcsszó
SMTP
smtp
Leírás
Schubert Tamás
Szállítási protokollok/46
Számítógép-hálózatok
TCP well-known portok (részlet) Decimális
Kulcsszó
UNIX kulcsszó
Leírás
Simple Mail Transport Protocol
103
X400
x400
X.400 Mail Service
104
X400-SND
x400-snd
X.400 Mail Sending
37
TIME
time
Time
111
SUNRPC
sunrpc
SUN Remote Procedure Call
42
NAMESERVER
name
Host Name Server
113
AUTH
auth
Authentication Service
43
NICNAME
whois
Who Is
117
UUCP-PATH
uucp-path
UUCP Path Service
53
DOMAIN
nameserver
Domain Name Server
119
NNTP
nntp
77
-
rje
Any private RJE service
USENET News Transfer Protocol
79
FINGER
finger
Finger
129
PWDGEN
Password Generator Protocol
93
DCP
-
Device Control Protocol
95
SUPDUP
supdup
SUPDUP Protocol
139
NETBIOS-SSN
NETBIOS Session Service
101
HOSTNAME
hostnames
NIC Host Name Server
102
ISO-TSAP
iso-tsap
ISO-TSAP
Schubert Tamás
Szállítási protokollok/47
Számítógép-hálózatok
160-223
Schubert Tamás
Reserved
Szállítási protokollok/48
Számítógép-hálózatok
Transmission Control Protocol (TCP) Címzés
1. Kezdeti összeköttetés protokoll
A szállítási folyamatnak az összeköttetés létesítéséhez ki kell jelölnie a távoli folyamatot: • •
Megadjuk a hálózati címet (IP), és a folyamatot (process), amellyel dolgozni szeretnénk (pl. Telnet). A hálózati réteg felépíti az összeköttetést a két gép között.
A folyamat azonosításának két megoldása van: 1. Kezdeti összeköttetés protokoll használata 2. Név szolgáltató használata (name server)
Schubert Tamás
Transmission Control Protocol (TCP)
Szállítási protokollok/49
Számítógép-hálózatok
Transmission Control Protocol (TCP)
• Minden gép, amely valamilyen szolgáltatást kínál, egy speciális folyamat-szolgáltatóval vagy bejelentkezıvel rendelkezik, amelyen keresztül az összes szolgáltatás elérhetı. • A folyamat-szolgáltató egy ismert szállítási végponton várakozik. A kapcsolatot keresı gépnek ezt a végpontot kell megadnia. • Létrejön a kapcsolat a folyamat-szolgáltatóval. • A hívó kijelöli a futtatni kívánt programot. • A folyamat-szolgáltató kijelöl egy azonosító számot (végpontot), létrehoz egy új folyamatot, amelyik az adott végponton (port) várakozik a kapcsolódásra. • A folyamat-szolgáltató megküldi a hívónak az azonosítási számot, hogy ezen jelentkezzen. • Ezután a hívó lebontja az összeköttetést a folyamat-szolgáltatóval, majd újat létesít, most már a kiválasztott folyamattal. Schubert Tamás
Szállítási protokollok/50
Számítógép-hálózatok
A protokoll hierarchia mőködése: TCP - IP - Ethernet
2. Név szolgáltató használata (name server) Transmission Control Protocol (TCP) • A név szolgáltató megadja, hogy egy adott nevő szolgáltatás milyen porton érhetı el. • A hívó tehát elıször a name server-hez fordul, majd a port szám birtokában már a felépítheti a kapcsolatot a szolgáltató gép megfelelı portjával.
Az üzenet eljuttatásán kívül a TCP-nek tudnia kell, hogy az melyik összeköttetéshez tartozik. A TCP/IP az üzenetet több szinten is ún. fejrésszel (header) látja el. (Pl. levél -> boríték -> titkárnı -> újabb boríték -> postázó -> újabb boríték). Adatfolyam, amelyet el kell küldeni: ………… A TCP feldarabolja kezelhetı darabokra: … … … … (az állomások megbeszélik a méretet). A TCP fejrészt tesz mindegyik elé (min. 20 byte): • Forrás és cél port-szám. A port # különbözteti meg ugyanazon két gép közötti független kapcsolatokat. Mindkét oldalnak ismernie kell a másik oldal port #-át is. • Sorszám (sequence #). A sorszám alapján lehet helyes sorrendbe rakni a vételi oldalon a csomagokat.
Schubert Tamás
Szállítási protokollok/51
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/52
Számítógép-hálózatok
A protokoll hierarchia mőködése: TCP - IP - Ethernet • Ellenırzı összeg (CRC). A hibás csomagot a vevı eldobja. • Nyugta (acknowledgment). Ha ez a mezı ki van töltve, akkor ez nyugtázza, hogy hányadik volt az utolsó megérkezett byte.
TCP csomag: T... T… T… T…
(T = TCP fejrész)
A protokoll hierarchia mőködése: TCP - IP - Ethernet Internet Protocol (IP) A T…. alakú üzeneteket a TCP az IP-nek adja át az IP címmel együtt. Az IP nem foglalkozik sem a TCP fejrésszel, sem az adattal. Az IP a továbbításhoz hozzáadja a saját fejrészét: Az IP fej részei: • forrás- és cél IP cím • protokoll azonosító száma (TCP, UDP, stb.). Ez írja le, hogy a vétel helyén a csomagot melyik protokollnak kell továbbítani • IP fejrész CRC-je IT… IT… IT… IT…
(I = IP fejrész)
A fej többi része: • Fragmet offset további tördelés esetére • Time to Live. Minden rendszer, amelyen a csomag keresztülhalad 1gyel csökkenti ezt a számot, és ha 0-ra csökken, eldobja. Schubert Tamás
Szállítási protokollok/53
Számítógép-hálózatok
A protokoll hierarchia mőködése: TCP - IP - Ethernet
Schubert Tamás
Szállítási protokollok/54
Számítógép-hálózatok
A protokoll hierarchia mőködése: TCP - IP - Ethernet
Ethernet
Ethernet
Ethernet fej: • Cél címe • Feladó címe • Típus kód - TCP/IP, DECNET XEROX, stb. • Adat • CRC
Az Ethernet interfész a vételi oldalon eltávolítja a fejrészt és a CRC-t. Megnézi a típus-kódot, felismeri az IP-t, ezért az IP protokollnak továbbítja. Az IP protokoll eltávolítja az IP fejrészt. A protokoll mezı TCP-t jelez, ezért a TCP protokollnak továbbítja. A TCP megnézi a sorszámot és más mezıket, hogy helyreállítsa az üzenetet.
Az Ethernet cím és az IP cím között semmilyen összefüggés nincs! Minden gép rendelkezik egy táblázattal a két cím megfeleltetéséhez (lásd az ARP protokollt). EIT…C
Schubert Tamás
EIT…C
EIT…C
EIT…C
EIT…C
Szállítási protokollok/55
Számítógép-hálózatok
Schubert Tamás
Szállítási protokollok/56
Számítógép-hálózatok