Protokol TCP 1 TCP Transmission Control Protocol je

  • Slides: 39
Download presentation
Protokol TCP (1) • TCP (Transmission Control Protocol) je specifikován dokumentem RFC 793 •

Protokol TCP (1) • TCP (Transmission Control Protocol) je specifikován dokumentem RFC 793 • Spojovaná (connection oriented) služba, která mezi dvěma aplikacemi naváže spojení • Přenášené byty jsou číslovány • Číslování začíná od náhodně vygenerované 32 bitové hodnoty (ISN) • Je-li překročena hodnota 232 -1, pokračuje se cyklicky od hodnoty 0 • Ztracená nebo poškozená data jsou znovu vyžádána 2020 -09 -18 1

Protokol TCP (2) • Integrita dat je zabezpečena pomocí kontrolního součtu • Koncové aplikace

Protokol TCP (2) • Integrita dat je zabezpečena pomocí kontrolního součtu • Koncové aplikace (adresát a odesílatel) jsou identifikovány pomocí čísla portu (0 – 65535) • Příklady čísel portů různých aplikací: – FTP: port 21 – SSH: port 22 – Telnet: port 23 – SMTP: port 25 – HTTP: port 80 2020 -09 -18 2

Protokol TCP (3) • Přenos je realizován v segmentech TCP: + 0– 3 0

Protokol TCP (3) • Přenos je realizován v segmentech TCP: + 0– 3 0 4– 7 8 – 15 16 – 31 Source Port Destination Port 32 Sequence Number 64 Acknowledgment Number 96 Data Offset 128 C E U A P R S F W C R C S S Y I Reserved R E G K H T N N Checksum Urgent Pointer 160 Options 160, 192+ Data 2020 -09 -18 Window Size 3

Protokol TCP (4) – Source Port (16 b): • identifikuje port odesílatele – Destination

Protokol TCP (4) – Source Port (16 b): • identifikuje port odesílatele – Destination Port (16 b): • identifikuje port adresáta – Sequence Number (32 b): • je-li SYN=1, pak označuje náhodně vygenerované ISN – Initial Sequence Number • je-li SYN=0, pak označuje pořadové číslo prvního bytu v části Data – Acknowledgment Number (32 b): • je-li ACK=1, pak označuje další byte, který příjemce očekává 2020 -09 -18 4

Protokol TCP (5) – Data Offest (4 b): • specifikuje velikost hlavičky TCP v

Protokol TCP (5) – Data Offest (4 b): • specifikuje velikost hlavičky TCP v 32 bitových slovech • minimální velikost hlavičky je 20 B minimální hodnota Data Offset je 5 • maximální velikost hlavičky je 60 B maximální hodnota Data Offset je 15 – Reserved (4 b): • rezervováno pro budoucí účely • všechny bity by měly být nastaveny na 0 – Příznaky (8 b): • URG: je-li nastaven, pak indikuje, že pole Urgent Pointer obsahuje podstatné (platné) informace 2020 -09 -18 5

Protokol TCP (6) • ACK: je-li nastaven, pak indikuje, že posílaný segment je součástí

Protokol TCP (6) • ACK: je-li nastaven, pak indikuje, že posílaný segment je součástí probíhajícího přenosu dat a pole Acknowledgment Number obsahuje podstatné (platné) informace (další byte, který příjemce očekává). Je-li ACK=0 a SYN=1, pak se jedná o žádost o navázání spojení • PSH: je-li nastaven, pak by měl příjemce poslat data přímo aplikaci a nikoliv je ukládat do buffferu • RST: je-li nastaven, pak je spojení chybné a musí být resetováno • SYN: používán společně s ACK pro navázání spojení • FIN: je-li nastaven, pak značí, že spojení by mělo být ukončeno 2020 -09 -18 6

Protokol TCP (7) – Window Size (16 b): • udává, kolik místa je ve

Protokol TCP (7) – Window Size (16 b): • udává, kolik místa je ve vyrovnávací paměti adresáta • používáno adresátem k informování odesílatele, jaké množství dat chce přijmout – Checksum (16 b): • kontrolní součet – Urgent Pointer (16 b): • je-li URG=1, pak udává pořadové číslo bytu, označující poslední urgentní byte – Options: • nepovinná část, určená pro speciální účely 2020 -09 -18 7

