TCP ÉS UDP. Médiakommunikációs hálózatok (VIHIM161) Médiatechnológiák és -kommunikáció szakirány. Dr. Lencse Gábor

Hasonló dokumentumok
TCP ÉS UDP. Médiakommunikációs hálózatok (VIHIM161) évi fóliái alapján készült. Dr. Lencse Gábor

SZÁLLÍTÁSI (TRANSPORT, HOST- TO-HOST) PROTOKOLLOK

A szállítói réteg (transport layer) szolgáltatásai. Számítógépes Hálózatok Szállítói réteg (transport layer) Multiplexálás a szállítói rétegben

Hálózati architektúrák laborgyakorlat

A szállítói réteg (transport layer) szolgáltatásai. Számítógépes Hálózatok Szállítói réteg (transport layer) Multiplexálás a szállítói rétegben

Hálózati architektúrák laborgyakorlat

SzIP kompatibilis sávszélesség mérések

Szállítási réteg (L4)

32 bit (4 bájt) Destination Port 8 bájt. Source Port. DATA, ha van

32 bit (4 bájt) Destination Port 8 bájt. Source Port. DATA, ha van

Számítógépes Hálózatok és Internet Eszközök

Számítógép-hálózatok. Gyakorló feladatok a 2. ZH témakörének egyes részeihez

Dr. Wührl Tibor Ph.D. MsC 05 Ea. Szállítási protokollok - Bevezetés

Tartalom. Hálózati kapcsolatok felépítése és tesztelése. Rétegek használata az adatok továbbításának leírására. OSI modell. Az OSI modell rétegei

Számítógépes Hálózatok 2012

KANDÓ KÁLMÁN VILLAMOSMÉRNÖKI KAR HÍRADÁSTECHNIKA INTÉZET. Szállítási réteg vizsgálata Wireshark analizátorral. Dr. Wührl Tibor Dr.

A TCP/IP modell szállítási rétege

Szállítási réteg (L4)

Távközlési informatika II.

Számítógépes hálózatok

Számítógépes Hálózatok ősz Szállítói réteg TCP, Tahoe, Reno, AIMD, Fairness, hatékonyság

Gyakorló feladatok a 2. ZH témakörének egyes részeihez. Számítógép-hálózatok. Dr. Lencse Gábor

[SZÁMÍTÓGÉP-HÁLÓZATOK]

Számítógép-hálózatok A felsőbb rétegek

A szállítói réteg (transport layer) szolgáltatásai. Számítógépes Hálózatok Szállítói réteg (transport layer) Multiplexálás a szállítói rétegben

A szállítói réteg (transport layer) szolgáltatásai. Számítógépes Hálózatok Szállítói réteg (transport layer) Multiplexálás a szállítói rétegben

Az IP hálózati protokoll

Hálózati architektúrák és Protokollok GI 8. Kocsis Gergely

Az Internet működésének alapjai

Hálózati architektúrák és Protokollok GI - 9. Kocsis Gergely

Számítógépes hálózatok I.

4. Hivatkozási modellek

Számítógépes Hálózatok

8. Szállítói réteg TCP Tahoe, Reno, AIMD, hatékonyság, fairness. HálózatokII, 2007

24. fejezet A szállítási réteg

I. Házi Feladat. internet. Határidő: V. 30.

Az adott eszköz IP címét viszont az adott hálózat üzemeltetői határozzákmeg.

MULTIMÉDIA TOVÁBBÍTÁSA AZ IP FELETT

A szállítói réteg (transport layer) szolgáltatásai. Számítógépes Hálózatok Szállítói réteg (transport layer) Multiplexálás a szállítói rétegben

Számítógépes Hálózatok 2011

[SZÁMÍTÓGÉP-HÁLÓZATOK]

Hálózatok Rétegei. Számítógépes Hálózatok és Internet Eszközök. TCP/IP-Rétegmodell. Az Internet rétegei - TCP/IP-rétegek

Számítógépes Hálózatok

Hálózati alapismeretek

Department of Software Engineering

3-4. Transmission Control Protocol

TRANSMISSION CONTROL PROTOCOL (TCP) bevezetés1

Számítógépes Hálózatok ősz 2006

Organizáció. Számítógépes Hálózatok ősz Tartalom. Vizsga. Web-oldal

