20.11.2014 Views

6 Počítačové sítě Transportní vrstva ARP RARP ICMP ... - eAMOS

6 Počítačové sítě Transportní vrstva ARP RARP ICMP ... - eAMOS

6 Počítačové sítě Transportní vrstva ARP RARP ICMP ... - eAMOS

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

UDP<br />

TCP<br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

Rozhraní<br />

služeb<br />

Rozhraní<br />

protokolů<br />

17<br />

6<br />

<strong>ICMP</strong> IGMP OSPF<br />

01 02 89<br />

SAP<br />

Síťová <strong>vrstva</strong><br />

IP<br />

Rozhraní<br />

přístupu k I/O<br />

<strong>ARP</strong><br />

Ethernet<br />

driver<br />

R<strong>ARP</strong><br />

Vrstva síťového rozhraní 1


DATA<br />

Systém A<br />

Uživatel transportní služby<br />

Aplikační <strong>vrstva</strong><br />

Systém B<br />

Uživatel transportní služby<br />

DATA<br />

Služby poskytované<br />

uživateli transportu dat<br />

<strong>Transportní</strong><br />

entita<br />

transport dat<br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

<strong>Transportní</strong><br />

entita<br />

DATA<br />

Služby požadované od<br />

síťové vrstvy<br />

DATA<br />

Síťová <strong>vrstva</strong><br />

2


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

• <strong>Transportní</strong> <strong>vrstva</strong> poskytuje službu aplikační vrstvě<br />

• Je nejnižší vrstvou, na kterou se odvolávají síťové aplikace<br />

(uživatelské a systémové)<br />

• <strong>Transportní</strong> služba – sekvenční přenos dat mezi<br />

komunikujícími procesy<br />

• Vytváří současně více paralelních transportních spojení<br />

• <strong>Transportní</strong> <strong>vrstva</strong> zahrnuje 2 transportní protokoly<br />

– UDP (User Datagram Protocol)<br />

– TCP (Transmission Control Protocol)<br />

• <strong>Transportní</strong> protokoly jsou prostředkem, kterým se zajistí<br />

pro uživatelskou aplikaci spojení dvou počítačů v IP síti<br />

3


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

• Přístup k transportní vrstvě z vrstvy aplikační – rozhraní<br />

služeb<br />

• Multiplexing transportních služeb a IP služby<br />

Aplikační<br />

protokol 2<br />

Aplikační<br />

protokol 4<br />

Aplikační<br />

protokol 6<br />

Aplikační<br />

protokol 1<br />

Aplikační<br />

protokol 3<br />

Aplikační<br />

protokol 5<br />

Aplikační<br />

protokol 7<br />

port<br />

UDP<br />

TCP<br />

IP<br />

4


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

• Rozhraní SAP mezi aplikační a transportní vrstvou –<br />

rozhraní služeb – identifikace aplikačního protokolu,<br />

který bude transportní službu používat<br />

• Číslo portu – 16 bitová proměnná<br />

• Port – SAP transportní vrstvy – „vstup“ do user-end<br />

systému<br />

• Ze strany user-end systému je port schránka na obsah<br />

transportního PDU – číslo portu určuje proces, který<br />

generuje data (směr „out“) nebo je spotřebitelem dat<br />

(směr „in)<br />

• Soket (socket) – IP adresa user-end systému + číslo portu<br />

– jednoznačný identifikátor poskytovatele/spotřebitele<br />

5<br />

transportovaných dat v internetu (tj. síťového procesu)


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

• Port<br />

– Číslo portu – dekadické vyjádření 1 – 65535<br />

– Adresový prostor portů spravuje IANA (Internet<br />

Assigned Numbers Authority) – pevně dané hodnoty<br />

pro poskytovatele určitých síťových služeb (tj.<br />

procesy typu „server“)<br />

– Oblast 1 – 1023 – „well-known“ porty pro známé<br />

síťové služby<br />

– Oblast 1024 – 65635 – možná registrace pro firemní<br />

vývoj, použití apod., jinak k disposici operačním<br />

systémům (přidělování procesům typu „klient“ –<br />

spotřebitelům síťových služeb) – porty alokované<br />

6


Klient<br />

<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

Server<br />

X<br />

1025<br />

23<br />

A<br />

Y<br />

Z<br />

1025<br />

1028<br />

1025<br />

Klienti používají alokované –<br />

systémem dočasně přidělené<br />

porty<br />

23<br />

B<br />

Servery používají „well-known“<br />

porty, na kterých očekávají<br />

(„naslouchají“) inicializační<br />

zprávy klienta. Typicky –<br />

procesy daemon v OS UNIX<br />

7


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong> - protokoly<br />

• Protokol UDP<br />

– Služba nespojovaná (connection-less) – nespolehlivá,<br />

transport nelze řídit<br />