Protokol TCP (8) • Navázání spojení (mezi stanicí A a stanicí B) probíhá ve

Protokol TCP (8) • Navázání spojení (mezi stanicí A a stanicí B) probíhá ve třech krocích (3 -way handshake): – odeslání synchronizačního packetu (A B): • má nastaven příznak SYN – oznamuje vznik nového spojení (ACK=0) • v poli Sequence Number obsahuje náhodně vygenerované ISN (Initial Sequence Number) stanice A (ISN-A), které umožňuje rozpoznávat zasílané segmenty – odeslání potvrzovacího packetu (B A) : • má nastaveny příznaky SYN a ACK • v poli Sequence Number obsahuje náhodně vygenerované ISN stanice B (ISN-B) – je nezávislé na ISN-A 2020 -09 -18 8

Protokol TCP (9) • jako Acknowledgment Number je odesláno ISN-A+1, což indikuje, že segment

Protokol TCP (9) • jako Acknowledgment Number je odesláno ISN-A+1, což indikuje, že segment navazující spojení byl korektně přijat – dokončení navázání spojení (A B) : • stanice A zasílá stanici B packet s nastaveným příznakem ACK (SYN=0) • pole Sequence Number je nastaveno na ISN-A+1 • v Acknowledgment Number je odesláno ISN-B+1 • Při přenosu dat je využívána metoda posuvného okna (sliding window method), umožňující odesílat data, aniž by jejich příjem byl potvrzen až dokud se nedosáhne hranice okna 2020 -09 -18 9

Protokol TCP (10) • Posuvné okno (příklad): Odesílatel Adresát 9 8 7 6 5

Protokol TCP (10) • Posuvné okno (příklad): Odesílatel Adresát 9 8 7 6 5 4 3 2 1 0 – zapotřebí přenést segmenty 0 – 9, WIN=4 Odesílatel 3 2 1 0 Adresát 9 8 7 6 5 4 3 2 1 0 – poslány segmenty 0 – 3, které nyní čekají na potvrzení 2020 -09 -18 10

Protokol TCP (11) 3 2 1 Odesílatel Adresát 9 8 7 6 5 4

Protokol TCP (11) 3 2 1 Odesílatel Adresát 9 8 7 6 5 4 3 2 1 0 0 ACK 0 – segment 0 přijat a potvrzen posunutí okna Odesílatel 4 3 2 1 9 8 7 6 5 4 3 2 1 0 Adresát 0 – poslání segmentu 4 2020 -09 -18 11

Protokol TCP (12) Odesílatel Adresát 9 8 7 6 5 4 3 2 1

Protokol TCP (12) Odesílatel Adresát 9 8 7 6 5 4 3 2 1 0 ACK 4 – segmenty 1 – 4 přijaty a potvrzeny posunutí okna Odesílatel 8 7 6 5 9 8 7 6 5 4 3 2 1 0 Adresát 4 3 2 1 0 – poslání segmentů 5 – 8 2020 -09 -18 12

Protokol TCP (13) 8 Odesílatel 9 8 7 6 5 4 3 2 1

Protokol TCP (13) 8 Odesílatel 9 8 7 6 5 4 3 2 1 0 Adresát 7 6 5 4 3 2 1 0 ACK 7, WIN=2 – zmenšení okna na WIN=2 – segmenty 5 až 7 přijaty a potvrzeny posunutí okna Odesílatel 9 8 7 6 5 4 3 2 1 0 9 8 Adresát 7 6 5 4 3 2 1 0 – poslání segmentu 9 2020 -09 -18 13

Protokol TCP (14) 9 8 Odesílatel Adresát 9 8 7 6 5 4 3

Protokol TCP (14) 9 8 Odesílatel Adresát 9 8 7 6 5 4 3 2 1 0 Time Out – segment 8 nebyl potvrzen nutnost zaslat znovu Odesílatel Adresát 9 8 7 6 5 4 3 2 1 0 ACK 9 – segmenty 8 a 9 přijaty a potvrzeny konec přenosu 2020 -09 -18 14

