Protokoly TCP/IP
standard pro komunikaci v
Internetu (a stále více i v
intranetech)
Vrstvený model a srovnání s OSI-RM


Adresace
- adresy 32b, adresa sítě + adresa uzlu v rámci sítě
- směrovače nemusí ukládat adresy všech stanic v sítí, pouze
adresy jednotlivých sítí
= > omezení rozsahu směrovacích tabulek
- adresy všech stanic na segmentu mají společnou část adresy
sítě
- adresy sítí přiděluje oblastní správce (pro Evropu RIPE)
- každé rozhraní připojené do sítě musí mít jednoznačnou IP adresu
(příp. více adres)
- unicast, multicast a broadcast adresy
- soukromé izolované sítě mají vyhrazené rozsahy adres použitelné
opakovaně, nesmí být přímo připojeny k Internetu (pokud jsou, tak přes
proxy s překladem adres):
10.0.0.0, 172.16.0.0-172.31.0.0,
192.168.0.0-192.168.255.0
- v posledních letech snaha o hierarchickou adresaci
(subnetting, přidělování prefixu sítě s délkou podle potřeby)
Struktura IP adresy
1. Třídy adres
Původní představa návrhářů Internetu:
- 3 možnosti dělení adresy na části adresy sítě a adresy uzlu v
rámci sítě - třídy adres
- speciální třída adres pro multicasting
- jedna třída rezerva
- třída se rozliší podle prvních bitů nejvyššího bajtu IP adresy:

- A: 8+24b, 0..., (0-127), dnes nepřidělovány
- B: 16+16b, 10..., (128-191), velké podniky,
poskytovatelé Internetu
- C: 24+16b, 110..., (192-223), dostupné pro malé organizace
- D: multicast adresy, 1110..., (224-239), některé adresy
rezervovány (např. komunikace směrovačů)
- E: experimentální + rezerva, 1111..., (240-255)
Implicitní masky podsítí jednotlivých tříd adres (=bez použití
podsíťování):
A: 255.0.0.0
B: 255.255.0.0
C: 255.255.255.0
2. Beztřídní (classless) adresy
- délka prefixu sítě přidělována podle potřeby
- k beztřídní adrese musí být
specifikována subnet maska
- v poslední době se třídy adres prakticky přestaly používat
(přechod na CIDR-Classless Inter-Domain Routing)
Speciální IP adresy

adresa sítě/podsítě jako celku
- v části adresy uzlu samé
nuly
- pro formální označení sítě jako takové, v IP paketech se nikdy
nepoužívá
broadcast v síti/podsíti (directed broadcast)
- adresa sítě platná, v části
adresy uzlu samé jedničky
- někdy se explicitně zakazuje
univerzální broadcast
- adresa 255.255.255.255
- šíření jen v rámci segmentu vysílače
- mimo segment není směrovači propouštěna
loopback adresa
-127.0.0.1
- zpětnovazební smyčka v rámci uzlu
Podsítě (subnetting)
- řeší neefektivní rozdělení adres sítí vzhledem k reálným počtům
stanic na segmentech (přebytek u tříd A, nedostatek u tříd C)
- možnost rozdělení přiděleného adresního rozsahu mezi více
segmentů
- každý
segment musí mít svou vlastní adresu podsítě
- užitečné i u beztřídního adresování
- část adresy pro uzel sítě se rozdělí na adresu podsítě (zleva) a
na adresu uzlu v této podsíti
- dělit možno po bitech s ohledem na skutečné počty uzlů v
jednotlivých segmentech a počet segmentů
- pro každou (podsíťovanou) adresu nutno udat, kolik bitů
zleva představuje sít+subsíť a kolik uzel. Toto udává maska podsítě
(subnet mask).
- jednička na příslušném bitovém místě masky podsítě znamená, že
odpovídající bit adresy patří do adresy sítě resp. podsítě, nula
zařazuje bit do adresy
uzlu

