Transportní vrstva - edux.fit.cvut.cz · PDF fileTransportní vrstva RNDr. Ing....

Post on 06-Feb-2018

217 views 0 download

transcript

Transportní vrstva

RNDr. Ing. Vladimir Smotlacha, Ph.D.

Katedra po íta ových systémč č ůFakulta informa ních technologiíč

eské vysoké u ení technické v PrazeČ č© Vladimír Smotlacha, 2011

Po íta ové sít BI-PSIč č ěLS 2010/11, P edn. 6ř

https://edux.fit.cvut.cz/BI-PSI

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

2BI­PSI, Transportní vrstva

Obsah přednášky

● transportní vrstva– druhy služeb

– protokoly

– vytvoření a uzavření spojení

– řízení toku

● TCP● UDP● RTP, RTCP

3BI­PSI, Transportní vrstva

Problém dvou armád

A zvítězí, pokud A1 i A2zaútočí najednou● A1 pošle zprávu● není jisté že projde

– A2 odešle potvrzení

● co když se ztratí zpráva nebo potvrzení?– A1 odpoví dalším potvrzením

● stále není jisté, že A1 i A2 se dohodli– další potvrzení, ... atd

● Důkaz neexistence řešení: sporem– nechť n je délka nejkratšího protokolu, je poslední

potvrzení nezbytné?

4BI­PSI, Transportní vrstva

Služby

● transportní vrstva – hranice mezi– aplikací (software)

a

– sítí (technologie)

● transparentní přenos dat mezi koncovými uživateli– spolehlivost

– řízení datového toku

– segmentace dat

– oprava chyb

5BI­PSI, Transportní vrstva

Adresace

● služba musí mít adresu– TSAP – Transport Service Access Point

● předdefinované TSAP („well-known“)– např. port 80 pro http

● dynamicky přidělované– portmapper

● registruje TSAP pro služby● např. BitTorrent

6BI­PSI, Transportní vrstva

Navázání spojení

● triviální řešeni:CONNECTION REQUEST --->

<--- CONNECTION ACCEPTED

– problém: zpožděný duplikovaný paket CR

● vylepšení– unikátní identifikátor každé relace

– omezená životnost paketu

7BI­PSI, Transportní vrstva

Navázání spojení (2)

● three-way handshake

CONECTION REQUEST ---> (seq = x)

<--- ACKNOWLEDGE (seq = y, ack = x)

DATA ---> (seq = x+1, ack = y)

8BI­PSI, Transportní vrstva

Ukončení spojení

● asymetrické ukončení– jeden účastník ukončí spojení

– příklad: telefonní hovor

● symetrické ukončení – obě strany se musí dohodnout

