Upload
vannhi
View
216
Download
0
Embed Size (px)
Citation preview
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
2BIPSI, Transportní vrstva
Obsah přednášky
● transportní vrstva– druhy služeb
– protokoly
– vytvoření a uzavření spojení
– řízení toku
● TCP● UDP● RTP, RTCP
3BIPSI, 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é?
4BIPSI, 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
5BIPSI, 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
6BIPSI, 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
7BIPSI, 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)
8BIPSI, 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)
9BIPSI, 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)
10BIPSI, 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
11BIPSI, 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
12BIPSI, 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
13BIPSI, 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
14BIPSI, Transportní vrstva
Zabezpečení
● kontrolní součty● detekce duplicitních paketů● opakované odeslání● správné seřazení● timeout
15BIPSI, Transportní vrstva
TCP – stavový diagram
.
16BIPSI, 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í
17BIPSI, 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
18BIPSI, Transportní vrstva
Sliding window
zdroj: http://condor.depaul.edu/jkristof/technotes/tcp.html
19BIPSI, 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
20BIPSI, 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
21BIPSI, 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
22BIPSI, 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ě
23BIPSI, 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
24BIPSI, 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í
25BIPSI, 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
26BIPSI, 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
27BIPSI, 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
28BIPSI, 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
29BIPSI, Transportní vrstva
Využiti RTP
● libovolné multimediální formáty– H.264, MPEG-4, MJPEG, MPEG, ...
● videokonference● data streaming● IP telefonie
30BIPSI, 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
31BIPSI, Transportní vrstva
Děkuji za pozornost