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
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