Protokol TCP (15) • Spojení může být ukončenou libovolnou stanicí (A i B), např.

Protokol TCP (15) • Spojení může být ukončenou libovolnou stanicí (A i B), např. : – stanice A zašle stanici B segment s FIN=1 a ACK=1 – stanice B odpoví segmentem s ACK=1 a FIN=1 – stanice A odpoví segmentem s ACK=1 2020 -09 -18 15

Protokol UDP (1) • UDP (User Datagram Protocol) nedává záruky na přenášené datagramy •

Protokol UDP (1) • UDP (User Datagram Protocol) nedává záruky na přenášené datagramy • Na rozdíl od protokolu TCP nezaručuje, že se: – přenášený datagram neztratí – nezmění pořadí doručených datagramů – některý datagram nedoručí vícekrát • Používaný např. pro DNS, Vo. IP, TFTP nebo online hry • Koncové aplikace (adresát a odesílatel) jsou identifikovány pomocí čísla portu (0 – 65535) 2020 -09 -18 16

Protokol UDP (2) • Struktura packetu UDP: + 0 – 15 16 – 31

Protokol UDP (2) • Struktura packetu UDP: + 0 – 15 16 – 31 0 Source Port Destination Port 32 Length Checksum 64 Data – Source Port (16 b): • je-li použit, pak identifikuje port odesílatle a měl by být použit jako port pro odpověď • v opačném případě by měl mít hodnotu 0 2020 -09 -18 17

Protokol UDP (3) – Destination Port (16 b): • identifikuje port adresáta – Length

Protokol UDP (3) – Destination Port (16 b): • identifikuje port adresáta – Length (16 b): • specifikuje délku celého datagramu • udáván v bytech • minimální délka je 8 B – Cehecksum (16 b): • kontrolní součet 2020 -09 -18 18

Propojování sítí (1) • Propojování dvou a více sítí je možné realizovat pomocí následujících

Propojování sítí (1) • Propojování dvou a více sítí je možné realizovat pomocí následujících zařízení: – Repeater (opakovač): • zesilovač, který předává veškeré informace z jednoho síťového segmentu na druhý • používá se k prodloužení síťového segmentu • pracuje na fyzické vrstvě modelu OSI – Bridge (most): • zařízení předávající packety (rámce) z jedné sítě do druhé • pracuje na linkové vrstvě modelu OSI 2020 -09 -18 19

Propojování sítí (2) • v případě, že packet vyslaný uzlem v jedné síti je

Propojování sítí (2) • v případě, že packet vyslaný uzlem v jedné síti je určen pro uzel nacházející se ve stejné síti, pak tento packet je bridgem ignorován (není předán do druhé sítě) – Router (směrovač): • zařízení předávající informace z jedné sítě do druhé v závislosti na jejich síťové adrese • má za úkol poskytnout cestu ze síťového uzlu na uzel v jiné síti • bývá realizován hardwarovým zařízením pracujícím na úrovni síťové vrstvy modelu OSI • může být realizován běžným počítačem, popř. specializovaným zařízením 2020 -09 -18 20

Propojování sítí (3) – Gateway (brána): • zařízení umožňující propojení i velmi odlišných sítí

Propojování sítí (3) – Gateway (brána): • zařízení umožňující propojení i velmi odlišných sítí • pracuje na horních vrstvách modelu OSI 115 147. 251. 48. 0 # 10 E 50 # A # B # 19 G 14 32 # # 147. 251. 60 147. 251. 50. 0 1 Router 10 1 D 62 61 2020 -09 -18 40 C # 147. 251. 52. 0 # # 5 211 21

Propojování sítí (4) • Routovací tabulky (zjednodušené): Node A B C D E G