8. Szállítói réteg TCP Tahoe, Reno, AIMD, hatékonyság, fairness. HálózatokII, 2006

Adatátviteli rendszerek Mobil IP. Dr. habil Wührl Tibor Óbudai Egyetem, KVK Híradástechnika Intézet

* Rendelje a PPP protokollt az TCP/IP rétegmodell megfelelő rétegéhez. Kapcsolati réteg

Organizáció. Számítógépes Hálózatok Gyakorlati jegy. Vizsga. Web-oldal

Kommunikáció. 3. előadás

Nagy sebességű TCP. TCP Protokollok

Transzport Réteg. Transzport réteg protokollok

Számítógép hálózatok

Hálózati réteg, Internet

Operációs rendszerek és hálózatok GEIAL501M A szállítási réteg

ARP ÉS DHCP. Médiakommunikációs hálózatok (VIHIM161) évi fóliái alapján készült. Dr. Lencse Gábor

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. Kocsis Gergely, Supák Zoltán

Tűzfalak működése és összehasonlításuk

Dr. Wührl Tibor Ph.D. MsC 04 Ea. IP kapcsolás hálózati réteg

Ethernet/IP címzés - gyakorlat

Két típusú összeköttetés PVC Permanent Virtual Circuits Szolgáltató hozza létre Operátor manuálisan hozza létre a végpontok között (PVI,PCI)

Multiprotocol encapsulation (RFC1483) - IETF Classical IP over ATM (RFC1577) - IETF LAN Emulation (LANE) - ATM Forum Multiprotocol over ATM (MPOA) -

E Q U I C O M M é r é s t e c h n i k a i K f t. H B u d a p e s t, M á t y á s k i r á l y u T. : F.

Dr. Varga Imre. Socket-programozás. C nyelven

A TCP/IP modell hálózati rétege (Network Layer) Protokoll-készlet: a csomagok továbbítása. Legjobb szándékú kézbesítés

Kiszolgálók üzemeltetése. Iványi Péter

URL-LEL ADOTT OBJEKTUM LETÖLTÉSE (1) URL-LEL ADOTT OBJEKTUM LETÖLTÉSE

Hálózati Architektúrák és Protokollok GI BSc. 10. laborgyakorlat

Üzenet a Pluto-ra. Delay- and Disruption- Tolerant Networking. Költl Péter. szenior műszaki tanácsadó CCIE #

Internet Protokoll 6-os verzió. Varga Tamás

Dr. Varga Imre Debreceni Egyetem, Informatikai Kar. Socket-programozás. C nyelven, Linux alatt

Hálózatok II. A hálózati réteg funkciói, szervezése

Transmission Control Protocol (TCP) (a működés alapelvei)

20. Tétel 1.0 Internet felépítése, OSI modell, TCP/IP modell szintjenek bemutatása, protokollok Pozsonyi ; Szemenyei

Az Ethernet példája. Számítógépes Hálózatok Az Ethernet fizikai rétege. Ethernet Vezetékek

Bevezető. Az informatikai biztonság alapjai II.

Transmission Control Protocol (TCP) (a működés alapelvei)

Department of Software Engineering

TCP/IP. Szállítási protokollok/4. Szállítási réteg (Transport Layer) TCP/IP protokollkészlet. Szállítási réteg (Transport Layer)

IPV6 TRANSITION. Számítógép-hálózatok (BMEVIHIA215) Dr. Lencse Gábor

Számítógépes Hálózatok GY 8.hét

A Wireshark program használata Capture Analyze Capture Analyze Capture Options Interface

1. LABORGYAKORLAT 2011 TAVASZI FÉLÉV ÓBUDAI EGYETEM PRÉM DÁNIEL. Hálózati protokollok. Számítógép hálózatok gyakorlata

Kiszolgálók üzemeltetése. Iványi Péter

Számítógépes Hálózatok GY 6.hét

Kiegészítés a Számítógép-hálózatok jegyzethez a 2. ZH témakörében. v0.9, Internet Protocol

Hálózati architektúrák laborgyakorlat

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

OSI-ISO modell. Az OSI rétegek feladatai: Adatkapcsolati réteg (data link layer) Hálózati réteg (network layer)

Hibafelismerés: CRC. Számítógépes Hálózatok Polinóm aritmetika modulo 2. Számolás Z 2 -ben