– neexistuje řešení, pokud komunikace není bezpečná● Problém dvou armád (Two Armies Problem / Coordinated

Attack Problem / Two Generals' Problem)

9BI­PSI, Transportní vrstva

Řízení toku

● princip stejný jako v linkové vrstvě– detekce chybných paketů

– eliminace duplikovaných paketů● sekvenční číslo

– omezený počet nepotvrzených paketů

– „plovoucí okénko“ (sliding window)

10BI­PSI, Transportní vrstva

TCP

Transmission Control Protocol● služba v L4

– spojově orientovaná

– zabezpečená

– duplexní

● mnoho implementací– různé vylepšení (kontrola zahlcení, ...)

● Reno● Tahoe● Vegas

11BI­PSI, Transportní vrstva

Hlavička TCP

verze IP délka záhlaví typ služby celková délka

idetifikace IP datagramu příznaky posunutí fragmentu

TTL protokol vyšší vrstvy kontrolní součet IP záhlaví

IP adresa odesílatele

IP adresa příjemce

volitelné položky IP hlavičky

zdrojový port TCP cílový port TCP

pořadové číslo odesílaného bajtu

pořadové číslo očekávaného bajtu

délka záhlaví rezerva U A P R S F délka okna

kontrolní součet TCP ukazatel naléhavých dat

volitelné položky TCP hlavičky

data

12BI­PSI, Transportní vrstva

TCP – navázání spojení

sn 100; S ; mss1460

sn 10; ack 101; AS; mss1460

sn 101; ack 11; A ;

sn 11-20; ack 101; AP

SYN_SENT

ESTABLISHED

ESTABLISHED

SYN_RCVD

LISTEN

sn 101; ack 21; A

13BI­PSI, Transportní vrstva

Ukončení spojení

sn 50; ack 70; AF ;

sn 70; ack 51; AP;

sn 81; ack 51; AP

FIN_WAIT1

FIN_WAIT2

LAST_ACK

CLOSE_WAIT

sn 51; ack 81; A

sn 181; ack 51; AF

sn 51; ack 182; ATIME_WAIT

CLOSED

CLOSED

11,25min

2min, 30s

14BI­PSI, Transportní vrstva

Zabezpečení

● kontrolní součty● detekce duplicitních paketů● opakované odeslání● správné seřazení● timeout

15BI­PSI, Transportní vrstva

TCP – stavový diagram

.

16BI­PSI, Transportní vrstva

Socket

● standardní programátorské rozhraní – poprvé v Berkeley UNIX 4.2BSD

● primitiva– SOCKET – vytvoření koncového bodu

– BIND – přiřazení adresy k socketu

– LISTEN – schopnost akceptovat spojení

– ACCEPT – pasivní akceptace spojení

– CONNECT – aktivní pokus o spojení

– SEND – odeslání dat

– RECEIVE – přijetí dat

– CLOSE – uvolnění spojení

17BI­PSI, Transportní vrstva

Okénko

● příjemce rezervuje buffer – okénko pro přijímaná data

● příjemce v odpovědi uvádí aktuální velikost okna – okno zmenšuje, pokud data nestíhá zpracovat

– odesílatel nesmí vyslat více dat

18BI­PSI, Transportní vrstva

Sliding window

zdroj: http://condor.depaul.edu/jkristof/technotes/tcp.html

19BI­PSI, Transportní vrstva

Potvrzování (acknowledge)

● příjemce odesílá ACK– uvede pořadové číslo byte, který se očekává

– tím potvrdí, že všechny předešlé byte byly přijaty● není nutné všechny potvrzovat pakety jednotlivě

● timeout (u odesílatele)– nepřišlo potvrzení do očekávané doby

– vysílání se vrátí k prvnímu nepotvrzenému paketu

20BI­PSI, Transportní vrstva

Potvrzování (2)

● duplicitní ACK – pokud některý paket nepřijde, ale následující ano,

příjemce zopakuje poslední ACK

– využije se jako indikátor, že paket se možná ztratil

● timeout (u příjemce)– do očekávaného okamžiku nepřišel nový paket

● odešle se znovu poslední ACK● max. 3x opakovat

21BI­PSI, Transportní vrstva

Proměnné

Některé proměnné využité v kontrole zahlcení:● MSS (Maximum Segment Size) – max. velikost

posílaného paketu– definuje příjemce

● SSTHRESH (Slow-start Threshold) – hranice pravděpodobného zahlcení– odhad, kolik nepotvrzených dat lze odeslat

– v násobcích MSS

● CWND (Congestion Window) – okénko odesílatele– kolik dosud nepotvrzených dat odesílatel vyšle

22BI­PSI, Transportní vrstva

Kontrola zahlcení

● okénko odesílatele (Congestion Window)● pomalý start („slow start“)

– počáteční hodnota CWND je 1

– zpočátku se okénko odesílatele (CWND) zvětšuje o 1 po každém ACK

● velikost okénka roste exponenciálně !!

● po dosažení SSTHRESH se CWND zvětšuje lineárně

23BI­PSI, Transportní vrstva

Kontrola zahlcení (2)

● zahlcení (congestion)– ztratil se buď paket nebo jeho ACK

– pokud ACK nepřijde vůbec (timeout)● opakuje se vysílání od potvrzeného paketu● opakuje se slow start

– pokud 3x přijde opakované ACK staršího paketu (duplicitní ACK), aktivuje se „fast retransmit“ a „fast recovery“

● ztracený paket je znovu odeslán (nikoliv ale následující)– tzv. „selective retransmit“

● CWND se zmenší na polovinu

24BI­PSI, Transportní vrstva

Využití TCP

● všude, kde je nutný zabezpečený datový kanál

● není nutné pro– malé bloky dat

● má velkou režii (čas i data)

● nevhodné pro– real-time aplikace: VOIP, streaming

● paket je doručen za každou cenu – nežádoucí zpoždění

– vestavné systémy (embedded-systems)● příliš komplexní

25BI­PSI, Transportní vrstva

UDP

● User Datagram Protocol● služba v L4

– nespojovaná

– nezabezpečená

● porty

● max 64 kB dat – fragmentace v IP je nežádoucí

● např. DNS přenáší nejvíce 512 Byte

26BI­PSI, Transportní vrstva

Hlavička UDP

verze IP délka záhlaví typ služby celková délka

idetifikace IP datagramu příznaky posunutí fragmentu

TTL protokol vyšší vrstvy kontrolní součet IP záhlaví

IP adresa odesílatele

IP adresa příjemce

volitelné položky IP hlavičky

zdrojový port UDP cílový port UDP

délka dat kontrolní součet UDP záhlaví

data

27BI­PSI, Transportní vrstva

Využití UDP

● malé bloky dat, pokud– nevadí případná ztráta

– je nežádoucí režie TCP

● real-time aplikace– je lepší ztratit část dat než čekat

28BI­PSI, Transportní vrstva

RTP

Real-time Transport Protocol● přenos proudu (stream) dat mezi koncovými body v

reálném čase

● hlavička obsahuje „timestamp“– čas od začátku streamu

– jednotka závisí na aplikaci

– umožní interpretovat přijatý blok

● implementováno většinou nad UDP

29BI­PSI, Transportní vrstva

Využiti RTP

● libovolné multimediální formáty– H.264, MPEG-4, MJPEG, MPEG, ...

● videokonference● data streaming● IP telefonie

30BI­PSI, Transportní vrstva

Poděkování

Janu Kubrovi z FEL ČVUT za poskytnutí slajdů, z nichž některé byly částečně využity v této přednášce

31BI­PSI, Transportní vrstva

Děkuji za pozornost