V tomto článku sa budem snažiť vysvetliť niektoré základné fakty a spôsoby sieťovej komunikácie na internete. Pôjde o popis toho, čo sa v skutočnosti deje na pozadí tak Vášho lokálenho počítača, ako aj ostatných servrov v sledovanej sieti, ktorou naša komunikácia bude prebiehať.
Predstavme si teda základnú situáciu: užívateľ sediaci pri počítači s IP adresou 10.0.1.13 sa rozhodne otvoriť si internetovú stránku www.priklad.sk. Otvorí si prehliadač a v ňom zadá adresu želanej stránky. Od tohto bodu sa začne diať nasledovné:
| Protokol |
Zdroj |
Cieľ |
Dáta |
| ARP |
10.0.1.13 |
broadcast |
"Kto tu má IP 10.0.1.1?" Povedz to 10.0.1.13 |
| ARP |
10.0.1.1 |
10.0.1.13 |
"IP 10.0.1.1 mám ja, 00:80:C8:57:D3:AA" |
| DNS |
10.0.1.13 |
10.0.1.1 |
"Daj mi adresu www.priklad.sk |
| DNS |
10.0.1.1 |
10.0.1.13 |
www.priklad.sk = 47.225.23.42 |
| TCP |
10.0.1.13 |
47.225.23.42 |
1939 > http SYN |
| TCP |
47.225.23.42 |
10.0.1.13 |
http > 1939 SYN, ACK |
| TCP |
10.0.1.13 |
47.225.23.42 |
1939 > http ACK |
| 10.0.1.13 |
47.225.23.42 |
GET/HTTP 1.1 |
|
| HTTP |
47.225.23.42 |
10.0.1.13 |
HTTP/1.1 200 OK |
| HTTP |
47.225.23.42 |
10.0.1.13 |
HTTP Continuation |
| TCP |
10.0.1.13 |
47.225.23.42 |
2577 > http ACK Seq=388864 Ack=37076821 Win=8241 Len=0 |
| TCP |
10.0.1.13 |
47.225.23.42 |
2577 > http RST Seq=388864 Ack=37077089 Win=0 Len=0 |
- 1. krok: Hľadáme miestny DNS server
Prostredníctvom protokolu ARP [address resolution protokol] sa celej lokálnej siete spýtame na MAC adresu miestneho DNS servra, ktorý potrebujeme na to, aby nám poskytol IP adresu webservra, na ktorom sa nachádza nami požadovaná stránka www.priklad.sk. Keďže nevieme, ktorý z mnohých počítačov v sieti je DNS servrom, túto požiadavku musíme poslať do celej siete, preto je použitý na to určený broadcast.
- 2. krok: Dostávame odozvu od miestneho DNS servra
DNS server nám po zaregistrovaní našej požiadavky pošle svoju MAC adresu, ktorú nevyhnutne potrebujeme na to, aby sme s ním mohli komunikovať.
- 3. krok: Zistíme IP adresu webservra
Keď už vieme koho sa pýtať, musíme zistiť len to, akú IP adresu má stránka www.priklad.sk. Aby DNS server našej otázke porozumel, musíme sa ho to spýtať v jeho jazyku, preto v tomto bode na komunikáciu použijeme DNS protokol a DNS server sa v ňom spýtame, akú IP adresu má webserver, na ktorom je stránka www.priklad.sk.
- 4. krok: DNS server odpovedá
DNS server sa rýcho pozrie do svojich záznamov, vyloví IP adresu prislúchajúcu stránke www.priklad.sk a pošle nám ju vo svojej odpovedi späť.
- 5. krok: Pozdravíme webserver
Teraz, keď už konečne vieme, od koho si máme vypýtať stránku www.priklad.sk, pošleme na daný server pozdrav; ideme sa synchronizovat [SYN = synchronize]
- 6. krok: Webserver nás privíta
Webserver, ktorý sme oslovili nás odzdraví a náš pozdrav príjme [SYN, ACK = acknowledgement = potvrdenie]
- 7. krok: Dáme webservru vedieť, že sme jeho pozdrav zaregistrovali
Aby sme boli dostatočne slušní aj my, musíme webservru oznámiť, že aj my sme jeho pozdrav zaregistrovali a akceptovali [SYN]. Túto časť komunikácie nazývame aj "three-way handshake".
- 8. krok: Vypýtame si želanú stránku
v tomto momente, keď nás webserver považuje za svojho známeho, si od neho konečne môžeme vypýtať želanú stránku - náš počítač v tomto bode otvorí spojenie na webserver.
- 9. krok: webserver nám ju umožní stiahnuť
Inými slovami povedané, webserver nám oznámi, že si stránku môžeme stiahnuť.
- 10. krok: Stránku si stiahneme
Od tejto chvíle sa prostredníctvom niekoľkých paketov začnú preposielať časti samotnej stránky, ktoré sa na našom počítači uložia
- 11. krok: Skontrolujeme, čo sme si stiahli
Oznámime posledný stiahnutý paket..
- 12. krok: Ukončíme spojenie
..a ukončíme naviazané TCP spojenie
A to je v krátkosti všetko. Podobný výpis, ako je uvedený v tabuľke vyššie si môžete hocikedy vygenerovať a preštudovať aj samy, za použitia nástroja na sledovanie komunikácie na sieti, akým je, napríklad, tcpdump.