Propojování sítí (4) • Routovací tabulky (zjednodušené): Node A B C D E G 2020 -09 -18 Network Subnet Mask 0. 0 147. 251. 48. 0 255. 0 0. 0 147. 251. 52. 0 255. 0 0. 0 147. 251. 50. 0 255. 0 0. 0 147. 251. 48. 0 255. 0 147. 251. 52. 0 255. 0 147. 251. 50. 0 255. 0 147. 251. 60 255. 252 Gateway 147. 251. 48. 14 147. 251. 48. 19 147. 251. 48. 14 147. 251. 48. 50 147. 251. 52. 1 147. 251. 52. 5 147. 251. 52. 10 147. 251. 50. 1 147. 251. 50. 40 147. 251. 61 147. 251. 48. 14 147. 251. 52. 1 147. 251. 50. 1 147. 251. 62 Interface 147. 251. 48. 19 147. 251. 48. 50 147. 251. 52. 5 147. 251. 52. 10 147. 251. 50. 40 147. 251. 62 147. 251. 48. 14 147. 251. 52. 1 147. 251. 50. 1 147. 251. 62 22

IPv 6 (1) • Nová verze protokolu IP (nyní také označovaného jako IPv 4)

IPv 6 (1) • Nová verze protokolu IP (nyní také označovaného jako IPv 4) • IPv 6 má za úkol řešit nedostatky protokolu IPv 4, které jsou spojené zejména s velkým rozmachem Internetu • Mezi hlavní rysy IPv 6 patří: – rozšířený adresní prostor – implementace bezpečnostních mechanismů – podpora mobilních zařízení – možnost automatické konfigurace – spolupráce s IPv 4 2020 -09 -18 23

IPv 6 (2) • Pro adresaci v rámci protokolu IPv 6 se používá 128

IPv 6 (2) • Pro adresaci v rámci protokolu IPv 6 se používá 128 bitová adresa • Adresa IPv 6 se většinou zapisuje v hexadecimální soustavě jako osm 16 bitových skupin oddělených dvojtečkou, např. : 21 DA: 00 D 3: 0000: 2 F 3 B: 02 AA: 00 FF: FE 28: 9 C 5 A • Při zápisu adresy IPv 6 lze v každé 16 bitové skupině vynechat levostranné nuly, např: . 21 DA: D 3: 0: 2 F 3 B: 2 AA: FF: FE 28: 9 C 5 A • Rovněž je možné vynechat libovolný počet po sobě následujících 16 bitových skupin obsahujících samé nuly a nahradit je symbolem : : 2020 -09 -18 24

IPv 6 (3) • Náhradu pomocí symbolu : : lze v zápisu IPv 6

IPv 6 (3) • Náhradu pomocí symbolu : : lze v zápisu IPv 6 adresy provést nejvýše jednou (jinak by docházelo k nejednoznačnostem) • Např. adresu. 1800: 0000: 7 AEF: 0000: 1072: 4310 lze zkrátit jako: 1800: : 7 AEF: 0: 0: 1072: 4310 nebo 1800: 0: 0: 7 AEF: : 1072: 4310 • Nelze však použít zápisu: 1800: : 7 AEF: : 1072: 4310 – Pozor: chybný zápis 2020 -09 -18 25

IPv 6 (4) • Adresa IPv 6 může být uvedena i s vyznačením prefixu,

IPv 6 (4) • Adresa IPv 6 může být uvedena i s vyznačením prefixu, který udává počet bitů vymezený pro podsíť, např. : 12 AB: 0000: CD 30: 0000: 0000/60 12 AB: 0: 0: CD 30: : /60 udává, že prvních 60 bitů (12 AB 0000 CD 3) označuje podsíť • Speciálním případem zápisu IPv 6 adresy je adresa, která obsahuje vloženou adresu IPv 4 • V takovém případě se poslední 4 byty zapisují ve stejném formátu jako adresa IPv 4 2020 -09 -18 26

IPv 6 (5) • Např. : 0000: 0000: FFFF: 189. 44. 152. 138 0:

IPv 6 (5) • Např. : 0000: 0000: FFFF: 189. 44. 152. 138 0: 0: 0: FFFF: 189. 44. 152. 138 : : FFFF: 189. 44. 152. 138 • Adresy v IPv 6 se nepřidělují jednotlivým uzlům, ale síťovým rozhraním • Uzel je identifikován adresou typu unicast, která je spojena s jeho síťovým rozhraním • Jedno síťové rozhraní může mít přiděleno více adres stejného nebo různých typů 2020 -09 -18 27