Socket programozás Példák

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet

Számítógépes Hálózatok GY 7.hét

Alkalmazás rétegbeli protokollok:

Számítógépes Hálózatok 2008

BEÁGYAZOTT RENDSZEREK TERVEZÉSE UDP csomag küldése és fogadása beágyazott rendszerrel példa

Átírás:

TCP ÉS UDP Médiakommunikációs hálózatok (VIHIM161) Médiatechnológiák és -kommunikáció szakirány 2013. március 1., Budapest Dr. Lencse Gábor tudományos főmunkatárs BME Hálózati Rendszerek és Szolgáltatások Tanszék lencse@hit.bme.hu

Tartalom A TCP és az UDP közös jellemzői és képességei Transmission Control Protocol TCP szegmens felépítése Kapcsolat felépítése és lebontása Megbízható átvitel megoldása Forgalomszabályozás (flow control) Torlódásvezérlés (congestion control) User Datagram Protocol 2

A TCP ÉS AZ UDP KÖZÖS JELLEMZŐI ÉS KÉPESSÉGEI 3

A TCP és az UDP helye a rétegekben Alkalmazási Megjelenítési Viszonylati Szállítási Hálózati Adatkapcsolati Fizikai (7. Application) (6. Presentation) (5. Session) (4. Transport) (3. Network) (2. Data Link) (1. Physical) Alkalmazási Szállítási Hálózati Hordozóhálózat (Application) (Transport) (Internet) (Link) ISO OSI TCP/IP hálózati réteg: datagramok átvitele a host -ok között szállítási réteg: a host -okon futó alkalmazások (processzek) közötti logikai kapcsolatok a hálózati réteg szolgáltatásainak igénybevételére alapozva 4

A szállítási protokollok működési helye application transport network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical application transport network data link physical Logikai kapcsolatok a végpontokban futó alkalmazások között A szállítási protokollok csak a végpontokban futnak, a köztes csomópontokban nem Az alkalmazások adategységeit szállítási protokoll-adategységekbe tördeljük, a kapottakból pedig összerakjuk A kép forrása: http://www.slideshare.net/dongants/computer-networking-kurose-ch-3 (slide 6) 5

Szállítási protokollok: TCP és UDP TCP Transmission Control Protocol UDP User Datagram Protocol Az TCP és az UDP közös képességei: Portok kezelése Multiplexelési képesség Alapvető különbség az TCP és az UDP között: A TCP összeköttetés-alapú (connection-oriented) transzportszolgáltatást nyújt Az UDP összeköttetés-menteset (connectionless) 6

A TCP és az UDP közös képességei Portok kezelése Az IP-rétegben a csomagok a host -nak vannak címezve A host -okon belül: több alkalmazás, folyamat Megkülönböztetésük: portok használatával Portok: 16 bites számok (0-tól 65535-ig terjedő értékkészlettel) Adott alkalmazás eléréséhez a megfelelő porthoz kell csatlakozni, például: Web szerver (HTTP): 80-as port FTP szerver: 21-es port Biztonságos távoli bejelentkezés (SSH): 22-es port Egyes alkalmazások TCP-t, mások UDP-t használnak (és vannak, amelyek mindkettőt) Multiplexelés/demultiplexelés A portmechanizmus segítségével 7

Portszámok szabványos kiosztása Az IANA rendelkezik felőle Három tartományt definiáltak 0-1023: System Ports (korábban: Well Known Ports) Ezeket a portokat használják az alapvető, általánosan használt hálózati szolgáltatások. Ezekhez a portokhoz csak privilegizált szerver programok kapcsolódhatnak szolgáltatás nyújtása céljából. 1024-49151: User ports (korábban: Registered Ports) Ezeken a portokon egyéb szolgáltatások érhetők el. (Ha valaki kitalál egy szolgáltatást, igényelhet hozzá ilyen portszámot.) Ezeken a portokon történő szolgáltatásnyújtáshoz nem szükséges privilegizált módban futtatni a szerver programot. 49152-65535: Dynamic and/or Private Ports Ebből a tartományból az operációs rendszer oszt ki portokat a kommunikációhoz a programoknak. Bővebben: http://www.iana.org/assignments/port-numbers 8

