Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
— | pitel:isz:tcp_ip_komunikace [30. 12. 2022, 13.43:01] (aktuální) – vytvořeno - upraveno mimo DokuWiki 127.0.0.1 | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | ====== TCP/IP komunikace ====== | ||
+ | ===== Vrstvový model ===== | ||
+ | Základním modelem je [[wp>OSI model|model ISO/OSI]]. Má 7 vrstev a je pouze teoretický, | ||
+ | ^ ISO/ | ||
+ | | | ||
+ | | Prezentační | ||
+ | | Relační | ||
+ | | ::: | Transportní | TCP, UDP | ::: | | ||
+ | | | ||
+ | | | ||
+ | | Linková | ||
+ | | ::: | Fyzická | ||
+ | | Fyzická | ||
+ | < | ||
+ | |||
+ | ===== TCP/IP ===== | ||
+ | [[wp> | ||
+ | |||
+ | TCP/IP je sada protokolů pro komunikaci počítačů přes internet. Definuje několik dílčích protokolů: | ||
+ | * [[wp> | ||
+ | * [[wp> | ||
+ | * [[wp> | ||
+ | * [[wp> | ||
+ | * [[wp> | ||
+ | |||
+ | ==== TCP a UDP ==== | ||
+ | Oba protokoly slouží ke komunikaci aplikací. Existuje mezi nimi pár rozdílů, nejdůležitější je ale to, že TCP zaručuje přenos dat přes síť, UDP nikoli. V rámci komunikace TCP se totiž posílají kontrolní zprávy, které informují odesílatele. O TCP se také říká, že je stavový. To v praxi znamená, se nejdřív ustaví oboustranné spojení skrze tzv. handshake, které existuje, dokud ho jedna ze stran nezavře. UDP je bezstavový protokol. | ||
+ | |||
+ | TCP se používá všude, kde je dobré, aby všechna data došla vždy a spolehlivě. Příkladem je třeba HTTP (web stránky). Naopak užití UDP je třeba v situacích, kdy by nebylo vhodné čekat na doručení ztraceného paketu -- VoIP, video streaming atd. | ||
+ | ==== Řízení a správa toku TCP ==== | ||
+ | Kontrola správnosti obdržených paketů na přijímající straně při TCP spojení je složena ze dvou hlavních věcí: checksum a sekvenční čísla. | ||
+ | |||
+ | === Checksum (CRC) === | ||
+ | Hlavička TCP paketu obsahuje checksum (CRC), který je vypočítaný z ostatních hodnot hlavičky + z obsahu paketu. Tuto hlavičku vypočítá a vloží odesílatel, | ||
+ | |||
+ | === Sekvenční číslo === | ||
+ | TCP má omezenou velikost jednoho paketu. Tím pádem musí být větší data fragmentována. Sekvenční číslo slouží k odhalení, zda se data při přenosu nepřeházela. Za každý odeslaný byte se u TCP sekvenční číslo zvětšuje o 1. Sekvenční číslo celého paketu ukazuje pozici prvního byte dat tohoto paketu v celém proudu dat a příští paket má sekvenční číslo vyšší o počet bytů v aktuálním paketu. | ||
+ | |||
+ | === Potvrzování paketů === | ||
+ | Každý paket, který dorazí, není rozbitý podle checksum a zároveň je očekávaný podle sekvenčního čísla, je potvrzen zpět vysílací straně. K tomu slouží speciální paket označovaný ACK, který obsahuje sekvenční číslo paketu, který přijímací strana očekává. Tzn. pokud dorazil paket 9 a obsahoval 1 byte, posílá se ACK s číslem 10. Pokud vysílací strana určitou dobu nedostane potvrzení o nějakém paketu, posílá ho automaticky znovu. | ||
+ | |||
+ | === Three-way handshake === | ||
+ | [[wp> | ||
+ | - Klient pošle '' | ||
+ | - Server odpoví '' | ||
+ | - Klient odpoví '' | ||
+ | |||
+ | === Sliding window === | ||
+ | [[wp> | ||
+ | |||
+ | Pokud má přijímací strana problém z nějakého důvodu odebírat včas data (např. zahlcení linky), odesilatel nedostává ACKy a zahlcuje příjemce ještě víc. To řeší algoritmus sliding window. | ||
+ | |||
+ | Odesilatel i příjemce si připraví okno (window) o dané velikosti, pro ukázku řekněme 10. Okno pokrývá pakety od prvního sekvenčního čísla po desáté. Odesílatel posílá postupně všechny pakety, které jsou v jeho okně. Pokud dostane odesílatel ack na nějaký paket, posune své okno na další paket po tomto ACKovaném. Tím se odesílateli " | ||
+ | |||
+ | Pokud tedy příjemce není schopný včas pakety přijímat, posílá odesilatel znovu pouze pakety z okna namísto posílání všech paketů celé zprávy. | ||
+ | |||
+ | V reálu se toto sliding window může zvětšovat a zmenšovat -- pokud dostává odesilatel všechny ACKy okamžitě, pokusí se zvětšit okno, aby mohla komunikace probíhat rychleji. Pokud naopak ACKy chodí dost pomalu, okno se zmenší (a tím pádem se sníží zahlcení příjemce). | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Popsaný algoritmus sliding window je varianta " | ||
+ | |||
+ | ==== IP (Internet Protocol) ==== | ||
+ | IP je protokol pro komunikaci počítačů, | ||
+ | |||
+ | === IPv6 === | ||
+ | [[wp> | ||
+ | |||
+ | V současné době se používá IPv4. Především z důvodu docházejících IP adres se přišlo s IPv6. A když už budeme dělat změny, tak pořádné! IPv6 nabízí kromě zásadního zvětšení IP adres (počítá se s tím, že každá měřící bóje v moři bude mít svou IP) IPv6 také vynucuje podporu zabezpečení [[wp> | ||
+ | |||
+ | Bohužel je nasazení poměrně pomalé, protože průmysl nevidí žádný důvod proč hrnout dolary do předělávání něčeho co funguje. | ||
+ | |||
+ | === IP adresa === | ||
+ | [[wp>IP address]] | ||
+ | Je 32bitová hodnota, která se obvykle zapisuje jako sekvence čtyř bytových čísel, například '' | ||
+ | |||
+ | U IPv6 je adresa prodloužena na 128 bitů (16 oktetů) a zapisuje se ve skupinách po 4 hexa znacích oddělených dvojtečkami, | ||
+ | |||
+ | ===== Model klient/ | ||
+ | Jde o centralizovaný přístup ke komunikaci v počítačové síti. Jednotliví účastníci modelu se rozdělí na žadatele o služby (klienti) a poskytovalete služby (servery). Klienti pak posílají žádosti (request) serverům, čímž se zahájí poskytování služby serverem. | ||
+ | |||
+ | // | ||
+ | |||
+ | Model klient/ | ||
+ | |||
+ | ===== Shrnutí ===== | ||
+ | * vrstvový model ISO/OSI vs TCP/IP (internet) | ||
+ | * IP: přenos dat v síti, connection-less, | ||
+ | * UDP: nespolehlivý přenos mezi aplikacemi na port, connection-less, | ||
+ | * TCP: spolehlivý přenos také na port, handshake, číslování, | ||
+ | * DHCP: statické a dynamické mapování, ICMP: kontrola spojení | ||
+ | * klient-server: |