IPv 6 (6) • Protokol IPv 6 rozlišuje tři typy adres: – unicast: •

IPv 6 (6) • Protokol IPv 6 rozlišuje tři typy adres: – unicast: • identifikuje jedno síťové rozhraní • packet odeslaný s adresou typu unicast bude doručen na na síťové rozhraní odpovídající této adrese – anycast: • reprezentuje skupinu síťových rozhraní náležejících obvykle různým síťovým uzlům • packet odeslaný s tímto typem adresy bude doručen na „nejbližší“ rozhraní vyhovující dané adrese – multicast: 2020 -09 -18 • označuje množinu síťových rozhraní patřících obvykle různým síťovým uzlům 28

IPv 6 (7) • packet odeslaný s tímto typem adresy bude doručen na všechna

IPv 6 (7) • packet odeslaný s tímto typem adresy bude doručen na všechna rozhraní odpovídající zadané adrese: • Poznámka: – IPv 6 nepoužívá adresaci typu broadcast, která je nahrazena obecnější adresací typu multicast • Adresový prostor v IPv 6 je rozdělen pomocí prefixu FP (Format Prefix) • FP má proměnlivou délku a tvoří nejvyšší bity IPv 6 adresy 2020 -09 -18 29

IPv 6 (8) Prefix 0000 001 0000 010 001 010 100 Zlomek adr. prost.

IPv 6 (8) Prefix 0000 001 0000 010 001 010 100 Zlomek adr. prost. Význam 1/256 Rezervováno (např. : : 1 označuje loopback) 1/128 Rezervováno pro NSAP alokaci 1/128 Rezervováno pro IPX alokaci Agregovatelné globální unicast adresy, odpovídají současným IPv 4 adresám a identifikují rozhraní tak, 1/8 aby bylo celosvětově jednoznačné 1/8 Provider-based adresy 1/8 Rezervováno pro Geographic-based adresy 1111 1110 10 1/1024 Lokální linkové adresy – jednoznačné jen v rámci dané fyzické sítě 1111 1110 11 1/1024 Místní lokální adresy – jednoznačné jen v rámci dané instituce 1111 1/256 Skupinové (multicast) adresy 2020 -09 -18 30

IPv 6 (9) • IPv 6 rozlišuje následující adresy typu unicast: – agregovatelné globální

IPv 6 (9) • IPv 6 rozlišuje následující adresy typu unicast: – agregovatelné globální unicast adresy: • odpovídají současným klasickým IP adresám • identifikují dotyčné rozhraní tak, aby bylo celosvětově jednoznačné 001 TLA ID Res. NLA ID SLA ID 3 b 13 b 8 b 24 b 16 b Interface ID 64 b TLA ID – Top-Level Aggregation Identifier NLA ID – Next-Level Aggregation Identifier SLA ID – Site-Level Aggregation Identifier 2020 -09 -18 31

IPv 6 (10) • na výše uvedenou adresu lze zjednodušeně pohlížet jako na adresu

IPv 6 (10) • na výše uvedenou adresu lze zjednodušeně pohlížet jako na adresu skládající se ze 3 částí: – public topology: tvořena většími a menšími poskytovateli Internetu – site topology: tvořena podsítěmi v rámci instituce – network identifier: identifikátor konkrétního síťového rozhraní 001 TLA ID Res. NLA ID SLA ID Interface ID 48 b 16 b 64 b Public topology Site topology Network identifier – geographic based adresy: – nejsou a patrně nebudou ve větším měřítku používány 2020 -09 -18 32

IPv 6 (11) – lokální linkové adresy (Link Local Addresses): • jednoznačné pouze v

IPv 6 (11) – lokální linkové adresy (Link Local Addresses): • jednoznačné pouze v rámci dané fyzické sítě 1111111010 000…. 000 Interface ID 10 b 54 b 64 b – místní linkové adresy (Site Local Addresses): • jednoznačné pouze v rámci dané fyzické sítě • mají formát, který umožňuje jejich snadné nahrazení agregovatelnými globálními unicast adresami 1111111011 Subnet ID Interface ID 10 b 54 b 64 b 2020 -09 -18 33