Példa: Multiplexelés és demultiplexelés 1 A1 A2 A3 Alkalmazások 1. port 2. port 3. port UDP IP-réteg Demultiplexelés a portok alapján Beérkező UDP datagram 9

Multiplexelés és demultiplexelés 2 = socket = process application P3 P1 P1 application P2 P4 application transport transport transport network network network link link link physical physical host 1 host 2 host 3 physical 10

Kitérő: Socket magyarázata Socket: interfész, ajtó az alkalmazás és a hálózat között A socket-et az alábbiak jellemzik: transzport-protokoll (TCP v. UDP) saját IP cím saját portszám (opcionális) távoli host IP címe (opcionális) távoli alkalmazás portszáma Erősen leegyszerűsítve: socket = IP cím + portszám Az operációs rendszer a bejövő IP csomagokat a fentiek alapján továbbítja az alkalmazásnak, kiszedve ezeket a megfelelő PDU-kból Helyi és távoli socket együtt: socket-pár 11

Kitérő: Socket illusztrációja hoszt szerver processz socket pl. TCP az alkalmazásfejlesztő kezeli Internet processz socket pl. TCP az operációs rendszer kezeli 12

Kitérő: TCP/IP Socket interface prog. 1 Egy függvény család, amivel a felhasználói programokból a TCP/IP protocol stack elérhető Illusztrációként megadunk néhány függvényhívást Socket létrehozása int socket(int domain, int type, int protocol); Sockethez helyi IP cím és port hozzárendelése int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen); Socket csatlakoztatása célcímhez int connect(int sockfd, const struct sockaddr * serv_addr, socklen_t addrlen); TCP socket esetén a hatására megtörténik a TCP kapcsolat felépítése UDP socket esetén csak a partner adatait tárolja a hívás Várakozás az ellenoldal csatlakozására int listen(int sockfd, int backlog); Csatlakozás fogadása int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); 13

Kitérő: TCP/IP Socket interface prog. 2 Felépült kapcsolat esetén a szabványos alacsony szintű fájlkezelő függvényekkel lehet kommunikálni Adatok küldése a fájlba írás függvénnyel ssize_t write(int fd, const void *buf, size_t count); Adatok fogadása a fájlból olvasás függvénnyel ssize_t read(int fd, void *buf, size_t count); A kommunikáció befejeztével a socket() függvényhívással megnyitott, vagy accept()-tel kapott socketet le kell zárni int close(int fd); TCP socket esetén kapcsolatbontást eredményez 14

Multiplexelés és demultiplexelés 3 Összeköttetés alapú eset (TCP) A szerver programból minden klienshez külön példány fut P1 P4 P5 P6 P2 P1 P3 SP: 5775 DP: 80 S-IP: B D-IP:C SP: 9157 SP: 9157 client IP: A DP: 80 S-IP: A D-IP:C server IP: C DP: 80 S-IP: B D-IP:C Client IP:B Forrás: http://www.slideshare.net/dongants/computer-networking-kurose-ch-3 (slide 13) 15

Multiplexelés és demultiplexelés 4 Összeköttetés alapú eset (TCP) Egyetlen, több szálon futó szerver szolgálja ki a klienseket P1 P4 P2 P1 P3 SP: 5775 DP: 80 S-IP: B D-IP:C SP: 9157 SP: 9157 client IP: A DP: 80 S-IP: A D-IP:C server IP: C DP: 80 S-IP: B D-IP:C Client IP:B Forrás: http://www.slideshare.net/dongants/computer-networking-kurose-ch-3 (slide 14) 16

Multiplexelés és demultiplexelés 5 Összeköttetés-mentes eset (UDP) P2 P3 P1 P1 SP: 6428 DP: 9157 SP: 6428 DP: 5775 SP: 9157 SP: 5775 client IP: A DP: 6428 server IP: C DP: 6428 client IP:B Forrás: http://www.slideshare.net/dongants/computer-networking-kurose-ch-3 (slide 11) 17

TRANSMISSION CONTROL PROTOCOL 18