Poznámka:
Směrovací protokoly, které nepropagují s adresou sítě i masku (ale
spoléhají na třídy) vyžadují spojitost podsítí (=podsítě
téže adresy sítě nesmí být odděleny segmentem jiné sítě). Jedná se
např. o RIP.
Podmínky pro podsíťování
- Musíme umět zaadresovat podsíť jako takovou (adresa uzlu nuly)
a
všechny stanice
na podsíti (adresa uzlu jedničky), takže maximální počet uzlů v podsíti
je vždy o 2 menší, než odpovídá počtu bitů ponechaných pro adresu uzlu.
- Minimální počet bitů pro adresu uzlu v podsíti je 2.
- Podsíť určená bitovou kombinací samých nul("subnet zero") se z
historických (formálních) důvodů dříve nepoužívala, dnes se používá
běžně. Na některých směrovačích je nutné použití subnet zero explicitně
povolit.
Rozsahy masek podsítí pro jednotlivé třídy adres:
A: 255.192.0.0-255.255.255.252
B: 255.255.192.0-255.255.255.252
C: 255.255.255.192-255.255.255.252
Příklady:
151.88.19.103/255.255.255.0:
třída B, podsíť 151.88.19 sítě 151.88.0.0, broadcast pro podsíť
151.88.19.255
151.88.19.103/255.255.255.224:
třída B, 8 bitů předposledního a 3 bity posledního oktetu použito pro
podsíť,
podsíť 151.88.19.96 sítě 151.88.0.0, broadcast pro podsíť 151.88.19.127
10.0.0.239/255.255.255.240:
broadcast adresa na síti 10.0.0.224 (!)
VLSM: Variable-Length Subnet Mask, RFC 1009
Původně se v rámci jedné podsíťované IP sítě používala stejná maska
podsítě.
Problém v případě sítě se segmenty o velmi různém počtu stanic (např.
rozlehlý
segment přepínaného Ethernetu versus sériová dvoubodová linka).
VLSM dovoluje v jedné síti používat více rozdílných masek podsítí,
výsledné adresy však nadále musí zůstat jednoznačné.
Ve směrovacích tabulkách uloženy cílové adresy vždy s příslušnými
maskami podsítí, použije se položka, která se shoduje s cílovou adresou
z paketu na největší počet bitů
Použitelné jen se směrovacími protokoly, které spolu s adresou sítě
propagují i její masku podsítě (OSPF, ISIS, RIP v.2).
Umožňuje "podsíťovat podsítě".
CIDR: Classless InterDomain Routing
- supernetting, RFC 1518, 1519
- možnost agregování záznamů ve směrovací tabulce na základě
společného prefixu (bez ohledu na třídy)
NAT: Network Address Translation

- překlad zdrojové nebo cílové adresy
- probíhá obvykle na směrovačích
- použitá překladové tabulky
- záznamy překladové tabulky buďto konfigurovány staticky nebo se
vytvářejí dynamicky automaticky
- typicky mezi "vnitřní" síti s privátními adresami a "vnější" síti
s veřejnými (globálně jednoznačnými) adresami
Způsob
použití dynamického NAT
- uživateli je přiděleno M veřejných adres
- uživatel chce provozovat N>M strojů a umožnit jim přístup do
vnější sítě (vždy nejvýše M strojům současně)
- dosud nevyužité veřejné adresy směrovač udržuje v poolu
- jestliže stanice S z vnitřní sítě pošle paket do vnější sítě,
je jí dočasně přidělena některá adresa V z poolu veřejných adres
(pokud v něm nějaká zbývá)
- v překladové tabulce se vytvoří záznam mapující IP adresu
stanice S na adresu V
- v odchozím paketu se přepíše adresa stanice S na adresu V (ta
je ve vnější síti jednoznačná a směrovatelná)
- při příchodu odpovědi na adresu V se v překladové tabulce
najde, že se cílová adresa V má přeložit na adresu S, což se provede a
paket se odešle do vnitřní sítě
- aby mohlo N strojů sdílet M adres, mají dynamicky vytvořené
záznamy překladové tabulky časově omezenou platnost (timeout od
posledního použití)
- při odstranění expirované položky se veřejná adresa vrátí zpět
do poolu
Způsob
použití statického NAT
- statický překlad konkrétní zdrojové adresy vnitřní sítě na
konkrétní adresu směrovatelnou ve vnější síti
- statický překlad konkrétní cílové adresy (směrovatelnou ve vnější
síti) na konkrétní adresu vnitřní sítě
NAT poskytuje i další zajímavé možnosti.
IP - Internet Protocol
- 3. vrstva, síťová služba posílání nezávisle směrovaných paketů
bez spojení
- RFC 791, 1042, 894, v současné době verze 4, chystá se verze 6
- fragmentace paketů při průchodu linkami s nedostatečným MTU
(max. délkou datové části rámce)
- fragmentace ve směrovačích nebo na zdroji
- skládání až v
koncovém uzlu (fragmenty mohou jít různými cestami)
- každý segment musí být schopen přenést paket o délce 576 B
Hlavička IP