– Velmi efektivní – rychlá, malá provozní režie<br />

– Používá se<br />

• pro aplikace s malým objemem přenášených dat<br />

(zprávy se stanovenou velikostí apod.)<br />

• pro aplikace vyžadujících broadcast nebo multicast<br />

• pro aplikace, které si správnost datových přenosů<br />

samy zabezpečí<br />

8


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

• Typický spotřebitel transportní služby UDP -<br />

programy pro systémové síťové služby<br />

– šíření směrovacích informací – implementace protokolu<br />

RIP<br />

– šíření systémových hodin – implementace protokolu<br />

NTP<br />

– překlady doménových jmen – implementace protokolu<br />

DNS<br />

– správa IP sítí – implementace protokolu SNMP<br />

– aj.<br />

9


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong> - protokol UDP<br />

• Formát PDU protokolu UDP – UDP datagram (UDP<br />

paket)<br />

UDP záhlaví<br />

UDP data<br />

0 15 16 31<br />

Zdrojový port<br />

Délka paketu<br />

Cílový port<br />

Checksum<br />

Checksum – kontrolní součet UDP<br />

paketu + UDP pseudozáhlaví<br />

0 15 16 31<br />

0<br />

Zdrojová IP adresa<br />

Cílová IP adresa<br />

Protokol<br />

Délka paketu<br />

10


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

• UDP paket v IP datagramu<br />

20B 8B<br />

IP záhlaví UDP záhlaví UDP data (PDU aplikačního protokolu)<br />

– typicky je jeden UDP paket vysílán v jednom IP<br />

datagramu<br />

11


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

• Protokol TCP<br />

– Služba spojovaná (connection- oriented), spolehlivá<br />

– Typ služby - PAR (Positive Acknowledgement with<br />

Retransmission)<br />

– Zajistí doručení datových segmentů ve stejném pořadí,<br />

v jakém byly odeslány s vyloučením ztráty, bitové<br />

nesprávnosti a duplicity<br />

• Protokol TCP<br />

– Vytvoří mezi komunikujícími procesy (jejich porty)<br />

virtuální osmibitový full-duplex komunikační kanál<br />

– Pojem TCP spojení – dvojice komunikujících<br />

soketů<br />

12


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

– Typicky používají transportní službu TCP uživatelské<br />

síťové aplikace (přenos souborů mezi síťovými uzly –<br />

FTP, relace přes síťový terminál – TELNET, přístup ke<br />

zdrojům systému WWW – HTTP, předávání<br />

elektronických poštovních zpráv –SMTP, atd.)<br />

– Komunikace mezi procesy probíhá ve fázích<br />

• vytvoření spojení<br />

• řízený přenos proudu dat (sekvence datových<br />

segmentů) s eventuálním opakovaném odesláním<br />

nekorektně přijatých segmentů<br />

• ukončení spojení<br />

13


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

• Přístup k transportní vrstvě z vrstvy aplikační – rozhraní<br />

služeb<br />

• Multiplexing transportních služeb a IP služby<br />

RIP<br />

DNS<br />

TELNET<br />

HTTP<br />

SNMP<br />

RTP<br />

SMTP<br />

FTP<br />

port<br />

UDP<br />

TCP<br />

IP<br />

14


Formát TCP záhlaví<br />

<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

0 15 16 31<br />

Offset<br />

Zdrojový port<br />

Pořadové číslo – Sequence Number<br />

Pořadové číslo potvrzení – Acknowledgement Number<br />

---<br />

Checksum<br />

Řídící bity<br />

TCP volby (Options)<br />

Cílový port<br />

Window Size<br />

Urgent Pointer<br />

TCP data<br />

15


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

• Sequence Number (SN)<br />

– je-li nastaven flag SYN, potom je SN počáteční číslo sekvence<br />

(ISN – Initial Sequence Number)<br />

– není-li nastaven flag SYN, potom je SN pořadové číslo prvního<br />

datového oktetu v segmentu (vzhledem k celé sekvenci<br />

přenášených dat v rámci tohoto TCP spojení)<br />

• Acknowledgement Number (ACKN) – potvrzovací číslo<br />

– musí být vysíláno během celého TCP spojení –<br />

představuje SN následujícího segmentu (tj. který je<br />

očekáván) (viz protokol Positive Acknowledgement with<br />

Retransmission)<br />

• Data Offset = délka záhlaví = počátek dat (udáváno ve<br />

„slovech“ (4 oktety))<br />

16


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

• Řídící bity – Flags 10 15<br />

Řídící bity<br />

URG ACK<br />

PSH RST SYN FIN<br />

– URG – určuje platnost pole URGENT POINTER<br />

– ACK - určuje platnost pole ACKN<br />

– PSH – oznamuje, že segment obsahuje data, která se mají<br />

bezprostředně předat cílovému procesu<br />