Az TCP fő jellemzői Célkitűzés: megbízható szállítási szolgáltatás nyújtása az IP nem megbízható datagram-szolgáltatásán Jellemzői: (Virtuális) összeköttetések: összeköttetés épül fel és marad fenn a kommunikáció tartamára Stream-típusú szolgáltatás: oktett-streamek sorrendhelyes átvitele Strukturálatlan stream: nincsenek határolók a streamen belül Pufferelt átvitel: a streamből a datagram megtöltéséhez szükséges mennyiséget várja össze Duplex kapcsolatok: két független stream; irányonként egy-egy Vezérlő információk küldése: az ellenkező irányban folyó streambe ágyazva (piggybacking) 19

Az TCP ezekről lesz szó A szegmens* felépítése és a mezőinek értelmezése Összeköttetés-alapú kommunikáció: kapcsolat felépítése és lebontása Megbízható átvitel sorszámozás és pozitív nyugtázás segítségével Forgalomszabályozás (flow control) ablakmechanizmus segítségével Torlódásvezérlés (congestion control) * a TCP PDU-jának neve 20

A TCP szegmens felépítése 0 4 8 16 19 24 31 SOURCE PORT DESTINATION PORT SEQUENCE NUMBER ACKNOWLEDGEMENT NUMBER DATA OFFSET RESERVED CONTROL BITS WINDOW CHECKSUM URGENT POINTER OPTIONS (IF ANY) PADDING DATA 21

A TCP szegmens mezői 1 Source Port (16 bit) A portszám azon a gépen, ahonnan a szegmenst küldték. Destination Port (16 bit) A portszám azon a gépen, ahova a szegmenst küldték. Sequence Number (32 bit) Az átvitel során az oktetteket sorszámozzuk. A sorszám megmutatja, hogy a szegmens adatmezőjének kezdő oktettje hányas sorszámot kapott. Acknowledgement Number (32 bit) Annak az oktettnek a sorszámát adja meg, amelyiket várja; addig az összes nyugtázva van. 22

A TCP szegmens mezői 2 Data Offset (4 bit) 32 bites egységekben mérve megadja az adatmező kezdetét a TCP szegmens kezdetéhez képest. Tulajdonképpen a fejrész hossza, mint IP-nél az IHL mező. Reserved (4 bit) Későbbi használatra fenntartva. Az RFC 793 szerint még a 4 bites Data Offset után következő 6 bit nem volt használatban. Ez jobbról 2-vel csökkent RFC 3168 alapján. Control bits (8 bit) RFC 793 szerint csak 6 darab volt, az RFC 3168 vezette be a CWR és az ECE vezérlőbiteket a korábban fenntartott 6 bites terület végén. A vezérlőbiteknél mindig azok 1 értéke esetén áll fenn az, amit a nevük jelent. 23

A TCP szegmens mezői 3 A vezérlőbitek és értelmezésük CWR (Congestion Window Reduced) - RFC 3168 A torlódási ablakot szűkítették. ECE (ECN-Echo) - RFC 3168 Torlódásjelző visszhang. URG (urgent) A sürgős adat mutató érvényes. ACK (acknowledgment) A nyugta mező érvényes. PSH (push) Jelzi az adat késedelem nélküli továbbításának igényét. RST (reset) Egy host összeomlása, vagy más okból összezavart összeköttetés helyreállítására szolgál, illetve ha egy porton semmilyen program sem figyel, akkor az adott portra megkísérelt kapcsolatfelépítés esetén mindjárt az első SYN csomagra RST a válasz. 24

A TCP szegmens mezői 4 A vezérlőbitek és értelmezésük (folytatás) SYN (synchronize) Összeköttetés létesítésére szolgál. A kapcsolatfelépítés bemutatásánál bővebben foglalkozunk a használatával FIN (finish) Összeköttetés bontására szolgál Window (16 bit) Az ablakméretet adja meg. A forgalomszabályozáshoz szükséges mechanizmus használja, részletesen foglalkozunk vele. 25

A TCP szegmens mezői 5 Checksum (16 bit) A kiszámításához egy pseudo headert tesznek a TCP szegmens elé, ami többek között a forrás és cél IP-címeket is tartalmazza (lásd az UDP-nél), az adategység végén pedig esetleg egy 0 értékű oktettel kiegészítik, ha anélkül páratlan oktettből állna (mert 16 biten történik az ellenőrző összeg kiszámítása) A számítás ugyanazzal a módszerrel történik, mint az IP-nél. Urgent Pointer (16 bit) A sürgős adat az adatfolyam menetét megszakítva a többi adatot megelőzve feldolgozandó adat. A sürgős adat az adatmező elejétől kezdődik, a mutató a sürgős adat után következő (már nem sürgős) adat kezdetére mutat. Options, Padding Az IP-hez hasonlóan itt is lehetnek opciók és szükség lehet helykitöltésre. 26