- version - verze protokolu, dnes 4
- header length - protože header obsahuje options s proměnnou délkou
- type of service - určuje prioritu paketu při posílání sítí
(použití se zavádí postupně)
- total length - délka IP paketu (max. 64kB)
- identification - ID paketu (dočasně) jednoznačné v rámci zdroje,
všechny fragmenty paketu mají ID stejné
- flags - povolení/zákaz fragmentace, indikace posledního fragmentu
fragmentovaného paketu
- Time to Live - počítadlo snižované při každém průchodu
směrovačem, proti zbloudilým paketům cyklujícím ve směrovací smyčce.
Při dočítání do nuly se paket likviduje.
- číslo protokolu vyšší vrstvy neseného v paketu
- header checksum - nezahrnuje datovou část paketu (!)
- zdrojová a cílová IP adresa
- options - volitelné, proměnná délka
Podpůrné protokoly IP
ARP - Address Resolution Protocol
- RFC 826, 1027
- mapování IP adres na MAC adresy
Při potřebě zjistit MAC adresu k IP adrese se generuje ARP request
(broadcast),
ten obsahuje požadovanou IP adresu. Stanice s touto adresou odpoví svou
MAC
adresou (ARP reply).
Navíc se do requestu vkládá dvojice < zdrojová IP, zdrojová MAC
>;
každý počítač sleduje všechny ARP broadcasty a doplňuje informace ve
své ARP
cache. ARP cache je lokální cache jednotlivých stanic udržující známé
dvojice
< IP adresa, MAC adresa > .
Proxy ARP: jestliže požadovaná IP adresa není na lokální síti
(a zdroj nepodporuje default gateway), může router poskytnout jako
reakci na žádost na tuto IP
adresu svou MAC adresu a zprostředkovat další doručení paketu
Většinou mají stanice nakonfigurovánu IP adresu implicitního
směrovače (default gateway), na kterou posílají pakety pro cíle,
které nejsou na stejné podsíti.
ICMP - Internet Control Message Protocol
- RFC 792
- protokol služebních řídících zpráv, ohlašování chyb a zvláštních
stavů při přenosu paketů
- šíří se v datové části IP paketů
Zprávy ICMP:
- Echo request a echo reply - použití pro test dostupnosti (ping)
- Redirect - informace zdroji zprávy o lepší cestě k cíli,
generuje směrovač
- Source quench - žádost cílové stanice o snížení rychlosti
generování zpráv zdrojem (přeplňují se buffery)
- Destination unreachable - cíl není dostupný (nedostupný cílový
port, adresa, protokol; nezbytnost fragmentace, ale fragmentace v
paketu explicitně zakázána)
- Address mask request, Address mask reply - zjištění síťové masky
rozhraní
- Router solicitation - žádost o adresu směrovače
- Router advertisement - inzerování adresy směrovače
- Time exceeded - životnost (TTL) paketu překročena nebo všechny
fragmenty nedošly v timeoutu
- Parameter problem - problém v parametrech záhlaví datagramu
- ...
traceroute
- zjištění všech směrovačů na cestě k cílové stanici
- využívá pole TTL, začíná se od 1, stále se zvyšuje, sledují se
IP adresy, ze kterých příjde ICMP Time Exceeded
Transportní vrstva TCP/IP
UDP - User Datagram Protocol
- 4. vrstva, nepotvrzovaná datagramová služba
- RFC 768
- podpora všesměrového a skupinového vysílání (na daném portu)
Hlavička UDP

- porty (přiřazení standardním službám (do 1024 - definuje RFC 1700)
- kontrolní součet zahrnující datovou část, volitelný
- délka datagramu
TCP: Transmission Control Protocol
- 4. vrstva, duplexní spolehlivý logický kanál (v prostředí se
ztrácením,
duplikací, a přehazováním pořadí)
- RFC 793
- algoritmus sliding window (go-back-N), pozitivní (inkluzivní)
potvrzování, piggybacking, adaptivní změna časového limitu pro
retransmisi
- řízení toku dat inzerováním aktuální kapacity přijímacích
bufferů, vysílací okno se dynamicky přizpůsobuje přijímacímu
- segmentování dat (rozdělení proudu dat do částí vhodných pro
přenos v paketech), číslování oktetů proudu dat
- robustní protokol navazování spojení a ukončování spojení
Hlavička TCP

- Porty - určení služby (identifikace procesu serveru i klienta)
- Podpora alg. Sliding Window: sequence number, acknowledge number
- Řízení toku dat: window (zbývající kapacita přijímacích bufferů)
- Navazování a ukončování spojení: příznaky SYN, FIN, (ACK), RST
- Volitelné parametry: options (např. dohoda max. délky segmentu)
- Urgent pointer - pozice urgentních dat v TCP segmentu (při
nastaveném příznaku URG)
Navazování spojení
- three way handshaking: SYN, SYN+ACK, ACK
- dohoda o startovacím sekvenčním čísle (zvlášť pro oba směry)
- počáteční sekvenční čísla náhodná, aby se zabránilo případnému
ovlivnění zbloudilými pakety ze zavřeného a brzy znovu otevřenému
spojení mezi týmiž entitami
- řeší problémy pokusu o aktivní navázání spojení oběma stranami
současně

Poznámka
"Pomalý start" TCP spojení - postupné (exponenciální)
zvětšování šířky okna vždy při přijetí potvrzení = > nově otevřené
spojení nemůže skokově zahltit síť
Uzavření spojení
- dohoda obou stran
- možnost "polovičního" uzavření spojení (half-close)
Průběh spojení - řízení toku dat

Hlavička TCP segmentu, resp. UDP datagramu zahrnuje jako svou
podčást hlavičku IP