1. Üldine kommunikatsiooni mudel
Üldises kommunikatsiooni mudelis on alati kaks poolt –
saatja ja
vastuvõtja . Terves süsteemis on meil sisuliselt viis osa:
1)
allikas, mis genereerib andmeid
2)
saatja, mis teisendab andmed transportimiseks sobivale
kujule 3)
edastussüsteem, mis transpordib signaalid ühest kohast teise
4)
vastuvõtja, mis võtab signaali ja teisendab selle jälle adressaadi jaoks sobivale kujule
5)
adressaat, kellele need allika poolt
saadetud andmed on mõeldud kasutamiseks
Allikas – edastaja – edastuskeskkond – vastuvõttev keskkond – sihtkoht
Source (see, kes
saadab ) > transmitter (saatev seade) >
transmissioon system (ülekande sü
steem ) > receiver (vastuvõ
ttev seade) > destination (see, kes vastu
võtab).
Nt: tööjaam, arvuti >
modem > telefoni tavavõrk > modem > vastuvõtja,
server .
2. Kommunikatsioonisüsteemi ülesanded 1)
Edastussüsteemi kasulikkus – seisneb selles, et teha transport saatja ja vastuvõtja vahel nii efektiivseks kui võimalik.
Tuleb kasutada ressurssi mõistlikult!” 2)
Liidestamine - kommunikatsiooni tagamine saatja/vastuvõtja ja edastussüsteemi vahel läbi
liideste , ehk erinevate võrkudega on vaja liidestuda (
traadita võrk, satelliitsidevõrk jne, kõik peavad suutma suhelda omavahel).
3)
Signaali genereerimine – kommunikatsiooni tagamiseks peavad signaalide omadused olema sellised, et neid oleks võimalik
edastada ja, et need oleks
vastuvõtjale arusaadavad.
4)
Sünkroniseerimine – saatja ja vastuvõtja ei saa näiteks samal ajal pakette saata, muidu tekib kokkupõrge ja andmevahetusest ei tule midagi välja. Saatja ja
vastuvõtja peavad töötama samas taktis!
5)
Andmevahetuse juhtimine – mis seisneb põhimõtteliselt andmevahetuse reeglite paika panemises. Näiteks tuleb ära määrata, kuidas saatja ja vastuvõtja
saadavad andmeid korda mööda (vastuvõtja peab olema valmis pakette vastu võtma), millal on saatja andmed ära saatnud ja millal võib vastuvõtja hakata
kinnituseks andmeid vastu
saatma (peab olema kahepoolne suhtlus, et kas ikka jõudsid vajalikud bitid kohale). Peale selle on veel vaja määrata
pakettide vormingud ja suurused jms.
6)
Vigade avastamine ja parandamine – siin määratakse ära, mida teha vigadega ja siis kui nendega enam hakkama ei saada. Pidevalt kontrollitakse kas
kohale jõudnud
paketid on korras või mitte. Lihtsamal juhul arvutatakse kontrollsumma (paarsuskontroll). Kui
pakett jõudis vigaselt kohale, öeldakse et
„saada pakett uuesti“
7)
Voo kontroll – seda on vaja selleks, et mitte ülekoormata vastuvõtjat saates andmeid kiiremini kui need ära töödeldakse.
Näiteks inimkett, kui üks on
aeglane, siis tema juurde tekib hunnik ja asi jääb toppama. Arvutid suhtlevad pidevalt omavahel ja annavad teada ala „nüüd läks veits
kiireks “ jne.
8)
Adresseerimine ja marsruutimine – kui kommunikatsioonimudelis on saatjaid ja vastuvõtjaid rohkem kui üks, siis on vaja teada unikaalseid aadresse (IP-
aadress) ja leida parim tee (kus on kõige vähem tõkkeid) ühest arvutist teise.
9)
Andmete taastamine – andmeid on vaja taastada kui näiteks informatsioon pakettides muutub halbade signaalide tõttu valeks. Peame suhtlema teise
osapoolega.
(N: pangarakendus. Ülekande ajal arvuti lülitab end välja. Kas ülekanne õnnestus või mitte? Ehk süsteem peab olema võimeline aru saama kas
ünnestus või mitte. Kas annuleerida terve ülekanne või mitte).
10)
Andmeformaadid – selleks, et arvutid saaksid üksteisest aru on vaja kokku leppida „keel“ ehk andmeformaadid et
andmetega hakkama saada (et arvutid
üksteisest aru saaks).
11)
Turvalisus – on muidugi väga vajalik, sest suure tõenäosusega soovib saatja, et tema andmed saaks kätte just see, kellele ta need saadab, mitte keegi
teine. Teisendame andmed ühelt kujult teisele (
krüpteerimine ).
12)
Võrgu haldamine – on vajalik võrgusüsteemi administreerimiseks, sest ükski süsteem ei
jookse iseenesest. Vajalik on süsteemi vaadelda ja reageerida
ülekoormustele, tõrgetele jms. Kuidas katkestustest ja vigadest/häiretest üle saada?
3. Mitmekihiline arhitektuur postisüsteemi näite baasil saadame kaardi sõbrale on
analoogne sellega kuidas on üles ehitatud arvutivõrkude
üldine arhitektuur. Kiri ümbrikusse – kiri vormistatakse kindlal moel, aadressil kindel
formaat . Kirja
panen postkasti –
liidese punkt mille kaudu pääsen ligi postisüsteemi
teenusele (arvutis näiteks
SEND vajutamine). Teisel pool on ka
postkast – postkastist
leian oma nimega kirja. Postkastid on liidesepunktid. Aadressi kirjutamine korrektselt -
KINDLAD REEGLID et liidesele ligi pääseda. Pean leidma keele, millest vastuvõtja ka aru
saab. Korrektne keel kuidas kirjutada („jou“ „lugupeetud“ jne) ehk kahe vahel on kokku
lepitud reeglistik, kuidas
kirjutatakse ehk
PROTOKOLL (käitumisreeglistik). Järgmine kiht
mis on ülemisele
kihile nähtamatu on postkontorite süsteem (liides) – et võta kiri ja järgi
vaadata
millisele aadressile ta läheb (kõik pärnu kirjad sorteerime kokku ja
paneme postikotti. Postikotil peab olema aadress peal. Kui on vahepostkontor (näiteks
peapostkontor on igas linnas). See on marsruutimine. Kuidas sorteeritakse kirju? Kas
automaatne või mõni inimene, kirja kirjutaja jaoks on savi, ta nkn ei tea. Ehk ühte kihti ei huvita kuidas teine kiht toimib!! (postkontoreid ei huvita mis keeles
ma oma kirja
kirjutasin ). Alumine kiht pakub teenust ülemisele kihile! Füüsiline
andmeedastus – autod, lennukid, laevad jne.
-
Postisüsteem on mitmekihiline arhitektuur. Ülevalt alla toimub füüsiline liikumine. Horisontaalselt on protokoll, ehk kuidas omavahel suheldakse.
Mitmed võrgukommunikatsiooni põhimõtted toimivad täpselt samamoodi nagu meie igapäeva elu kommunikatsioonis. Kui me võtame näiteks postisüsteemi, siis täpselt nagu ühes
võrgus on ka siin meil saatja ja vastuvõtja. Saatja kirjutab kirja, paneb selle ümbrikusse ja siis ümbriku omakorda postkasti. Kiri viiakse postkastist postkontorisse ning postkontor
transpordib selle kirja omakorda vastuvõtja postkasti. Vastuvõtja võtab kirja postkastist ja ümbriku seest välja ning loeb selle . Täpselt samamoodi nagu võrguski on vaja siin mitmed
reeglid paika panna. Näiteks, millal on postkastide tühjendamine, mis keeles suhtlevad saaja ja vastuvõtja üksteise vahel jne. 4. Kihid , teenused, protokollid ja andmete liikumine läbi kihtide Võrk koosneb väga paljudest erinevatest osadest. Selleks, et oleks vähegi kergem kogu seda süsteemi hallata, on võrgus olemas kihid. Kihid on kasulikud, sest: 1) nad võimaldavad kokku siduda erinevad keerulised süsteemid
2) nende üksikasjalik struktuur võimaldab hõlpsat identifitseerimist
3) nende eraldamine mooduliteks võimaldab neid kergemalt hooldada ja uuendada Kihid – TCP/IP ja OSI mudeli näitel
Kihid ei pea teadma, kuidas teine kiht töötab. Alumine kiht lihtsalt pakub teenust ülemisele kihile ja kõige alumiseks kihiks on füüsiline kiht. Teenuseid osutatakse läbi liideste.
Protokoll – reeglistik, mis määrab ära kommunikatsiooni süntaksi, semantika , ajastuse ja muud sellised reeglid. Igal kihil on enda protokoll ja igal kihil on enda riistvara ja tarkvara ,
mis implementeerib seda protokolli.
Saatja ja vastuvõtja suhtlevad üksteisega tinglikult (kasutades alumise kihi teenuseid) ja eelnevalt kokkulepitud protokolliga. Iga kiht lisab andmete juurde päise ja edastab
tulemuse madalamale kihile. Vastuvõtmisel eemaldab iga kiht temale mõeldud päise. Protokoll ehk reeglistik, mis määrab ära kuidas
andmevahetus toimus, sisaldab endas kolme komponenti:
-
süntaks (syntax) - kuidas andmeblokki moodustada, ehk kellele ja kes saadab jne.
-
semantika (semantics) – tähenduslik info, ehk mida nende andmetega teha, mis järjekorras pakette
saadetakse , mida teha vigade korral, mis väli mida
näitab (saatja, saaja jne).
-
ajastusreeglid (timing) – kiiruse komponendid. Paketti saates peame mingi aja jooksul saama
kinnituse , kui selle jooksul ei saa, siis saadame uuesti.
*
Aadressid – vajame mitmeid aadresse. Kolmekihilise mudeli juures vajame kahte aadressi, arvuti leidmiseks aadressi (
network adress) ja aadressi, et leida
millise rakendusega on tegemist (port).
*Andmeüksus, mida saadame, on PDU ehk
Protocol Data
Unit ehk protokolli andmeüksus. Ehk iga kiht paneb andmetele mingit lisa infot juurde. Tegeleb
andmeedastuse korraldamisega. Sinna pannakse kirja millise
rakenduse käest andmed tulid ja millisele andmed edasi panna
*
Standardid :
-
kui kõik tootjad neid jälgivad, siis erinevate firmade tooted saavad koos töötada.
-
Ebameeldiv külg – standardid on alati vananenud, sest
tehnoloogia areneb alati edasi.
-
Organisatsioonid : ISO, ANSI, IEEE
-
Standardid võivad olla de
facto või de jure.
de facto – tekkinud kasutusest
de jure – organisatsiooni poolt kehtestatud
5. OSI mudel koosneb
7-st
kihist :
1)
Rakenduskiht – rakendusprogrammile antavad teenused
2)
Esitluskiht – Võrgust saabuvate andmete teisendamine üldkujult konkreetse
rakenduse jaoks sobivale kujule ja vastupidi
3)
Sessioonikiht – Tegeleb andmevahetuse korraldamisega, ehk ühenduse
loomine suhtlevate rakenduste vahel. Määratakse ära millisel kujul toimub
info
saatmine , sünkronisatsioon jms
4)
Transpordikiht – Usaldusväärse andmevahetuse garanteerimine. Tehakse
rakenduselt saadud andmed segmentideks ja vastupidi ning määratakse ja
kontrollitakse ka nende
järjekorda 5)
Võrgukiht – sõnumite marsruutimine, IP
aadresside tasemel tegutsemine.
Tehakse andmed datagrammideks. võrkudevaheliste ühenduste loomine,
veatöötlus, ummistuste reguleerimine ja pakettide järjestamine.
6)
Kanalikiht – vigade parandamine, sünkroniseerimine. Tehakse saabunud
andmed datagrammideks ja väljaminevad andmed kaadriteks.
7)
Füüsiline kiht – andmete füüsiline
edastus punktist punkti (näiteks
kaabel ).
6. TCP/IP mudel koosneb
5-st kihist:
1)
Füüsiline kiht – andmete füüsiline
edastamine punktist punkti
2)
Võrgupöörduskiht – Füüsiline adresseerimine, voo kontroll, vigade kontroll,
kaadriteks jagamine
3)
Võrgukiht – marsruutimine, pakettide edastamine sihtpunkti
4)
Transpordikiht –
Portide adresseerimine, andmete
segmenteerimine , tagab
sõnumite edastuse ühest punktist teise.
5)
Rakenduskiht – pakub rakendusi kasutajale nagu näiteks e-maili
kirjavahetus ,
internetivõrku
sisenemine , failide edastamine jne.
Igal kihil on liidese kihid, millega ta saab teenust alumiselt kihilt ja pakub teenust ülemisele kihiline.
7. Ühendusele -orienteeritud ja ühenduseta andmeedastus Mõlema andmeedastuse puhul on
eesmärgiks edastada andmeid ühest punktist teise.
Ühendusele orienteeritud andmeedastus:
Töökindel – tehakse kõik et garanteerida andmeedastus vajalik eelnev ühenduse loomine (
handshaking). Sellist ühendust nimetatakse ka voogedastuseks. Ühendusele-orienteeritud protokollid võimaldavad
garanteeritud andmeedastust lisades andmepakettidele järjekorranumbrid. Kaks osapoolt kinnitavad üksteisele andmete kohale jõudmist vastava signaaliga.
Kui teatud ajapiiri sees kinnitust ei sada siis saadetakse pakett uuesti teele
TCP protokoll - tegeleb
voo kontrolliga (et saatja ei koormaks üle vastuvõtjat)
ja ülekoormuse kontrolliga (saatja ja võrgu vaheline. Võrgu koormusest
tingitud andme
saatmise kiirus, ehk kui võrk on üle
koormatud , saab saatja sellest teada ja ei saada sinna enam pakette sisse või aeglustab pakettide saatmise
vahemikku).
TCP protokoll tagab:
side töökindluse
ühenduse haldamise
vigade puudumise
pakettide järjestamise
Ühenduseta andmeedastus:
“ best effort“ – ei garanteeri midagi, paketid võivad kaduma minna või vales järjekorras kohale jõuda. andmevahetuse kiirus on töökindlusest olulisem ja on lubatud teatud pakettide kadu. Sel juhul kantakse info üle datagrammidena ehk väikeste mõõtmetega
pakettidena, mis suudavad kiiresti ületada võrgu ja kõigi pakettide
kohalejõudmine ja järjekorda
seadmine pole oluline või teeb seda infot vastuvõttev
rakendus .
UDP protokoll - ei taga usaldusväärsust ning ei teosta voo ega ülekoormuse kontrolli. Ei
koti kas teine paketid kätte ka saab ehk ei kontrolli nende
kohalejõudmist. Paketid pannakse lihtsalt teele ja loodetakse
parimat , ehk et nad kohale kõik jõuavad. UDP saadab pideva andmevoona andmeid (näiteks
video ülekanne, mobiiltelefon).
8. Kanalikommutatsioon ja pakettkommutatsioon, paketi pikkus Kanalikommutatsiooni – garanteeritud side kiirus ja omadused. Kui andmevahetus lõppeb siis ressurss vabastatakse.
Füüsiline
ülekandeliin on pühendatud kahe
osapoole vahelisele andmesidele kogu sideseansi vältel.
Sideseanss jaguneb faasideks:
ettevalmistuse faas kanali seadistamiseks, mida mööda võrk reserveerib igas sõlmes vajalikud
ressursid kanali loomiseks ja ülalpidamiseks;
keskmine faas, mille ajal andmete ülekanne aset leiab;
lõppfaas, mil ühendus katkestatakse ja vabastatakse reserveeritud ressursid.
Kanalikommutatsioon ei ole efektiivne ressursikasutuse seisukohalt, kuna terve
kanal on pühendatud kahele osapoolele, kes reaalselt ei pruugi kasutada ära
kogu kanali läbilaskevõimet, mida saaks jagada kolmandate ühenduste tarbeks. Samas on tegemist garanteeritud ühenduse kiiruse ja kvaliteediga.
Pakettkommutatsiooni – kõik konkureerivad võrgu ressursile. Kanal on kinni ainult paketi saatmise hetkel. Ribalaiust ei tehta tükkideks, kasutatakse kogu
kanalit. Paketid liiguvad hüpetena, on järjekorrad.
Sõnum jaotatakse pakettideks/tükkideks ja saadetakse minema läbi sidevõrgu. Ressursse kasutakse ainult vajadusel s.t neid ei reserveerita. Paketid lihtsalt
pannakse teele ning iga pakett on sõltumatu ja võib
liikuda erinevat teed pidi (marsruutimine).
Pakettkommutatsioonil puudub sideseansi
loomisega seotud
viivitus nagu kanalikommutatsiooni puhul aga arvestada tuleb teatud ajakuluga pakettide
marsruutimisel erinevaid võimalikke teid pidi, mida pakuvad alternatiividena välja võrgusõlmed.
Pakettkommutatsiooniga võrgus võistlevad erinevad ühendused ressursside pärast ja on võimalik, et kui
nõudlus ressurside järele ületab kanali läbilaskevõime
siis tekib
ummik . Sellisel juhul
ootavad paketid järjekorras üle kandmist tekitades viivitusi sideühenduses. Kui ummikud küllastavad ka järjekordade vaba mahu
siis võib tekkida pakettide kadu. Selle vältimiseks on vajalikud sideprotokollid (näiteks TCP - Transport
Control Protocol), et garanteerida ühenduse
töökindlus ,
näiteks selleks, et kontrollida pakettide kadumist ja nõudes kadunud pakettide uuesti saatmist.
Pakett kommunikatsioon on ebaühtlase andmevahetuse jaoks parem.
Paketi pikkus - Ei ole mõtet teha liiga väikseid pakette, aeg läheb
suuremaks . Ja ei ole mõtet saata ühte suurt paketti korraga (pakett hõivab kanali pikaks ajaks
ja vea tulemise võimalus on suurem), aeg suur.
(N. võime uksele panna 20 lukku, aga keegi sõidab traktorga majja ja saab ikka sisse).
Siin kohal on kusjuures oluline jagada andmed täpselt õigete pikkustega pakettideks, sest igas võrgusõlmes on ruuter , mis tegeleb pakettide edastusega ning kui paketid
on jagatud liiga väikesteks tükkideks, siis tekivad ruuterisse nö järjekorrad, mis võivad viia pakettide eemaldamiseni ruuterist, et ruumi teha uute jaoks. Samas
kui pakettide pikkused on liiga suured, siis ei kasutata võrguressursse kõige effektiivsemalt ära nii, et siin tuleb leida tasakaal. 9. Multipleksimine sageduse, aja ja koodi järgi Kanalit saab multipleksida sageduse, aja ja koodi järgi:
koodeerimise järgi andmete kokku pakkimine – multiplexer. Lahti pakkimine – demultiplexer
Sageduse järgi kanali multipleksimine (
Frequency- division multiplexing - FDM) –
erinevad võrguseadmed kasutavad suhtlemiseks erinevaid kanali sagedusi. Kasutatakse nt analoogsignaalide puhul.
Aja järgi kanali multipleksimine (
Time-division multiplexing - TDM) –
igal võrguseadmel on õigus edastada infot mingil kindlal ajahetkel. Kasutatakse nt digitaalsignaalide puhul.
o
Statistiline aja järgi kanali multipleksimine (
Statistical time-division multiplexing - STDM) –
on tegelikult natuke parem versioon TDM-st, kus analüüsitakse võrguseadmete töökoormust kanalile ja jagatakse vastavalt vajadustele kanali
sagedused ära.
Koodi järgi kanali multipleksimine (
Code-division multiple access –
CDMA ) –
võrguseadmetele antakse kood, millega saab kanalit hõivata. Ainult need, kes teavad seda koodi saavad üksteisega suhelda, teisi seadmeid koheldakse
kui
müra .
10. Ajalised viited võrkudes Kuna paketi
teekond sihtpunkti käib läbi mitmete võrgusõlmede, siis igas võrgusõlmes tulevad ette ajalised viited. Põhilised viited on seotud pakettide töötlemise,
järjekordade
ning
paketiedastamisega
järgmisesse
võrgusõlme
ja
liikumisega
võrgusõlmede
vahel.
Pakettide töötlemine – iga pakett võetakse vastu ja kontrollitakse bitivigu ning analüüsitakse, kuhu see edasi saata (
millisesse ruuterisse)
Järjekordade viide – sõltub sellest kui suur on pakettide
liiklus läbi ruuterite buffritesse. Kui liiklus on väike, siis järjekordi buffrites eriti pole ja järjekordade viide
on minimaalne ning vastupidi.
Paketiedastamine järgmisesse võrgusõlme - aeg, mis kulub paketi lükkamiseks kanalisse, mis viib järgmisesse võrgusõlme. Kusjuures paketti ei lükata enne
kanalisse
kui
terve
pakett
on
võrgusõlme
kohale
jõudnud.
(ehk paketi teelesaatmise peale kuluv aeg) Liikumine võrgusõlmede vahel – aeg, mis kulub liikumiseks ühest võrgusõlmest teise. ehk paketi liikumine läbi kanali.
(valgusekiiruse kanti kiirus) 11. Arvutivõrkude ja Interneti ajalugu Algus: Telegraafi leiutamine 19ndal sajandil mis töötab morse koodiga (punktid ja kriipsud), mis on sarnane 0 ja 1 tehnoloogiale arvutis.
1969 – Maailma esimene
arvutivõrk ARPANET . Töötati välja Pentagonis, USA-s. Kuigi levivad teadmised, et võrk ehitati üle elama tuumarünnakut ning kaasa
aitama militaarvaldkonnale, ei ole kumbki väidetest päris tõene. ARPANET loodi teaduslikul eesmärgil, ühendama teadusasutusi, et need saaks omavahel jagada
arvutusressurssi, kui kohalikust ressursist ei jätkunud või leidus kuskil parem paik arvutuste tegemiseks. Selle võrgu loomisel ei olnud eesmärgiks isegi mitte ka
inimestevaheline kommunikatsioon, kuid reaalseid tulemusi saavutatigi pigem just kommunikatsiooni, andmesideprotokollide ja sidelahenduste valdkondades.
Arvutusressursi jagamine jäigi vaid eesmärgiks, sest operatsioonisüsteemid ja
programmid omavahel reeglina ei ühildunud ning keegi ei suutnud ühtset süsteemi
luua.
ARPANETi nimetatakse interneti eelkäijaks. 1970 – ALOHAnet satelliitvõrk Hawaiil
1972:
ARPANETi avalik demonstratsioon;
esimene otspunktide vaheline protokoll (NCP);
esimene e-maili programm (võimalus saata võrgus sõnumeid);
ARPANETis on 15 võrgusõlme.
1983:
käivitati esimene TCP/IP installatsioon 200 hostarvutiga ja järgmisel aastal alustas tööd sellel põhinev kommerts-arvutivõrk;
DNS (nimeserver)
1980ndate lõpp:
hakati Euroopas arendama jooniseid ja viiteid sisaldavate dokumentide
edastamise süsteemi. Aluseks võeti uus loodav hüpertekstikeel HTML;
Vookontroll TCPs;
100 000 hosti.
1990ndate algus:
HTML-i esimene versioon. Teaberuum kus seda kasutama hakati, sai World Wide Web’i (WWW) nime.
HTTP, URL
Samal ajal töötati välja ka esimene mugava kasutajaliidesega veebisirvija (
brauser –
Mosaic ja Netscape) ning interneti ja veebi laialdasem levik võis
alata.
1990ndate lõpp:
P2P (võrdsete õiguste ja võimalustega võrgusõlmede kogum, milles iga osaline võib algatada sideseansi ning milles töö või ülesanded jaotatakse
osalejate vahel ära).
uued ja võimsad
rakendused internetimaailmas (interneti poed Amazon jne, online
pank ,
elektrooniline postmark)
interneti turvalisus
seatakse esimeseks.
50 miljonit hosti
2007:
500 miljonit hosti, videokõned jms.
P2P rakendused: BitTorrent (File sharing), Skype (VoIP),
rakendused nagu YouTube jms,
traadita ühenduse kiire areng.
2009: „Pilve“ tehnoloogia.
12. Mida erinevad rakendused nõuavad võrkudelt Laias laastus nõuavad rakendused võrkudelt kolme:
1)
Usaldusväärne andmeedastus – andmete kadu võib olla suurem või väiksem sõltuvalt rakendusest, häirimata seejuures rakenduse tööd. Mõni rakendus
on andmete kao suhtes tolerantsem kui teine.
Näiteks tarkvara ei tööta, kui 1 bitt on kadunud või vigane , aga laulu või live videot saab ikka kmängida
normaalselt kui 1 sekund on vahelt puudu. 2)
Andmeedastuskiirus – mõned rakendused vajavad mingisugust minimaalset andmeedastuskiirus, et ülekanne oleks efektiivne. Kui selline ülekandekiirus ei
ole tagatud, siis rakendus peab kodeerima/dekodeerima teisel kiirusel või siis lihtsalt alla andma. Elastsed rakendused (elastic applications) kasutuvad ära nii
palju
andmeedastuskiirusest
kui
võimalik.
3)
Ajalised viited – rakendused, mis on seotud reaalajaga (videokõne, live ülekanne) nõuavad pidevat andmevoogu otspunktide vahel. Liiga suured ajalised
viited tekitavad ebanormaalseid pause ja on kasutajatele soovimatud. Mõne rakenduse korral pole see nii oluline, nt e-mail.
Vastavalt sellele, millised on rakenduse vajadused, valitakse ka protokoll (TCP või UDP)
13. HTTP
HyperText Transfer Protocol on rakenduskihi protokoll, mida kasutab WWW.
Veebiserveri ja brauseri
omavahelise suhtlemise protokoll. Kasutab alusena TCP’d, mis tähendab seda, et enne serveri ja kliendi üksteise vahelist sõnumite
saatmist tuleb luua ühendus kaheotspunkti vahel ja reserveerida „läbitav teekond“.
See on olekuta (
stateless) protokoll, s.t. veebiserver ei mäleta kliendi eelmisi päringuid.
HTTP 1.0 korral algatatakse iga päringu jaoks uus TCP-ühendus, HTTP 1.1 korral võib ühe
ühenduse raames teostada mitu päringut. Ühenduse kestvus piiratakse ajalimiidiga.
Kui kasutaja vajutab mingile lingile, siis brauser saadab serverisse pordi 80 kaudu HTTP
request objekti, mille peale server saadab kasutajale vastu HTTP
response objekti, mis sisaldab neid
objekte, millest antud
veebileht koosneb.
Serveri ja kliendi vahel on võimalik moodustada kahte tüüpi ühendusi: Püsiv (persistent) ja
mittepüsiv ühendus.
o
Mittepüsiva ühenduse korral
luuakse uus ühendus iga objekti saatmiseks (mis nõuab
päris palju aega) ning pärast seda kui server saadab vastuse, ta katkestab ühenduse.
Selline suhtlus aga võib viia ummistumiseni kui kliente on palju, sest tänapäeva veebilehtedel on objekte ikka päris palju.
o
Püsiva ühenduse korral loodud ühendust ei katkestata ja see annab nii ajalise võidu kui ka selle, et ummistusoht on palju väiksem, kuid ka sellel
ühendusviisil on tagasilöök. Nimelt kui ühendust ei katkestata, siis
vahepeal kui suhtlust serveri ja kliendi vahel ei toimu on tegu ressurssi
raiskamisega.
HTTP-l on kahte tüüpi sõnumeid:
o
request koosneb käsust (GET, POST, HEAD), HTTP 1.1 korral on olemas ka DELETE ja PUT, header ridadest (
Host , language..) ja lõpust (reavahetus).
o
Vastus koosneb staatuse reast (kood ja fraas nt 200 OK), header ridadest (
date , server..) ja nõutud failist.
Esineb kolme tüüpi päringuid (
requeste):
GET – küsib infot;
POST –
klient saadab veebiserverile infot
HEAD –
päring , millele ei nõuta serveri-poolset vastust.
Päises võivad olla ka
spetsiaalsed väikesed andmeplokid ehk küpsised (
Cookie ), mis sisaldavad veebiserveri poolt saadetud andmeid ja mis salvestatakse
veebilehitseja poolt kliendi arvutis. Veebilehitseja seadetes saab kas lubada või keelata küpsiste allalaadimise. Nendes andmefailides sisalduv info võib
olla kasutaja sisselogimise info või ostukorvi info veebipoes. Küpsiste kasutamine võimaldab teatud infot kliendi ja serveri vahel teha pikemaajaliselt
kättesaadavaks kui jooksev seanss, mis on reeglina piiratud ühe päringu täitmisega ja siis suletakse, kuna HTTP on olekuta (
stateless) protokoll. Näiteks
saab selle abil
salvestada kliendi autentimisinfo ja ta ei pea iga uue päringu korral oma
parooli uuesti sisestama vaid veebilehitseja saadab serverile järgmise
päringu koos vastava küpsisega. Küpsiseid saab ka kasutada, et koguda infot kasutaja käitumisharjumuste kohta
veebis . Selliseid küpsiseid
nimetatakse andmekaevuriteks (
data miner või
tracking cookie), mille eesmärk on pakkuda kasutajale tema käitumisharjumuste põhjal veebi soovimatut
reklaami või muud infot, mis võiks teda huvitada. Samuti võivad seda kasutada turuinfo statistikakogujad, et vastavat infot edasi müüa.
Kui kasutaja alustab serverisse sisenemist saadab ta (tavaliselt) brauseriga HTTP request objekti serverisse. Pärast seda saadab server vastu HTTP response
objekti, mille header’is on nüüd Set-cookie: header lisaks teistele,mis sisaldab unikaalset identifikaatornumbrit kliendi jaoks. Pärast seda kui brauser on
HTTP response’i kätte saanud salvestab ta selle erilisse cookie file’i, mida ta hiljem kasutada oskab. Ja nüüd iga kord kui kasutaja uuesti siseneb sellesse
serverisse saadab ta selle sama cookie (mille ta serverilt sai) tagasi serverisse HTTP request objektiga ja nii saab server kasutaja
koguaeg ära uuesti tunda.
Kui cookie’d ka aeguvad algab kogu protsess otsast peale.
14. FTP
File Transfer Protocol on rakenduskihi protokoll.
Failiedastus protokoll, ehk kasutatakse failide transportimiseks.
Suurim erinevus HTTP-ga on see, et FTP kasutab alusprotokollina
kahte TCP ühendust, et faili edastada.
o
Esimene on kontrollühenduse jaoks - selle ühenduse kaudu saadetakse kontrollandmed nagu näiteks kasutajanimi,
parool , käsud failide
muutmiseks, lisamiseks ja kustutamiseks jne
o
Teine on andmeühenduse jaoks - selle ühenduse kaudu saadetakse fail
FTP sessiooni korral luuakse kõigepealt TCP kaudu kontrollühendus. Selle ühenduse kaudu saadetakse kontrollandmed ja käsud ning kui serverini jõuab failiedastuse käsk,
siis ta loob andmeühenduse TCP kliendiga ja failiedastus saab alata. Pärast edastamist suletakse see ühendus.
Kui uus fail on vaja saata, siis avatakse uus andmeühendus, kontrollühendus jääb aktiivseks terve sessiooni vältel.
Failiedastusprotokoll FTP protokoll on ette nähtud failide edastamiseks ühest arvutist teise üle Interneti või muu TCP/IP võrgu. See võimaldab teises
arvutis asuvaid faile oma
arvutisse alla
laadida ning oma faile eemalasuvasse arvutisse üles laadida. Läbi FTP saab ka sisse logida teise internetisaiti,
kuid selleks on üldjuhul vaja kasutajanime ja parooli. On olemas ka anonüümsed FTP
serverid , mis ei nõua kasutajanime ja parooli, kuid
neilt saab
faile ainult alla laadida.
FTP on olekut säilitav protokoll, kasutajainfo ja aktiivse kataloogi info säilitatakse. Seega ei ole vaja iga päringu algul edastada kasutajanime ja parooli,
samuti pole vaja öelda oma
asukohta kataloogipuus. Vastustena FTP päringutele saadetakse vastuse kood ja selle tähendus (n.t. „331 Username OK“
või „452 Error writing file“).
Faile saab arvutite vahel vahetada ka teisi protokolle (näit. HTTP) kasutades, kuid see on palju aeglasem . 15. Elektronpost, SMTP , MIME
Elektronpost koosneb kolmest
komponendist : meiliklient (
user agent ),
meili server ja neid siduv SMTP.
o
User agent on rakendus, mille abil saab kasutaja lugeda ja saata kirju.
o
Meili server on server, kuhu talletatakse saabuvad ja väljaminevad kirjad. Igas meiliserveris on igal kasutajal on ruum, kuhu tulevad saabuvad ja
väljaminevad kirjad, mida ta saab lugeda.
o
SMTP (
Simple Mail Transfer Protocol, lihtne meiliedastusprotokoll) on rakenduskihi protokoll, mis sätestab kirjade saatmise ning kasutab TCP-d
alusprotokollina.
SMTP protokoll koosneb kahest osast
: kliendi poolne SMTP
ja
serveri poolne SMTP. Kui meil saadetakse kuhugi teise serverisse saatja
meiliserverist, siis on kasutusel kliendi poolne SMTP ja kui meil jõuab vastuvõtja serverisse, siis on kasutusel serveri poolne SMTP.
Peale selle piirab SMTP ära ka kirja body suuruse, milleks on 7-
bitine ASCII formaat.
SMTP on
push tüüpi protokoll.
Tüüpiline kirja teekond:
1) Kasutaja1 koostab user agentis kirja ja annab sellele käsu kiri Kasutaja2’le saata (kasutaja2@
domeen .ee).
2) User agent saadab kirja Kasutaja1 meili serverisse, kus see pannakse järjekorda (
message queue).
3) kliendipoolne SMTP meiliserver näeb, et kiri on järjekorras ja loob TCP ühenduse Kasutaja2
poolse SMTP serveri-ga.
4) Pärast ühenduse loomist (
handshakingut) saadab Kasutaja1 meiliserver kirja vastuvõtja meiliserverisse üle TCP ühenduse.
5) Kasutaja2 meiliserver paneb kirja Kasutaja2 postkasti.
6) Kasutaja2 kasutab oma
user agenti, et sõnum avada.
SMTP on Üks TCP/IP protokollidest, mis on ette nähtud serveritevaheliseks e-posti sõnumite saatmiseks ja vastuvõtmiseks. SMTP on "lihtne" selles mõttes, et tal on piiratud võime vastuvõetud sõnumite järjekorda panemiseks ja seepärast kasutataksegi seda enamasti ainult sõnumite saatmiseks.
Sõnumite vastuvõtmiseks kasutatakse teisi protokolle, näiteks POP3 või IMAP . Viimased võimaldavad salvestada sõnumeid serveril asuvasse postkasti
ja neid siis sealt perioodiliselt alla laadida. MIME (
Multipurpose Internet Mail Extensions, universaalsed internetiposti laiendused):
o Standard, mis võimaldab edastada selliseid kirju, mille sisu ei ole kodeeritav tavalise ASCII koodina.
(teisendab muudmoodi kodeeritud asjad 7-bitiseks ASCII koodiks). o MIME koosneb kahest headerist, mis lisatakse kirja headerisse:
Content-Type ja
Content-Transfer-Encoding.
o
Content-Type määrab ära, millist tüüpi on kirja
body ja vastavalt sellele saab vastuvõtja user agent seda ka kodeerida.
o
Content-Transfer-Encoding kirjeldab, millist tüüpi kodeeringut kasutati, et kiri ASCII-ks kodeerida.
o Nii, et kui kiri jõuab vastuvõtja
user agentini, siis alguses vaatab viimane üle
Content-Transfer-Encodingu ja dekodeerib kirja vastavalt sellele, mis tüüpi
kodeeringut kasutati ning siis vaatab
user agent üle
Content-Type’i ja dekodeerib ära selle, mis on teist tüüpi kui tavaline ASCII.
o Tähtis
märkus on siinkohal aga see, et kuna SMTP on
push protokoll, siis vastuvõtja ei saa kätte kirju oma meili serverist SMTP-ga, sest see on pull
operatsioon . Selleks, et kirju kätte saada peab vastuvõtja kasutama näiteks POP3
(
Post Office Protocol) protokolli.
o Lisaks mitmesuguses vormingus tekstifailidele võimaldab MIME e-posti teel edastada ja vastu võtta ka
graafika -, audio- ja videofaile. Lisaks toetab MIME
ka selliseid tekstisõnumeid, kus kasutatakse muid tähemärgistandardeid kui ASCII (näiteks jaapani või hiina hieroglüüfid). On olemas terve rida etteantud
MIME tüüpe, näiteks GIF graafikafailidele ja
PostScript’i failidele, kuid ka ise saab defineerida uusi tüüpe. Peale e-posti programmide
toetavad MIME
tüüpe ka veebibrauserid. Nii suudavad nad kuvada või printida ka neid faile, mis pole
tavalises brauserites kasutatavas HTML vormingus EHK MIME
tüüpe: Tekst (plain, html), Pilt (jpeg, gif), Hääl/audio (basic), Video (mpeg), Rakendused (muud andmed, mis peavad lugejal olema, et kirja näha nt MS
Word).
16. DNS (Domain Name System)
Domeeninime süsteem/teenus.
DEF: internetiteenus, mis tõlgib domeeninimed IP-aadressideks (vajadusel ka vastupidi). Kuna domeeninimed koosnevad tähtedest, siis on neid kergem
meeles pidada kui numbritest koosnevaid IP-aadresse.
Ehk inimesed kasutavad internetis surfamiseks hosti
nimesid , ehk URL ribale kirjutatakse www.google.com, mitte IP-aadress. Küll aga ei suuda selliseid
nimesid töödelda ruuterid, neil on vaja IP-aadresse, et nende URL-
idega midagi peale hakata. DNS viib vastavusse inimeste kasutatavad hosti nimed ja
IP-aadressid (
ipv4 ,
ipv6 ), mille alusel toimub pakettide edastus.
DNS kasutab UDP protokolli.
DNS-i kasutavad teised rakenduskihi protokollid (HTTP, SMTP, FTP jne), et muuta hostinimed IP-
deks .
DNS pakub lisaks hostinimede IP-deks muutmisele ka muid teenuseid:
o
aliasing – keerukamatel hostinimedel võib olla 1 või mitu aliast, mis on lihtsamad kui õige nimi ja seetõttu paremini meeldejäävad. N:
www.facebook.com -> www.fb.com. Sama asi on ka meiliaadressidel.
o
koormuse jagamine
- väga suure külastatavusega saitidel on mitu serverit, milledel nad eksisteerivad, kusjuures igal serveril on oma IP. DNS viib
suurema külastatavusega saidile vastavusse mitu IP-aadressi ning jaotab nende aadresside vahel koormuse ära kui päringud leiavad aset.
Üks tsentraliseeritud DNS server poleks mõeldav, sest:
1) Kui see crashib, siis pmselt crashib kogu internet
2) Liiga palju päringuid tuleks sellesse serverisse, mis tooks kaasa liiga suure trafficu
3) Üks server ei saa olla lähedal kõigile hostidele ja sellepärast tooks kaasa suured
delay ’d
4) See server peaks olema hiiglaslik ja seda peaks koguaeg uuendama, sest hoste tuleb koguaeg juurde
Sellepärast on
DNS jagunenud mitmeteks serveriteks üle maailma. Ühelgi DNS serveril pole kõiki hostide nimesid vaid need on jaotatud serverite
vahel.
Põhimõtteliselt on kolme tüüpi DNS servereid:
o
Lokaalne nimeserver – puhverdab infot, et parandada päringute kiirust korduvate päringute puhul
o
Juurserver – Sisaldab infot kõiki tippdomeenide kohta (.com, .org, .edu).
o
Autoratiivne nimeserver – tema andmebaasis on info domeeninime ja sellele vastava IP-aadressi kohta.
o
Kui host soovib teada mingi teise hosti IP-aadressi, siis kõigepealt küsitakse vastust lokaalse DNS serveri käest. Kui see vastust ei tea, siis kohalik server küsib vastust
juurserveri käest, mis tagastab nimeserverite IP aadressid, kes on vastutavad selle teise hosti IP eest. Peale seda valib lokaalne server välja ühe nimeserveri aadressi ja
küsib sealt, mille peale nimeserver tagastab autoratiivse serveri IP, kes teab selle hosti aadressi ja lõpuks küsib lokaalne server autoratiivse serveri käest ja saab vastuse
IP näol ning see edastatakse hostile, kes pöördus lokaalse DNS serveri poole.
Päringud:
o
Rekursiivne - Kui lokaalne nimeserver ei oma infot antud domeeni kohta, küsib ta juurserveri käest edasi jne kuni vastus on käes, vastus tuleb alati
sama teed mööda tagasi. (koormab serverit ja võtab aega).
o
Iteratiivne - kui nimeserver ei tea antud domeeni IP-aadressi, siis saadetakse kliendile selle nimeserveri IP, kust edasi küsida.
Vastuste kiiremaks kättesaamiseks ja serverite koormuse vähendamiseks kasutatakse
Cache’t (
vahemälu ) –
Suvaline DNS server jätab vastused meelde
ja kustutab need kui TTL (
time to live) aegub.
DNS records-is hoitakse [Nimi, Väärtus, Kirje tüüp, TTL].
Kui tipite veebiaadressi veebibrauserisse ja vajutate sisestusklahvi (ENTER), saadate päringu DNS-serverile. Kui päring on edukas, avaneb soovitud veebileht, kui mitte, näete
tõrketeadet. Need edukad ja edutud päringud talletatakse arvuti ajutises talletuskohas ehk DNS-i vahemälus. DNS kontrollib alati enne DNS-serverisse päringu saatmist
kõigepealt vahemälu ja kui leitakse sobiv kirje, kasutab DNS serverile päringu saatmise asemel seda. See teeb päringud kiiremaks ja vähendab võrgu- ja Internetiliiklust. CMD’s
saab näha vahemälus sisalduvad käsuga ipconfig /displaydns. 17. Töökindel andmeedastus
Töökindel andmeedastus on oluline rakenduskihi, transpordikihi ja kanalikihi jaoks.
Töökindel kanal tagab selle, et ükski bitt ei lähe kaduma ega ei muundu ja kõik bitid saabuvad kohale selles järjekorras, millises nad saadeti.
Ebausaldusväärse kanali omadused määravad töökindla protokolli (rdt – reliable data transfer) keerukuse.
Rdt mudel – aste astmelt luuakse saatja ja vastuvõtja vahel turvaline andmeedastussüsteem. Selle loomisel arvestatakse ainult
ühesuunaliste ühendustega ja selle graafiliseks kujutamiseks kasutatakse lõplikke automaate (FSM –
finite state machines).
Rdt 1.0 – suhteliselt
triviaalne , sest eeldame, et alumise kihi andmeedastus on töökindel
s.t bitte ei lähe
kaduma, pakette ei lähe kaduma.
Saatjal ja vastuvõtjal on erinevad lõplikud automaadid: Rakenduselt
tulevad andmed. Saatja saadab andmeid alumisele kihile, vastuvõtja võtab vastu andmeid alumiselt
kihilt.
Rdt 2.0 – realistlikum, sest alumise kihi andmeedastamisel ja vastuvõtmisel võib andmeid kaotsi minna.
Et sellisel juhul hakkama saada on vaja ARQ
(
Automatic Repeat reQuest) protokolli.
ARQ protokoll suudab:
1)
Avastada vigasid (
checksumi abil)
2)
Vastuvõtja puhul suudab anda tagasisidet (Kui andmed jõudsid kohale vigaselt saadame NACK’i.
Kui jõudsid kohale ilma vigadeta saadame ACK’i)
3)
Uuesti
sooritada andmeedastust.
Näiliselt
veatu protokolli puhul on aga suur viga, mis siis teha kui ACK või NAK on vigased?
Rdt 2.1 – igale saatja poolt saadetavale paketile lisatakse ka järjekorra number. See välistab pakettide
dubleeringu, küll aga võib vastuvõtja saada samasuguste andmetega pakette
. Kui saatja saab kätte ACK-i,
siis lõpetab ta andmete saatmise. Vastasel juhul saadab ta samasuguseid pakette ja suurendab koguaeg
järjekorranumbrit.
Rdt 2.2 - erinevus 2.0-ga on see, et NAK-e ei saadeta. Selle asemel pannakse igale ACK-le külge selle paketi
järjekorranumber, mis viimati kätte saadi. Nii on teada, et kui kaks korda sama järjekorranumbriga ACK-i
tuleb, siis viimati saatja poolt saadetud paketti vastuvõtja kätte ei saanud (sest ACK tähendab ju viimase kätte
saadud paketti korrasolekut. Kui ACKe tuleb saatjale kaks samasugust, siis need peavad olema eelviimase kohta,
sest viimase kohta on saadetud ainult üks ACK, mis kinnitab eelviimase korrasolekut). Kuid ka see ei ole veel
veatu protokoll, sest mida teha siis kui paketid kaduma lähevad?
Rdt 3.0
– saatja ootab teatud aja kui ta ei ole saanud kätte ei ACKi ega NAKi, siis saadab ta paketi uuesti. suureks
puuduseks on see, et see on
wait -and-stop protokoll, mis tähendab seda, et enne uue paketi saatmist
oodatakse vastus ära selle kohta, kas
eelmine pakett jõudis kohale. Mis omakorda tähendab seda, et enamus
ajast kulub ootamisele, mis on väga suur ressurssi raiskamine.
Sliding window protocol – pakettide jada peale pannakse aken (?) N: kui aken on 10, siis
ootame kuni 10 kviitungit ja
nihutame oma pakettide
akent edasi.
Buffer mälu pikkus. Akna pikkus on alati vastuvõtja bufferi mälu maht. Sliding
window määrab ära palju saatja võib pakette saata, ilma kviitungeid ootamata. Saaja ütleb jälle palju pakette võib saatja parasjagu teele panna. Igal paketil on
oma järjekorra nr. ACK’i sisse paneme ka järjekorra nr (nr mille viimasena kätte
saime VÕI nr mida järgmisena ootame, oleneb arvutist).
18. Go- Back -N
Vigaste pakettide korrigeerimisviis. Ehk kui paketi saatmine ei õnnestunud, minnakse tagasi N paketi võrra ja korratakse kõike, mis juba saadetud. Paketi
päises on ette nähtud väli identifikaatori jaoks. Kui väli saab täis, alustatakse otsast peale.
Aken – mitu paketti võib saata enne esimese kinnituse (ACK-i) saabumist. Aken võib olla muutuva suurusega, mis sõltub saatja, vastuvõtja ja võrgu
parameetritest.
Kasutatakse kumulatiivset kviitungit, ehk 1
kviitung kinnitab ära kõik eelmiste pakettide kätte saamise. sest kviitungit ei panda enne teele, kui kõik
eelnevad on ka teele pandu.
Vastuvõtja saadab viimati kätte saadud paketi järjekorra nr’iga kviitungi. Ehk kui paar paketti läksid vahelt kaduma, siis saatjasse jõuab väiksema
järjekorra nr’iga kviitung, mida ei aktsepteerita (vastuvõtjas aken ei nihku). Oodatakse
timeout time ja saadetakse kõik paketid uuesti.
Vastuvõtja võtab pakette vastu AINULT õiges järjekorras, ehk vales järjekorras paketid heidetakse kõrvale (s.t, et enne kui pakett 2 pole kätte saadud ei
võeta vastu pakett 3-e). Selline
lähenemine teeb vastuvõtja töö tunduvalt lihtsamaks, sest tema peab siis meeles
pidama ainult seda, mis paketti
järgmisena peaks
tulema . Probleem on selles, et kui akna suurus
on väga suur ja samuti pakettide kohale jõudmiseks kulub palju aega, siis ühe paketti
saatmise ebaõnnestumine võib põhjustada hästi paljude pakettide uuesti saatmist, mis tegelikult poleks vajalik.
Kui vastuvõtja poole pealt on kõik korras (aken on nihkunud) aga saatja poole pealt ei ole (ehk ACK’id läksid kõik kaduma ja akent ei ole nihutatud), siis
saatja ootab
timeout time’i ja saadab uuesti kõik paketid.
Kui timeout
timer on lühike, siis saadetakse pakette mitu korda ennem kui kviitungid kohale jõuavad. Ehk võib tekkida olukord kus võrgus liiguvad
kviitungid mida enam vaja pole, siis saatja lihtsalt ignoreerib neid.
Max akna pikkus, mida GBN tohib saata on 2k-1 (k on järjekorra nr), sest korduvaid identifikaatoreid ei tohi saata. N: kui k=7 ja saadetakse 0-7. vastuvõtja
saab 0-7 ja saadab 7 ack’i. See läheb kaduma. Saatja saadab uuesti 0-7, nüüd vastuvõtja ootab juba uut 0-7, aga saab vana. Ehk uuesti saadetud kaadreid
loeb vastuvõtja kui uued
kaadrid .
19. Selective-Repeat
Raiskab võrguressurssi vähem, aga
puhverdamine on keerulisem, kuna peab meeles pidama millised paketid on käes ja millised ei ole.
Saatja saadab uuesti ainult need paketid, millele ei saadud ACK-i. Iga paketi jaoks on eraldi timeout timer.
Ehk kviitung kinnitab iga paketi kättesaamist eraldi, puudub kulmulatiivne kviitung!
Kui saabunud paketid on vales järjekorras, puhverdatakse need. Kui paketid on õiges järjekorras, nihutatakse akent edasi ja kviteeritakse need. Kui
pakette ei kviteerita, ei saa saatja akent edasi nihutada.
Akent nihutatakse alati siis, kui akna kõige esimene saadetud pakett on saanud ACK teate.
Kui saaja on juba akent nihutanud selle koha pealt kuhu saatja uuesti paketi saadab, siis saaja ikka saadab uuesti ACK’i, sest äkki saatja ei saanud eelmist ACK’i kätte ja ei saa
nüüd oma akent nihutada.
Liiga lühike timeout – saadetakse liiga palju pakette uuesti.
Max akna pikkus on alati pool suurimast järjekorra nr’st (järjekorra nr 1-6, siis pikkus on 3) arvust, sest kui akna pikkus on suurem (näiteks 6) ja kõik
ACK’id kaovad ära (1-6), siis vastuvõtjal tekib probleem, kui saatja saadab uuesti kõik paketid. Ehk vastuvõtja ei saa enam aru kas need paketid 1-6 on
vanad või uued, sest järjekorra nr on samad.
20. TCP ühenduse loomine ja sulgemine Kliendi rakenduskihi programm teatab transpordikihile, et ta tahab luua ühendust mingi teatud
serveriga. Kui hosti nimi ja pordi nr on teada saadud, alustab transpordi kiht TCP ühenduse loomist. Ühenduse loomine:
1.
Klient saadab segmendi SYN (SYN bitt pannakse päises üheks) millele pannakse transpordi kihi poolt
suvaline järjekorra nr. see
segment kapseldatakse IP datagrammiks ja saadetakse serverile.
2.
Server saab datagrammi kätte, teeb selle uuesti TCP SYN segmendiks. Server töötleb päise muutujaid
ja saadab kliendile tagasi uue segmendi teatega „
connection granted“. SYN saab uuesti suvalise
järjekorra nr, ACK nr pannakse eelmine SYN nr +1 (42->43), ehk Server saadab kliendile SYNACK
segmendi.
3.
Kui klient saab segmendi kätte, töötleb ta samuti päise muutujaid ning saadab serverile uue segmendi,
milles SYN bitt=0 (ehk „ühendus on saavutatud“). Järjekorra nr’ks on serveri poolt saadud ACK nr (ehk
esialge järjekorra nr +1) ja ACK nr’ks on serveri järjekorra nr +1 (79->80)
Ühenduse sulgemine:
(saavad algatada mõlemad pooled) 1.
Klient saadab serverile segmendi, kus FIN bitt on 1 ning jääb ootama serveri poolset vastust.
2.
Server saadab vastuse ACK, et ta on nõus ühendust sulgema. Klient jääb ootama serveri poolset vastust, et
ühendus on suletud.
3.
Server sulgeb ühenduse ja saadab FIN (bitt on 1).
4.
Klient saab kätte selle segmendi ja saadab omapoolse lõpetamismärguande ACK, et ühendus on lõpetatud
(läheb
timed wait olekusse).
5.
Server saab vastuse kätte ja lõpetab ühenduse.
21. TCP töökindel andmeedastus
Kuidas TCP tagab pakettide kohalejõudmise?
TCP ühendus on töökindel, sest toimub kolmepoolne kinnitus ehk three-way handshake. Klient saadab serverile ühenduse loomise soovi, server vastab ning
saadab samuti ühenduse loomise soovi, mille klient kadudeta andmevahetuse korral vastusega kinnitab. (Kasutatakse duplekssidet.). TCP sobib rakendustele,
mis vajavat töökindlat andmeedastust ja kiirus ei ole kriitiline.
TCP töökindel andmevahetus:
-
teeb seda IP protokolli peal
-
kulmulatiivsed kviitungid (üks kinnitab kõik eelnevad ära)
-
kasutab phte kordussaamise taimerit (pannakse tööle akna kõige vasakus servas olevale paketile)
-
kordamist käivitavad 2 sündmust: timeout, kviitungite duplikaadid
TCP (transpordikihi tasemel)
tagab töökindla andmeedastuse mitte-töökindla IP (võrgukihi tasemel) teenuse peale.
TCP muretseb selle eest, et
vastuvõtja puhvris poleks segmendid vigased, dubleerimata, oleks õiges järjekorras jne.
TCP töökindel andmeedastus
töötab üldjuhul järgnevalt: Transpordikiht, saab rakenduskihilt andmeid ning
TCP kapseldab andmed segmentideks ja
annab siis segmendid omakorda edasi võrgukihile, kust võtab IP üle. Kui
taimer juba ei jookse ja on mõni ilma ACK-ita segment, siis
TCP paneb taimeri
tööle. Kui tuleb
timeout, siis saadetakse see segment uuesti, mis põhjustas timeout-i. Kui saadakse ACK kätte, siis vaadatakse selle ACK-i väljaväärtust. Kui
see väljaväärtus on suurem kui viimane ilma ACK-ita (unacknowledged) segment, siis sellest võib TCP välja lugeda, et kõik andmed enne seda serverilt
tulnud ACK-i on kätte saadud.
Näited:
1) Kui vastuvõtja saadetud ACK pakett läheb kaduma , siis tänu timeout-le saadab saatja paketi lihtsalt uuesti
2) Kuna kell pannakse käima kõige vanema ilma ACK-ita segmendi jaoks siis saadetakse alati ainult kõige vanem pärast timeout-i uuesti. See on hea, sest
kui ACK-id segmentide kohta jõuavad hiljem kohale kui timeout otsa saab (eriti hea kui ACK-id suhteliselt koos tulevad), siis näiteks 2 või rohkema paketi
saatmise puhul saadetakse serverile ainult üks (kuigi seda poleks vaja, sest ACK-id on olemas, lihtsalt pole veel kohale jõudnud) mitte kõik paketid, mille
ACK-e pole kohale jõudnud. Ning kui sellel ajal jõuavad ACK-id kohale, siis saadetakse kõige suurema väljaga ACK-i järjekorranumbriga segment uuesti. Ei
koormata võrku üleliigselt!!!
3) Kui saadetakse 2 paketti ja esimese paketi ACK ei jõua kohale, aga teine jõuab, siis pole vahet. Sest on teada, et esimene saadi ka kätte kuna esimese
paketi ACK>teise paketi ACK.
22. TCP taimerid Taimer on võetud kasutusele selleks, et hakkama saada ebaaktiivsusega vastuvõtja poole pealt. Kui oodatakse vastuvõtja poolt mingit tegevust, siis saatja
paneb tööle taimeri. Näiteks retransmission timer mõõdab aega, mille
möödudes pakett uuesti saadetakse. See aeg ei tohiks olla liiga lühike, sest see tooks
kaasa ebavajalikud korduvsaatmised. Ning samuti ei tohiks see olla ka liiga pikk, sest see tooks ebavajaliku delay ja
aeglase reaktsooni paketi kadudele. Aja
seadmiseks võetakse arvesse mitmeid asjaolusid.
Mõned kasutatavad definitsioonid:
RTT – Round Trip Time, muutuv suurus.
SampleRTT’d (aeg segmendi saatmisest ACKi saamiseni),
EstimatedRTT’d (RTT keskmestatud väärtus) ja peale selle lisatakse tavaliselt ka väike lisaaeg.
1)
Connection-establishment timer – pannakse
jooksma kui SYN segment saadetakse TCP ühenduse loomiseks. Kui 75 sekundi jooksul vastust ei tule, siis
ühendust ei looda.
2)
Retransmission timer – pannakse jooksma kui pakett pannakse teele. Kui seatud aja möödudes ACK’i ei tule, siis saadetakse pakett uuesti (vt ülevalt poolt).
3)
Delayed-acknowledgement timer – pannakse jooksma kui vastuvõtja saab kätte paketi, millele on vaja ACK vastu saata. Kestab umbes 200ms. Kui selle aja
jooksul tuleb veel pakette, siis ACK’itakse kõik
pakettid ühe ACK’iga.
4)
Persistence timer – pannakse jooksma kui vastuvõtja saadab saatjale ACK’i, milles märgib ära, et vaba buffri suurus (Receive Window) on null. Selleks, et
saatja saaks pakette edukalt saata, peab akna suurus olema suurem kui null. Sellepärast ootab saatja, et vastuvõtja saadaks talle uue ACK’i, milles ta märgib
ära, et akna suurus on suurem kui null. Kui seda taimeri aja jooksul ei tule, siis saadab saatja
probe ’i suurusega 1 byte ja see probe ACK’itakse saatja poolt.
Protsess kordub seni kuni mingi aja möödudes vastuvõtja buffer tühjeneb ja ACK’ide sisudes on märgitud, et vaba buffri suurus on suurem kui null.
5)
Keep -alive timer – aegub mingi aja möödudes (tavaliselt umbes 2 tunni aja möödudes) ja siis saadab spetsiaalse segmendi teele,
kontrollimaks , kas ühendus
on ikka
üleval .
6)
FIN WAIT 2 timer 7)
TIME WAIT timer 23. TCP voo juhtimine (flow control) Selleks, et vastuvõtjat mitte ülekoormata on vajalik voo juhtimine. Selleks, et voogu juhtida on vajalik kontrollida koguaeg ühte välja nimega
Receive Window,
mis annab aimduse sellest kui palju on vastuvõtjal vaba ruumi puhvris. Selleks, et
ülekoormus ei tekiks arvutab saatja koguaeg kui palju tema andmetest on
ACK’imata ja see peab olema väiksem kui vastuvõtja
Receive Window. Selleks, et see töötaks korralikult on vajalik taimer, mis tagab koguaeg ühenduse
vastuvõtjaga.
Oluline on optimaalne
timeout. Kui see on liiga lühike, koormatakse võrku, kui on liiga pikk, muutub viide suureks. Iga paketi saatmisel võetakse aega:
saatmine+kinnitus. Tehakse statistikat – arvutatakse kaalutud keskmine. Usaldatavuse tagamiseks lisatakse sellele mingi konstant.
Flow Controli vahendid on Go-Back-N ja Selective Repeat.
24. TCP koormuse juhtimine
Erineb voo juhtimisest. Koormuse juhtimine on saatja poolne ettevaatusabinõu, kus hajutatakse võrgu koormust, mitte konkreetsetes masinates olevat
pakettide hulka. (Voo juhtimine – „garaažid täis“, koormuse juhtimine – „ristmikud täis“).
Selleks, et võrku mitte üle koormata pakettidega on vajalik koormuse juhtimine (et saatja vastuvõtjat üle ei koormaks). Koormuse kontroll jaguneb: 1. üritame vältida; 2. üritame vähendada.
TCP edastutuskiirus on funktsioon, mis sõltub võrgu koormusest. Kui koormus on liiga suur, siis edastuskiirus viiakse madalamale ja vastupidi. Et see
niimoodi saaks toimida on vajalikud kolm elementi:
1)
TCP saatja poolel peab oskama reguleerida edastuskiirust – TCP puhul on nii saatja kui vastuvõtja poolel
koormuse aken (congestion window), millest ACK’imata andmete hulk ei tohi suurem olla. See
tähendab koormuse akna suuruse ja ACK’imata andmete põhjal oskabki TCP saatja poolel reguleerida
edastuskiirust.
Koormuse akna pikkus = min(vastuvõtja aken OR koormuse aken), valitakse see kumb on väiksem. 2)
TCP saatja poolel peab saama infot selle kohta, milline on koormus võrgus – infot saab selle kohta siis
kui paketti retransmission taimer saab otsa või kui lihtsalt tulevad dubleeritud ACK’id, mis
viitavad sellele, et viimati kätte saadud pakett saaja poolel ei ole see, mis saatja viimasena välja saatis.
3)
TCP peab kasutama võimalikult head
algoritmi , mis reguleerib edastuskiirust –
algoritm koosneb
kolmest tähtsast komponendist:
täiendav
suurendamine ja mitmekordne vähendamine – idee seisneb selles, et koormuse akent
(Congestion Window) vähendatakse saatja poolel poole võrra kui ilmnevad pakettide kaod. Kui,
aga saadakse ACK’e siis suurendatakse vähehaaval koormuse akna suurust.
aelgane algus
( slow start) – alustatakse sellest, et määratakse väike koormuse akna suurus
(näiteks 1 maksimaalne segmendi suurus) ja siis suurendatakse seda väärtust eksponsentsiaalselt
pärast iga Round Trip Time’i. Kui esineb esimene paketti kaotus, siis jagatakse see kahega ja
koormuse aken suureneb lineaarselt.
reaktsioon timeout’idele – tegelikult reageeritakse natuke teistmoodi (mitte lihtsalt koormuse akna kahega jagamine ja lineaarselt
suurenemine) kui esineb paketi kaotus või mitme samasuguse ACK’i saabumine saatjale. TCP’l on olemas üks
muutuja nimega Threshold, mis
määrab kindlaks koormuse akna suuruse. See tähendab, et kui esineb paketi kaotus, siis tegelikult hakatakse uuesti peale slow start’iga ja
suurendab oma väärtust eksponentsiaalselt seni kuni jõutakse Threshold’i väärtuseni, siis suureneb koormuse aken lineaarselt.
Sae hambad – koormus üles, kui paketid hakkavad kaduma, siis koormus alla. luuakse sessiooni algul SYN pakettidega aknad. Ideaalne oleks saata nii kiiresti kui võimalik (aken nii pikk
kui võimalik) ilma kadudeta. Selleks hakkab saatja nö testima maksimaalset läbilaskevõimet – st et
suurendab akent kuni kadudeni. Kao tekkides vähendab saatja akna pikkust. Kaoks loetakse ka timeouti
täistiksumist. 25. UDP
Esimene aspekt, mille poolest erineb UDP TCP’st on see, et UDP puhul ei looda virtuaalkanalit
(ehk see on ühenduseta – ei toimu
handshakingut).
UDP päis on 8 baiti pikk.
See tähendab omakorda seda, et UDP peab panema vastuvõtja aadressi (s.t. IP ja pordi numbri) segmendi külge ja seda peab ta tegema iga segmendi
puhul. UDP puhul ei saa me rääkida töökindlast andmeedastusest, mis tähendab, et segmentide kohale saabumine pole garanteeritud.
Peale selle ei tegele UDP ka voo kontrolliga. Ja pakettide kadumisel neid uuesti ei saadeta.
UDP pakub täpselt nii palju teenuseid kui vaja, s.t. et ta pakub ainult multipleksimist ja demultipleksimist ning vigade avastamist segmendi päistes.
Multipleksimine kujutab endast sisuliselt seda, et transpordi kiht võtab vastu andmetükid ja paneb igale tükile külge päise ning loob sellest segmendi.
Demultipleksimine toimub siis vastavalt vastupidi, s.t. et transpordi kiht võtab segmendid vastu, mis tulevad võrgukihilt, töötleb päiseid ja saadab need
edasi. Pärast multipleksimist võtab võrgukiht segmendi vastu, teeb sellest datagrammi ja annab oma
parima (
best-effort), et toimetada see vastuvõtjale.
See toob omakorda kaasa selle, et paketid võivad minna kaduma või siis saabuvad vastuvõtjale vales järjekorras ning siin tulebki mängu vigade avastamine
ja kontroll.
Transpordi kiht paneb kaasa checksumi headerisse, et vigasid avastada, aga neid ei parandata.
26. Datagrammvõrgud ja virtuaalahelatega võrgud Analoogselt transpordikihiga pakub ka võrgukiht ühendusele orienteeritud (
handshaking) ja ühenduseta (ilma
handshaking’uta) teenust. Kuid siiski on võrgukihi
puhul mõned erinevused:
1.
Võrgukihi teenused on hostide vahelised ja nad pakuvad teenuseid transpordikihile, kuid transpordikihi teenused on protsesside vahelised ja nad pakuvad
teenuseid rakenduskihile.
2.
Võrgukihid pakuvad ühendusele orienteeritud VÕI ühenduseta teenuseid, aga mitte mõlemaid korraga. Arvutivõrgud, kus me näeme võrgukihi tasemel
ühendusele orienteeritud võrke nimetatakse virtuaalahelatega võrkudeks ja selliseid võrke, kus on võrgukihi tasemel ühenduseta võrgud, nimetatakse
datagrammvõrkudeks.
3.
Ühendusele orienteeritud teenus toimib võrgukihi tasemel teistmoodi kui transpordi kihi tasemel. Näiteks transpordi kihi tasemel nägime, et ühendusele
orienteeritus implementeeritakse lõpp-punktides olevate süsteemide poolt, aga võrgukihi tasemel implementeeritakse see lõpp-punktide vahel olevates
ruuterites ja ka lõpp-punktides.
Virtuaalahelatega võrgud:
Kasutatakse virtuaalahelaid, et kaks otspunkti omavahel ühendada.
Virtuaalahelad koosnevad:
1)
Teekonnast, mis on lihtsalt ühenduslülide ja ruuterite jada
2)
Numbritest, mis
tähistavad ära iga lingi teekonna
3)
Sissekannetest marstuurimistabelites
Toimib see järgnevalt: Luuakse kanal
(VC setup), saadetakse andmed (
data transfer) ja pannakse kanal kinni (
VC teardown).
Pakett, mis mööda kanalit liigub omab Virtuaalahela numbrit oma päises, mis muutub iga lingi juures.
Numbri muutmise viib läbi ruuter, kellel on tabel, mille alusel ta numbrit muudab. Samuti hoiavad ruuterid ühenduste informatsiooni, s.t. et kui uus
ühendus luuakse, siis lisatakse ka uus kirje tema tabelisse ja vastupidi
kustutamise puhul.
Erinevus transpordikihi ja võrgukihi kanali loomise vahel on see, et võrgukihi puhul on ruuterid otseselt ka kaasatud ühenduse loomisesse, vastupidiselt
transpordi kihile, kus ühenduse loomisesse on kaasatud ainult lõpp-punktid
o
Enne andmete saatmist pannakse marsruut paika. Luuakse virtuaalahel, mille kaudu saates ei pea igale paketile eraldi marsruuti otsima. Paketid on alati õiges järjekorras.
Ahelate loomiseks kasutatakse identifikaatorit, mis ei ole unikaalsed globaalses mõttes, vaid igas ruuteris hoitakse vastavuste tabelit, mille järgi saab teada, kuhu antud
identifikaatoriga pakett on vaja edasi saata. (Tee algpunktist lõpppunkti on paljuski nagu telefonivõrgu puhul.) Datagrammvõrgud:
Tavaline pakettvõrk
erinevalt virtuaalahelatega võrkudest ei looda siin mingisugust kanalit ja ruuterid ei tea mingit infot virtuaalahelate kohta (sest neid lihtsalt pole).
Kui pakett pannakse teele, siis iga ruuter, mis jääb tee peale vaatab vastuvõtja aadressi ja paneb selle kokku oma tabelis oleva lingi liidesega.
Ruuteri tabelid ei hoia mitte kõiki IP’sid, mis maailmas on vaid sisuliselt hoiavad nad IP’de vahemikke.
Vahe virtuaalahela võrguga on ka see, et datagramm võrgu puhul võivad paketid läbida erineva teekonna.
o
Sõnum (pakett) liigub saatjast vastuvõtjani läbi erinevate võrgusõlmede „parimat võimalikku teed pidi“. Paketi päises on alati saatja ja vastuvõtja aadressid mille järgi
teevad võrgus oleva ruuterid otsuseid, millist marsruuti pidi konkreetset paketti kõige parem saata on. ( EHK mingit kõne seadistamist võrgukihis ei ole. Ei ole kindlat
ühendusteed otspunktide vahel. Pakette edastatakse kasutades sihtkoha hosti aadressi. Paketid võivad liikuda erinevaid teid pidi.)
27. Marsruutimine
Võrgukiht peab otsustama, millise teekonna pakettid läbivad.
Marsruutimisprotokolli eesmärk on tuvastada „hea“ tee
alguspunktist lõpp-punkti.
Headuse mõõtmine võib käia mitme mõõtme järgi, näiteks hinna, usaldusväärsuse, teekonna pikkuse, delay’de jms järgi.
Marsruutimine koosneb kahest põhilisest komponendist: optimaalse marsruutimisteekonna kindlaksmääramine ja pakettide transport.
Kui pakettide transport võib olla üsnagi triviaalne, siis marsruutimisteekonna kindlaks tegemine võib olla jällegi vägagi keeruline. Teekonna teevad kindlaks
ja arvutavad välja marsruutimisalgoritmid.
Tee
määramiseks kasutavad
algoritmid marsruutimistabeleid, mis sisaldavad algoritmist sõltuvat marsruutimisinformatsiooni.
Selleks, et info
tabelites oleks asjakohane suhtlevad ruuterid ka omavahel marsruutimisvärskenduse (
routing update) sõnumite ja lingi oleku kuulutuse (
link
state advertisement) sõnumitega
Marsruutimisprobleemidega tegelemiseks kasutatakse tihtipeale ka graafe.
N: bussiga sõitmine keskklinnast mustamäele. Tahame leida tee kus on kõige vähem tõkkeid jne. Iga nurga peal küsime inimeste käest, kust kaudu on hea
edasi minna. 28. Link state marsruutimisalgoritm
Selle algoritmi puhul on terve võrgu topoloogia ja linkide hinnad teada ehk siis nad on sisendiks Link State marsruutimisalgoritmile.
Teoorias on see saavutatav nõnda, et iga ruuter saadab endale teadaoleva info ruuterite ja lingi hindade kohta kõigile teistele laiali (ehk
marsruuterid vahetavad omavahel informatsiooni).
Praktikas on see saavutav näiteks Link-state
broadcast algoritmiga .
Kanalioleku marsruuterid kasutavad lühima (odavaima) tee väljaselgitamiseks Dijkstra
algoritmi ja töötab see nõnda: Graafi tipp, millest alustatakse, märgib endale üles tee
hinnad otseste naabriteni. Kui
otsesed naabrid ei olda, siis märgitakse hinnaks lõpmatus.
Järgmisena pöördutakse naabri poole, kelleni oli tee kõige odavam. Vaadatakse üle tema
otsesed naabrid ning kui mõni tee oli lühem, kui eelmise naabri juurest, siis märgitakse see
endale üles ning jäetakse meelde, et selle tipu kaudu oli sinna odavam minna. Kallimaid asju
üles ei märgita. Ning jätkatakse samal põhimõttel, kuni on teada lühimad teed alguspunktist
teistesse punktidesse.
29. Distance vector marsruutimisalgoritm
Lüli oleku (ehk lühima tee eelistuse) algoritmid paiskavad marsruutimisinformatsiooni
kõigile võrgustiku sõlmedele, kuid iga marsruuter saadab marsruutimistabelist ainult selle
osa, mis kirjeldab tema enda lülide olekut.
Kaugusevektori (ehk Bellman- Fordi) algoritmid saadavad kogu marsruutimistabeli või
suure osa sellest, kuid ainult oma naabritele.
Omadused:
o
Iteratiivne - jätkub kuni ükski sõlm infot ei vaheta
o
ise-lõpetav - ei ole mingit signaali, mis selle seisma paneks
o
asünkroonne -
sõlmed ei pea ühes rütmis töötama
o
jagatud - iga sõlm
vahetab ainult oma
naabrite vahemaade hinnanguid teiste
sõlmedega
Igal sõlmel on oma rida iga võimaliku sihtkoha jaoks ja oma
veerg naabrite
jaoks. Iga ristumiskoha peal on kirjas selle marsruudi „maksumus“
Distance vectori marsruutimisalgoritm põhineb Bellman-
Ford võrrandil
dx(y)
See tähendab sisuliselt seda, et kõigepealt minnakse x’st v’sse (v on mingi suvaline
naaber) ja siis vaadatakse v minimaalset kaugust y’sse. Kõige lühem tee on üle kõigi
naabrite v minimaalne kaugus y’sse.
Distance vectori algoritm töötab nõnda: Aeg-ajalt saadavad sõlmed üksteisele distance
vectoreid (distance vector Dx on selline vektor, milles on maksumuste hinnangud x’st
kõigisse teistesse sõlmedesse) ja kui x saab kätte uue distance vectori, siis uuendab ta
enda distance vektorit analoogselt Bellman-Fordi võrrandiga: Dx(y) Ja
kui x’i distance vector muutus, siis saadab ta selle laiali ka oma naabritele ning protsess
kordub seni kuni sõlmed vahetavad üksteise vahel vektoreid.
x’st y’ni on kas 2+0 (0-y’st y’sse) või 7+1=8.
o
Min(2+0, 7+1) = 2, sellepärast kirjutame tabelisse y alla ka 2
o
Min(2+1, 7+0) = 3, sellepärast kirjutame tabelisse z alla ka 3
30. Hierarhiline marsruutimine
Link State ja
Distance Vector marsruutimisalgoritmid on liiga lihtsakoelised selles mõttes, et nendes algoritmides ruuterid realiseerisid sama algoritmi ja
reaalsuses on ruutereid nii palju (üle 200 miljoni), et kui kõik vahetaks omavahel nõnda infot nagu see toimis nende algoritmide puhul siis ei
jääks ruumi
andmevahetuseks ja samuti oleks administreerida iseseisvalt mingit võrku võimatu. Lisaks oleks võimatu hoida neid kõiki ühes marsruutimistabelis.
Sellepärast on ruuterid jaotatud autonoomsetesse süsteemidesse (
autonomous systems – ASs), kus igas süsteemis ruuterid teavad üksteise kohta infot ja
realiseerivad sama algoritmi ning samuti on igas süsteemis ühel või rohkemal ruuteril ülesanne saata pakette väljaspoole AS’i. Neid nimetatakse
gateway ruuteriteks.
Kõik
gateway ruuterid realiseerivad sama protokolli, et nad oskaks üksteisega suhelda ja kõigil
gateway ruuteritel on piirkonna
sisesed (
inter -AS) ja
piirkonna välised (
intra -AS) ruutimistabelid.
Tuntumad piirkonna välised ruutimise protokollid – RIP ja
OSPF // Tuntum piirkonna sisene ruutimise protokoll - BGP
piirkondade sisestel on fookus võrgu jõudlusel. Piirkondade vahelistel poliitilised otsused võivad domineerida otsuste üle
Hierarhilise marsruutimise eelisteks on marsruutimisvärskenduse sõnumite liikluse vähenemine ja marsruutimisprobleemi jagamine väiksemateks
probleemideks.
31. IP aadress ja MAC aadress, ARP
IP-Aadress:
võrgukihi aadress ning neid on tänapäeval kahte tüüpi IPv4 ja IPv6.
32 bitine.
IP-
aadressiga leiame üles sihtpunkti
Seotud asukohaga! Kui reisime, siis muutub ka meie IP-aadress. Oleneb kus võrgus me hetkel oleme.
MAC aadress:
kanalikihi aadress, mis on igal arvutil.
Püsib arvutil muutumatuna terve tema elutsükli jooksul.
Kasutatakse et adresseerida kanali otspunktides olevaid võrgusõlmi
48 bitised (6 B)
16nd kujul FF-FF-FF-FF-FF-FF
Kui
adapter saadab mingi
kaadri , siis lisab ta otspunkti MAC aadressi päisesse ja paneb selle teele. Iga arvuti, kes selle kätte saab, kontrollib, kas see
on tema MAC või mitte.
Seotud arvutiga!
ARP protokoll:
Võtab sisse IP-aadressi ja annab välja MAC aadressi.
Seda on vaja kui saatja on juba DNS’ilt saanud teada vastuvõtja IP ning siis annab ARP vastavalt IP’le õige MAC aadressi.
ARP töötab mõnes mõttes analoogselt DNS’iga, kuid oluline erinevus on see, et kui DNS annab hosti IP aadressi terve interneti võrgu piires, siis ARP
suudab anda MAC aadressi ainult
alamvõrgu piires.
Kui host tahab saata paketti kellegile, kelle MAC aadressi ARP’i tabelis pole, siis host teeb alguses ARP paketi, mis saadetakse kõigile alamvõrgus olevatele sõlmedele kui
ilmneb, et sõlm teab vastust, siis saadab ta ARP paketi tagasi saatjale. Kui saatja tahab saata paketti väljaspoole oma alamvõrku, siis alguses saab ta ARP’i abil kätte
alamvõrgu ruuteri MAC’i ja saadab paketi alamvõrgu ruuterile. Peale seda saab ruuter ARPi abil kätte vastuvõtja MAC’i ning toimetab siis paketi teise võrku, kus on
vastuvõtja arvuti.
LIHTSAMALT: Kui A tahab saata andmeid B’le, A teab B IP-aadressi. IP-aadressi saame kätte nimeteenuse käest. Meil on vaja MAC-aadressi. Selleks
saadame lokaalsesse võrku (broadcast vorku) et kas keegi teist on B sellise IP-aadressiga. Kui B on selles võrgus olemas ja ta on sisse lülitataud, vastab
ta et “Mina olen B ja minu ip-aadressile vastav Mac-aadress on selline”
32. DHCP
DHCP (
Dynamic Host Configuration Protocol) on protokoll, mis võimaldab lasta serveril dünaamiliselt hallata ja automatiseerida unikaalse IP-aadressi
omistamist kohtvõrgu seademetele.
Kutsutakse ka „
plug-and-play protocol“-iks.
See on väga hea protokoll administraatorile, sest muidu peaks ta IP’d manuaalselt määrama ise.
DHCP’d saab konfida nii, et see omistaks hostidele jäävad või ajutised IP aadressid (tavaliselt kasutatakse ajutisi, sest IP’de arv on teadupoolest piiratud).
Oma dünaamilisuse ja automaatsuse tõttu on see protokoll väga laialt levinud, sest tänapäeval inimesed pidevalt liituvad ja lahkuvad erinevates võrkudes.
Protsess näeb välja nõnda: 1) Kui võrku tuleb uus host, siis esimese
asjana ta peabki üles leidma DHCP serveri võrgus ja seda otsingut saab ta teostada DHCP
discover message’ga,
mis saadetakse UDP paketina. Host koostab vastava IP datagrammi ja paneb sinna külge ka
broadcast’i aadressi 255.255.255.255 ja enda aadressi
0.0.0.0 ning saadab selle kanalikihile, mis loob kaadri ja paneb oma korda külge MAC’i
broadcast aadressi FF-FF-FF-FF-FF-FF. Pärast seda läheb läheb
kaader võrku ja kõik hostide adapterid näevad seda, sellepärast saabki see kaader ilusti DHCP serverini toimetatud.
Discover message’il on küljes ka
üks ID, mille järgi saavad DHCP serverid vastuseid luua ja mille järgi host need vastused ära tunneb.
2) Kui DHCP server saab discover message’i kätte, siis vastab ta enda poolse DHCP
offer message’ga. Kui DHCP servereid on mitu, siis võib olla ka
offer message’eid mitu, millel kõigil on küljes see
discover message’ist saadud ID. Peale selle sisaldavad
offer message’id ka pakutavat IP’d, võrgu maski ja
IP aadressi eluea pikkust.
3) Pärast seda kui server on vastuse saatnud, saadab host DHCP request message’i, milles ütleb ta serverile, et on tema
pakutud offer message’i kätte
saanud ja tema IP edukalt vastu võtnud.
4) Selle peale vastab server DHCP ACK’iga, millega ta näitab, et sai hosti sõnumi kätte ja tema
parameetrid on edukalt kinnitatud.
33. NAT
NAT (
Network Address Translation ) on sisuliselt võrguaadressi ümbernimetamine (
privaatse või registreerimata IP aadressi asendamine
ametliku IP-
aadressiga).
Oletame, et meil on näiteks üks väike
organisatsioon alamvõrgu IP aadressidega ning oletame, et organisatsiooni arvutitel on ainult privaatsed IP’d s.t. et
välismaailmale on need IP’d registreerimata või ei ole vähemalt registreeritud kui selle konkreetse organisatsiooni IP’d.
NAT ruuter näib välismaailmale kui üks IP ja kõik liiklus, mis tuleb selle organisatsiooni alamvõrku käib läbi NAT ruuteri IP ja kõik organisatsiooni IP’d
lähevad välja ühe ja sama NAT ruuteri IP’na.
Üldiselt saab NAT ruuter ise oma võrguaadressi ISP DHCP’lt ning jooksutab ka ise DHCP serverit jagades siis välja IP’sid enda alamvõrku.
Protsess näeb välja nõnda: Kui sisevõrgust saadetakse pakett välisvõrku, siis kõigepealt liigub see pakett sisevõrgu NAT ruuterisse, mis suhtleb
välismaailmaga. NAT ruuter loob enda NAT
translation tabel’ isse sellise IP ja pordi paari, mida seal veel ei ole. Asendab need paketis ära ja lisab need
tabelisse ning siis saadab paketti välja. Vastuvõtja teeb oma tegevused paketiga ära ja saadab paketi NAT’ile tagasi ning NAT vaatab oma tabelist jälle,
milline sisevõrgu IP ja port vastasid sellele IP’le ja pordile, mis ta enne paketti
source’s ära muutis ja saadab siis paketi sisevõrku õige IP ja
pordiga arvutile .
NAT’i kasutamine teeb ka raskemaks võrgu ründamise väljastpoolt, sest sisemisi IP aadresse ei edastata üle Interneti.
34. Marsruutimisprotokollid RIP, OSPF ja BGP RIM ja OSPF on Intra-AS (piirkonnavälised) protokollid, BGP on Inter-AS (piirkonnasisene) protokoll
RIP
:
Routing Information Protocol – kasutab
Distance Vector Algoritmi.
kasutatakse hinnanguid ja nendeks on hüpete arv.
Vahetab
naabritega iga 30sek tagant infot (ehk marsruuterid vahetavad distantsvektoreid iga 30sek tagant)
saadetavaid teateid nim
advertisementideks, neid saadetakse UDP pakettidena (ehk RIP töötab UDP peal).
Vaatab ka kas ruuterid on elus. Kui 6 ajaperioodi (180 sek) järel naaber pole vastanud siis arvatakse ta „surnuks“ ehk võrgust lahkunuks, kõik tema kaudu
käinud marsruudid kuulutatakse kehtetuks. Marsruutimistabelid arvutatakse ümber ja uus tabel saadetakse kohe kõigile naabritele. Need naabrid
omakorda edasi oma naabritele jne. teade mõne sõlme „suremisest“ levib kiiresti üle kogu võrgu
RIP-i kasutatakse põhiliselt väiksemates võrkudes.
OSPF:
Open Shortest Path First - kasutab
Link State marsruutimisalgoritmi (ehk on veidi keerulisem)
Iga võrgusõlm teab kogu võrgutopoloogiat ning lühim tee punktide vahel leitakse Dijkstra algoritmiga
Suuremates võrkudes kasutatakse hierarhilist OSPFi, kus võrk on jagatud piirkondadeks, nii et
Link State algoritm toimib ainult piirkondade piires ning iga
piirkond on ühendatud võrgu tuumaga ehk „selgrooga, kusjuures marsruutimine piirkondade vahel toimib ainult läbi „
selgroo “.
OSPF eelised RIPiga võrreldes:
o
kõik OSPF
teated on autentitud
o
kasutatakse TCP protokolli,
o
lubatud on mitu samaväärset (võrdselt lühikest) teed kahe punkti vahel (RIPis sai olla ainult üks lühim tee)
o
toetab
suuremaid võrke.
Kui on
reaalaja andmevahetus siis ta ütleb et satelliitside on väga kallis. Kui mitte, siis ta ütleb et satelliitside on odav.
BGP :
Piirkondade vahel suhtlevad ruutirid. (marsruutimine toimub
border gateway kaudu)
On põhiline ruutimisprotokoll internetis.
Igale ASile on antud
unikaalne number, mille järgi see Internetis identifitseeritakse.
BGP kasutab Path Vector marsruutimisprotokolli (sarnane Distance Vector protokolliga).
saadab naabritele informatsiooni kogu tee kohta sihtpunktini. Naaber saab siis otsustada, kas kasutab seda teed või mitte.
nende põhiline idee on selles et seal on võimalik teha ka mitte ainult parima tee otsuseid vaid ka poliitilisi ja majanduslikke otsuseid (näiteks ei soovita
teha marsruuti läbi konkurendi ASi; osad teed jäävad välja reklaamimata)
BGP teated liiguvad üle TCP protokolli.
Inter-AS: Administraatorid soovivad ülevaadet kes ja kuidas saadab infovoogusid üle tema võrgu.
Intra-AS: Üks
administraator , kõik õigused, ei mingeid eraldi õigusi
35. Marsruuterid Marsruuteri kaks
põhilist funktsiooni on:
1) Marsruutimisalgoritmide ja protokollide töö tagamine
2) Datagrammide edasisaatmine sissetulevast kanalist väljuvasse
Iga ruuteri puhul saame rääkida neljast põhilisest komponendist, millest ta koosneb:
1)
Input port – realiseerib füüsilise kihi, kanali kihi ja võrgukihi funktsioone.
2)
Switching fabric – ühendab sisend- ja väljundpordid.
3)
Output port – võtab paketid, mis on talle saadetud sisendpordi poolt läbi
switching fabricu ja edastab selle väljundkanalisse.
4)
Routing processor – protsessor realiseerib protokolle, sisaldab ruutimisinformatsiooni ja tabeleid ning viib läbi erinevaid võrgufunktsioone.
Ruuterisse tulevad paketid sisse kiiremini kui neid analüüsida ja edasi saata jõuab, järelikult on vaja neid vahepeal ajutiselt salvestada – see on sisendpordi ülesanne, veel on
füüsilise taseme funktsioon (andmesideliini lõpetamine ). Vastavalt datagrammidele ja sihtpunktidele ja marsruutimistabelile formeeritakse switching fabric’us väljaminevad
paketid. Kuna väljundliini (transmissioon rate ) kiirus võib olla aeglasem, kui datagrammide saabumine fabric’st, siis on vajalik puhverdamine.
Sisendpordi eesmärk on kõik sissetulevad datagrammid kinni püüda, leida datagrammi sihtaadressi järgi mälus
olevast marsruutimistabelist sobiv
väljundport ning saada pakett sinna edasi.
Kui paketid saabuvad sisendisse kiiremini kui nende töötlemine aega võtab, siis jäetakse paketid mällu ootele (
queueing).
See tekitab viiteid ning kui mälu (puhver) täis saab, lähevad datagrammid kaduma.
Ideaalsel juhul toimub pakettide töölemine võrgu kiirusel (ühtki paketti ei jäeta ootele).
Kommuteerimisel on kasutusel kolm meetodit (ehk on kolme tüüpi marsruutereid):
1) Mälus toimuvate lülitustega - (kasutati vanades esimese põlvkonna ruuterites). sisendist võetakse pakett vastu, kirjutatakse mällu ja loetakse sealt ning
saadetakse väljundisse. Paketi liikumise kiiruse määrab mälu kiirus.
2) Siinil toimuvate lülitustega
- Datagramm kantakse sisendpordilt väljundporti üle jagatud siini, ehk siini peal saab korraga liikuda ainult üks datagramm.
Tunduvalt kiirem kui eelmine variant. Kiiruse määrab siinikiirus (näiteks mõnes
Cisco ruuteris kasutatakse 1Gb/s siini).
3) Maatriksi kujul toimuv - kõige efektiivsem, sel puhul saab paralleelselt mitut datagrammi liigutada. Kõige kiirem variant.
Väljundpordis kasutatakse samamoodi pakettide ootele jätmist (
queueing), kui väljundi liini kiirusest ei piisa. Probleemid samad mis sisendi puhul (viide,
andmekaod).
36. Ipv4 ja Ipv6 IP on võrgukihi protokoll, mis tegeleb loogilise adresseerimisega. IP’d on mõeldud võrguliideste tuvastamiseks (arvutitel on neid tavaliselt üks ja ruuteritel mitu). IPv4:
32 bitti (4 baiti) pikk ja aadresse kokku 232.
IP aadress kirjutatakse kümnendnumbritega ja iga
bait eraldatakse punktiga.
IPv4 aadresse on neljast klassist:
A-klass - mõeldud suurtele võrkudele ja toetab 16 miljonit hosti;
B-klass - mõeldud keskmise suurusega võrkudele ja toetab 65000 hosti;
C-klass - mõeldud väikestele võrkudele, kus on alla 256 hosti;
D-klass - mõeldud multiedastusvõrkudele.
Aadress koosneb kahest loogiliselt osast: võrgu- ja hosti osast (kusjuures esimesed bitid näitavad ka aadressi klassi).
Võrguosa identifitseerib alamvõrgu ja hostiosa identifitseerib konkreetse masina selles alamvõrgus.
Näide: aadress 223.1.1.0/24 tähendab seda, et 24 esimest biti aadressist moodustab alamvõrgu aadressi ja viimased 8 bitti moodustab hosti aadressi.
IP-datagrammi päises on kirjas IP-protokolli versioon, päise pikkus, datagrammi pikkus, lähte- ja sihtkoha ip-aadressid (
source ja destination),
time-to-
live ehk datagrammi eluiga (maksimaalne läbitavate võrgusõlmede arv), fragmenteerimisinfo ja kontrollsumma. Päises võib olla veel ka muud lisainfot
(näiteks saatmise aeg (
timestamp) või natuke lisainfot marsruutimise jaoks), aga see pole kohustuslik.
Igat konkreetset võrku saab omakorda jagada alamvõrkudeks, alamvõrgu täpse suuruse määrab kasutatav alamvõrgu mask.
Võrgumaski kahendväärtuse ja IP aadressi kahendväärtuse loogiline korrutamine annab alamvõrgu esimese aadressi
IPv6:
loomise põhjuseks on see, et IPv4 aadressid hakkasid otsa saama.
IP on 128 biti pikk ja seetõttu on aadresse kokku 2128.
IPv6 kasutab fikseeritud 40 baidi pikkust päist ja keelab ära fragmenteerimise.
Päise formaat peaks kiirendama pakettide töötlust ja edastamist.
Võrreldes IPv4’ga on veel ära kaotatud kontrollsumma ja pakettidele on võimalik määrata prioriteete.
Üleminek IPv4-lt IPv6-le
kõiki ruutereid pole võimalik ära uuendada ja seega tekib võrk, kus on mõlemaid. Selline võrk võib töötada kahte moodi:
1)
dual stack – osad ruuterid (Ipv6 ja Ipv4 võrgu vahelülid) saavad aru nii ipv4 kui ipv6 pakettidest ning oskavad ühte teiseks ümber teisendada
(oskavad „tõlkida“). Niimoodi liigub pakett osa teekonnast Ipv6 paketina ja osa Ipv4 paketina.
2)
tunneling – kui Ipv6 pakett jõuab võrguossa, kus kasutatakse Ipv4 protokolli, siis spetsiaalne ruuter Ipv6 võrgu „serval” paneb Ipv6 paketi Ipv4
võrgus edastamiseks Ipv4 paketi sisse ja edastatakse nagu tavalist Ipv4 paketti. See tähendab, et Ipv4 võrgus käiakse Ipv6 paketiga ümber nagu
suvaliste andmetega Ipv4 paketis. Teisel pool pannakse Ipv6 pakett taas kokku. Seda võib vaadelda kui Ipv6 tunnelit läbi Ipv4 võrgu.
EHK Kasutatakse tunneleid, kus IPv6 paketid liiguvad kapseldatuna IPv4 sees. 37. Vigade avastamine ja parandamine, CRC
Vigade avastamiseks ja parandamiseks lisatakse edastatavale koodile mingi lisainformatsioon.
Avastamine: paneme liiasusega infot juurde paketile, mida
nimetame EDC. Selle põhjal on vastuvõtma võimeline välja arvutama kas pakett on korras või
vigane
Ei garanteeri 100% tõenäosust, sest kontrollkood saab rikenda
Kõige lihtsam veaavastus on
paarsuskontroll, mis toimub paarsusbiti abil (näitab, kas andmetes olev ühtede arv on paaris või
Paaris paarsuskontroll
paaritu). Paarsusbiti abil on võimalik tuvastada ühekordseid vigu (kui kaks bitti on valed, siis paarsusbitt viga ei näita) ning
vigade parandamiseks paarsusbitt piisavalt informatsiooni ei anna.
Keerulisemad veaavastuskoodid on nn
kontrollsummad. Nende põhimõte
seisneb selles, et andmebittide alusel arvutatakse mingi kindla algoritmi abil
välja üks kontrollkood, mis pannakse paketiga kaasa. Seejärel arvutab paketi
vastuvõtja uuesti sama koodi välja ja kui see erineb saadud kontrollsummast,
on pakett vigane. Kontrollsumma eelis on see, et korraliku algoritmi ja piisavalt pika kontrollsuma puhul on väga raske (peaaegu võimatu) teha kahte erinevat
paketti, millel oleks sama kontrollsumma. Seega võib üsna kindlalt väita, et kui kontrollsummad klapivad, on pakett korrektne.
Võimalikud meetod veel:
kahesuunaline paarsuskontroll, mis on mõnesmõttes ka vigu parandav
kood.
CRC (
Cyclic Redundancy Check , tsükliline liiasuse kontroll) - Kõige levinum veaavastustehnoloogia.
CRC arvutamisel kasutatakse 16- või 32-bitist polünoomi (generaator), mida teavad nii saatja kui
vastuvõtja (see
polünoom on standardiga määratud).
Saatja poolel tekitatakse selline CRC kood, et kui vastuvõtja
jagab andmebitid koos neile järgnevate
CRC bittidega
(CRC bitid lisatakse andmebittide järele noorimateks bittideks. Näiteks kui andmed
on 110011 ja CRC on 10110, siis jagatavaks tuleb 11001110110. Tegelikkuses on nii andmed kui
CRC muidugi pikemad.) ja jagamisel
tekkima jääk 0. Kui tekib nullist erinev jääk, peab andmetes
olema viga.
CRC koodi arvutamine käib nii, et teostatakse
samasugune jagamine, aga CRC koodi asemele (mida
veel ei teata) pannakse andmete lõppu nii palju nulle kui pikk on CRC kood. Sel juhul tuleb
generaatoriga
jagamise jäägiks CRC kood ise.
Arvutatakse CRC kontrollsumma. Andmeid käsitletakse bitijadana. Et arvutada n-bitine (kahendarvu) CRC,
võetakse andmeid (data) kui bitijada. Valitakse n+1 bitine jagaja G ja tehakse XOR tehet nagu kõrval näidatud ja
korratakse kuni andmeid jätkub. Lõpuks saadakse n-bitine arv (reminder - kontrollsumma), mis lisatakse
andmetele ja kui vastuvõtja saab sama asja korrates vastuseks nulli, on teada, et andmete sisu ei ole
muundunud. 38. Multipöördusprotokollid
Üks kanal, aga mitu saatjat ja/või vastuvõtjat.
Näide:
Ethernet ja traadita LAN.
Üks saatja korraga edastab edukalt andmeid. Kui mitu saatjat saadavad korraga kaadreid, tekib
collision ja vastuvõtjatest ei saa keegi aru, kes mida saatis.
Selle tagamiseks, et kuidas saatjad kanalit jagavad, kasutatakse algoritme.
Multipöördusprotokoll just tegelebki sellega, et kes saadab ja millal saadab.
Ideaalse multipöördusprotokolli korral: kui mingi sõlm tahab andmeid edastada, siis saab ta seda teha kiirusel, millega töötab kanal. ei pea võtma kedagi
kes hakkab käske ja keelde jagama. pole vaja lisa sünkroniseerimis
kanaleid . Ideaalne multipöördusprotokoll on lihtne ja detsentraliseeritud.
Multipöördusprotokollid jagunevad kolmeks
: 1) Kanali jaotamise protokollid - kanal jaotatakse („tükeldatakse“) väiksemateks
osadeks näiteks aja (TDMA), sageduse (FDMA) või koodi (CDMA) järgi.
2) Juhupöördusprotokollid – kanal ei ole jaotatud, põrked on lubatud, põrgetest taastutakse. on olemas reeglid, mida teha põrke korral. Nendeks on nt
MA,
CSMA , CSMA/CD, CSMA/CA,
ALOHA .
3) Kordamööda kasutamise protokollid – „
taking turns“ ehk nö sõnaõiguse saamine - kanali jagamine on
rangelt kontrollitud (jagatud juurdepääsu
koordineeritakse, et kokkupõrkeid vältida). Nendeks on nt
Polling protokoll (on master, kes saadab kogu aeg
küsimusi „soovid saata?“ ja orjad.),
Token -
ring protokoll.
39. ALOHA ja CSMA/CD ALOHA:
Juhupöördusprotokoll, mille korral jagatakse kogu kanal ajapiludeks.
ühe sageduse peal pöördutakse baasjaama poole ja teise sageduse pealt saadab baasjaama tagasi. Ühine edastuskeskkond 2
varianti :
Slotted ALOHA:
o
Sama suurusega kaadrid.
o
Ajalõigud on sünkroniseeritud ja selle alguses saadetakse.
o
Iga saatja hakkab saatma siis, kui tal on mida edastada. Juhul, kui samaaegselt hakkavad andmeid edastama mitu saatjat, tekib kokkupõrge ja
mõlemad katkestavad saatmise. Seejärel valivad suvalise arvu ajapilusid, mis nad ootavad ja proovivad uuesti.
o
Plussid: detsentraliseeritud, lihtne, 1 sõlm saab pidevalt andmeid saata kanali täiskiirusel.
o
Miinused: kokkupõrked, pilude raiskamine, tühjad
pilud . Kõige paremal juhul on efektiivses 37%, ehk suurtel koormustel pole väga hea.
Pure ALOHA:
o
ajapilud puuduvad ning iga saatja alustab saatmist, siis kui talle saabusid andmed, mida saata, mitte ei
oota ajapilu algust.
o
Pure Aloha puhul kokkupõrgete tõenäosus suureneb. Kuna kõik saatjad saadavad suvalisel ajal ja paralleeleslt, siis peab saatja tegema
monitooringu, kas pakett jõudis kohale või mitte.
o
Teele pandud kaader võib ära rikkuda eelmise kaadri lõpu või järgmise kaadri alguse.
CSMA (
carrier sense multiple Access)– kuulatakse kanalit enne kui saadetakse midagi. Kui kanal on tühi, siis saadetakse. Kui kanal on töös, siis oodatakse.
Põrgetest ikka ei pääse, sest signaalileviku peale kulub ka aega. Ehk kui kaks saatjat hakkavad korraga saatma, tekib collision.
CSMA/CD (
collision detection, põrgete tuvastus):
kui toimub signaali muutus, saame aru et paketti pole mõtet lõpuni saata.
Traadiga võrgus lihtne, traadita võrkudes raske.
Kui keegi teine samal ajal räägib kui mina, ei ole mõtet oma juttu lõpuni rääkida.
Ehk kui collision, katkestame kõik ära!
Mida teha kui kanal on hõivatud? Kontrollima ja ootame, kuni on vaba ja saame saata.
Miinused: võrguressurssi raiskamine; kui ootajaid on mitu ja kanal saab vabaks, lähevad kõik koos liinile ja tekib collision.
Plussid: Kokkupõrked tuvastatakse lühikese aja jooksul. Kokkupõrkavad ülekanded katkestatakse, mis vähendab kanali saastumist.
Miinuste vältimiseks on
CSMA/CA (collision avoidance) - kui kanal on vaba, oota
Inter-Frame-Gap aeg + veel random aeg ja kui siis kanal on endiselt
vaba, saadetakse pakett teele ja pannakse taimer käima, kui enne taimeri lõppu tuleb ACK, on edukalt saadetud.
40. Token ring
Kohtvõrgu protokoll, mis asub OSI mudeli kanalikihis.
LAN tehnoloogia
3 baidine kaader nimega Token, mis liigub
ringis . Ring ise koosneb võrgusõlmedest.
Kelle käes on luba, sellel on saatmise õigus! Ehk tagab selle, et ei teki collisione.
See kes paketi võrku paneb, peab selle sealt võrgust ka ära korjama
On võimalik luba reserveerida (paned püsti bitid, kõik kellel on madalam
prioriteet seda luba endale ei või võtta)
Ühel võrgus olevatest monitoridest on võrgu jälgimise funktsioon. Ehk ta jälgib et ükski pakett ei jääks võrku
ringlema, kui paketi võrku panija on näiteks ootamatult võrgust lahkunud.
Et arvuti saaks ringis pakette edastada, peab ta kõigepealt Tokeni kinni püüdma. Kui ta on Tokeni kinni püüdnud, siis
loob ta sellest kaadri ja paneb sinna vajaliku info paketi saatmiseks ja
laseb kaadri võrguringi. Kui õige võrgusõlm
saab kaadri kätte, siis saadab ta ACK’i ringis saatjale tagasi. Kui saatja on ACK’i kätte saanud, siis vabastab ta Tokeni ja järgmine sõlm saab hakata
saatma.
41. Token bus
LAN tehnolooga
Luba liigub mööda ringi, aga füüsiliselt on tegemist siini võrguga (token liigub mööda ühte
siini).
Kasutatakse kviitungit et teaks, kas saaja sai ikka paketi kätte
Iga võrgu element peab teadma, kes on talle eelnev ja järgnev
Siini peal liigub kaader nimega Token ning igale võrgusõlmele on määratud ajapiirang kaua
see Token tema käes võib olla. Iga võrgusõlm peab teadma on naabi aadressi (Who Follows
Me). See, kellel on luba teab, kes on pärast seda ja küsib, kas keegi tahab ringi ühineda ja
saadab tal SolS sõnumi. See, kes tahab ühineda peab vaatama mingisugust kindlat võrgupunkti ja kui ta näeb, et on saadetud SolS sõnum, siis saabki ta
ühineda. Saadetakse sõnum
SetS ja ring seatakse ümber. Kui keegi
lahkub ringist , siis saadab ta jälle SetS sõnumi ja nõnda teavad naabrid, et üks sõlm on
ringist lahkunud ja korrigeerivad oma tabeleid. Kui niimoodi
lahkumine ei toimu, siis saadab sõlm, kes on enne lahkunud sõlme mingi kindla arvu
sõnumeid. Kui vastust ei tule, siis saadab WF sõnumi, millele vastab lahkujast järgmine sõlm SetS sõnumiga. Mõlemad korrigeerivad jälle oma tabeleid ja
ring toimib edasi.
42. Datagrammide edastus läbi võrkude (võrgukihi ja kanalikihi tasemel)
Andmete edastus võrgukihi ja kanalikihi tasemel nõuab kahesuguseid aadresse.
Omavaheliseks suhtluseks kasutatakse IP aadresse, mida kasutab võrgukiht.
Andmete edastuseks vajab kanalikiht nn füüsilist aadressi e MAC aadressi, mida annab välja USA ühendus IEEE.
MAC aadressid on kõik unikaalsed ja vastavuses IP aadressidega.
Igas seadmes on olemas oma ruutimise tabel, kuhu pakett saata.
Kui saadetakse välja pakett, mis on mõeldud samas võrgus asuvale terminalile, siis toimetatakse see vahetult kohale.
Kui sihtarvuti ei asu samas võrgus, saadetakse see võrguväravasse (
gateway), mis uurib kas sihtarvuti asub samas alamvõrgus. Kui ei, siis saadetakse
pakett järgmisele ruuterile. Nii tehakse senikaua, kui jõutakse alamvõrku kus sihtarvuti asub.
Näide: A tahab saata datagrammi B-le läbi ruuteri R. Oletame, et A teab B IP aadressi.
1) A loob datagrammi, mille alguspunktiks on A ja lõppunktiks B.
2) A kasutab ARPi, et saada R-i MAC aadress.
3) A loob kanalikihi kaadri, kus sihtkohaks on R-i MAC aadress. Kaader koosneb A to B IP datagrammist.
4) A kanalikiht saadab kaadri.
5) R-i kanalikiht saab kaadri kätte.
6) R eemaldab IP datagrammi Etherneti kaadrist, näeb, et see on mõeldud B-le.
7) R kasutab ARPi, et saada B füüsilise kihi aadress.
8) R loob kaadri, mis sisaldab A to B IP datagrammi ja saadab B-le.
43. Ethernet
Kõige populaarsem traadiga LAN tehnoloogia.
Loodi 70ndate keskel. Odavam kui token LAN ja ATM.
Ethernet on ühenduseta andmeedastusteenus, s.t. enne paketi teele saatmist ei toimu
handshaking’imist.
Ethernet on
unreliable ehk mitteusaldusväärne, sest kviitungeid ei saadeta. Kui pakett on vigane visatakse ta ära. Mõnes mõttes on ta ka
reliable, sest
kui tekib põrge, siis saadetakse kokkupõrganud pakett uuesti.
Etherneti võrgus liiguvad Etherneti kaadrid, millesse pakitakse IP datagrammid või mõned teised võrgukihi protokolli paketid.
Kaadri strurkuur on jäänud samaks, sellepärast ka kõik arvutid omavahel ühilduvad
Aadressidena kasutatakse 48 bitiseid MAC aadresse.
Pakett koosneb sünkroniseerimisjadast, siht ja lähtekohta aadressitest, võrgukihi protokolli tüübist, andmetest ja kontrollkoodist.
Kuna Ethernetis leiab aset
broadcast’imine (kõik võrgu sõlmed näevad saadetavaid datagramme), siis peab realiseeritav olema multiple access protocol
CSMA/CD.
CSMA/CD Ethernetis: kanali
kuulamine on võimalik. Ei sega
kellegi teise saatmisele vahele kui kanal on hõivatud. Saame
põrkeid avastada. Kui põrge tekib, siis tegeleme selle
lahendamisega. Kokkupõrke korral edastatakse võrku 48
bitine mürasignaal, et kõik oleksid kokkupõrkest teadlikud ja
katkestaksid saatmise. Kui kanal on vaba, lähme kohe saatma
(juhupöördus protokoll).
Ethernet 10 Base2. Otstes terminaatorid, mis kõrvaldavad
signaali peegeldumise võimaluse.
Signaal levib mõlemale
poole. Edastuskiirus on 10 Mbps. Maksimaalne siini pikkus
200m (tingitud kaadri pikkusest). Siiniks on
peenike coax kaabel. Mitme segmendi kokku
ühendamiseks kasutatakse repiitereid.
10BaseT – keerupaari võrk. Kasutatakse HUB-dega puu-süsteemi. Edastuskiirus 10 või 100 Mbps. Max kaugus hostist hubini on 100m. HUB võib välja
lülitada saatja , mis edastab väljaspool talle ettenähtud aega ja koguda LANi admini jaoks vaatlusandmeid.
Gbit Ethernet – Kasutab standardset Etherneti kaadri vormi. Võimaldab punkt-punkt ühendust ja jagatud kanaleid. Kasutab HUB’e.
Poin -to-point linkides
täisdupleks kiirusega 1 Gbps. 5-4-3 nõue- 5 segmenti, 4 repeaterit, 3 hosti.
Kui teeme etherneti kaabli lubatust pikemaks siis ta ei tööta stabiilselt. Paketi Põrge ei jõua saatjani tagasi muidu.
44. Jaoturid, sillad ja kommutaatorid Jaotur (
HUB):
Füüsilise kihi seade
Signaali
võimendi , ehk
võimendab signaali mis
kaablis sumbuma hakkab.
Ühendab omavahel LAN
segmente , mis võimaldab pikendada sõlmede vahelist
vahemaad ehk tugevdada signaali
Võtab biti vastu ja annab edasi väljundportidesse. Erineva kiirusega porte tema külge ühendada ei saa. Ta töötab 1 biti kaupa.
Täiendavad võimalused: kui 1 võrgusõlm hakkab võrku mingit müra genereerima lülitab ta selle võrgusõlme välja sellest võrgust.
Ta saadab kogu info laiali kõigile antud
hubi küljes olevatele klientidele ning kes tunneb talle määratud paketi ära, võtab ka selle vastu.
Hub ei suuda ühendada eri tüüpi Ethernette.
ebaturvalised – segmendi piires on võimalik kõikidel kõiki pakette lugeda,
omades vastavat tarkvara.
Ei isoleeri kokkupõrget - Kui väikeses osas on kokkupõrge, siis saab andmeid saata see, kes peale jääb (kes valib parema uuesti saatmise aja ja
õnnestub), kui kokkupõrge aga suuremates osades, siis antakse teade nendele osapooltele ning tuleb teha ootamine.
Sild (
Bridge):
Kanalikihi seade
Edastab Etherneti kaadreid, uurides selle päist ja saadab valikuliselt need oma sihtpunkti (ehk tegeleb pakettide edastamisega)
Võrgusõlmedele nähtamatud
Ise õppiv seade (sild õpib saatja aadressi järgi (kus pordi taga asub saatja))
Isoleerib kokkupõrkeid, sest ta puhverdab kaadrid.
Nad jagavad võrgu väiksemateks tükkideks ning väiksemad segmendid on väiksemate veavõimalustega.
Samuti suudab sild ühendada eri tüüpi Ethernette, sest ta on säilita-ja-saada-edasi seade.
Sillad säilitavad filtreerimistabeleid, mida nad on võimelised õppima, neid ei pea reguleerima.
Sildade funktsioonid:
1) Pakettide
filtreerimine – mingid kaadrid jätta
samasse võrku, mingid kaadrid saata üle silla edasi.
2) Edastamine – sild peab suutma eristada, millisesse
porti realiseerida kaader.
Ruuter tegutseb IP-aadressi tasemel, sild aga MAC-aadressi tasemel.
Ruuterid vs sillad: ruuterid oskavad leida parima marsruudi. Ruuterid väldivad 2. kihi broadcast sõnumite ringlemist.
Näide:
1)
C saadab kaadri D-le ja D vastab C-le kaadriga.
2)
Sild saab kaadri C-lt. Sild näeb, et C on liideses 1.
3)
Kuna D-d tabelis ei ole saadab sild kaadrii teise ja kolmandasse liidesesse.
4)
D saab kaadri kätte
5)
D koostab kaadri C-le ja saadab selle teele
6)
sild saab kaadri kätte, näeb, et D on liideses 2 ja lisab tabelisse
7)
Sild teab nüüd, et C on liideses 1 ja saadab kaadri ainult liidesele 1.
Kommutaator (
Switch):
Kanalikihi seade
Oma
olemuselt on ta mitme pordiga sild
Kõik mis kehtib silla kohta, kehtib ka kommutaatori kohta
Salvestab ka edastab Etherneti kaadreid
Loeb kaadri päiseid ja saadab valikuliselt kaadreid
MACi sihtkoha aadressi järgi edasi
Kui kaader tuleb saata segmendile, siis kasutab CSMA/CD-d, et segmendile ligi pääseda
Kommutaatorid on „läbipaistvad“, ehk hostid ei tea nende olemasolust.
Neid ei pea konfigureerima
Kommutaatoritel on oma tabelid. Nad õpivad milliste hostideni milliste liideste kaudu saab.
Kommutaator suurendab läbilaskevõimet sellega, et ta ei puhverda
tervet kaadrit, vaid loeb päisest sihtaadressi ning hakkab kohe sinna infot
edastama
Edastab kaadreid ilma tervet kaadrit ära ootamata
Kommutaator on parem kui jaotur, sest võimaldab olemasolevat ressurssi paremini ära kasutada.
45. CSMA/CA
Collision avoid ehk erineb
CSMA/CD protokollist selle poolest, et püüab kokkupõrkeid ennetada.
Kasutab ühte persistence strateegiatest.
Kui sõlmpunkt näeb, et kanal on vaba, siis ootab ta mingi ajavahemiku ja ootab veel mingi juhusliku ajavahemiku. Pärast seda paneb ta kaadri teele,
taimeri käima ja jääb ACK’i ootama. Kui ACK tuleb enne seda kui aega saab otsa, siis on kaadriedastus olnud edukas. Kui, aga ACK’i ei tule õigeaegselt,
siis saatja teab, et midagi on valesti ja suurendab oma juhuslikku ooteaega ning proovib siis mingi aja pärast uuesti.
46. ATM
Arendamise eesmärgiks oli luua selline võrk, mis
transpordiks reaalaja
helisid ja videosid ning samuti ka teksti faile, e-maile ja pildifaile ilma et liin umbe
aetakse.
Andmed on kodeeritud väikestesse 53 baidistesse pakettidesse, mida nim cell’ideks (rakkudeks).
Asünkroonne ülekanne
Andmeedastuskiirus on ATM võrgus 25Mbit/s kuni 10Gbit/s, samas kui tavalises Etherneti kohtvõrgus on see max 100Mbit/s.
Erinevalt TCP/IP võrgust, kus ühele sõnumile kuuluvad paketid võivad lähtepunktist sihtpunkti liikuda erinevaid teid mööda, luuakse ATM võrgu puhul
iga sõnumi tarvis kahe võrgupunkti vahele fikseeritud kanal, mistõttu ATM võrgu kasutamist on lihtsam tasustada.
Ehk tegu on pakettside protokolliga, mis
kodeerib andmed väikestesse kindla suurusega pakettidesse (see erineb IPst ja Ethernetist).
Algselt plaaniti seda teha otsast-otsani tehnoloogiana aga reaalses elus kasutatakse seda ruuterite vaheliselt kiireks sideks.
Ühendusele orienteeritud andmeedastusteenus
ATM põhineb pakettedastuste ja virtuaalahela võrkude arhitektuuril ning koosneb kolmest kihist:
1) ATM
adaptation layer (AAL) – see kiht on ainult lõpp-kasutajate masinates ja on analoogne transpordi kihiga. Andmed liiguvad saatja poolelt kihtide
vahel ülevalt alla ja vastuvõtja poolel alt üles. Ülesanded: vigade leidmine/parandamine, segmenteerimine. Loob AAL
protocol data unit’i (PDU) ja
saadab alumisele kihile.
2) ATM
layer – on ATMi arhitektuuri südameks. Loob ATM cell’i, mis on sama tähtis ATM võrgule nagu IP datagramm IP võrgule. Ülesandeks on
transportida ATM cell’id üle võrgu luues selleks virtuaalkanali. Virtuaalkanal pole midagi muud kui virtuaalahela kanal, mis on ühendusele orienteeritud
andmeedastusega, kahe punkti vahel.
3 )ATM
physical layer – tegutseb voltide ja bittide tasandil ehk siis füüsilise andmeedastusega.
ATM-teenust on nelja liiki:
1) CBR (
Constant Bit Rate) - konstantse bitikiirusega, sarnane rendiliinile;
2) VBR (
Variable Bit Rate) - muutuva bitikiirusega, sobib heli ja video puhul;
3) UBR (
Unspecified Bit Rate) - suvalise bitikiirusega, sobib e-posti ja veebilehtede edastamiseks;
4) ABR (
Available Bit Rate) - garanteerib minimaalse bitikiiruse, kuid lubab aeg-ajalt ka suuremaid kiirusi, kui võrk on vaba
47. Võrkude turvalisus ja ohud Võrkude turvalisuse põhilised aspektid on:
1)Konfidentsiaalsus – ainult saatja ja vastuvõtja peaksid aru saama sõnumi sisust. See on võimalik saavutada kui saatja krüpteerib sõnumi ja vastuvõtja
dekrüpteerib sõnumi.
2) Autentimine – saatja ja vastuvõtja peaksid saama ennast üksteisele tuvastada nii, et nad saaksid olla kindlad kellega nad suhtlevad.
3) Sõnumi
terviklikkus – sõnum peab saatjalt vastuvõtjani jõudma terviklikuna nii, et see ei oleks moondnud mingil kujul
4)
Saadavus ja juurepääsu kontroll – võrgus olevad teenused peavad olema kõigile, kellele need on mõeldud, kättesaadavad.
Teod, millega sissetungija saab ebameeldivusi tekitada on:
1)
Paketi pealtkuulamine: eriti lihtne, kui on avatud võrk (pakett saadetakse kõigile).
2)
Spoofing – inimene või programm esitleb end kui keegi teine ehk valetab, ja saab endale illegaalse eelise (e-maili spämmijad)
3)
Õngitsemine – tuntud firmana esimemine, personaalse info tahtmine (
paroolid , krediitkaardiinfo jne) nt
nigeeria printsi kirjad
4)
Klikkide kaaperdamine – kasutaja trikitakse kuskile
vajutama 5)
DOS-rünnak – võrgu ülekoormamine, nii et see muutub väga aeglaseks, või läheb täitsa rivist välja. Tehakse suur hulk päriguid (
pingi ujutus või surmav
ping ). Püsiv kahju!
PAHAVARAD:
6)
viirus : nakatab faile, paljundab ennast ise, kui on sattunud masinasse
7)
uss: iseseisev tarkvaratükk, mis teeb halba
troojalane: tundub nagu hea asi, ise installeerid, tegelikult on uss v viirus
8)
tagauks: mingi auk on süsteemile sisse jäetud, mis alguses välja ei paista, aga hiljem võib anda kurjamitele ligipääsu sinu süsteemile
9)
käomuna: kõige halvem,
administraatori õigustega tarkvaratükk masinas, mis saab ise
pahavara installida
48. Krüptograafia , algoritmid ja võtmed
Krüptograafia võimaldab andmed niimoodi ära moondada, et pealtkuulaja ei saa mingisugust informatsiooni
nendest andmetest.
Vastuvõtja oskab moonutatud andmed viia oma esialgsele kujule.
Algoritmid on need, mille abil andmed ära moonutatakse.
Võtmed võetakse algoritmi sisendiks krüpteerimisel ja ka dekrüpteerimisel ning ilma nendeta poleks võimalik neid protseduure korrektselt läbi viia.
Algoritm võib olla mõlemal poolel sama, aga võti peab kindlasti erinema.
Hea algoritm on selline algoritm, mis sunnib kõiki võtmeid läbi proovima. Halb algoritm võimaldab võtmete hulka vähendada kuidagi.
Viisid:
sümmeetriline (salajane võti, saatjal ja saajal on samad šifrid. Kui võti olemas saab alati infole ligi), asümmeetriline (avalik võti, krüpteerimise
šiffer on avalik, dekrüpteerimise šiffer on salajane. Kes teab dekrüpteerimise võtit saab ainult info kätte).
Näide: Oletame, et me tahame turvaliselt vastuvõtjani edastada teksi m. Selleks on meil võti KA ning krüpteerimisalgoritm. Šifritekstiks on väärtus
KA(m), mis tähendab, et tekst m on krüpteeritud võtmega KA. Kui vastuvõtja saab šifriteksti kätte, siis oleme me talle andnud ka võtme KB , millega on
võimalik
dekrüpteerida tekst m. Nii et antud juhul KB(KA(m))=m. Sümmeetrilise võtme krüptograafia puhul on saatja ja vastuvõtja võtmed samasugused
ja salajased. Avaliku võtme krüptograafia puhul kasutatakse kahte võtit, üks on teada kõigile ja teine on teada on teada ainult vastuvõtjale.
Lahti murdmine: kõikide variantide läbi proovimine või keelestatistika
49. Sümmeetrilise võtme krüptograafia, DES 1 võti ehk Saatja ja vastuvõtja võtmed on ühesugused. Mida pikem võti, seda raskem on avada
1) Caesari šiffer - täht asendatakse krüptitud kirjas tähestikus k võrra edasi oleva
tähega (nt: k=5: a -> f, b
-> g jne.). k väärtus on võtmeks. 25 eri võtmevarianti.
2) ühetäheline šiffer - täht asendatakse suvalise teise tähega tähestikus, asendus ei pea olema mingi
kindla süsteemi järgi. Iga täht võib krüptimisel
asendada ainult ühte tähte. 26! eri võtmevarianti (10
astmes 26 võimalikku tähepaari). N: 2=3, 1=6, 3=4 jne.
3) mitmetäheline šiffer - kasutatakse mitut ühetähelist šifrit. Kindlas kohas tekstis kasutatakse ühte neist
šifritest, teises kohas teist. Šifrid erinevad üksteisest võtme väärtuse poolest.
DES – 56bitise võtmega krüpteeritakse 64bitiseid blokke. DES koosneb kahest permutatsiooni (järjestuse
muutmise sammust) ja need on esimeseks ja viimaseks sammuks algormitmis. Vahepeal teeb algoritm 16
identset operatsiooniringi. Iga operatsioon võtab eelmise operatsiooni väljundi sisendiks.
Murekoht on võtme ohutu edastamine. DES Algoritm koosneb erinevatest loogikatehetest ja
nihutamisest. Võimalik realiseerida DES ka riistvarast, siis on ta 1000-10000 korda kiirem kui RSA.
Muidu 100 korda kiirem. DESi on võimalik murda ainult läbiproovimise teel
50. Avaliku võtme krüptograafia, RSA (digiallkirjastamine) Salastus ja autentimine, krüpteerimise šiffer on avalik, dekrüpteerimise šiffer on salajane
Avaliku võtme saadab vastuvõtja ise saatjale. Salajast võtit ei saadeta. RSA algoritm on pööratav ehk
võtmed on paarikaupa.
Edaspidi: eb(m) - krüptimise võti; db(m) - dekrüptimise võti. Saatja saab vastuvõtja public encryption key
(PEK). Saatja krüpteerib sõnumi m PEK-iga ja teadaoleva krüpteerimisalgoritmiga (nt Caesari krüpteering) (saadakse eb(m) ). Vastuvõtja saab saatjalt
krüpteeritud sõnumi eb(m) ning kasutab oma privaatset dekrüpteerimise võtit (PDK) ning sama krüpteerimise algoritmi, et dekrüpteerida sõnumit (s.t.
db(eb(m)) = m). Leidub selliseid krüpteerimise /dekrüpteerimise algoritme, et kui rakendada krüpteerimiseks PEK-i sõnumile ning hiljem PDK dekrüpteerimiseks,
siis algne sõnum on enne krüptimist ja pärast dekrüptimist identne: m = db(eb(m)). Kui rakendada alguses sõnumile PDK krüptimiseks ja dekrüptimiseks PEK,
siis saadakse sama tulemus: eb(db(m)) = m.
RSA algoritm (Rivest, Shamir, Adleman algoritm) - on saanud avaliku võtme krüptograafia sünonüümiks. Kaks omavahel seotud komponenti RSA-l: * avaliku ja
privaatse võtme valik; * krüptimise ja dekrüptimise algoritmi valik. Võtmete valikuks peab saaja:
1) valima kaks suurt algarvu p ja q (mida suurem arv, seda raskem koodi murda). Soovituslikult võiksid p ja q olla 1024 biti(väga tähtsa info jaoks) või 768
biti(vähem tähtsa info jaoks).
2) arvutama n = pq ja z = (p-1)(q-1)
3) valima arvu e
Kõik kommentaarid