A TCP kapcsolat felépítése A háromutas kézfogás (3-way handshake) eljárás Esemény A-nál Üzenetek Esemény B-nél SYN küldése, seq = x SYN + ACK vétele, y tárolása SYN vétele, x tárolása SYN, seq = y; ACK, ack_no=x+1 küldése ACK, ack_no=y+1 küldése (lehet benne adat) Megjegyzések ACK vétele A két kezdő sorszám nem nulla, hanem véletlenszerűen választott Mindkét oldalon ún. kapcsolatstruktúrában tárolják a kapcsolat paramétereit. A harmadik üzenet után a felek készen állnak a megbízható kommunikációra 27

A TCP kapcsolat lebontása A négyutas kézfogás (4-way handshake) eljárás Esemény A-nál Üzenetek Esemény B-nél FIN seq=x küldése ACK vétele FIN vétele ACK y+1 küldése time_wait állapot FIN vétele ACK x+1 küldése FIN, seq=y küldése ACK vétele Megjegyzések: A kapcsolat lezárását kezdeményező fél a 3. lépésben (a FIN vételére) lép be a time_wait állapotba A 2. és 3. lépés akár össze is vonható, B ACK+FIN-t is küldhetne 28

A TCP állapotátmenet diagramja Forrás: http://ssfnet.org/exchange/tcp/tcptutorialnotes.html#st 29

Sorszámok és nyugták használata Host A Host B User types C host ACKs receipt of C, echoes back C host ACKs receipt of echoed C simple telnet scenario time Forrás: http://www.slideshare.net/dongants/computer-networking-kurose-ch-3 (slide 55) 30

Várakozás nyugtázásra Várakozás ACK-ra time out esetén újra el kell küldeni Mekkorára válasszuk a time out-ot? Probléma a túl kicsivel és a túl naggyal Megoldás: a teljes terjedési időhöz (RTT - round-trip time) igazítani, adaptívvá tenni Szabályok arra, hogy mit tegyünk, ha nem jön ACK a timeout alatt Jelölés a következő fóliák ábráihoz: SendBase: (Sendbase-1)-ig van nyugtázva, amit küldtem 31

Seq=92 timeout timeout Seq=92 timeout Újraküldési esetek a TCP-nél 1 Host A Host B Host A Host B X loss Sendbase = 100 SendBase = 120 SendBase = 100 time lost ACK scenario SendBase = 120 time premature timeout Forrás: http://www.slideshare.net/dongants/computer-networking-kurose-ch-3 (slide 64) 32

timeout Újraküldési esetek a TCP-nél 2 Host A Host B X loss SendBase = 120 time Cumulative ACK scenario Forrás: http://www.slideshare.net/dongants/computer-networking-kurose-ch-3 (slide 65) 33

Time-out meghatározása Eredeti algoritmus Measure SampleRTT for each segment/ack pair Compute weighted average of RTT EstimatedRTT = a*estimatedrtt + b*samplertt, where a+b = 1 a between 0.8 and 0.9; b between 0.1 and 0.2 Set timeout based on EstimatedRTT TimeOut = 2 * EstimatedRTT Rosszul kezeli az elvesző nyugtát, és a szórást Karn/Partridge Algoritmus Do not sample RTT when retransmitting Double timeout after each retransmission Jacobson/Karels Algoritmus Érdeklődőknek: http://ssfnet.org/exchange/tcp/tcptutorialnotes.html#ar 34

TCP működésének demonstrációja 1 Firefox böngészővel a whale.hit.bme.hu weboldalának lekérése Wireshark segítségével a forgalom eltárolása utólagos analízisre Tanórán élő demonstráció, otthoni elemzésre a capture fájl elérhető a tárgy anyagai közt Figyeljük meg: IP cím alapján szűrés a két gép közti forgalomra IP fejrész mezői TCP fejrész mezői (relative sequence number) TCP kapcsolat felépítése, bontása Az Apache logo több TCP szegmensben érkezett meg Próbáljuk ki a Follow TCP stream funkciót! 35

