9.6. Paketi i usmjeravanje¶
IP adresa govori kome je poruka namijenjena. Mehanizam koji je zapravo isporučuje zove se usmjeravanje, a to je proces skok-po-skok kojim paket putuje od pošiljateljeve lokalne mreže do primateljeve lokalne mreže, koja može biti vrlo daleko.
9.6.1. Paket, ukratko¶
Paket je jedinica rada IP sloja – komad bajtova s malim zaglavljem i korisnim sadržajem. Zaglavlje ima dva polja koja su bitna za usmjeravanje:
Izvorišnu IP adresu (odakle je paket došao).
Odredišnu IP adresu (kamo ide).
Korisni sadržaj je sve ono što je transportni sloj zatražio od mrežnog sloja da isporuči. Zaglavlje paketa također uključuje brojač vremena života (time-to-live), kontrolni zbroj zaglavlja i nekoliko upravljačkih zastavica. Ništa od toga nije nešto čega se Python kod kamere izravno dotiče.
Paketi ne obećavaju ništa više od „pokušali smo” – mogu se izgubiti, udvostručiti ili isporučiti u pogrešnom redoslijedu. Pouzdanost i redoslijed problemi su koje rješava transportni sloj iznad; mrežni sloj samo daje sve od sebe da proslijedi svaki paket prema odredištu.
9.6.2. Skok po skok¶
Paket napušta kameru i stiže do prvog uređaja koji nije na lokalnom segmentu kamere: zadanog pristupnika. (Prethodna stranica spomenula je da DHCP kameri dodjeljuje adresu pristupnika kada se mreža podigne.) Taj uređaj je usmjernik – kutija čiji je posao primati pakete, gledati njihovo odredište i prosljeđivati ih dalje.
Paket od kamere prema odredištu skače između usmjernika, svaki korak bliže.¶
Usmjernik ima tablicu usmjeravanja – popis „za odredišta koja odgovaraju ovom uzorku, pošalji paket kroz ovo sučelje”. Za odredišta na istoj mreži kao kamera, unos kaže „pošalji ga natrag niz kabel kojim je došao”. Za odredišta na širem internetu, unos kaže „pošalji ga uzlaznom usmjerniku”. Za poznate uzorke odredišta (korporativni VPN, mreža određenog poslovnog partnera, satelitska veza), usmjernik može imati specifičniji unos koji premošćuje zadani.
Uzlazni usmjernik radi istu stvar. I sljedeći. I sljedeći. Svaki skok ima isti oblik: primi paket, potraži odredište u tablici, pošalji ga kroz ispravno sučelje. Naposljetku paket stiže do usmjernika koji jest na istom lokalnom segmentu kao odredišna IP adresa. Taj usmjernik isporučuje posljednji skok, odredište prima paket i putovanje je gotovo.
9.6.3. Krajnje točke ne znaju rutu¶
Kamera koja šalje paket udaljenom poslužitelju ne zna kako će paket tamo stići. Zna samo odredišnu IP adresu i adresu vlastitog zadanog pristupnika. Sve između – koji usmjernici, koja vlakna, koji podvodni kabeli – nešto je o čemu usmjernici uzduž putanje odlučuju u hodu, na temelju vlastitih tablica. Sami usmjernici poznaju samo svoje neposredne susjede i grubi smjer uobičajenih odredišta; nijedan pojedinačni uređaj na internetu nema njegovu potpunu kartu.
Ta decentralizacija razlog je zašto mreža nastavlja raditi kada pojedinačne putanje zakažu. Presječeni kabel negdje u sredini postaje događaj preusmjeravanja na nekoliko usmjernika; krajnje točke to nikada ne primjećuju. To je također razlog zašto paket od kamere u Tokiju do poslužitelja u Dublinu može uspjeti, a da nijedna strana ne zna koje zemlje leže između.
9.6.4. Što to znači za Python skriptu¶
Posao kamere na mrežnom sloju svodi se na:
Imati IP adresu.
Znati adresu zadanog pristupnika (DHCP je automatski popunjava).
Predati odlazne pakete, adresirane na bilo koju IP adresu, tom pristupniku i vjerovati ostatku putanje.
Skripta nikada ne bira rutu, nikada ne imenuje međuskok i nikada ne vidi usmjernike u sredini. Ona upisuje odredišnu IP adresu na paket, a mrežni sloj preuzima posao. Iz Python skripte cijelo usmjeravanje je samo svojstvo mreže kojoj se kamera pridružila – „pristupnik šalje pakete negdje korisno za mene”.
Transportni sloj koji slijedi pretpostavlja da usmjeravanje jednostavno radi te na tome gradi pouzdanost, redoslijed i adresiranje od programa do programa.