– RST – vyvolá reset TCP spojení<br />

– SYN – iniciuje TCP spojení, vyvolá proces synchronizace, tj.<br />

výměnu SN obou stran<br />

– FIN – iniciuje ukončovací proces TCP spojení (zpravidla v<br />

případě konce sekvence dat)<br />

17


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

• Window Size – určuje velikost „sliding window“ – max. 65535<br />

(počet oktetů, které je možno přenést bez ACK)<br />

• Checksum – kontrolní součet (včetně TCP pseudozáhlaví – viz.<br />

UDP pseudozáhlaví)<br />

• Urgent Pointer – specifikuje offset posledního oktetu urgentních<br />

dat (spolu s řídícím bitem URG)<br />

• TCP volby –pole proměnné délky (dorovnává se na hranici 2<br />

oktetů) – typ, délka<br />

– Maximum segment size (2, 4) – udává maximální možnou<br />

velikost segmentu přenášeného v rámci TCP spojení (max.<br />

65535 B)<br />

– Window Scale Factor (3, 3) – umožní zvětšení velikosti<br />

„plovoucího okna“ (65 535 x 2 14 )<br />

– Timestamp (8, 10) – nastavení časových známek na každý<br />

přenášený segment – pro měření RTT<br />

18


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

• TCP spojení: socket A socket B<br />

• Příklad: 195.178.78.10.22 - 195.178.80.140.10500<br />

služba SSH: server<br />

klient<br />

• TCP spojení – dynamický objekt v definovaném stavu<br />

• Stav TCP spojení určuje jeho předchozí stav a časově<br />

závislá událost<br />

– předání řídící informace spojení (TCP protokol)<br />

– příkaz aplikace (požadavek na spuštění služby, požadavek na<br />

přenos dat aplikace, požadavek na ukončení přenosu dat aplikace)<br />

• V OS Unix TCP spojení obsluhuje jádro<br />

– Parametr jádra – maximální počet otevřených TCP spojení<br />

– Tabulky TCP spojení (datové struktury) – utilita netstat<br />

19


aplikace TCP/UDP<br />

TCP/UDP aplikace<br />

server X<br />

klient X<br />

server Y<br />

klient Z<br />

klient W<br />

T<br />

C<br />

P<br />

Porty<br />

Well-known<br />

alokovaný<br />

T<br />

C<br />

P<br />

server Z<br />

klient Y<br />

server J<br />

server K<br />

klient J<br />

U<br />

D<br />

P<br />

U<br />

D<br />

P<br />

klient K<br />

20


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

Mechanismy řízení TCP spojení<br />

• Synchronizace komunikujících stran –ve fázi inicializace<br />

(otevírání) TCP spojení si strany vymění svá počáteční<br />

sekvenční čísla (ISN – Initial Sequence Number).<br />

• Posloupnost přijímaných segmentů TCP PDU (segmentů)<br />

– PAR – strana potvrzuje korektní přijetí předchozích<br />

segmentů pořadovým číslem segmentu následujícího, tzn.<br />

ack B = seq A + 1 a seq B = ack A – 1<br />

• Řízení toku – zamezení zahlcení virtuálního kanálu –<br />

metoda „Sliding Window“ – postupné zvyšování velikosti<br />

– strana přijímací data aplikace určuje maximum – při<br />

velikosti okna = 0 spojení zůstává otevřené.<br />

21


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

Stavy TCP spojení při normálním průběhu otevírání<br />

Klient<br />

(active open)<br />

SYN_SENT<br />

SYN J<br />

Server<br />

LISTEN (passive open)<br />

SYN_RCVD<br />

SYN K, ack J+1<br />

ESTABISHED<br />

ack K+1, seq J + 1<br />

22


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

Klient Server Klient Server<br />

ESTABISHED<br />

seq K+1 ack J+1<br />

seq J+1 ack K+2<br />

seq K+2 ack J+2<br />

seq J+2 ack K+3<br />

S A<br />

1 3<br />

2 .<br />

3 .<br />

4 4<br />

5 5<br />

ESTABISHED<br />

seq 2 ack 1<br />

S A<br />

3 2<br />

4 3<br />

5 4<br />

Jednoduché potvrzování Řízení „Sliding Window“ (= 23 3)


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

Stavy TCP spojení při normálním průběhu uzavírání<br />

Klient<br />

Server<br />

(active close)<br />

FIN_WAIT_1<br />

FIN M<br />

CLOSE_WAIT (passive close)<br />

FIN_WAIT_2<br />

TIME_WAIT<br />

ack M+1<br />

FIN N<br />

LAST_ACK<br />

ack N+1<br />

CLOSED<br />

24


<strong>Počítačové</strong> <strong>sítě</strong><br />

<strong>Transportní</strong> <strong>vrstva</strong><br />

Přechodový diagram stavů TCP spojení<br />

25

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!