TCP működésének demonstrációja 2 36

Forgalomszabályozás 1 A forgalomszabályozás (flow control) célja annak az elkerülése, hogy egy gyorsabb állomás egy lassabbat forgalommal elárasszon úgy, hogy a lassabb nem képes azt feldolgozni. A problémára a nyugta megvárása nem jó megoldás, erre nézzünk meg egy számpéldát: Legyen A és B távolsága 200km, az őket összekötő üvegszál törésmutatója n=1,5, a fénysebesség 300000km/s (vagyis üvegben 200km/ms), az átviteli sebesség 100Mbit/s, MTU=1000 bájt. Egy 1000 bájtos csomag 8000 bit, ennek a leadásához 80 us szükséges. Az oda-vissza út ideje csak a terjedési időt számítva is 2ms. Ez azt jelenti, hogy minden 2000us-ból 80us-ot tudunk kihasználni, ami 4%! A nyugtát tehát nem szabad megvárni! 37

Forgalomszabályozás 2 A TCP forgalomszabályozásra a csúszó ablak (sliding window) módszert használja. Az ablak értéke egy hitelkeretnek tekinthető, azt fejezi ki, hogy egy állomás ennyi adat elküldését engedélyezi a másik fél számára úgy, hogy a másik fél még nem kapott nyugtát róla. A kapcsolat felépülésekor az állomások közlik a másik féllel a kezdő ablakméretüket is A kommunikáció során az állomások az ablakméretet megváltoztathatják, de ha csökkentik, azt csak úgy tehetik, hogy annak jobb széle (ami a még elküldhető oktett sorszáma) ne mozogjon balra (ha egy oktettről egyszer kijelentettük, hogy elküldhető, azt már nem vonhatjuk vissza). 38

Forgalomszabályozás 3 window size=7 1 2 3 4 5 6 7 8 9 10 11 ack. no. ezt még lehet adni Az ablak bal széle az utolsó nyugta értékétől kezdődik (ez 3, ami azt jelenti, hogy 2-ig nyugtázva, a 3 következik), az ablak mérete pedig 7. Ez a küldő számára azt jelenti, hogy a 3-tól 9-ig terjedő sorszámú, összesen 7 darab oktett az, amit anélkül elküldhet, hogy nyugtát kapna. Például elküldi a 3-6 sorszámú oktetteket. Ekkor nem kell nyugtára várnia, hanem küldheti a 7-9 sorszámúakat is. Egy 7-es nyugtával azonban legalább 3-as ablakméretet kell kapnia Ha viszont változatlan ablakméret mellett kap egy 7-es nyugtát, akkor a 7-től 13-as oktettek küldhetők: az ablak előre csúszott. 39

Torlódásvezérlés A torlódásvezéslés (congestion control) célja annak az elkerülése, hogy valamely közbenső hálózati eszköz (router, link) túlterhelése miatt a hálózat teljesítőképessége radikálisan csökkenjen (congestive collapse). Miért is fordulhatna elő ilyen állapot? Ha a hálózat terhelése túl nagy (megközelíti a kapacitását), akkor a csomagvesztés megnő, és a TCP elkezdi újra küldeni a nyugtázatlan szegmenseket. Az újraküldés okozta terhelés növekedés további csomagvesztéseket okoz, és az önmagát gerjesztő folyamat odáig jut, hogy a hálózat kapacitásának csak a töredékét kitevő átvitelre képes, ráadásul rendkívül rossz minőségi jellemzők mellett. 40

Torlódásvezérlés a TCP-ben (elvek) Módszer: ha úgy érzékeljük, van elég átbocsátóképesség, akkor növeljük az adatsebességet, amíg torlódásra utaló jeleket nem tapasztalunk Additive increase multiplicative decrease (AIMD) módszer Új paraméter: congestion window (rövidítve: CongWin) Kezdetben: CongWin:=MSS (maximum segment size) Növeljük a CongWin-t minden RTT (round-trip time) alatt MSS-sel, amíg vesztést nem érzékelünk Csökkentsük a CongWin-t felére minden vesztéskor Küldhető adatok = min(vevő Window size, CongWin) Hogyan érzékeljük a torlódást (vesztést)? timeout letelt, nem jött nyugta többszörös nyugta érkezett ugyanarra a szegmensre (miért?) TCP és UDP Dallos, Lencse, Szabó, BME Hálózati Rendszerek és Szolgáltatások Tanszék 41