IPv 6 (12) • Pole Interface ID by u všech unicast adres (s prefixem

IPv 6 (12) • Pole Interface ID by u všech unicast adres (s prefixem 001 až 111) mělo by být ve formátu EUI-64 • Adresu ve formátu EUI-64 lze vytvořit na základě ethernetové adresy karty • Ethernetová adresa se skládá ze dvou částí: – první tři byty tvoří identifikátor výrobce karty (tzv. OUI - Organizational Unique Identifier) – druhé tři byty identifikují konkrétní kartu daného výrobce (tzv. Node-ID) 2020 -09 -18 34

IPv 6 (13) 47 41 24 23 OUI (24 b) 0 Node-ID (24 b)

IPv 6 (13) 47 41 24 23 OUI (24 b) 0 Node-ID (24 b) • Bit 41 (U/L - Universal/Local) vyjadřuje, zda-li adresa je platná globálně (=0) nebo lokálně (=1) • Adresa ve formátu EUI-64 vznikne: – vložením dvou bytů s hexadecimální hodnotou FFFE mezi OUI a Node-ID – inverzí bitu 41 (U/L) 2020 -09 -18 35

IPv 6 (14) • Příklad: – ethernetová adresa: 00: 0 B: 0 A: 2

IPv 6 (14) • Příklad: – ethernetová adresa: 00: 0 B: 0 A: 2 D: 51 – po vložení bytů FFFE: 00: 0 B: FF: FE: 0 A: 2 D: 51 – výsledná adresa ve formátu EUI-64 (tj. po inverzi bitu U/L): 0200: 0 BFF: FE 0 A: 2 D 51 • Poznámka: – v budoucnu by adresy síťových karet architektur standardizovaných dokumenty IEEE 802 měly být již 64 bitové: • 24 bitů pro OUI • 40 pro Node-ID 2020 -09 -18 36

IPv 6 (15) – speciální adresy: • nespecifikovaná adresa: 0: 0: 0: 0 (:

IPv 6 (15) – speciální adresy: • nespecifikovaná adresa: 0: 0: 0: 0 (: : ) – používaná pro rozhraní, které nemá přidělenu žádnou adresu – adresa může být následně dynamicky přidělena nějakým serverem • loopback: 0: 0: 1 (: : 1) – adresa ekvivalentní 127. 0. 0. 1 v IPv 4 – IPv 6 adresy s vloženými adresami IPv 4: • dovolují přenášet (tunelovat) IPv 6 packety přes IPv 4 směrovací infrastrukturu • slouží k usnadnění přechodu z IPv 4 na IPv 6 2020 -09 -18 37

IPv 6 (16) • IPv 4 kompatibilní adresa (IPv 4 compatible address): – IPv

IPv 6 (16) • IPv 4 kompatibilní adresa (IPv 4 compatible address): – IPv 6 uzly, které používají tuto techniku mají přiřazenu speciální IPv 6 unicast adresu nesoucí ve svých dolních 32 bitech adresu IPv 4 – ostatní bity adresy jsou vždy rovny nule – např. : : 130. 192. 252. 27 • IPv 4 mapovaná adresa (IPv 4 mapped address): – označuje uzel, který může pracovat pouze s adresací IPv 4, která se převádí na IPv 6 adresaci – slouží pouze pro interní účely (nikdy není použita jako adresa odesílatele nebo příjemce IPv 6 packetu) – IPv 4 adresa je opět umístěna v dolních 32 bitech, kterým nyní předchází 16 bitů tvořených jedničkami – zbývající bity adresy jsou vždy rovny nule – např. : : FFFF: 130. 192. 252. 27 2020 -09 -18 38

IPv 6 (17) • Struktura adresy typu multicast: 1111 Flags 8 b 4 b

IPv 6 (17) • Struktura adresy typu multicast: 1111 Flags 8 b 4 b Scope Group ID 4 b 112 b – Flags: • zatím definován pouze nejnižší bit T (Transient): – 0: označuje trvale přiřazenou multicast adresu – 1: označuje přechodně přiřazenou multicast adresu – Scope: • určuje rozsah skupinového vysílání (Node-local, Linklocal, Site-local Organization-local, Global) 2020 -09 -18 39