Az adatsebesség alakulása AIMD esetén 24 kbyte adatsebesség adatsebesség = CongWin RTT Byte/sec 16 kbyte 8 kbyte idő TCP és UDP Dallos, Lencse, Szabó, BME Hálózati Rendszerek és Szolgáltatások Tanszék 42

TCP torlódásvezérlés: további részletek Az AIMD kiegészítései: Slow Start az összeköttetés kezdetén a sebesség gyors (exponenciális) növelése az első vesztésig vagy egy küszöbig (ssthresh), utána AIMD Speciális viselkedés többszörös nyugták (3 duplicate ACK, azaz 4 ACK ugyanarra a szegmensre) esetén (fast retransmit, Fast Recovery), lásd: TCP Tahoe, TCP Reno Számos TCP implementáció közül néhány fontosabb: TCP Reno, TCP New Reno (RFC 6582) TCP CUBIC (Linux default) Compound TCP Érdeklődőknek: http://en.wikipedia.org/wiki/tcp_congestion_avoidance_algorithm TCP és UDP Dallos, Lencse, Szabó, BME Hálózati Rendszerek és Szolgáltatások Tanszék 43

USER DATAGRAM PROTOCOL 44

A User Datagram felépítése 0 15 16 31 Source Port Length Destination Port Checksum Data 45

A User Datagram mezői Source Port (16 bit) A portszám azon a gépen, ahonnan a user datagramot küldték. Destination Port (16 bit) A portszám azon a gépen, ahova a user datagramot küldték. Length (16 bit) A user datagram hossza oktettekben. (min. 8) Checksum (32 bit) A TCP ellenőrző összeghez hasonlóan, ún. pszeudo-fejrésszel együtt számolják, ami tartalmazza az IP címeket is. (Számítási módszere is azonos.) Opcionális: ha nincs, akkor a mező értéke: 0. 46

UDP checksum számítása A checksum számítási módja: 1-es komplemens 16 bites szavakra Tartalmazza az IP-címeket is annak ellenőrzésére, hogy a datagramm elérte a helyes címzettet, nemcsak a helyes portot Pseudo-header használatával: 0 31 Destination IP address Zero Protocol UDP Length 0 7 8 15 16 31 IP protocol type UDP = 17 Source IP address Az UDP datagramm hossza (a pseudo-header nélkül) 47

A TCP és az UDP összehasonlítása Mindkettő host layer/transport layer protokoll Mindkettő portokat kezel multiplexelés/demultiplexelés ezáltal interface nyújtása az alkalmazói folyamatok felé A TCP összeköttetés-alapú, megbízható transzport szolgáltatás sorrendhelyes, hibamentes szállítást nyújt ára: késleltetés (kapcsolat felépítése és bontása) Az UDP összeköttetés-mentes, best effort szolgáltatás nem garantál célba juttatást, csak hibajelzést nyújt gyorsan célba juttat TCP és UDP Dallos, Lencse, Szabó, BME Hálózati Rendszerek és Szolgáltatások Tanszék 48

Néhány alkalmazás szállítási protokollja Alkalmazás Alkalmazási rétegbeli protokoll E-mail SMTP TCP Távoli bejelentkezés Telnet, SSH TCP Web-elérés HTTP TCP File-átvitel FTP TCP Névfeoldás BIND UDP, TCP Routing RIP UDP Hálózatmenedzsment SNMP UDP, TCP Használt transzportprotokoll VoIP, média-streaming RTP vagy nem szabványos UDP TCP és UDP Dallos, Lencse, Szabó, BME Hálózati Rendszerek és Szolgáltatások Tanszék 49

Összefoglalás A TCP és az UDP közös jellemzői és képességei Transmission Control Protocol TCP szegmens felépítése Kapcsolat felépítése és lebontása Megbízható átvitel megoldása Forgalomszabályozás (flow control) Torlódásvezérlés (congestion control) User Datagram Protocol 50

Kérdések? KÖSZÖNÖM A FIGYELMET! Dr. Lencse Gábor tudományos főmunkatárs BME Hálózati Rendszerek és Szolgáltatások Tanszék lencse@hit.bme.hu 51