1.
Üldine kommunikatsiooni mudel
Üldises
kommunikatsiooni
mudelis on alati kaks poolt –
saatja ja
vastuvõtja . Terves süsteemis on meil sisuliselt viis osa:
1)
andmeallikas,
mis genereerib andmeid (arvuti)
2)
saatja,
seade, mis edastab informatsiooni (
modem , võrgukaart)
3)
edastuskeskkond,
süsteem, mille kaudu andmeid transporditakse (telefonisüsteem)
4)
vastuvõtja,
mis võtab signaali ja teisendab selle jälle adressaadi jaoks
sobivale
kujule (võrgukaart, modem)
5)
adressaat,
kellele need allika poolt
saadetud andmed on mõeldud kasutamiseks
(
server )
Alguses
tehakse tekst nullide ja ühtede jadaks. Siis võidakse teha see
analoogsignaaliks, et informatsiooni võrku saata. Siis
signaal liigub mööda võrku edasi ja vastuvõtja võtab selle signaali
vastu ja analoogsignaalist tehakse jälle ühtede ja nullide jada ja
arvuti teeb siis sellest uuesti teksti. See tekst, mille kohale
saatsime, ei pruugi olla täpselt see sama tekst, mille teele
saatsime, sest andmeliiklust mõjutavad igasugused välistegurid.
2.
Kommunikatsioonisüsteemi ülesanded
Kommunikatsioonisüsteemi
ülesanded on:
1)
Võrguressursi
optimaalne kasutamine - Võrguressurssi
ei ole kunagi üleliia. Alati võib tahta rohkem ja kiiremini infot
kätte saada.
2)
Liidestamine
-
Erinevad
võrgud – läbi
optiliste kaablite, läbi
traadita võrkude
jne. See tähendab, et kogu aeg on vaja liidestuda erinevate
süsteemidega. Sellest tulenevalt on vaja erinevaid standardeid,
kokkuleppeid kuidas ühte tüüpi keskkonnast teise tüüpi keskkonda
andmeid edasi kanda.
3)
Signaali
genereerimine –
Kommunikatsiooni tagamiseks peavad signaalide omadused olema
sellised, et neid oleks võimalik
edastada ja et need oleks
vastuvõtjale tõlgendatavad. 4)
Sünkroniseerimine
–
Sünkroniseerida on vaja saatja ja vastuvõtja tööd. Saatja ja
vastuvõtja peavad töötama samas taktis. Näiteks kui
andmeedastuskiirus on 1 bit/s, siis biti signaali pikkus on 1 sekund,
kui edastuskiirus on 10bit/s, siis 0,1 sekundit. Selle aja jooksul
peab ka vastuvõtja suutma selle biti ära lugeda. Vastuvõtja peaks
töötada samas taktis
nagu saatja ehk ta loeb sama kiirusega. Kui vastuvõtja loeb
kiiremini, siis võib juhtuda, et loetakse mõnda
bitti kaks korda
või jäetakse hoopis mõni bit lugemata. Kui ühes otsas on 10Mbit/s
saatja, siis teises otsas peaks ka olema 10Mb/s vastuvõtja.
5)
Andmevahetuse haldamine –
Kui hakata teise
arvutisse mingit faili
saatma , siis teine arvuti
peab olema valmis ja seal peab olema vastav
tarkvara , mis suudab seda
faili vastu võtta ja siis on võimalik ka
andmevahetus .
6)
Vigade avastamine ja parandamine –
Peame kindlaks tegema, kas need andmed, mis vastu võeti on õiged
või ei ole. Sellest tulenevalt peame suutma vigu
avastada ja
parandada.
7)
Voo
kontroll –
Kui saata teise arvutisse andmeid, siis teine arvuti peab olema
suuteline neid sama kiirusega vastu võtma. Siin räägitakse rohkem
andmevahetuse tasemel, sest sünkroniseerimine on rohkem biti
tasemel. Vastuvõtjat ei tohi ülekoormata saates andmeid kiiremini
kui need ära töödeldakse.
8)
Adresseerimine
–
Peame tegema kindlaks, milline on see arvuti, millega suhelda tahame
ja sellest
tingituna igal
arvutil peab olema oma aadress.
9)
Marsruutimine
–
Andmed on vaja saata läbi erinevate võrkude õigesse kohta. Kui
kommunikatsioonimudelis on saatjaid ja vastuvõtjaid rohkem kui üks,
siis on vaja leida parim tee ühest hostist teise.
10)
Andmete
taastamine –
Andmeid on vaja taastada kui näiteks informatsioon pakettides muutub
halbade signaalide tõttu valeks.
11)
Sõnumite
formaatimine –
Selleks, et otspunktid saaksid üksteisest aru, on vaja ära määrata
„keel“ ehk sõnumite formaat.
12)
Turvalisus
–
See on väga vajalik, sest saatja soovib üldiselt, et tema andmed
saaks kätte just see, kellele ta need
saadab , mitte keegi teine.
13)
Võrgu
juhtimine –
See on vajalik võrgusüsteemi administreerimiseks, sest ükski
süsteem ei toimi iseenesest. Vajalik on süsteemi vaadelda ja
reageerida ülekoormustele, tõrgetele jms.
3. Mitmekihiline arhitektuur postisüsteemi näite baasil
Meil
on kaks osapoolt: üks, kes kirjutab kirja ja teine, kes loeb kirja.
Nad on omavahel kokku leppinud, kuidas nad kirjutavad ja mis keeles
nad kirjutavad ehk saatja ja vastuvõtja vahel on paika pandud teatud
kokkulepete hulk, mida võib vaadelda kui protokolli. Selleks, et
seda kirja saaks edasi toimetada, on vaja postisüsteemi teenust ehk
oleks vaja kedagi või midagi, kes kirja kohale toimetab. Selleks, et
kirja oleks võimalik
kuhugi toimetada, on see vaja panna teatud
reeglite järgi ümbrikusse. Ümbrikule tuleb teatud reeglite järgi
peale kirjutada aadress, siis on võimalik postiteenust pakkuval
süsteemil kiri kohale toimetada. See,
mismoodi kirju edasi
toimetatakse pole tähtis. Tähtis on see, et kiri jõuaks kohale ja
postisüsteem näiteks ütleb, et kiri on kahe päeva jooksul kohal.
See tähendab, et postisüsteem on sõltumatu sellest mismoodi kirja
kirjutatakse . Järgmine tase selles süsteemis on postkontorite
süsteem. Postkontorit ei huvita, mis selle ümbriku sees on, välja
arvatud
siis kui on
kahtlus , et seal on keelatud asju sees. Postkontoris
võtakse kirjad, kus on
aadressid peal ja seal sorteeritakse
erinevatesse sihtpunktidesse minevad kirjad. See kuidas neid kirju
sorteeritakse ei ole tähtis. Sisendiks on kiri ja
väljundiks on
postikott kirjadega. Postkontorid on omavahel kokkuleppinud, et
kirjad pannakse kottidesse ja kottide peale on kirjutatud kindla
postkontori aadress. Selle järgi on kirjad võimalik väiksemasse
postkontorisse edasi saata. Kui teiste kirjade hulka sattub mõni
kiri, mis tegelikult oli suunatud teise kohta, siis tuleb see edasi
saata õigesse kohta. Postkontorite eesmärk ei ole need kotid kohale
toimetada ning neid ei huvita, kuidas need kirjad edasi viiakse.
Kolmandaks kihiks on füüsiline transport. Meil on mitmekihiline
arhitektuur ja igal
kihil on oma tegevused, mida nad teevad. Iga kiht
pakub teenust altpoolt ülespoole. Postkontorid pakuvad inimestele
postiedastusteenust. Selleks, et postiedastusteenust saaks
postkontor pakkuda, selleks kasutatakse füüsilist transporditeenust. Igal
kihil on
protokoll , kuidas ühe kihi piires otspunktid omavahel
suhtlevad. Postkontorid on omavahel kokku leppinud, et kirjad
sorteeritakse erinevatesse kottidesse ja
transpordikihis toimub
füüsiline transport ja kindlate reeglite järgi viiakse kirjad
kohale. Iga kihi vahel on liidesepunktid ja need määravad ära
reeglid. Selleks, et postiteenust kasutada, peab kiri olema ümbrikus
ja ümbriku peal peab olema aadress. Iga kiht teeb oma tööd
sõltumata teistest ja samuti iga kiht jälgib reegleid, kuidas saab
ühe kihi käest andmeid ja kuidas teisele
kihile andmeid edasi anda.
Protokollid on kahe kirja kirjutaja vahel, kahe postkontori vahel
ning need ei ole füüsilised mõisted, vaid need on
loogilised kokkulepped.
4. Kihid , teenused, protokollid ja andmete liikumine läbi kihtide
Meil
võib olla erinevate failide edastuse tarkvara, aga meil oleks vaja
ühtset kommunikatsiooniteenust, mis võtaks standardsel kujul
ühtede-nullide jada ette ja toimetaks selle teise punkti. Teenuse
jaoks on aga ükskõik, mis sorti failidega on tegemist.
Erinevad
kihid jaotuvad:
1)
failide
edastuskiht (rakenduskiht) –
rakenduskihi protokoll, kus saatja ja vastuvõtja süsteemid saavad
üksteisest aru, millega on tegemist.
2)
kommunikatsiooniteenuse
kiht (transpordikiht)
– transpordikihi protokoll, kus saatja transpordisüsteem ja
vastuvõtja transpordisüsteem omavahel suhtlevad ja saavad aru, kas
ainevahetus toimus ning kas see toimus korrektselt.
3)
võrguteenuse
kiht (füüsiline andmeedastus ) –
tegeletakse marsruutimisega läbi erinevate võrkude ja läbi
erinevate võrguseadmete ning tegeletakse tegelike
pakettide edastusega. Siin on ka protokoll, mis garanteerib marsruudi toimimise
ja tegeliku edastuse. IP abil edastatakse
paketid soovitud kohta
edasi ning
toimivad ka erinevad marsruutimise protokollid.
Marsruuterid töötavad võrgukihi peal.
See
on
kolmekihiline mudel. Igal
kihil on protokoll, kuidas ühe kihi piires otspunktid omavahel
suhtlevad. Iga kihi vahel on liidesepunktid ja need määravad ära
reeglid. Iga kiht teeb oma tööd sõltumata teistest ja samuti iga
kiht jälgib reegleid, kuidas saab ühe kihi käest andmeid ja kuidas
teisele kihile andmeid edasi anda.
Protokoll
–
See mõiste koosneb kolmest
komponendist :
1)
süntaksireegel – näitab, kuidas andmed on formateeritud.
Protokoll on reeglistiku kogum, mis korraldab kogu andmevahetust.
2)
semantika – kõik lisainformatioon, kuidas andmeid interpreteerida,
mida nende
andmetega ette võtta, kuidas tööd korraldada, kuidas
käituda vigade korral
3)
ajastusega seotud reeglid – millise kiirusega ja kuidas saata, mis
järjekorras ja kogu ajaline käitumine
Andmete
liikumine läbi kihtide - Iga
kiht lisab andmete ülevalt alla liikumisel saatja poole peal oma
päise paketile juurde. Vastuvõtja poolel iga kiht võtab päise ja
kasutab selles olevat informatsiooni ja viskab selle minema. Saatja
poole pealt:
rakenduse käest tulevad puhtad andmed ning kui on vaja
fail edastada, siis antakse see transpordikihi kätte. Transpordikiht
teab, kust see fail tuli (näiteks veebribrauseri käest) ja paneb
päisesse juurde, et need on näiteks veebiserverisse mõeldud asjad
ehk lisab
veebiserveri pordi numbri. Transpordikiht teeb rakenduse
failist hulga transpordikihi
segmente ja paneb igale päise juurde,
kus on sees vähemalt saatja aadress ja vastuvõtja aadress (pordi
number, kust see tuli ja pordi number, kuhu see tuleb saata). Kõik,
mis transpordikiht annab võrgukihi kätte, see läheb võrgukihi
paketi andmeosasse ja võrgukiht paneb päisesse juurde omakorda 2
aadressi (saatja arvuti IP aadress ja vastuvõtja arvuti IP aadress).
Vastuvõtja IP aadressi järgi marsruuditakse ja leitakse üles teine
arvuti. Kõik see omakorda läheb kanalikihi kätte ning see
lisatakse kanalikihi andmeosasse ning ühe konkreetse kanali piires
pannakse ka siia päis juurde. Lokaalvõrgu puhul võib olla tegemist
teise otspunkti
aadressiga ning kui ei ole lokaalvõrk, siis pannakse
näiteks kontrollsumma või muu juhtinformatsioon. Iga kiht võib
ülevalt poolt saadud paketi omakorda tükeldada, sest erinevatel
kihtides on erinevad pakettide pikkuse piirangud. Hiljem saab päisest
saadava info abil paketid uuesti kokku panna.
Nendest kokku saadakse
signaalid , mis liiguvad mööda füüsilist kihti edasi. Kui need on
pärale jõudnud, siis kanalikiht saab aru, et see on temale mõeldud.
Kui kõik on korras, siis päis visatake ära ja see läheb võrgukihi
kätte. Võrgukiht saab omakorda järgmisest päisest kätte
võrguaadressi ning saab aru, et see on mõldud talle ning teeb
marsruutimise otsuse. Kui lõpuks jõuab
pakett lõpp-punkti, siis
arvuti saab aru, et see
pakett on temale mõeldud ja viskab järgmise
päise eest ära ja annab sisu transpordikihi kätte. Transpordikiht
omakorda saab aru, kellele see pakett on mõldud. Kuna saatja pani
juurde pordi numbri, siis on teada, et see pakett tuleb edasi anda
näiteks veebiserverile. Transpordikiht
pakib ka lõplikult paketi
taas kokku ja ei anna rakendusele tükkhaaval, vaid sellisel kujul
nagu rakenduse käest kätte saadi. Kui midagi on
puudu, siis transpordikihi ülesanne on see kindlaks teha ja siis
saadetakse need paketid uuesti.
Selleks,
et kindel arvuti üles leida, on vaja aadresse. Vaja on kindlat
võrguaadressi, mis on üle kõikide võrkude
unikaalne . Sisuliselt
igal kihil on oma aadressid.
IP-aadress
– see on unikaalne üle kõikide võrkude ja selle järgi leitakse
üles arvuti, kuhu kindlad andmed on mõeldud saata.
Lühidalt
öeldes iga kihi peal pannakse eelnevale n-ö ümbrik ümber ja uued
aadressid peale. Nii toimub igal kihil. Teises otsas võetakse
järjest igal kihil ümbrikuid ära ning tänu olemasolevatele
aadressitele saab soovitud kohta paketid edasi saata.
5.
OSI mudel
See
on avatud süsteemide kokkuühendamise reeglistik. See on rohkem
teoreetiline raammudel, mis on enamasti võrdlemiseks mõeldud ja
sinna sisse on kirjutatud, mida kõike üldse on võimalik võrkude
maailmas teha. See on de jure standard.
OSI
mudel koosneb 7-st
kihist :
1)
Rakenduskiht
–
see pakub rakendusega seotud teenust (e-
maili edastus , internetis
surfamine jne)
2)
Esitluskiht
–
Kui erinevad
arvutid räägivad erinevat keelt, siis esitluskiht on
see, mis tegleb nende
omavahelise andmevahetuse tõlkimisega.
3)
Sessioonikiht
–
Selle ülesanne on suhelda teise arvutiga.
4)
Transpordikiht
–
See tegeleb otspunktide vahelise andmevahetuse korraldusega ehk
protsesside vahelise andmevahetusega. Ta ei tea millised võrgud all
on ja kuidas läbi võrkude andmeid liigutada. Tema hoopis suhtleb
teise otspunktiga. Selle ülesanne on tagada töökindel ja veakindel
andmevoog. Selle kihi ülesanne on hakata faili tükkhaaval saatma.
Transpordikiht tegeleb sellega loogilisel tasemel.
5)
Võrgukiht
–
Transpordib andmeid läbi erinevate võrkude. Ülesandeks on see, et
ta loob transpordikihi jaoks sellise teenuse, et transpordikiht ei
peaks muret tundma, kuidas tegelikult see andmete liikumine käib.
Võrgukihi ülesandeks on ka tegeleda marsruutimisega. Võrgukiht
teab seda, läbi milliste võrkude tuleb andmed toimetada, et need
kohale jõuaksid, teise
osapoole transpordikihti. IP-aadress on
võrgukihi protokolli päises ning selle järgi marsruuditakse
pakette ehk võrgukiht valib välja marsruudi järgmise võrgusõlmeni.
Tegeleb hostide ehk arvutitevahelise andmevahetusega. Transpordikiht
annab oma segmendi võrgukihi kätte ja võrgukiht teeb sellest
datagrammi. Ta võib enne saadud
segmenti tükeldada vajadusel ehk
tavaliselt tehaksegi
segmendid väiksemateks datagrammideks.
Võrgukihi
funktsioonid:1.
Peavad ära
määrama tee, kuhu pakett edasi saata ning iga
ruuter teab, millised on tema kõrvalolevad ruuterid ja millist teed valida.
Viimane
ruuter teab, kuidas hostini jõuda.
2.
Paketi
edastamine - kui marsruutimise otsus on tehtud, siis see
pakett tuleb teele saata läbi selle väljundkanali, mis läheb
kindla
ruuteri suunas. Võrgukihi tasemel on ka võrguarhitektuure,
kus
luuakse virtuaalkanal. Seal pannakse paika
marsruut , mida mööda
andmed liiguvad.
3.
Marsruutimine ja paketi edastamine – kui pakett jõuab ruuterisse,
siis ruuter vaatab paketi sihtpunkti ja juhatab paketi järgmise
ruuterini (see on nagu risttee). Ruuteris on olemas tabel ehk kui
tuleb sisse mingi väärtusega pakett ning siis vaadatakse tabelit,
mis on tehtud mingist marsruutimisalgoritmist lähtudes, vaadeldakse
mingi väljaväärtuse järgi, näiteks IP aadressi järgi,
millisesse väljundisse pakett tuleb edasi saata.
Võrgukihil
on kolme sorti protokolle:1)
IP-protokoll
2)
ICMP protokoll – selleks, et hostid ja ruuterid saaksid omavahel
suhelda ja infot jagada. Edastatakse igasugused veateateid, kui
sihtvõrku ei leita üles, sihtvõrku ei jõuta, hosti ei leita või
TTL sai otsa
3)marsruutimisprotokollid
6)
Kanalikiht
–
Kanalikiht tegeleb sellega, et pääseks ühest võrgusõlmest teise.
Mööda konkreetset kanalit liiguvad andmed kanalikihi abil.
Kanalikiht tegeleb võrgusõlmede vahelise andmevahetusega. See
tegeleb konkreetsete kanalitega, mis võivad olla erinevat tüüpi.
Läbi erinevate
kanalite jõavad andmed lõpuks sihtpunkti. Siin on
tegemist pakettide ehk kaadritega.
7)
Füüsiline
kiht –
Seal liiguvad
elektrilised signaalid, valgusimpulsid jne.
a)
Rakenduskihi ja transpordikihi erinevus võrreldes võrgukihi ja
allpool olevate kihtidega:
Erinevus
on näiteks see, et
rakendus ja transpordikiht on ainult
otspunktides, aga võrgukiht ja allpool olevad kihid on ka
ruuterites.
b)
Vahe transpordikihi ühenduse ja võrgukihi tasemel virtuaalkanali
vahel:
Transpordikihi
ühendus on kahe otspunkti vaheline kokkulepe ja nemad ei tea, mis
vahepeal toimub ja teised kihid vahepeal ei tea, et kaks otspunkti on
transpordikihi tasemel oma ühenduse loonud. Võrgukihi tasemel
virtuaalkanali puhul ei ole tegemist kahe otspunkti vahelise
kokkulepega selles mõttes, et vahepeal keegi ei tea mis toimub, vaid
see on kahe otspunkti vaheline ja võrgusõlmede vaheline kokkulepe,
kus marsruut on paika pandud. Virtuaalkanali puhul iga võrgusõlm
teab, et temast läheb läbi kindel
kanal ja kindel pakett ja see
tuleb edasi kindlasse kohta saata. Transpordikihi tasemel ühenduse
puhul võrgusõlmed ei tea sellest kokkuleppest mitte midagi ja see
neid ei huvita, vaid öeldakse paketi IP aadressi ja et see läheb
kindlasse ruuterisse. Järgmine sama IP aadressiga pakett võidakse
saata hoopis teise ruuterisse. Transpordikihi ühendus ja allpool
olevad virtuaalkanalid on täiesti erinevad asjad põhimõtteliselt.
6.
TCP/IP mudel
See
on mudel, mida igapäevaselt kasutatakse ning sellel baseerub kogu
Interneti maailm. See sai alguse Ameerika kaitseministeeriumi
projektidest ja on ka de
facto standard.
TCP/IP
mudel koosneb 5-st kihist:
1)
Rakenduskiht
–
See sisaldab OSI mudelit aluseks võttes nii rakendust, kui ka
tõlkijat ning ka osa sessioonikihti. See pakub rakendusi kasutajale
nagu näiteks e-maili
kirjavahetus , internetivõrku
sisenemine , failide edastamine jne. Rakenduskihi puhul räägime
pakettidest kui sõnumitest.
2)
Transpordikiht
–
See sisaldab OSI mudelit aluseks võttes transpordikihi ja sessiooni
loomise osa sessioonikihist. See tegeleb otspunktide vahelise
andmevahetuse korraldusega. Transpordikiht asub rakenduskihi ja
võrgukihi vahel TCP/IP mudelis. Ta kasutab ära seda, mida võrgukiht
pakub ning ise pakub transporditeenust rakenduskihile. Kaks
transpordikihti lepivad omavahel kokku, kas nad on valmis üksteisele
andmeid saatma. Transpordikihi ülesanne on erinevatest rakendustest
võtta kokku andmeid, neid transportida teise otspunkti ja teises
otspunktis laiali jagada teiste rakenduste vahel. Samuti on
ülesandeks töökindel andmeedastus. Transpordikiht tegeleb ka
voojuhtimisega, et saatja ei koormaks vastuvõtjat üle. Saatja ja
vastuvõtja suhtlevad omavahel ja vastuvõtja alati annab teada palju
tal on vaba ruumi puhvrites, et kas ta suudaks veel vastu võtta ning
vastavalt sellele infole saatja reguleerib koormust. Toimub ka
koormuse reguleerimine, mis on saatja ja võrgu vaheline asi ehk et
saatja ei saadaks võrku pakette rohkem kui sealt läbi läheb.
Transpordikihi protokollid on UDP - ei suhelda
teisega ja saadetakse
pakette lihtsalt teele ehk ei
tehta midagi erilist lisaks. See mis
võrgust läbi läheb, sellega ta tegeleb. Samuti ei kulutata aega
ühenduste loomiste peale ja pakettide
saatmise kordamisele. Iga UDP
pakett on
omaette nähtus võrgus ja iga pakett liigub omaette ja nad
võivad kohale jõuda suvalises järjekorras ja teepeal kaduma minna.
Kõik sõltub teepeal olevate kanalite kvaliteedist. Samuti ei
kulutata aega ühenduste loomisele ning ei ole vaja ühenduse olekut
meeles pidada. Saatja ja vastuvõtja ei
eralda eraldi puhvreid ja ei
tegeleta pakettide meelespidamise ja järjestamisega. Paketi päis on
väiksem (2 aadressi, saatja rakenduse pordi number, vastuvõtja
rakenduse pordi number, paketi pikkus ja kontrollsumma) ja saatmiseks
kulub vähem aega. UDP ei tegele ka koormuse reguleerimisega – see
mis võrku saadetakse, see ka teele läheb. UDP sobib selliste
rakenduste jaoks, mis taluvad teatud osa pakettide kaotsiminekut ja
on kiiruse suhtes tundlikumad. UDP-d kasutab DNS ja
SNMP (võrguhaldus
protokoll). TCP - ühendusele orienteeritud andmevahetuse teenus, kus
suheldakse teise osapoolega ja lepitakse kokku kuidas, kui palju ja
mismoodi saadetakse. See on just selline transporditeenus, mis tagab
ka töökindla andmevahetuse ja andmete
korrektse kohalejõudmise
õiges järjekorras. Kui andmed korralikult kohale ei jõua, siis
saadetakse need uuesti ehk korratakse saatmist. Protokoll tegeleb ka
voojuhtimisega ja ülekoormuse kontrollimisega. Tegelikult kaks
osapoolt saavad kokku leppida ka selle, kui palju andmeid korraga
saata. Kui me saadame liiga palju andmeid võrku, siis hakkavad
tekkima ummikud ja järjekorrad. Voo juhtimine tähendab saatja ja
vastuvõtja vahelist voogu. Voo juhtimine tegeleb iga andmevooga
eraldi. Võrgu koormuse reguleerimine tegeleb kõikide andmevoogudega
korraga. Eesmärk on, et arvutist ei läheks võrku rohkem andmeid,
kui see võrk suudab vastu võtta.
Rakendused , mis nõuavad andmete
100%-list kohaleminekut, need kasutavad TCP protokolli. UDP ja TCP ei
taga
ajalisi garantiisid ega võrgu läbilaskevõimet.
Transpordikiht
tegeleb paketi formeerimisega, adresseerimisega (pordi numberid) ning
töökindluse tagamisega (jälgib andmevoogu ja tegeleb vigade
avastamise ja parandamisega). Transpordikihis
adresseeritakse rakendusi pordinumbrite järgi. Transpordikihi puhul
räägime pakettidest, kui segmentidest. Multipleksimine rakenduskihi
ja transpordikihi mõttes - erinevate rakenduste käest tulevad
andmed transpordikihi kätte ja transpordikiht toimetab need andmed
teise otspunkti ning teises otspunktis
jagab need laiali.
3)
Kanalikiht
–
Pakub teenust võrgukihi
tasemele , formeerib kanalikihi paketi,
tegeleb kanalikihi adreseerimisega, tegeleb vigade avastamisega, voo
juhtimisega, kanali poole pöördumise korraldamisega. Selle ülesanne
on läbi konkreetse kanali hostist ruuterisse, ruuterist ruuterisse,
ruuterist ruuterisse jne kuni lõpuks ruuterist hosti infot
liigutada. See tegeleb füüsiliselt signaalide edastusega alates
sellest, kui signaal formeeritakse ja signaal võrgukaardi pealt
välja läheb kas kaablisse või õhku. Kanalikiht on selleks, et
transportida andmeid läbi konkreetse kanali. Kanalikihi
standardid :
1) IEEE – kanalikiht jagatakse kaheks a) LLC (loogiline kiht) 802.2
b) MAC (meediapöördus kiht) 2)Interneti mudel – kaks kihti nii
LLC kui MAC kokku pandud. Kanalikihi paketti nimetatakse kaadriteks.
Kanalikiht on realiseeritud võrgukaardi peal.
4)
Võrgupöörduskiht
–
See on seotud sellega, kuidas me pöördume konkreetse kanali või
võrgu poole. Vaja on jälgida seda reeglistikku, kuidas me saame
võrgus andmeid liigutada. See on loogiline osa, mis tegleb sellega,
kuidas võrgukaardi poole pöördutakse ja kuidas üks võrgukaart
suhtleb teise võrgukaardiga.
5)
Füüsiline
kiht –
Selle funktsioon on see, et kuidas edastada
bitte füüsilises
edastuskeskkonnas (elektrilised signaalid, valgusimpulsid).
Füüsiline
kiht pakub füüsilist bitiedastusteenust kanalikihile, et kanalikihi
kaks otspunkti saaksid omavahel suhelda. Kanalikiht pakub
kanaliedastusteenust võrgukihile. Võrgukiht peab
korraldama andmete
marsruutimise läbi erinevate kanalite ja võrkude. Võrgukiht pakub
andmete läbi võrkude transportimise teenust transpordikihile, kes
korraldab kahe otspunkti vahelist andmeedastusteenust. Transpordikiht
pakub erinevatele rakendustele transporditeenust, et nad saaksid oma
andmeid vahetada ja nad ei peaks muret tundma selle üle, kuidas need
andmed liiguvad. Iga kiht lisab andmete ülevalt alla liikumisel
saatja poole peal oma päise paketile juurde. Vastuvõtja poolel iga
kiht võtab päise ja kasutab selles olevat informatsiooni ja viskab
selle minema.
7.
Ühendusele-orienteeritud ja ühenduseta andmeedastus
Mõlema
andmeedastuse puhul on eesmärgiks edastada andmeid ühest punktist
teise.
Ühendusele
orinteeritud andmeedastuse
puhul on vajalik eelnev ühenduse loomine teise osapoolega
(handshaking). See tähendab, et meie veebribrauseri kaudu
transpordikiht loob serveriga ühenduse. Peame enne olema veendunud,
et teine arvuti on olemas. See toimub meie jaoks nähtamatult.
Tegelikult
kõigepealt arvuti suhtleb veebiserveri arvutiga ning
üritab kindlaks teha kas
veebiserver on töökorras. Alles siis, kui
me oleme ühenduse saanud veebriserveriga, algab tegelik pärimine
veebiserverist.
TCP
protokoll
realiseerib ühendusele orienteeritud
andmevahetuse. See on just selline transporditeenus, mis tagab ka
töökindla andmevahetuse ja andmete korrektse kohalejõudmine õiges
järjekorras. Kui andmed korralikult kohale ei jõua, siis saadetakse
need uuesti ehk korratakse saatmist. Protokoll tegeleb ka
voojuhtimisega ja ülekoormuse
kontrolliga . Tegelikult kaks osapoolt
saavad kokku leppida ka selle, kui palju andmeid korraga saata. Kui
me saadame liiga palju andmeid võrku, siis hakkavad tekkima ummikud
ja järjekorrad. Voojuhtimine tähendab saatja ja vastuvõtja
vahelist voogu, koormuse reguleerimine tähendab, aga kõikide
andmete saatmist võrku. Voo juhtimine tegeleb iga andmevooga eraldi.
Võrgu koormuse reguleerimine tegeleb kõikide andmevoogudega
korraga. Eesmärk on see, et arvutist ei läheks võrku rohkem
andmeid, kui see võrk suudab vastu võtta. Rakendused, mis nõuavad
andmete 100%-list kohaleminekut, need kasutavad TCP protokolli.
Ühenduseta
andmeedastuse puhul
teise osapoole käest ei küsita kas ta on valmis, vaid kohe
hakatakse saatma. Selleks on olemas protokoll
UDP.
Andmevoog on pidev ning ei tagata 100% töökindlat andmeedastust
ning ei teostata voo ega ülekoormuse kontrolli. Rakendused, mis ei
nõua andmete 100%-list kohaleminekut, need kasutavad UDP protokolli.
Näiteks, kui räägime telefoniga, mis on realiseeritud läbi
interneti, siis telefonisides põhimõtteliselt võivad osa andmeid
kaduma minna. See tähendab telefonikõnes vaid väikseid katkestusi,
aga
tervikuna kõne toimib ja saab rääkida. Telefonikõnes ei ole
mõistlik kasutada TCP protokolli, sest muidu
toimuks katkestuste
kohas pidev kordamine, mis on kuulajale ebameeldiv.
8.
Kanalikommutatsioon ja pakettkommutatsioon, paketi pikkus
Kanalikommutatioon
on pärit traditsioonilisest telefonisidest. Analoogtelefoni side on
selline, et füüsiliselt traatidega ühendatakse kaks otspunkti
omavahel kokku.
Kanalikommutatsiooni
puhul
ressurss on füüsiliselt ära jagatud ja mingi osa füüsilisest
kanalist saab kasutaja endale. Kui kõik osad
kanalis on välja
jagatud, siis on ressurss ammendatud ja keegi teine juurde ei pääse.
Vastavalt sellele, kui hea on kanal, nii hea on ka
andmeside . Kanalit
saab jagada tükkideks kahte moodi: sageduse või aja järgi.
Sageduse järgi
jagades kogu kanali
sagedusriba on jagatud
väiksemateks sagedusribadeks ja iga kommunikatsioon liigub oma
sagedusriba peal. Nad on üksteisest piisavalt kaugel, et mitte
üksteist häirida. Aja järgi jaotatakse kogu sagedusriba teistpidi
lõikudeks aja järgi. Iga kommunikatsioon saab mingi osa ajast enda
kätte. Kanalikommutatiooni kasutatakse näiteks telefoni
andmeedastuse puhul, kuid mitte interneti puhul, sest siis oleks suur
osa ajast kanal vaba, mis oleks väga ebaefektiivne.
Kanalkommutatsiooni puhul, kus on tegemist füüsilise kanali
reserveerimisega, tuleb kõigepealt kanal paika panna: otsitakse läbi
kommutatsioonisõlmede marsruut ja kulub aeg sõlmede vahel
liikumiseks ning lõpuks jõutakse sihtpunkti. Pärast seda läheb
kanal paika ja see jääb kindla saatja ning vastuvõtja käsutusse
ja enam mingeid ajalisi
viiteid ei ole võrgusõlmedes.
Pakettkommutatsiooni
puhul
kanal ei ole kogu aeg ühe isiku käes, vaid kasutaja saab näiteks
veebiserverisse pöördudes korraks kanali ja pärast seda on see
jälle vaba. See toob kaasa selle, et mingil hetkel võib kasutajaid
olla kanalis rohkem, kui sealt andmeid tegelikult korraga läbi
läheb. See tähendab, et mingitel hetkedel on kanal hõivatud ja
mingitel hetkedel on
see vaba. Sellest tulenevalt nendel hetkedel, kui kanal on hõivatud,
võivad tekkida ülekoormused ja järjekorrad, kuna võrgus on lõplik
hulk ressursse. Järjekorras olevad paketid tuleb mällu panna ja
samuti mälu võib täis saada ning pakette tuleb hakata ära
viskama. Mingi aja pärast saab kasutaja teada, et ta päring pole
kohale jõudnud ning tuleb hakata korraldama selle võrgu tööd.
Ühest küljest saab kasutada võrke ratsionaalsemalt, teisest
küljest toob pakettedastus kaasa ka probleeme. Pakettedastusel
pakett saadetakse ruuterisse ja ruuter ei tea, mis selle paketiga
edasi teha, enne kui see on täielikult kohal ja alles siis saab
paketi päisest vaadata aadressi. Kui ruuter leiab aadressi, siis ta
hakkab saatma paketti näiteks järgmisesse ruuterisse, mis omakorda
teeb läbi sama protsessi, mis
eelmine ruuter. Pakettedastus on
sobilik arvutite vahelise suhtlemise jaoks, kuna arvutid suhtlevad
„andmeportsude“ kaupa ja vahepeal on
tükk tühja maad. See toob
kaasa aga asjaolu, et vaja on ressurssi jagada ja hallata ning
tegeleda ka järjekordadega. Kui paketid kaduma lähevad, siis
tekivad ka
ajalised viited. Pakettedastusel on ka head omadused. Kui
jagada kogu andmehulk tükkideks, siis saab saatmist teha
paralleelsemaks. Näiteks ei saadeta suurt
tükki korraga ruuterisse,
vaid saadetakse väikeste tükkide kaupa. Pakette on mõistlik
tükkidena teha väikseks, aga ka mitte liiga väikseks, muidu läheb
kasuliku info hulk liiga väikseks (päis tuleb alati lisada). Paketi
pikkuse
valikul on mõistlik arvesse võtta kasuliku info protsent.
Kui saata pikk pakett ja
saatmine ebaõnnestub, siis tuleb see uuesti
saata ning aega kulub palju rohkem. Mida pikem on pakett, seda suurem
on ka tõenäosus, et see rikneb. See tähendab, et ei ole mõislik
liiga
pikki pakette saata. Samuti pika paketiga hõivab kasutaja
kanali pikaks ajaks ning see häirib teisi kasutajaid, kes soovivad
võib-olla ainult korra kanalit kasutada. Lühikeste pakettide puhul
peab alati olema nende saatmise vahel ka mingi ajaline vahe ning ka
selleks kulub teatud aeg. Pakettedastusel on kahte sorti
edastusviise: 1)
puhas
pakettedastus –
(datagramm võrgud) iga pakett liigub omaette ehk pakett on sõltumatu
üksus. Kui pakett jõuab ruuterisse kohale, vaadatakse paketi päist
ja seal on kirjas, kuhu sihtpunkti ta jõudma peab. See tähendab
seda, et marsruut on paika panemata ja igal
ristteel võetakse vastu
otsus ehk iga pakett marsruuditakse igas võrgusõlmes eraldi. Kui
fail koosneb kolmest paketist, siis iga pakett võib eri teid mööda
lõpp-punkti kohale jõuda. Siin IP aadress määrab ära sihtpunkti
aadressi. 2)
virtuaalkanali
puhul
toimub alguses marsruudi otsimine ehk pakett tuleb ruuterisse kohale,
siis vaadatakse, kuidas seda edasi saata ja kui tuleb järgmine
pakett, siis toimub sama asi. Virtuaalkanal pannakse paika ja selle
kohta saadetakse informatsioon ruuteritesse. Virtuaalkanalite puhul
on igas võrgusõlmes informatsioon, kuhu pakett edasi saata ning
mingil määral jääb töötlusaeg sisse, mis on aga väiksem aeg,
kui kulub marsruudi otsimiseks. See tähendab seda, et marsruut on
paika pandud ja paketid liiguvad kindlat marsruuti mööda ning ei
pea igas võrgusõlmes eraldi marsruuti
küsima , aga konkureeritakse
kõigi teiste pakettidega selle tee peal ehk ei hõivata kogu
resurssi endale. Näiteks ATM võrkudes kommutatsioonisõlmed ei tea
sihtpunkti aadressi, vaid teavad kust tuleb pakett ja kuhu see tuleb
edasi saata. Selle võrra on aadress väiksem ja marsruutimisotsust
lihtsam ja kiirem teha.
9.
Multipleksimine sageduse, aja ja koodi järgi
Kanalit
saab multipleksida sageduse, aja ja koodi järgi:
Sageduse
järgi kanali
multipleksimine ehk FDM tähendab seda, et erinevad võrguseadmed
kasutavad suhtlemiseks erinevaid kanali sagedusi. Sagedusriba
jagatakse erinevateks väiksemateks sagedusribadeks. Kaablisse minnes
pakime kõik
sagedused kokku. Sagedusribad on piisavalt
laiad ning
ülekostvust ei ole. Hea omadus on see, et igaüks saab oma osa enda
kätte ja kasutab seda nii palju kui tahab, aga kui ta seda parajasti
ei kasuta, siis see ressurss on raisus ja seda kellelegi teisele
lihtsalt anda pole võimalik.
Aja
järgi kanali
multipleksimine ehk TDM tähendab seda, et igal võrguseadmel on
õigus edastada infot mingil kindlal ajahetkel. Iga kasutaja saab
enda kätte ajalõigu, millal kanal on tema käsutuses. Seejärel
läheb kasutusõigus üle järgmisele. Pole väga efektiivne, kuna
saatjad saavad oma osa kanalist ka siis, kui neil midagi saata ei ole
ning kasutamata aeg läheb raisku. Üks kasutaja ei saa saata rohkem,
kui tema lõik ette näeb. Vahel kasutatakse ka statistilist
multipleksimist. Siis tuleb andmetele juurde panna ka aadress, et
teada kellele see kuulub.
Koodi
järgi kanali
multipleksimine
CDMA tähendab seda, et võrguseadmetele antakse
kood, millega saab kanalit hõivata. Ainult need, kes teavad seda
koodi saavad üksteisega suhelda. Kõik andmevahetus läheb korraga
kanalisse sisse, aga igaüks
kodeerib oma süsteemi järgi. Igaüks
kasutab oma koodi, mis on unikaalne ning vastavalt sellele andmed
kodeeritakse ära, pakitakse kokku ja teises otsas võetakse lahti.
10.
Ajalised viited võrkudes
Kui
pakett jõuab ruuterisse, siis ruuteris seda töödeldakse ja
saadetakse edasi. Aega kulub ka selleks, et ruuter paketi vastu
võtaks. Pärast seda toimub paketi töötlus ning siis paketti
analüüsitakse, et oleks võimalik teha marsruutimise otsus, kuhu
seda edasi saata. Kui on otsus tehtud ja väljund valitud, võib
pakett veel järjekorras seista ja oodata, kui eelmist paketti
saadetakse. Alles pärast seda liigub pakett kanalisse ning
järgmisesse ruuterisse.
Eristada
saab nelja sorti ajalisi viiteid:
1)
Töötluseks
minev aeg –
Analüüsitakse, kas pakett on
vigane ja kui on, siis pole mõtet
seda edasi transportida ja see
visatakse minema. Samuti
analüüsitakse, kuhu pakett peab minema ja tehakse marsruutimise
otsus.
2)
Järjekorras
ootamise aeg –
Pakett on ooteseisundis, et saaks kanalisse edasi liikuma hakata.
3)
Paketi
kanalisse saatmise aeg –
Kui meil on kümne megabitine kanal, siis sinna kanalisse läheb
taktiga 10Mb/s sisse ja mitte rohkem. Kui meil oleks 20Mbit pakett ja
kiirus oleks 10Mbit/s, se tähendab, et siis kuluks 2 sekundit, et
pakett kanalisse saata.
4)
Aeg,
mis kulub võrgusõlmede vahel paketi liikumisele –
Lokaalvõrgu puhul võib selle enam-vähem nulliga võrdseks lugeda,
aga satelliitside või kaudsidega puhul tuleb seda kindlasti
arvestada.
11.
Arvutivõrkude ja Interneti ajalugu
1961
–
Kleinrock tuli välja järjekorra teooriaga, mis oli pakettedastuse
üks põhialuseid
1964
–
Barani pakettvahetuse teooria
1967
–
ARPAneti arendamise algus (
ARPAnet on esimene pakettedastusvõrk ja
interneti eelkäija) Ühendati Ameerika 4 suuremat ülikooli ning
suured arvutid pandi omavahel
suhtlema .
1969
–
Esimene APRAneti võrgusõlm hakkas tööle
1970
–
Esimene lokaalvõrgu
katsetus – ALOHAnet: raadiovõrk Havai saarte
vahel
1972
–
ARPAneti avalik demonstratsioon; Esimene transpordikihi protokoll:
NCP (TCP eelkäija); Esimene e-maili programm; ARPAnetis oli siis
juba 15 võrgusõlme, mis omavahel suhtlesid.
Seitsmekümnendatel
aastatel hakkasid tekkima mikroprotsessorid ja selle tulemusena ka
lokaalvõrgud. Arvutid muutusid väiksemateks ja enam nad ei olnud
need nii palju ühe koha peal kinni, vaid neid sai ka mujale viia.
Selle tulemusena tehti arvuteid rohkem ja neid sai ka omavahel võrku
ühendada.
1974
–
Vint Cerf ja Robert E. Kahn töötasid välja arhitektuuri võrkude
ühendamiseks .
Nad
töötasid välja võrkude põhiprintsiibid:
1)
Minimalism ja
autonoomia – Ei ole vaja midagi spetsiaalset teha või
muuta oma süsteemis, et ennast võrku ühendada.
2)
Teenuse mudel – See mida võrk tagab, selle me saame, aga midagi
spetsiaalset me selle jaoks ette ei võta.
3)
Olekuvabad ruuterid – Ruuter ei tea kuhu eelmine pakett kuulub ja
mida järgmise paketiga tehakse ehk iga paketiga võetakse ette uus
marsruutimise otsus ja siis unustatakse see pakett ära.
1976
–
Etherneti (kõige tuntum lokaalvõrk) loomine Xerox PARCis
70-ndate
lõpp –
Tekkis ATM, mis oli Ethernetile suureks konkurendiks. Ta oli algselt
Ethernetist isegi veidi kiirem.
1979
–
ARPAnetis jõuti 200 võrgusõlmeni
1982
–
SMTP – e-maili edastusprotokoll
1983
–
TCP/IP hakkas tekkima; DNS nimeteenuse tekkimine
1985
–
FTP (failiedastusprotokoll)
1988
–
Voo kontroll TCP-s, võrk hakkas
muutuma ülekoormatuks ja tuli
hakata probleemi
lahendama 1980-1990
–
ARPAneti võis avalikult kasutama hakata, 100 000 kasutajat, luuakse
võrgud nagu Csnet, BITnet, NSFnet, Minitel
90-ndate
algus –
HTML, HTTP, URL, brauseritest luuakse
Mosaic ja Netscape.
90-ndate
lõpp –
P2P, uued ja võimsad rakendused interneti maailmas; mängud;
interneti turvalisusele pööratakse rohkem tähelepanu; 50 miljonit
kasutajat
2007
–
500 miljonit kasutajat, videokõned, mängud, P2P rakendused:
BitTorrent (File sharing),
Skype (VoIP), rakendused nagu YouTube;
traadita ühenduse kiire areng.
12.
Mida erinevad rakendused nõuavad võrkudelt
Laias laastus nõuavad rakendused võrkudelt kolme asja:
1)
Usaldusväärne
andmeedastus –
On olemas rakendused, mis tahavad, et andmed kõik 100% kohale
jõuaks, aga on olemas ka rakendusi, mis taluvad osade andmete
kaotsiminekut. Kui saadame faili siis tahame, et see oleks tervikuna
kohal. Kui teeme telefonikõne läbi interneti ja mõni pakett läheb
kaduma, siis kuuleme võib-olla mingit krõpsu, aga kõne jätkub ja
kõik toimib. Nende erinevus on veel see, et kui faili saatmisel
pakett läheb kaduma, siis me kordame saatmist
niikaua , kuni kõik
tükid kohale on jõudnud, kui kanal on ka piisava töökindlusega.
Kui kõne juures hakkaksime mingit paketti
kordama , siis tekiks
olukord, kus hakatakse kõnet igakord kordama, kui pakett kaduma
läheb ja see segaks kõnest
arusaamist .
2)
Andmeedastuskiirus
–
Meil on vaja teatud läbilaskevõimet, et teatud edastuskiirusel
bit/s oleks võimalik teatud kvaliteediga näiteks telefonikõnet või
videopilti edastada. Teksti edastamisel võtab see veidi kauem aega
ja see pole väga suur probleem. Kui meil on aga aeglane võrk, siis
telefonikõne sealt lihtsalt läbi ei lähe.
3)
Ajastus
–
Kui tegemist on
reaalajas liikuva
infoga (telefonikõne,
videoreportaaž) siis on oluline see, et pakettide vahelised ajalised
viited peavad olema teatud miinimumide piires. Tähtis on ka see, et
pakettide edastus oleks pidev. Kui saadame faili, siis üks pakett
võib tulla kohe, teine aga minuti pärast, kolmas hoopis kolme
minuti pärast. Me saame faili ikkagi kätte ja lõpuks on see meil
tervikuna olemas, kuigi see võtab piisavalt aega. Kui reaalajas
liikuva telefonikõne juures aga tekivad pikad ajalised viited, siis
läheb see kõne ajas käest ära ja me jääme paljudest asjadest
ilma.
4)
Turvalisus
Vastavalt
sellele, millised on rakenduse vajadused, valitakse ka protokoll.
TCP
– Ühendusele orienteeritud protokoll ehk teise osapoolega luuakse
kontakt ja on võimalik saada tagasisidet selle kohta, kas paketid on
kätte saadud või tuleb need uuesti saata. Saab ka reguleerida
andmevoogu kahe osapoole vahel. Samuti saab hinnata võrgukoormust.
TCP ei paku ajastust, sidekiiruse
garantiid ega turvalisuse
garantiid.
UDP
– Teeb seda, mida võrk võimaldab, aga mitte midagi lisaks. Ta ei
suhtle teise osapoolega, vaid saadab lihtsalt paketi võrku.
Pakettide kohalejõudmine sõltub teenuse kvaliteedist. UDP ei kuluta
aega ühenduse loomisele ega pakettide kordussaatmisele. Samuti UDP
ei reguleeri otseselt andmevoogu ega
raiska aega lisategevuste peale.
13.
HTTP
HyperText
Transfer Protocol on rakenduskihi protokoll. HTTP protokoll on
selleks, et saaksime internetis surfata.
Veebis on olemas terve rida
objekte ja igal objektil on oma aadress. Aadress koosneb hosti osast
ja objekti osast. „www.ttu.ee“ on näiteks Tehnikaülikooli
veebiserveri aadress. Kliendi arvuti saadab päringu kasutades HTTP
protokolli serverisse ja serveri arvuti oskab selle päringu järgi
otsida üles objekti ja vastab selle objekti saatmisega kliendile.
HTTP kasutab TCP protokolli, sest on vaja garanteerida kõikide
andmete kohaletulek. Kui kasutatakse TCP protokolli, siis TCP
protokoll loob ühenduse serveri TCP protokolli osaga. Serveripoolne
TCP protokolli osa võtab selle ühenduse vastu ja aktsepteerib seda,
kui tal on
vabu ressursse ja siis saadetakse edaspidi päringud
serverisse. Server ei pea midagi meeles ehk HTTP on olekut mitte
säilitav protokoll. Kui kasutaja vajutab mingile lingile, siis
brauser saadab serverisse pordi 80 kaudu HTTP päringu objekti, mille
peale server saadab kasutajale vastu HTTP vastuse objekti, mis
sisaldab neid objekte, millest antud veebileht koosneb. HTTP
protokoll võib olla kahte tüüpi: 1) iga objekti kohta luuakse TCP
ühendus 2) ühe ühenduse kaudu saadetakse mitu objekti korraga.
HTTP seanssi kirjeldus: Meil on vaja kätte saada veebilehelt kindel
objekt. Kõigepealt pöördutakse nimeserverisse ja saadakse kätte
IP aadress. Pärast seda luuakse TCP ühendus kindla serveriga läbi
pordi 80. Kui teisel osapoolel on vabu resursse olemas, siis teine
osapool aktsepteerib selle ühenduse. Kui ühendus on loodud, siis
saadetakse päring, et saada kindel soovitud objekt. Kui
serveril on
see olemas, siis ta paneb selle objekti vastusesse sisse ja saadab
selle minema. Kui saadetakse üks objekt korraga, siis pärast
saatmist paneb server ühenduse kinni ja uue objekti saatmisel tuleb
jällegi luua alguses ühendus. Siis jällegi saadetakse objekt ja
pannakse jälle ühendus kinni jne. Teistsugune server võib suhelda
aga
selliselt , et ühendus jääb lahti ja objektid tulevad mööda
sama ühendust ning iga objekt tuleb eraldi kohale kuni kõik
objektid on olemas ja alles siis pannakse ühendus kinni. Aega kulub
selle peale, et alguses läheb ühendusees loomise päring serverisse
ja siis tuleb
kinnitus , et server on olemas. Esimene RTT – aeg, mis
kulub päringu saatmiseks ja sellele ka vastuse saamiseks. Teine RTT
– aeg, mis kulub selleks, et objekti kätte saada ja ka objekti
transportida. Kui me faili küsime, siis selleks kulub aega kaks
edasi-tagasi saatmist ja lisaks veel objekti saatmise aeg. Päringu
formaat näeb välja selline, et HTTP-s on kahte tüüpi sõnumeid:
päring ja vastus. Päring võib olla GET, POST või HEAD. GET –
küsida mingeid andmeid serverist, POST – lisaks küsimisele ka
saadetakse mingeid andmeid serverisse (
veebilehed , mis küsivad
kliendi käest nime vms) , HEAD - vajalik selleks, et kontrollida
suhet serveriga ehk siis saadetakse serverisse päring ja server
saadab vastuse, aga seda objekti vastusesse
ei panda. Mõnikord võib ka käsurea kaudu edastada parameetreid
serverisse. Vastuses kõigepealt tuleb kood: kas vastuse leidmine
õnnestus; kas see ühendus pannakse kinni või mitte; millal see
vastus tuli; mis serveriga on tegemist; millal seda objekti on
viimati
modifitseeritud ; mis tüüpi objektiga; mis on objekti
pikkus. Kui objekti ei ole, siis
vastuseks on „Not
found “ ehk
server alati vastab mingi tunnuskoodiga. Samuti on olemas veebilehti,
mis nõuavad kliendilt nime ja
parooli ehk need lehed ei ole
avalikult ning vabalt kasutatavad, vaid nende kättesaamiseks tuleb
mingit lisainformatsiooni anda. Kui me pöördume sellise serveri
poole, siis server vastab, et „Authorization
required “ ning peame
sisestama brauserisse oma isikliku kasutajanime ja parooli, mis
pannakse iga päise sisse.
Parool unustatakse iga kord ära (olekut
mitte säilitav HTTP) ja kui uuesti kasutaja tahab serveriga ühendust
saada, peab ta taas
lisama oma kasutajanime ja parooli. HTTP ei ole
aga päris olekut mitte säilitav, sest on olemas ka küpsis ehk
cookie . Tänu sellele server saab säilitada kasutaja kohta mingit
olekuinformatsiooni. Cookie on selline
identifikaator , mille server
annab kasutajale, kui kasutaja esitab päringu ning sellest
tulenevalt server fikseerib kasutaja oma
andmebaasis . Kasutaja mingis
veebikataloogis või
failis hoitakse seda cookiet. Küpsiste faili
kaudu on võimalik vaadata, milliseid veebilehti on kasutaja
külastanud . Neid on võimalik ka soovi korral ära kustutada või
seadete alt keelata. Küpsised on väga palju kasutuses
e-kaubanduses. Kui
klient pöördub serverisse, siis mõni teine
klient
samast piirkonnast võib pöörduda
samasse serverisse või
siis üks klient võib pöörduda ka mitu korda serveri poole. See
tähenbab, et mingi aja pärast koormatakse see server lihtsalt üle.
Selleks on olemas vahemäluserverid ja kõik kasutajate päringud
lähevad sellesse
proxy -sse kõigepealt. Kui mingi fail on kasutaja
poolt serverist juba ära küsitud, siis vahemäluserveris hoitakse
seda alles ja kui sama kasutaja uuesti või mõni teine kasutaja
samast piirkonnast küsib sama faili, siis on see juba
vahemäluserveris olemas ja ei pea pöörduma originaalserverisse.
Kasutaja veebibrauseri juures on samuti vahemälu olemas ja viimati
küsitud asjad on ka kasutaja arvutis olemas. Kui kasutaja teeb
brauserist mingi päringu, siis kõigepealt vaadatakse, kas kasutaja
brauseri mälus on soovitud fail olemas. Kui seal ei ole, siis
pöördutakse proxy serverisse ning kui seal ka seda ei ole, siis
pöördutakse originaalserveri poole. See kõik on selleks, et
vähendada võrgukoormust ja originaalserveri koormust. Veebis
surfamise info jääb ka vahemäludesse üldiselt alles. Aja
möödudes alles
kustub vahemäluserveritest kasutaja veebikülastuste info ära.
Vahemäludes päringuid sageli ka analüüsitakse. Kui kasutaja
tellib mingi faili ja on teada, et
tüüpiliselt ta tellib ka teise
faili, siis selle asemel, et neid kahte faili eraldi küsida,
küsitakse need kaks faili kohe ära igaks juhuks. See tähendab, et
mõnikord vahemällu salvestatakse rohkem informatsiooni, kui
tegelikult küsitakse. Kui vahemälu hakkab täis saama, siis
visatakse välja kõigepealt see objekt, mille kasutamisest on kõige
rohkem aega möödas või siis see, mida on kõige vähem vaadatud.
Samuti on olemas prioriteetide süsteem. Veebis on olemas objektid,
mis muutuvad, aga ka objektid, mis on kaua aega püsivad. Kui objekt
on selline, et seda tihti ei
muudeta , siis ei ole mõtet seda
vahemällu alati uuesti
laadida . Sellepärast on võimalik saata
tingimuslikud päringud, mis määravad ära, kas vahemälus olev
objekt on vahepeal muudetud või mitte. Kui ei ole muudetud, siis ka
originaalserverist ei pea seda uuesti saatma, aga kui on muudetud,
siis saadetakse see originaalserverist uuesti vahemälusse.
14.
FTP
See
on failiedastus protokoll, mis on rakenduskihi protokoll. See on
selleks, et saada failiserverist faili kätte. FTP serveri pordi
number on 21. Kui kasutaja pöördub IP aadressiga sellesse
arvutisse, siis pordi 21 taga on failiserver. Failiserver töötab
selliselt, et ta kasutab kahte ühendust, millest esimene on
juhtinformatsiooni edastamiseks ja teine on andmeedastuseks. Kui
kasutaja küsib serverist faili, siis kasutatakse juhtühendust ja
kui kui kasutaja tahab faili saada, siis luuakse uus ühendus selle
faili lugemiseks või kirjutamiseks. Kui see fail on ära
transporditud, siis andmeühendus pannakse kinni ja juhtinfoedastus
jääb lahti. FTP erineb HTTP-st selle poolest, et luuakse kaks
erinevat ühendust, mitte kogu info ei lähe läbi ühe ühenduse.
Näited käskudest: kõigepealt tuleb ennast identifitseerida
(sisestada kasutaja ja parool), LIST käsuga saab vaadata, mis failid
on olemas, RETR käsuga saab faile küsida ja STOR käsuga saab faile
saata. Serveri poolt vastatakse
mingite koodidega, kas näiteks
selline kasutaja ja parool on olemas jne.
15.
Elektronpost, SMTP, MIME
Elektronpost
on selline süsteem, kus kasutajad saavad elektroonseid kirju saata.
E-posti süsteem koosneb kolmest komponendist: kasutajaagendid
(meiliprogramm), e-maili
serverid , SMTP (protokoll). Kasutajaagent on
meiliprogramm, kus saab kirju koostada, lugeda, vastata ja kogu
kirjakasti hallata. Meiliserverid on need, kus hoitakse kasutajale
saadetud kirju ja neid kirju, mida kasutaja tahab teele saata. Kui
kasutaja kirjutab kirja oma meiliprogrammis ja saadab kirja teele,
siis kasutaja arvuti suhtleb kohaliku meiliserveriga ja kohalikus
meiliserveris pannakse kiri väljuvate kirjade
järjekorda .
Järgnevalt kohalik meiliserver loob ühenduse teise meiliserveriga
ja saadab selle kirja minema. Seejärel jõuab kiri teise kasutaja
kohalikku serverisse ootama. Kui teine kasutaja oma meiliprogrammi
tööle paneb, siis selle kasutaja meiliserver pöördub kohalikku
meiliserverisse ning siis loetakse kõik teisele kasutajale mõeldud
kirjad ja saadetakse teise kasutaja arvutisse. Meiliaadressil on
olemas subjekti nimi ja domeeni nimi. E-post kasutab TCP protokolli,
et tagada töökindel andmeedastus. Kõigepealt luuakse serveriga
ühendus, siis saadetakse kirjad ära ja lõpuks pannakse ühendus
kinni. Kuna meilindus on üks esimesi protokolle, siis originaalis
kasutatakse suhtlemisel 7-bitist
ASCII koodi ja mingit krüpteerimist
vaikimisi ei kasutata. Krüpteerimine tuleb eraldi juurde teha. SMTP
kasutab püsivat ühendust ehk luuakse ühendus ja saadetakse kõik
kirjad minema. Kui kirjad jõuavad serverisse, siis pannakse see
ühendus kinni. Kui võrrelda HTTP-d SMTP-ga, siis SMTP on mõeldud
selleks, et saata kirju ja faile, HTTP on aga selleks, et küsida
faile. Kirjal on olemas päis (kellele, kelle käest, kirja teema)
ja sisu (sõnad 7-bitilises ASCII
koodis ). Kui me tahame saada midagi
muud peale teksti, siis 8-
bitine kood tuleb teisendada 7-bitiliseks
ASCII koodiks. Selleks on olemas täiendus MIME, mis võimaldab läbi
meili saata ka muud informatsiooni kui tekst. Alguses toimub 8-
bitise mitte ASCII koodi
teisendamine 7-bitiseks ASCII koodiks ja pärast
teisendatakse see tagasi 8-bitiliseks mitte ASCII koodiks. Tänu
MIME-le saab saata läbi meili muusikat, pilte, videosid ja ka faile.
Kui võrdleme HTTP-d ja meilindust, siis HTTP-s iga objekt saadetakse
eraldi, meili juures pakitakse kirja sisse kõik asjad kokku ehk
e-kiri võib koosneda mitmest osast. SMTP protokoll on selleks, et
saata kirju. Kui saatja saadab kirja, siis SMTP protokolli kasutades
pöördutakse serverisse ning server saadab kirja teise serverisse,
kus kasutatakse seda sama SMTP protokolli. Selleks, et kirja
serverist küsida, ei sobi enam SMTP protokoll. Selleks on olemas
POP3, IMAP4. Samuti võib selleks olla ka HTTP protokoll, kui
kasutatakse veebil põhinevat meilisüsteemi.
16.
DNS
See
on domeeninimede süsteem ehk nimeserverite süsteem. Serveritel on
olemas nimed. Tallinna Tehnikaülikooli veebiserveri nimi on
„www.ttu.ee“, mis inimestel hästi meeles seisab. TTÜ
veebiserveril on olemas ka IP aadress, mida ilmselt
peast ei tea
keegi, kuna neid arve on üpris keeruline meelde jätta. On olemas
sellised
andmekogud , kus on kirjas kindlatele
nimedele vastavad IP
aadressid. See on üle maailma
hajutatud andmebaas ja DNS on
tegelikult ka rakenduskihi puhul DNS kui protokoll. Nimede süsteem
võib olla ühel tasemel või
hierarhiline . Ühel tasemel tähendab
seda, et nime on ainult üks ainuke
komponent ja see peaks tagama
unikaalsuse. Sellist on väga keeruline leida.
Hierarhia luuakse
selleks, et oleks lihtsam unikaalseid
nimesid tekitada.
Domeeninimedes on ka kasutusel hierarhiline süsteem. Nimi võib olla
täielik või osaline. Selliseid nimesid ei suuda töödelda
ruuterid, sest neil on vaja IP aadresse, et URL-
idega midagi peale
hakata. DNS kasutab UDP-d pordil 53. DNS-i kasutavad rakenduskihi
protokollid nagu näiteks HTTP, SMTP, FTP. DNS pakub lisaks
hostinimede IP-
deks muutmisele ka muid teenuseid:
1) Host aliasing –
Keerulisematel hostinimedel võib olla ka mitu aliast, mis on
lihtsamad kui õige nimi ning ka paremini meeldejäävamad.
2)
Mail server aliasing –
Keerulisematel meiliaadressidel võib olla ka mitu aliast, mis
paremini meelde jäävad.
3) Load distribution –
Suure külastatavusega lehtedel on mitu serverit, millel nad
eksisteerivad ning igal serveril on oma IP. DNS viib suurema
külastatavusega saidi vastavusse mitme IP-aadressiga ning
jaotab nende
aadresside vahel koormuse ära.
Üks
keskne DNS server poleks mõeldav ja jätkusuutlik, sest kui see
kokku jookseks, siis ei toimiks kogu
internet . Samuti oleks
probleemiks liiga suur päringute arv sellesse serverisse, mis
tooks kaasa ülekoormuse. Lisks server ei saa olla kõigi hostide
lähedal, sest see tooks kaasa suured viiteajad ning severit peaks ka
kogu aeg uuendama, sest hoste tuleb pidevalt juurde. Sellepärast
ongi DNS jagunenud mitmeteks serveriteks üle maailma. Ühelgi DNS
serveril pole kõikide maailma hostide nimesid, vaid need on jaotatud
erinevate serverite vahel. Olemas on kolme tüüpi DNS servereid:
juurserverid,
nimeserverid
ja
autoratiivsed
serverid. Igal
ISP-l on oma kohalik DNS server. Kui kasutaja kasutab
teenusepakkuja poolt antud
lahendust , siis ISP pakub enda poolt hostile ligipääsu
ühele või rohkematele oma kohalikele DNS serveritele. Kui host
soovib teada mõne teise hosti IP-aadressi, siis kõigepealt
küsitakse vastust lokaalse DNS serveri käest ja kui see vastust ei
tea, siis kohalik server küsib vastust juurserveri käest, mis
tagastab nimeserverite IP aadressid. 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. Lõpuks küsib lokaalne server autoratiivse serveri käest
ja saab vastuseks IP, mis edastatakse hostile, kes pöördus lokaalse
DNS serveri poole.
Rekursiivse
päringu puhul
toimub vastuse saamine nii, et host loob päringu lokaalsesse DNS
serverisse ja lokaalne server edastab päringu juurserverisse ning
juurserver nimeserverisse ja see omakorda autoratiivsesse serverisse
ja siis liigub vastus sama teed mööda tagasi päringu sooritajani.
Vastuste kiiremaks kättesaamiseks ja serverite koormuste vähendamiseks
kasutatakse vahemälude süsteemi. Vahemälu puhul jätab DNS server
vastused meelde ja kustutab need kui TTL aegub. DNS-i andmebaasis
hoitakse igasuguseid kirjed ning need
talletatakse RR formaadis.
17.
Töökindel andmeedastus
Võrk
peab garanteerima niipalju kui võimalik, et kõik asjad mis
saadetakse jõuaksid ka kohale. Kui kanal on katki, siis ei suuda
võrk midagi garanteerida. Kui transpordikiht tahab tagada töökindlat
andmeedastust, siis saab ta seda teha kasutades võimalusi, mida
võrgukiht talle pakub. Kui võrgukiht midagi ei garanteeri, siis see
tähendab, et transpordikihi tasemel tuleb luua töökindel kanal ja
kasutada seda, mida võimalik on kasutada.
1)
rdt_send - Kui rakendus annab ülevalt andmed transpordikihi kätte,
siis ta kasutab sellist operatsiooni. Selle
abil saab transpordikiht andmed kätte. See on töökindel
andmeedastus. 2)
udt_send – Kuna võrgukiht midagi ei paku, siis pöördutakse
sellega võrgukihi poole. See on mittetöökindel andmeedastus.
Kirjeldan
TCP/IP taolise protokolli ülesehitust sammhaaval, minnes lihtsamast
raskemaks ja lisades juurde omadusi. Töökindlust vaadeldakse
sellise modelleerimise abil, mida nimetatakse lõplikeks
automaatideks. See tähendab, et süsteem võib olla lõplikes arvus
olekutes ja alati on olemas üks tingimus, mis põhjustab
olekumuutuse ja sellega on seotud erinevad
tegevused. Kui tingimus saabub, siis süsteem läheb ühest olekust
teise ja sellega seoses tehakse midagi. (valgusfoori näide)
Rdt
1.0 :
Oletame, et meil on tegemist väge hea andmeedastuskanaliga, kus
mingeid
häireid ega vigu ei teki. Saatja saadab andmeid ja
vastuvõtja võtab vastu ja mingeid probleeme ei teki. Lõplike
automaatide mudeli peal kui vaadata olukorda, kus bitid ei moodu ega
paketid ei lähe kaduma: kui ülevalt rakenduskihilt tulles
käivitatakse rdt_send koos andmetega, siis transpordikiht formeerib
paketi (paneb andmed paketi sisse, paketipäise paneb juurde) ja
saadab udt_send-iga minema. Vastuvõtja pool saab kätte andmed ja
käivitatakse
protsetuur rdt_rcv, mis peab tagama töökindla
andmeedastuse. Kuna meil on tegemist ideaalse kanaliga, siis vigu ei
ole ja midagi kontrollida ei ole vaja. Eraldatakse paketist andmeosa
ja
deliver data-ga anname need rakendusele kätte.
Reaalne
elu on aga teistsugune, sest reaalses elus võivad pakettides olla
vead. Kanalites on häireid ja bitid võivad moodududa. Saatja saadab
paketi teele ja vastuvõtja arvutab kontrollsumma ja leiab, et see
pakett on vigane. Selleks, et tagada töökindlust, et kõik paketid
kohale tuleks peaks saatja paketi uuesti saatma. Selleks peab
vastuvõtja saatjale selle kohta midagi ütlema, muidu saatja ei tea
kas andmeid jõudsid kohale või mitte. Selleks on kahte sorti
vastuseid: 1) NAK - negatiivne
kviitung – ütleb, et pakett oli
vigane 2) ACK - positiivne kviitung – ütleb, et pakett jõudis
kohale ja kontrollsumma klappis. Kui vastuvõtja käest tuleb NAK,
siis selle peale saadab saatja paketi uuesti ja kui kõik on korras,
siis selle peale tuleb ACK. Teise osapoole käest saadakse vastav
tulemus, kas pakett saadi kätte või mitte. See, et pakett tuleb
kohale ja kontrollsumma klapib ei garanteeri seda, et pakett ei oleks
vigane. Seda ei ole võimalik garanteerida, sest esineb väga väike
tõenäosus, et pakett võib rikneda nii, et kontrollsumma jääb
klappima. Võimalus on, et pakett rikneb ja kontrollsumma rikneb ja
mõlemad klapivad ikkagi. See tähendab, et alati ei saa väita, et
kui kontrollsumma klapib, et pakett oleks terve.
Selleks,
et avastada vigu on vaja
kindlaid mehhanisme ja anda tagasisidet.
Rdt
2.0 :
Andmed tulevad rakendusele ja formeeritakse pakett. Nüüd pannakse
paketile ka kontrollsumma juurde, sest tegemist ei ole nüüd
ideaalse kanaliga. Siis saadetakse pakett teele ja nüüd läheb
saatja teise olekusse ehk nüüd on
saatjal kaks olekut: 1) ta on
võimeline rakenduse käest võtma andmeid 2) ta ootab vastuvõtja
käest kinnitust. Kui tuli vastuvõtja käest pakett ja tegemist on
NAK-iga, siis tuleb pakett uuesti teele panna ehk toimib taas
udt_sent ja pakett läheb uuesti teele ja
oodatakse ACK-i. Kui tuleb
pakett ja see on ACK, siis ta läheb teise olekusse ja on uuesti
rakenduse käest võimeline järgmiseid andmeid vastu võtma.
Vastuvõtja pool ootab andmeid ja kui tuli pakett ja ta ei ole
korras, saadetakse NAK ja jäädakse uuesti ootama andmeid, sest need
tuleb kätte saada. Kui nüüd tulevad andmed ja need on korras, siis
osast paketist eraldatakse andmed, need saadetakse üles rakenduse
kätte ja nüüd tuleb saata kviitung ACK. Kui aga kviitungipakett
rikneb ehk ACK või NAK on moondunud,
siis saatja ei tea kumbaga on tegemist. Sellest tulenevalt võidakse
pakette saata kahekordselt. Selleks, et duplikaatide probleemi
lahendada,
paneme paketi sisse järjekorranumbri.
Probleemiks
on vigane kviitung ning kuidas seda probleemi lahendada.
Rdt
2.1:
Saadetakse
teele pakett_0 ja vastu tuleb kviitung ACK. Saadetakse pakett_1 ja
vastu tuleb kviitung ACK, mis on vigane. Kuna kättesaadud pakett oli
vigane, saadetakse pakett_1 uuesti. Kui see omakorda on vigane, siis
tuleb teele NAK. Tegelikult saadetakse pakett_1-te mitu korda ja kui
vastuvõtja ei
teaks , et see on pakett_1 võtaks ta seda kui järgmist
paketti. Kui aga paneme järjekorranumbri juurde, siis vastuvõtja
teab, et see on tal juba olemas. Tuleb välja, et saatjal ja
vastuvõtjal on erinev nägemus, mis seisus andmevahetus on.
Saatja
saab rakenduse käest andmed, formeerib paketi_0 ja nüüd tuleb
paketi sisse lisaks järjekorranumber panna, samuti andmeosa ja
kontrollkood. Nüüd kui pakett läheb teele, siis saatja jääb
sellisesse olekusse, et ta ootab kviitung_0-i. Nüüd kui tuleb
vastus ja see on vigane või on NAKiga tegemist, tuleb pakett uuesti
saata. Kui tuli vastuseks nüüd ACK koos kviitung_0iga, siis võib
edasi minna. Järgmine pakett, mis tuleb rakenduse käest, kannab
nime pakett_1. Jälle saatja formeerib paketi, paneb
järjekorranumbri, andmeosa ja kontrollkoodi ning siis paneb selle
teele. Nüüd saatja ootab kviitungit pakett_1-le. Kui saadud
kviitung on NAK, tuleb saatmist
korrata ja jääda samasse olekusse
ja kui on ACK, siis läheb järgmisesse olekusse ja võtab
rakenduselt järgmise paketi. Kuna korraga saadetakse ainult üks
pakett, 0 või 1, siis need järjekorranumbrid sassi ei lähe. Kui
aga saadetakse rohkem pakette korraga, siis on vaja ka rohkem
järjekorranumbreid. Vastuvõtja pool ootab alguses pakett_0-i ja kui
on mitteriknenud paketiga tegemist ja järjekorranumber on 0, siis ta
eraldab andmeosa ja annab andmed rakenduse kätte edasi. Siis
formeerib paketi ACK koos kontrollsummaga ja saadab selle teele ning
läheb olekusse, et ta ootab pakett_1-te.
Kui
on tegemist sellise sündmusega, et vastuvõtja ootab pakett_1-te ja
kohale tuli mittevigane pakett ja järjekorranumber on 1, siis
eraldatakse paketist andmeosa ja antakse see rakenduse kätte,
saadetakse ACK ja nüüd läheb ta olekusse, et saab vastu võtta
pakett_0-i.
Saatja
poolt paneme juurde järjekorranumbrid. Samuti peab saatja vaatama
kas kviitungid tulid korralikult kohale.
Vastuvõtja
peab vaatama, kas tegemist on duplikaadiga ja kui on tegemist
duplikaadiga, siis tuleb ikkagi kviitung saata. Vastuvõtja ei tea,
kas tema kviitungid jõudsid korralikult kohale või mitte ehk see
tähendab seda, et ta peab olema valmis korduskviitungeid saatma.
Nüüd
kirjeldan seda, kuidas saaks
loobuda negatiivsest kviitungist.
Rdt
2.2 : Saadame
pakett_0-i ja paneme vastuvõtjalt tagasi tulevale kviitungile
järjekorranumbri sisse ehk ACK_0. Nüüd saab saatja kätte ACK_0 ja
see
teatab talle, et pakett_0 on käes. Edasi saadetakse pakett_1,
mis on vigane, kuid enam ei saadeta NAK-i, vaid saadetakse
korduskviitung ACK_0, et teavitada, et pakett_0 on käes, aga sellele
järgnevat paketti ei ole.
Rakenduse
käest tulevad andmed, formeeritakse pakett_0 koos andmeosa ja
kontrollkoodiga ning pannakse pakett teele ning hakatakse ootama
kviitung_0-i. Kui pakett on vigane, siis saadetakse saatjale tagasi
ACK_1 ehk antakse teada, et pakett_0-iga midagi juhtus ja see tuleb
uuesti saata. Kui saadetakse pakett_0 ja see on korras, siis tuleb
saata tagasi kviitung ACK_0 ning siis saab saatja juba saata uue
paketi teele.
Vastuvõtja
ootab pakett_0-i ja kui tuli pakett_0, siis saadab kviitungi ACK_0 ja
kui tuli pakett_1 või vigane pakett, siis saadab kviitungi ACK_0, et
paketti korrata.
Paketid
võivad ka teepeal kaduma minna, sest teepeal olev ruuter võib olla
ülekoormatud ja ruuterisse mällu pakette rohkem ei mahu ning ruuter
lihtsalt ignoreerib sissetulevaid pakette ja need lähevad lihtsalt
kaduma.
Saatja
saadab paketi teele, pakett läheb kaduma ja saatja ootab vastust.
Kuna vastuvõtja midagi kätte ei saa, siis ongi küsimus kaua ta
ootab. Et ta ei ootaks lõputult, selleks pannakse iga paketi
saatmise järel kell tiksuma ehk kui mingi aeg saab täis ja selle
aja jooksul vastust ei tule, siis saadetakse see pakett lihtsalt
uuesti
eeldusel , et ta on teepeal kaduma läinud.
Rdt
3.0:
Saadetakse
pakett_0 ja vastu tuleb ACK_0. Saadetakse pakett_1 ja kui see jõudis
kohale vigaselt, siis saadetakse ACK_0, ehk vastuvõtja tahab, et
paketti korratakse saatja poolt. Saatja saadab paketi uuesti ja kui
see läheb teepeal kaduma, siis saatja ootab mingi aja ja kui selle
aja jooksul kviitungit ei saada, siis saadab ta selle paketi uuesti
niikaua, kui ta saab tagasi kviitungi ACK_1. Võimalus on veel, et
mitte pakett ei lähe kaduma, vaid kviitung läheb kaduma. Näiteks
saadetakse pakett_0 ja saadetakse vastu ACK_0. Kui ACK_0 oli vigane,
aga ta tuli kohale, siis saadetake pakett_0 uuesti, kuna see oli
vigane kviitung ja saatja ei
teadnud kas see on ACK_0 või ACK_1.
Vastuvõtja nüüd saab aru, et tegemist on duplikaadiga ja ta peab
ACK_0-i uuesti saatma. Kui nüüd see läheb kaduma, siis saatja
jaoks pole vahet kas läheb pakett kaduma või kviitung kaduma.
Vastuvõtja puhul on aga vahe, kuna ühel juhul ta saab paketi kätte,
teisel aga mitte. Saatja puhul lihtsalt kui aeg saab täis, tuleb
paketti korrata.
Nüüd
on olemas kontrollsummad, järjekorranumbrid, kviitungid ja uuesti
saatmised. See kõik on selleks, et paketid jõuaksid ilusti kohale
ja saaks tagada seda, et andmevahetus oleks töökindel. Saatja
saab andmed rakenduse käest, formeerib pakett_0-i, paneb andmeosa ja
kontrollsumma sisse. Saadab paketi teele ja paneb kella käima ning
ootab kviitung_0-i. Kui tuleb kviitung, mis on vigane või vale
numbriga (võib olla mingi vana kviitung olla, mis on ripakile
jäänud), siis ta lihtsalt ootab ja midagi sellega seoses ei tee,
sest ta ootab õiget kviitungit ja kell käib ning ei pea hakkama
kohe kordama. Kui enne aja ära ootamist kordame, siis võime
asjatult saata paketti uuesti võrku, sest vastus võib tegelikult
veel teel olla. Kui aeg saab täis, siis saadetakse pakett_0 uuesti
ja pannakse uuesti kell käima. Kui nüüd saadetakse mitte vigane
pakett ja tuleb kviitung_0 nagu me ootame, siis pannakse kell seisma
ja minnakse järgmisesse olekusse, kus võib saata järgmise paketi.
Kui nüüd peaks
tulema võrgust veel mingi ripakile jäänud pakett,
siis seda lihtsalt ignoreeritakse. Vastuvõtja saab aru
järjekorranumbri järgi, kui tegemist on duplikaadiga.
Probleem
võib tekkida veel siis, kui time-out on liiga lühike ja pakett on
teel kauem ning saatja ei saa kätte kviitungit.
Selle
protokolli häda on see, et me saadame ainult ühe paketi korraga.
Kui
me saadame mitu paketti, siis me saame kanalit palju paremini
koormata. See tähendab, et saame kanali kasutegurit suurendada.
Selleks on vaja protokolli, et saata mitu paketti korraga. Lõputult
korraga saata pole mõtet, sest vastuvõtja peab nende pakettiga
suutma midagi teha ja tal peab olema teatud hulk puhvrimälu, kuhu
need paketid panna. Selleks on kasutusel nihutatava
aknaga protokoll.
Pakettide jada peal liigub aken ja need paketid, mis on
aknal , neid
saame saata ja need mis on vasakul pool
akent , need on juba ära
saadetud ning nende käest on kviitungid käes. Need, mis on paremal,
neid me saame siis saata, kui nihkutame akent edasi. Paketid on
järjekorranumbritega ja kuna me ei saada enam ühte paketti, vaid
mitu paketti korraga, siis on järjekorranumbrite hulk suurem ja enam
ei piisa nullist ja ühest. See tähendab, et identifikaatoreid peab
olema rohkem ja tüüpiliselt tehakse ringikäiv identifikaatorite
hulk. Aken ei tohi olla pikem, kui on kokku identifikaatoreid. Kui on
näiteks 2 paketti, mis on teele saadetud, aga mille kohta
kviitungeid veel ei ole, siis need peab veel meeles hoidma, sest
ilmselt need tuleb uuesti saata. Need mis on veel akna all, neid
tohib veel saata, ilma et kviitungit tuleks. Kui aken on tühjaks
saadetud, siis peame ootama
jääma , sest see on see hulk, mida
vastuvõtja suudab korraga vastu võtta. Kui nüüd hakkavad järjest
tulema kviitungid, siis saab vasaku piiri edasi nihutada ja saab
öelda, et need on ära saadetud ja kviitungid on edukalt käes.
Vastuvõtja poolt, kui pakette saadakse kätte, siis saadetakse
järjest kviitungid ning on võimalik akent edasi nihutada.
//lisainfo//
Tuntud
pordinumbrid:
80
– HTTP – veebiserver alati selle pordinumbri taga
53
– DNS – nimeserver
20
– FTP (data)
21
– FTP (
control )
25
– SMTP - emaili edastusprotokoll
18.
Go- back -n
Saatja
saadab mingi hulga pakette järjest ja vastuvõtja saadab kviitungeid
mitme peale ühe. Kui vastuvõtja saab kätte kõik paketid järjest
ja need on korras, siis üks kviitung kinnitab ära kõikide
eelmiste kättesaamise. Kui tuleb time-out, siis saatja saadab kõik
kinnitamata paketid uuesti. Paketi päisesse pannakse
järjekorranumbrite hulk ja meil on aken pikkusega N. Need paketid,
mis on vasakul
aknast , on ära saadetud ja nende kohta on kviitung
olemas. Akna alguses on need paketid, mis on ära saadetud, aga nende
kohta kviitungit veel ei ole ja saatja peab olema valmis neid
vajadusel uuesti saatma. Järgmised paketid akna sees on need, mida
võib järjest saata niikaua, kuni aken on täis ja ära saadetud.
Aknast paremal on need paketid, mida ei tohi puutuda, sest vastuvõtja
puhver on määratud akna suurusega. Go-back-n kasutab kumulatiivset
kviitungit. Go-back-n omapära on veel selles, et vastuvõtja poole
pealt võtab ta pakette vastu ainult õiges järjekorras ja kui
tulevad paketid
vales järjekorras, siis neid ignoreeritakse. Kui
pakett tuleb selline nagu ta ootab, siis ta paneb selle puhvrisse ja
kui tuleb see mida ta ei oota, siis ta viskab selle paketi ära. See
teeb vastuvõtja funktsiooni lihtsamaks, sest vastuvõtjal on vaja
teada ainult ühte järjekorranumbrit ehk seda numbrit, mida ta
ootab.
Saatja
poolel – Rakenduse käest tulevad andmed ja kui järjekorranumber
mahub aknasse , siis ta formeerib paketi, paneb andmeosa sisse,
kontrollkoodi sisse ja saadab selle paketi teele. Ta paneb kella
käima siis, kui saadab kõige esimese paketi. Kui aken on täis
pakette ja uued andmed, mis rakenduse käest tulevad ei mahu aknasse,
siis ta seda vastu ei võta ja paneb selle kõrvale ning ei tegele
sellega. Kui tuleb time-out, siis ta saadab kõik paketid uuesti. Kui
vastuvõtja saab kätte paketid näiteks 1, 3, 4, 5, 6 ja 2 on puudu,
siis 1 järel ta 3., 4., 5., 6. paketti vastu ei võta, kuigi need
võivad korras olla. Kui saatja saab kviitungi kätte, siis ta
nihutab akna vasakut piiri edasi ehk (kviitungi number + 1) muutub
uueks akna vasakpoolseks
piiriks . Kui tuli kviitung ja kinnitati
kõikide pakettide kättesaamine, siis pannakse
taimer seisma.
Vastuvõtja
poolel – Võetakse pakette vastu ainult õiges järjekorras. Kui
tuleb täpselt see järjekorranumber, mida ta ootab, siis eraldatakse
andmeosa ja saadetakse rakenduse kätte ära ja saadetakse uus
kviitung teele. Nüüd järgmisena ta ootab sellist paketti, mille
järjekorranumber on
eelmisega võrreldes +1. Vastuvõtjas eraldi
üleliigset puhverdamist ei ole ning vales järjekorras pakett
visatakse ära.
Selle
protokolli hea omadus on see, et vastuvõtja pool on lihtne ehk peab
meeles
pidama ainult ühte järjekorranumbrit, aga halb omadus on
see, et need paketid, mis tulid vales järjekorras ja võisid olla
korralikult kohale tulnud, visatase ära ja korratakse, kuigi nad
võisid korralikud olla ka varem.
Oletame,
et aken on 3 paketti pikk. Kui näiteks pakett_1 saadetakse ära ja
see jõuab kohale ning tuleb tagasi ka ACK_1. Siis saadetakse
pakett_2, mis läheb kaduma. Siis saadetakse pakett_3 ja kuna see
tuli vales järjekorras, siis seda ignoreeritakse ja saadetakse teele
viimane kviitung uuesti. ACK_3-me ei tohi saata, sest see kinnitaks
ka 1, 2, 3-me kättesaamist, aga kuna 2 on puudu, siis tuleb saata
hoopis ACK_1, mis ütleb, et pakett_1 on kohal, aga pärast seda
oleva paketiga on midagi korrast ära. Kui saadakse ACK_1 kätte,
siis on võimalik saata juba pakett_4 ehk akent edasi nihutada. Kui
pakett_2-le tuleb time-out, siis saadetakse uuesti kõik alates
pakett_2-st, kõik mis
aknas on. 8 erineva järjekorranumbri puhul on
maksimaalne Go-back-n-i akna pikkus 2K-1
(identifikaatorite_arv – 1) ehk siis kui meil on 3-bitine
identifikaator ja 8 erinevat identifikaatorit, siis maksimaalne akna
pikkus võib olla 7. 2-bitise puhul on maksimaalne akna pikkus 3.
MAXwin
=
2K-1
Põhjus:
Kirjeldan olukorda, kus järjekorranumbreid on 4 (0, 1, 2, 3) ja akna
suuruseks võtta ka 4. Saadetakse neli esimest paketti (0, 1, 2, 3)
ära ning jäädakse ootama ACKi. Kui ACK aga läheb teepeal kaduma
ning saatjani ei jõua, siis oodatakse ära TTL ning hakatakse
pakette (0, 1, 2, 3) kordama. Nüüd tekibki probleem, et vastuvõtja
ootab, et talle saadetaks uus pakett_0, aga tegelikult saadetakse
vanad paketid uuesti ning vastuvõtja seda ei tea ning võtabki juba
korra kätte saadud paketid uuesti vastu. Sellepärast peabki akna
pikkus olema 3, et vastuvõtja ootaks järgmisena pakette (3, 0, 1,
2). Siis saaks vastuvõtja aru, et kui tuleb vana pakett_0, siis
tuleb see minema
visata , kuna oodatakse järgmisena pakett_3-me. Siis
kui TTL läbi saab, saadetakse uus ACK ning saatja alustab pakett_3
saatmist ning probleem on lahendatud.
19.
Selective-repeat
Valikulise
kordamise juures saadetakse ka mitu paketti järjest, aga siin
tulevad kviitungid igale paketile eraldi ja igaühel on eraldi
time-out. Kui vahepealt on midagi puudu, siis oodatakse, et see auk
saaks ära täidetud. Üks kviitung ei kinnita eelmiste kättesaamist
ehk see on individuaalne ja kinnitab ühe konkreetse paketi
kättesaamise. Vastuvõtja puhvrites võivad augud sees olla. Saatja
saadab uuesti ainult selle paketi, mille kohta time-out tuleb.
Vastuvõtja
mehhanism on nüüd keerulisem ja ta peab meeles pidama,
mis paketid on olemas ja mis ei ole ning millisele on saadetud
kviitungid ning millisele ei ole.
Saatja
pool – Akna all on need paketid, mis on saadetud ja need, millel on
kviitung tulnud. Siin on pilt kirjum. Paremal
pool akna all on need, mida võib veel saata. Need
paketid, mis on aknast väljas, neid ei tohi saata. Akent ei saa
nihutada enne, kui esimesele akna all olemale saadetud paketile
kviitung kohale jõuab. Protsess: Aknas on olemas vaba
järjekorranumber ja pakett ning see saadetakse teele. Kui on
time-out, siis saadetakse pakett uuesti ja pannakse kell käima. Kui
tuleb kviitung, mis mahub aknasse, siis märgitakse ära, et see
pakett on käes ja kui on tegemist akna algusega, siis saab akent
edasi nihutada. Kui kviitung tuleb kuhugile mujale, siis jääb aken
paika ja oodatakse ikkagi esimese paketi kviitungit, et akent edasi
nihutada. Kui tuleb time-out, siis saadetakse puuduolev pakett
uuesti.
Vastuvõtja
pool – Akna all on osa kohti, kuhu oodatakse pakette, aga mida veel
ei ole. Veel on akna all paketid, mis on kohal ja nende kohta on
kviitungid saadetud,. Kui auk on enne sees, siis tuleb akent kinni
hoida. Osad kohad akna all on need, kuhu võib veel pakette vastu
võtta ja mis mahuvad aknasse. Kui pakett on aknas, siis saadetakse
kviitung. Kui on vales järjekorras
ehk vahepealt on midagi puudu, siis puhverdatakse ja kui tuleb õiges
järjekorras, siis saab rakendusele üles kätte anda ja akent edasi
nihutada. Vastuvõtja peab olema valmis ka neid pakette vastu võtma,
mis jäävad aknast vasakule ja akna pikkuse võrra valmis kviitugeid
saatma. Seetõttu ongi kaks akent omavahel nihkes.
Siin
on saatja ja vastuvõtja aknad erinevate
kohtade peal. Kui kviitung
on ära saadetud, siis vastuvõtja lükkab selle akna edasi, aga
saatja ei saa enne nihutada akent, kui saatjasse kviitung tuleb.
Saatjal ja vastuvõtjal on hoopis erinev nägemus sellest, mis
kommunikatsioonis toimub. Kui me teeme akna liiga pika, siis tekib
probleem.
Saatja
ja vastuvõtja aknad peavad olema
ühesuurused ja maksimaalne akna
pikkus on: MAXwin = 2K
/
2
Põhjus:
Kirjeldan olukorda, kus järjekorranumbreid on 4 (0, 1, 2, 3) ja akna
suuruseks võtta 3. Saadetakse kolm esimest paketti (0, 1, 2) ära
ning jäädakse ootama ACKi. Kui ACK aga läheb teepeal kaduma ning
saatjani ei jõua, siis oodatakse ära TTL ning hakatakse pakette (0,
1, 2) kordama, kuigi vastuvõtja ootab pakette (3, 0, 1). Vastuvõtja
saab aru, et tuli teise järjekorranumbriga pakett (pakett 0), mida
ta tegelikult ei oodanud ja võtab selle vastu. Siis tuleb ka pakett
1 ning ka see võetakse vastu. Kolmandana tuleb pakett 2, aga see
jääb juba aknast välja ning visatakse minema. Õige oleks, kui
akna suurus oleks 2. Sel juhul kui toimub uuesti saatmine, siis
vastuvõtja saab aru, et saadetakse duplikaat pakette ning need
visatakse minema ning saadetakse uus ACK. Pärast seda saab saatja
aru, et tuleb saata uuesti alates paketist 2.
20.
TCP ühenduse loomine ja sulgemine
Ühenduse
loomisega seotud bitid on: RST (ühenduse uuesti loomine), SYN
(ühenduse alustamine) ja FIN (ühenduse sulgemine). Täisdupleksi
tõttu toimub loomine ja sulgemine mõlemas suunas. Näiteks A saadab
B-le, et ta soovib suhtlema hakata. Siis B formeerib sellele
kviitungi ja kinnitab, et soovib ka A-ga suhtlema hakata. Enne kui
ühendus luuakse liigub 3 paketti: kliendi poolt saadetakse päring
ühendus algatada ja SYN bit pannakse püsti ja genereeritakse baidi
number, mitmendast baidist hakatakse andmeid saatma. Saadetakse
andmete algusest ning see on ka järjekorranumber, mida hakatakse
kasutama. See tähendab seda, et alati ei alustata pakettide saatmist
baidist järjekorranumbriga 0. Kui kõik alati alustaks nullist, siis
mõni võrgus
ringlev pakett võib hoopis vastuvõtjale ka sobida,
mida tegelikult ei soovita. Kuna aga alustatakse erinevatest
kohtadest (numbritest), mis genereeritakse juhuslikult, siis see
vähendab tõenäosust, et
suvaline võrgus ringlev pakett võiks
vastuvõtjasse jõuda. Serveri pool vastab sellega, et tema tahab ka
ühendust alustada ja ta paneb selle info paketi päisesse. Kuna
tegemist on nüüd kviitungiga, siis ta kliendipoolsele
järjekorranumbrile liidab ühe otsa (SYN - tingilikult 1
bait ), sest
järgmisena ta ootab sellise järjekorranumbriga paketti. Server
genereerib ka oma esimese baidi numbri, mida tema hakkab
saatma. Klient saab kätt kviitungi oma ühenduse loomisele, siis ta
võtab SYN biti maha. Nüüd saab klient hakata andmeid saatma ja ta
peab arvestama serveri poolt saadetud kviitungit. Serveri poolt
saadetud järjekorranumbrile paneb ta kviitungi kombel +1 otsa. Nüüd,
kui server midagi
vastaks talle, siis esimene bait, mille server
kliendile saadab
olekski selle järjekorranumbriga.
Ühenduse
sulgemine on ka
kahepoolne protsess. Kõigepealt üks ütleb, et tema
soovib ühendust sulgeda ja selle peale teine saadab
kinnituse . Kui
teisel on veel andmeid saata, siis võib ta seda jätkata. Kui üks
osapooltest soovib lõpetada, siis tema saadab ühenduse
sulgemise soovi ja siis teine pool ka kinnitab, et panna ühendus kinni. Kui
üks paneb ühenduse enda poolt kinni ja kviitungit ei tule, siis ta
ei jäta seda ühendust lõputult ripakile. See tähendab, et kui
mingi aja pärast ei ole mingit aktiivset tegevust teise osapoole
poolt tulnud, siis lihtsalt pannakse see ühendus kinni. Muidu
jääks ühendus ripakile ja see tähendaks, et ühel poolel jäävad
puhvrid reserveerituks ja
ressursid on laiali jagatud ning ei suudetagi enam
midagi teha. Selliste toimingutega aetakse näiteks ka serverid umbe,
kui algatatakse järjest ühendusi ja jäetakse need ripakile.
Taimerit
kasutatakse veel ka selleks, et kui peaks veel pakette liikuma ja
teine ei ole veel ühendust sulgenud, siis on võimalik lisaks
kviitungeid saata.
21.
TCP töökindel andmeedastus
TCP
tagab töökindla andmevahetuse kasutades kumulatiivset kviitungit ja
Time-Out taimerit. Paketi saatmist korratakse siis, kui tuleb
Time-Out või tulevad topeltkviitungid. Kui TCP hakkab saatma ja loob
paketi, paneb ta sinna järjekorranumbri sisse, milleks on esimese
baidi number selles baitide jadas, mida pakett sisaldab. Siis paneb
kella käima ja kui tuleb Time-Out, siis kordab selle segmendi
saatmist ja paneb uuesti kella käima. Kui tuleb kviitung, siis see
kinnitab kõikide eelnevate kättesaamist ja pannakse uus kell käima.
Andmed
tulevad rakenduse käest, siis luuakse TCP
segment ja pannakse taimer
käima, mis hakkab sõltuma
esimesest baidist. Siis saadetakse
segment võrgukihi kätte ja järjekorranumbriks pannakse
(järjekorranumber + paketi pikkus) ehk järgmisesse paketti mineva
esimese baidi järjekorranumber. Kui on Time-Out, siis saadetakse
uuesti need paketid, mille kohta kviitungit veel ei ole ehk siin ta
käitub nagu Go-Back-N.
Kui
tuleb vastuvõtjale pakett õiges järjekorras, siis ta kohe
kviitungit saatma ei hakka, kui seda vaja ei ole. Kui tuleb veel üks
pakett, mis on õiges järjekorras ja üks kviitung on saatmata, siis
ta saadab kumulatiivse kviitungi. Kui on teada, et tuleb pakettide
jada, siis ei ole mõtet igaühele kviitungit saata ja ta paneb selle
kviitungi ootama ja kui midagi ei tule, siis saadetakse kviitung ära.
Kui on vales järjekorras pakett, siis saadetakse duplikaatkviitung,
et informeerida saatjat mingite andmete kättesaamisest, aga need on
vales järjekorras. Saatja saab vigaste olukordade kohta kahte moodi
teada: kas ta saab duplikaatkviitungi (midagi tuli kohale aga vales
järjekorras või midagi on vahepealt puudu) või saab Time-Outi
(midagi ei ole
kohale tulnud). Dopeltkviitung annab teada, et midagi on vahelt puudu
ning seda Go-Back-N-is ega Selective-Repeatis ei ole, aga TCP-s on
olemas.
22.
TCP taimerid
TCP
taimerid on kordamise taimer, püstihoidmise taimer, hoia-elus taimer
ja ajaootus taimer.
Kordamise
taimer (Retransmission
timer ):
TCP
time-out: RTT (
Round -Trip-Time) – aeg, mis kulub paketi
minekuks ühest kohast teise ja vastuse tagasitulekuks. Time-Out-i aeg peaks
olema pikem kui RTT ja mõistlikult väikse varuga, et me ei ootaks
liiga kaua ja samas väldiks ka asjatult kordussaatmisi liiga
lühikese aja tõttu. Võrgus paketid liiguvad erinevaid teid mööda
ehk pakettide liikumise ajad võivad olla väga erinevad. Time-out-i
arvutus toimub nii, et võtame senise time-outi aja mingi
koefitsendiga ja paneme talle juurde konkreetse vastuse tuleku aja.
See tähendab, et saadame paketi teele ja vaatame kui kiiresti tuleb
kviitung ning saadame jälle paketi teele ja vaatame, kui kiiresti
tuleb kviitung ning hindame vastavalt sellele aega ning määrame
time-out-i aja.
Kaalutud_keskmine_RTT
= (1 – 0,125) * kaalutud_keskmine_RTT + 0,125*konkreetne_RTT
See
tähendab, et me ühe pika erandootamise peale ei tee RTT aega liiga
pikaks ehk teeme Time-Outi määramise veidi sujuvamaks. Lisaks
sellele pannakse juurde väike varu. Pannakse juurde erinevus:
RTT_erinevus
= 0,25* (konkreetne_RTT – kaalutud_keskmine_RTT)
Üldine
Time-Out-i aeg arvutatakse nii:
Time-Out_intervall
= kaalutud_keskmine_RTT + 4*RTT_erinevus
Püstihoidmise
taimer (Persistence timer) - Kui saatja saadab paketi ja saab vastu
teadmise, et vastuvõtja puhvrid on täis, siis mingi aja pärast ta
proovib saata ühte
baiti . Kui tuleb jälle vastus, et puhvrid on
täis, siis ta proovib mingi aja pärast uuesti. See tähendab seda,
et ühe baidi saatmine annab vastuvõtjale põhjuse saata kviitungit
ja kui tal on vahepeal puhvitesse ruumi tekkinud, siis
uuel kviitungil võib vastuvõtja puhvrite pikkus olla nullist erinev ja
see tähendab, et saatmine läheb jälle uuesti käima.
Hoia-elus
taimer (
Keep -
alive timer) – Seda kasutatakse süsteemides, kus peab
olema selge, et teine osapool on elus. See tähendab, et aeg-ajalt
osapooled vahetavad omavahel lühikesi pakette ja selle järgi on
teada, et teine on olemas. Need paketid ei pea midagi sisaldama, vaid
tahetakse teada kas teine on elus.
23.
TCP voo juhtimine
Voojuhtimine
on selline, kus vastuvõtjal on puhver ja sinna ta saab pakette panna
andmevahetusest. Kui paketid tulevad, siis järjest seda puhvrit
täidetakse ja teisest otsast neid antakse järjest rakendusele kätte
ning puhvris mingi osa on täis ja mingi osa on tühi. See, mis on
tühi saadetakse TCP paketi päise kaudu saatjale, et ta teaks palju
tohib saata, sest saatja ei tohi saata rohkem, kui vaba ruumi
vastuvõtja puhvris on.
24.
TCP koormuse juhtimine
Kaudselt hinnatakse võrgukoormust selle järgi, et ooteajad lähevad pikemaks
ja kviitungid jäävad lõpuks tulemata. Kui ühendus on loodud, siis
alustatakse aeglaselt ja suurendatakse pidevalt koormust. Kui tuleb
hinnanguline informatsioon võrgust ülekoormuse kohta, siis lastakse
koormus järsult alla. TCP alguses suurendab koormust ja kui tuleb
Time-Out siis vähendab koormust ja jälle uuesti suurendab. Toimub
selline „saehamba“ moodi kõikumine.
Näide:
Alustab alguses ühe segmendiga ja tuleb kviitung, et kõik on
korras, siis saadab 2 segmenti. Tulevad mõlemad kviitungid, siis
saadab 4 segmenti. Kui nüüd tulevad ka kõigile kviitungid, siis
saadab 8 segmenti. Ta suurendab eksponentsiaalselt saadetavate
segmentide hulka. Kindlast
piirist alates suurendab ta edasi ühe
kaupa. Ehk saadab järgmisena 9 ja kviitungid tulid ja saadab 10 ning
kviitungid tulid. Kui nüüd saadab 11 ja jõuab selle tasemeni, et
tuleb otsus vastu võtta ülekoormuse suhtes.
Kui
tulevad paketid vales järjekorras, siis saadetakse topeltkviitung
viimasele õiges järjekorras tulnud paketile. Kui on kolm
topeltkviitungit, siis saadetakse see pakett uuesti, mille kohta see
kolm topemtkviitungit tuli. Teine asi, mis sunnib TCP-d kordama on
see, kui tuleb Time-Out. Sellest olukorrast tulenevalt saabki TCP
teha 2 võimalikku otsust. Kui tuleb kolm topeltkviitungit, siis ta
tõmbab poole peale koormuse ja jälle ükshaaval hakkab
suurendama koormust. Kui tuli Time-Out, siis ta tõmbab alla nulli peale seisma
ja hakkab jälle 1, 2, 4, 8 kuni selle väärtuseni, kust ta enne
alla tuli. Piiri ta paneb ülevalt alla tulekul poole peale. Kaks
erinevat stsenaariumid on sellepärast, et kolm kviitungit tuli
topelt ja Time-Outi veel ei ole, siis see tähendab, et sellest
võrgust midagi veel läbi läheb ehk võrk ei ole veel täiesti
umbes. Kui tõmbame natuke koormust alla, saame paketi ära saata.
Siis saab
tasapisi jälle suurendada. Kui tuli Time-Out, siis sellest
võib järeldada, et võrk on täiesti umbes. Ei ole mõtet poole
peale tõmmata, vaid tuleks korraks asi seisma jätta ja alustada
tuleks jälle 1, 2, 4, 8 kuni hinnanguliselt pooleni ja siis tasapisi
ülespoole. Alguses suurendatakse esponentsiaalselt ja hiljem
sammhaava ehk lineaarselt, kuni tuleb see hinnang, et kas tuli kolm
topeltkviitungit või Time-Out.
25.
UDP
Pikalt
välja kirjutatuna on see
User Datagram Protocol. See on
transpordikihi protokoll. UDP puhul on tegemist ühenduseta
andmevahetusteenusega ehk ei suhelda teisega ja saadetakse pakette
lihtsalt teele ehk ei tehta midagi erilist lisaks (
best effort). See,
mis võrgust läbi läheb, sellega ta tegeleb, samuti ei kulutata
aega ühenduste loomiste peale ja pakettide saatmise kordamisele. Iga
UDP pakett on omaette nähtus võrgus ja iga pakett liigub omaette
ning nad võivad kohale jõuda suvalises järjekorras ja ka teepeal
kaduma minna. Kõik sõltub teepeal olevate kanalite kvaliteedist.
Samuti ei kulutata aega ühenduse loomisele ning ei ole vaja ühenduse
olekut meeles pidada ning saatja ja vastuvõtja ei eralda eraldi
puhvreid. Samuti ei tegeleta pakettide meelespidamise ja
järjestamisega. Paketi päis on väiksem (2 aadressi, saatja
rakenduse pordi number, vastuvõtja rakenduse pordi number, paketi
pikkus ja kontrollsumma) ja saatmiseks kulub vähem aega. UDP ei
tegele ka koormuse reguleerimisega ehk see mis võrku saadetakse, see
ka teele läheb. UDP sobib selliste rakenduste jaoks, mis taluvad
teatud osa pakettide kaotsiminekut ning on ka kiiruse suhtes
tundlikum. UDP-d kasutab DNS ja SNMP (võrguhaldus protokoll). UDP ei
taga ajalisi garantiisid ja kanali läbilaskevõimet. See, mis on
võimalik võrgust läbi saata, see ka läheb ning ei tegeleta aja
raiskamisega nagu TCP korral. UDP kontrollkoodi arvutamine käib nii,
et võetakse paketti, kui 16 bitiseid kahendarve, bitid liidetakse
kokku ja lõpus
nullid tehakse ühtedeks ja ühed nullideks ning see
inverteeritud summa ongi kontrollkoodiks. See saadetakse vastuvõtjale
ning vastuvõtja liidab reeglite järgi kokku ja saab inverteeritud
kontrollsumma ja kui klapib, siis tulemuseks peavad olema kõik ühed.
See tähendab , et kontrollkood klappis.
26.
Datagrammvõrgud ja virtuaalahelatega võrgud
Pakettedastusel
on kahte sorti edastusviise: 1) Puhas pakettedastus – (datagramm
võrgud) Iga pakett liigub omaette ehk pakett on sõltumatu üksus.
Kui pakett jõuab ruuterisse kohale, vaadatakse paketi päist ja seal
on kirjas, kuhu sihtpunkti ta jõudma peab. See tähendab seda, et
marsruut on paika panemata ja igal ristteel võetakse vastu otsus ehk
iga pakett marsruuditakse igas võrgusõlmes eraldi. Kui fail koosneb
kolmest paketist, siis iga pakett võib eri teid mööda lõpp-punkti
kohale jõuda. Siin IP aadress määrab ära sihtpunkti aadressi. 2)
Virtuaalkanali puhul toimub alguses marsruudi otsimine ehk pakett
tuleb ruuterisse kohale, siis vaadatakse, kuidas seda edasi saata ja
kui tuleb järgmine pakett, siis toimub sama asi. Virtuaalkanal
pannakse paika ja selle kohta saadetakse informatsioon ruuteritesse.
Virtuaalkanalite puhul on igas võrgusõlmes informatsioon, kuhu
pakett edasi saata ning mingil määral jääb töötlusaeg sisse,
mis on aga väiksem aeg, kui kulub marsruudi otsimiseks. See tähendab
seda, et marsruut on paika pandud ja paketid liiguvad kindlat
marsruuti mööda ning ei pea igas võrgusõlmes eraldi marsruuti
küsima, aga konkureeritakse kõigi teiste pakettidega selle tee peal
ehk ei hõivata kogu resurssi endale. Näiteks ATM võrkudes
kommutatsioonisõlmed ei tea sihtpunkti aadressi, vaid teavad kust
tuleb pakett ja kuhu see tuleb
edasi saata. Selle võrra on aadress väiksem ja marsruutimisotsust
lihtsam ja kiirem teha.
27.
Marsuutimine
Meil
peab olema mingi
algoritmi järgi tabel ja tabelis on väljad, mille
järgi tehakse otsus, kuhu pakett edasi saata.
Marsruutimisprotokollide informatsiooni järgi tehakse valmis tabel.
Algoritmi ei täideta iga paketi jaoks. Iga paketi jaoks võetakse
informatsiooni tabelist ja kui tekib vajadus siis see tabel
arvutatakse uuesti ümber ja siis edasine marsruutimine toimub läbi
tabeli. Kui pakett saabub, siis vaadatakse aadressi välja või siis
virtuaalkanali identifikaatori välja. Marsruutimisotsus tähendab
seda, et vaadatakse marsruutimistabelist, mida paketiga edasi teha.
See otsus tehakse tavaliselt üpris kiiresti, aga neid tabeleid tuleb
teatud aja järel
uuendada , kui need ei vasta enam võrgu
tingimustele. Kui on adaptiivse marsruutimisega tegemist, siis
marsruutimine üritab ennast
kohandada võrgu olukordadele. Kui
kusagil võrgus on ülekoormus, siis see tabel arvutatakse uuesti ja
üritatakse seda ülekoormatud kohta vältida ja suunata
liiklust kuskagilt mujalt kaudu.
Võime
kujutada ette võrku, kui ühte suurt
graafi . Graafi tippudeks on
võrgusõlmed (hostid, ruuterid) ja graafi kaarteks on kanalid, mis
on nende võrgusõlmede vahel. Igal kanalil võib olla väärtus.
Igal kanalil on oma hind ning see võib sõltuda erinevatest
asjadest: näiteks rahaliselt tingitud, kiirusest tingitud,
ülekoormusest tingutud. Vastavalt sellele on kanalitel ka
mingisugune väärtus. Me
otsime kõige odavamat teed läbi erinevate
võrgusõlmede ühest punktist teise. Marsruutimise algoritmi idee
eesmärk ongi teades informatsiooni võrgu kohta, me üritame leida
iga võrgusõlme jaoks kõikidesse punktidesse kõige odavama tee.
Tee maksumus on see, mis on selle tee hind.
Marsruutimine
peab tagama:
1)
Korrektse marsruudi – Kui me otsime teed punktist A punkti B, siis
sellesse punkti B on meil võimalik ka jõuda, kui vähemalt üks
kanal eksisteerib punkti A ja punkti B vahel.
2)
Marsruutimise
algoritm peab olema võimalikult lihtne – Me ei saa
kulutada palju aega marsruutimise algoritmi tööks, sest
marsruutimise algoritm töötab ruuteri peal ja ruuteril on üks
protsessor , mis peab tegelema marsruutimisega ja see on tema põhitöö.
Seega, kui me kulutame marsruutimise algoritmi täitmiseks liiga
palju ruuteri aega, siis seda vähem jääb aega tegeliku
marsruutimise jaoks.
3)
Marsruutimise algoritm peab olema vea ja igasuguse eriolukordade
kindel – Kui üks kanal on katki, siis peab algoritm suutma tööd
ümber korraldada selliselt, et otsitakse alternatiivseid teid.
4)
Marsruutimisalgoritm peab töötama
stabiilselt – Ei tohi tekkida
igasugu tõmbluseid ehk kui üks kanal on ülekoormatud, siis
suunatakse kogu
liiklus teise. Kui on teine ülekoormatud, siis
suunatakse tagasi esimesse ja nüüd kui see jälle on ülekoormatud
siis teise jne. Pigem peaks liiklust hajutama, mitte täie auruga
ühte ja teise vahel pendeldama.
5)
Marsruutimise algoritm peab olema õiglane – Kõigile peab olema
võimalus liigutada pakette läbi võrgu.
6)
Marsruutimisalgorim peab andma optimaalse tulemuse – Ei ole olemas
ideaalset, õiget ja
parimat tulemust. Marsruutimise otsused võetakse
alati vastu teatud mõttes
hilinenud informatsiooni põhjal. See
tähendab, et
kusagilt saadakse info, et võrgus on ülekoormus. See
info liigub läbi võrgu sellesse punkti, kus hakatakse
marsruutimisotsuseid tegema ja tabeleid
arvutama . Sel ajal kui info
liigub, võib ülekoormus hakata juba kaduma.
7)
Marsruutimise algoritmi täitmine võtab mingi aja – Selle aja
jooksul võib võrgus juba midagi muutuma hakata. See tähendab, et
marsruutimise otsused võetakse alati vastu vananenud info põhjal.
See tähendab, et ei ole mõtet üritada selle vananenud info põhjal
välja arvutada väga head ja täpset otsust. See on niikuinii teatud
mõttes vigane.
Marsruutimisotsuste
vastu võtmine kriteeriumid:
1)
Mitu sammu on ehk läbi mitme ruuteri peame liikuma – Võrkudes me
teepikkust ei hinda mitte meetrites, kliomeetrites, vaid selle järgi
mitu ruuterit teepeal on. Kui üks tee on 10 meetrit ja seal on 5
ruuterit ja teine tee on
kilomeeter ja seal on üks ruuter, siis see
kilomeetrine tee võrgu mõttes on lühem, sest üks ruuter
kulutab oluliselt vähem paketitöötluseks aega, kui viis ruuterit.
2)
Reaalne maksumus – Võrkudes võetakse raha selle eest, et me seal
andmeid liigutame.
3)
Ajalised viited – Iseloomustab seda, kui
koormatud on võrk.
4)
Kui palju võrgust läbi läheb – Iseloomustab seda, kui kiired ja
kvaliteetsed kanalid seal on.
Marsruutimise
otsuseid võib teha paketi kohta või sessiooni kohta. Kui tegemist
on datagramm võrkudega, siis iga paketi kohta tehakse see otsus
edaldi. Kui tegemist on sessiooniga ehk virtuaalkanaliga, siis
virtuaalkanal pannakse paika ja edasi andmed liiguvad juba läbi
selle virtuaalkanali.
Otsuseid
võib vastu võtta: 1) Igas võrgusõlmes – Igaüks saab teada info
kogu võrgu kohta ja igaüks arvutab endale marsruutimistabeli. 2)
Keskses võrgusõlmes – See arvutab tabeli valmis ja saadab kõigile
laiali 3) See kes saadab paketi paneb paketi päisesse ka marsruudi
kirja ja sedamööda see pakett ka liigub (mõnedes
tööstusautomaatika võrkudes kasutatakse)
Informatsiooni
kogutakse: 1) Mitte mingist informatsioonist, mis võrgus on 2)
Lokaalset informatsiooni – Vaatame, milline väljund on vähem
koormatud ja läbi selle saadame paketi teele ja las siis edasi
marsruuditakse teda kuhugi 3)
Naabrite käest 4) Marsruudi ehk tee
pealt 5) Kõigi käest – Kõik
saadavad kõigile informatsiooni.
Infot
uuendatakse ja kogutakse pidevalt, mingi perioodi tagant, siis kui
toimub võrgus suurem koormuse muutus või siis kui toimub mingi
võrgu
topoloogia muutus.
Fikseeritud
marsruutimine – Marsruutimistabel on fikseeritud ja paika pandud ja
kogu edaspidine marsruutimine toimub tabeli järgi ja seda tabelit ei
uuendata enne, kui tekib vajadus kogu marsruutimist ümber
korraldada. Seda kasutatakse tööstusvõrkudes, sest seal on
seadmete asukohad kindlalt paigas, kuni süsteem töötab.
Kontorivõrkudes aga pidevalt võib midagi muutuda, kui keegi tuleb
oma sülearvutiga ja paneb selle võrku või pannakse näiteks üks
ruuter juurde ja 5 arvutit juurde ja tekitatakse uus alamvõrk ning
siis ongi kõik asjad paigast ära. Fikseeritud marsruutimine sobib
siis, kui võrgu konfiguratioon on suhteliselt stabiilne ja on teada
kustkaudu seda liiklust on võimalik suunata.
Flooding
– Võrgus korraldatakse üleujutus. Üks ruuter saadab paketi teele
kõikidesse väljundkanalitesse. Järgmised saadavad kõikidesse
edasi välja arvatud sinna kus see pakett tuli. Sellel on teatud head
omadused. Paketid läbivad kõikvõimalikud teed ja kui punktist A
punkti B on vähemalt üks kanal olemas, siis see leitakse üles.
Esimene pakett, mis jõuab sihtpunkti on läinud mööda parimat teed
ja see võetakse marsruudiks. See tähendab, et meil ei ole vaja
mingit infot võrgu kohta küsida. Korraks ujutatakse võrk üle ja
siis ülejäävad paketid visatakse lihtsalt minema.
Juhuslik
marsruutimine – Kui pakett jõuab võrgusõlme, siis visatakse
täringut ja vaadatakse, kuhu ta edasi saata. Head lõpptulemus pole
päris kindel, aga kui meil on võrdväärsed alternatiivid, siis
tasub neid juhuslikult valida, sest see lihtsalt hajutab nende vahel
selle koormuse ära.
Adaptiivne
marsruutimine –Seda kasutatakse kõige rohkem. Üritatakse lähtuda
sellest, kas võrgus on häireid ja ülekoormust ning vastavalt
sellele üritatakse võrgus koormust hajutada. Sellel on ka halvad
omadused. Meil on vaja palju informatsiooni võrgu kohta.
Informatsioon saadakse ühest kohast ja kasutatakse teises kohas ehk
infot on vaja transportida. Selleks peab kasutama sama võrku, mis
andmete liigutamiseks ning see tähendab, et võtame osa
võrguressursist ära. Samuti otsuse tegemine on keeruline ehk meil
peab olema marsruutimise algoritm, mille põhjal kogutud infost
lähtudes otsuseid teeme. See võib tähendada, et reageerime
väikestele ülekoormustele liiga kiiresti ja hakkame liiklust mujale
suunama, kuigi see koormus mingil hetkel ka ise laheneks. Adaptiivne
marsruutimine parandab võrgu jõudlust ja võrgu läbilaskevõimet.
See tähendab, et me reguleerime koormust ja me saame ka
võrgukoormust hajutada.
Marsruutimise
tehnikad , mida kasutatakse: 1) Teada host, kuhu tahame jõuda ja meil
on teada võrgusõlm läbi mille me pääseme sinna. 2)
Võrguspetsiifiline marsruutimine – marsruutimistabelis võib olla
kirjas võrk 3) Hosti-spetsiifiline marsruutimine 4) Vaikimisi
marsruutimine – ei saa kõiki võimalikke võrke ja hoste kirja
panna, sest marsruutimistabel läheks meeletult suureks.
Marsruutimine
võib olla staatiline ja dünaamiline. Staatiline on see, kus paneme
kanali pikaks ajaks paika ja ta jääb paika. Dünaamiline on see, et
me muudame marsruutimistabelit, kui võrgus midagi juhtub.
Ruutimisalgoritme võib jagada selliste kriteeriumite järgi: 1)
Arvutavad välja ühe tee või mitu alternatiivset
varianti 2)
Tasapinnalised või hierarhilised – see tähendab, et kas kõik
ruuterid on võrdsed või on ka ruuter, mis oskab marsruutida
piirkonna sees ja piirkodade vahel. 3) Host või ruuter oskab teha
marsruutimisotsuseid 4) Piirkonnasisene või piirkondadevaheline
marsruutimine.
28. Link state marsruutimisalgoritm
See
on kanalioleku algoritm. Kõigil võrgusõlmedel on olemas info kogu
võrgu kohta. See info saadetakse kõigile laiali. Kõik teavad
kõike, mis võrgus on ehk kõik teavad täisgraafi ja igaüks teeb
vastavalt sellele enda jaoks marsruutimistabeli valmis.
C(x,y)
– kanali väärtus võrgusõlmest x võrgusõlme y. Kui x-i ja y-i
vahel on veel keegi, siis me paneme algul kanali väärtuseks, et ta
on lõpmatult suur. See ei ole kanal, mida saaksime kohe kasutama
hakata. Algoritmi väärtus muutub töö käigus.
D(v)
– D väärtus sihtpunktist läbi erinevate võrgusõlmede kuni
tipuni v välja.
P(v)
– teepeal olev eelviimane tipp enne viimast v-d.
N’-
võrgusõlmede hulk, mida oleme
algoritmiga läbi vaadanud.
Algoritm
töötab selliselt: Alguses paneme ühe tipu tippude hulka N ja
otsime üles tipu u naabertipud v need mille vahel ei ole rohkem
võrgusõlmi ehk lihtsalt kanal. Nende kohta me teame seda kanali
väärtust. Kui tippude vahel on rohkem sõlmi kui üks siis nende
jaoks me ütleme, et te väärtus on lõpmatult suur.
Algoritm
töötab sellise põhimõtte järgi, et meil on teada tipp v ja nüüd
kui panime juurde sellesse hulka tipu w. Kui leiame, et uuest tipust
w on olemas tee tippu v, mille kohta me juba teame teepikkust, siis
me võrdleme, kas seni olev teadmine D(v) või uus teadmine D(w)
+c(w,v), et
kumb nendest teedest on lühem ja annab parema tulemuse.
Tuleb võrrelda kahte teed ning nende võrdluse tulemusena me saame
odavama tee ja nii tuleb kogu
graaf läbi käia.
Näide:
Otsime tipust u kõikvõimalike teid kõikidesse tippudese. u
naabrid on uv väärtusega 2 ja ux väärtusega 1 ja uw väärtusega 5. U-st
y-
isse ühe
sammuga ei saa ehk selle tee hind on praegu lõpmatult
kallis. U-st z-i ka ühe sammuga ei saa ehk selle tee väärtus on ka
lõpmatult kallis. Tuleb otsida välja kõige odavam tee ja see on ux
väärtusega 1. Esimese sammuna tuleb kirjutada x tabelisse. Nüüd
tuleb arvutada kõik
teepikkused välja lähtudes sellest, mida me
saime tänu selle x-i. U-st v-ni on 2, aga läbi x-i on 2+1=3 ehk
siin
teepikkus ei
paranenud ja 2 jääb alles. U-st w-sse on 5, aga
läbi x-i on 1+3=4 ehk läbi uue tipu saame parema tulemuse ehk see
tähendab, et u-st w-sse ei ole mõtet otse minna, vaid läbi x-i.
U-st pääseme ka x-i kaudu y-isse, mille väärtus on 1+1=2. Kui
tahame jõuda u-st w-ni, siis uw väärtus on 5, uxw väärtus on 4,
aga uxyw väärtus on 3 ehk see on hoopis parim tulemus. Nüüd
pääseme ka z-ini ja uxyz puhul on tee väärtus 1+1+2=4. Kõikide
muude tippude kaudu minnes oleks väärtus suurem ehk kõige
minimaalsem tee tipust u tippu z on uxyz. Nii ühe võimalusena
marsruuterid töötavad. Neil on olemas kogu täisinfo võrgu kohta
ja sellest lähtuvad kasutades Dijkstra algoritmi, siis saadaksegi
valmis graaf ja tekib marsruutimistabel.
29. Distance vector marsruutimisalgoritm
Info
on olemas naabrite käes, paneme juurde hinna naabriteni ja vastavalt
sellele tekitame tabeli. Kui tabelis mingi asi muutub, siis saadame
selle info omakorda naabritele tagasi. See tähenda seda, et selle
algoritmi puhul tuleb panna juurde hind endast naabrini ja selle
järgi leida parim tee.
dx(y)
– Tee x-ist y-ni on tee c (x-ist v-ni) ehk vahetu naabriga ja
sellele lisaks dd(y)
(v-st y-ni). See tähendab, et naabrid annavad informatsiooni, kuidas
nendest kuhugi pääseb ja mina
panen juurde selle, kuidas naabrini
pääseb ja selle põhjal tehakse marsruutimisotsus.
dv(z)=
2+1+2=5; dx(z)=1+2=3;
ddz=1+2=3
du(z) < = 4
Näeme,
et parim tee on uxyz, mille väärtus on 4.
Bellman-
Fordi näide: Teeme marsruutimistabeli tipu u kohta. Me otsime tipu u
naabertipu v, mille vahel ei ole rohkem võrgusõlmi, vaid on ainult
kanal. Nende kohta me teadme kanali väärtust.
Kui tippude vahel on rohkem sõlmi kui üks, siis nende jaoks me
ütleme, et see tee väärtus on lõpmatult suur. Tuleb otsida välja
minimaalne tee. Naabrid annav oma informatsiooni, mina panen juurde
teepikkuse naabriteni ja leian minimaalse.
Algoritm
töötab nii, et kui toimub lokaalse kanali väärtuse muutus või
tuleb naabri käest informatsioon, et midagi on muutunud teede
väärtuses, siis arvutatakse tabelit uuesti ümber. Kui mingis
teeosas tekib muudatus, siis sellest informeeritakse omakorda
naabreid. Nii see info mööda võrku läbi naabrite laiali levib,
kuni kõik on saanud oma
tabelid ära uuendatud.
Näide:
Tegemist on väikse võrguga.
x->x=0
ja x->y=2 ja x->z=7 (x rohkem ei tea midagi ja see on
lähtepunkt)
y->y=0
ja y->x=2 ja y->z=1
z->z=
0 ja z->x=7 ja z->y=1
See
info saadetakse naabritele.
Dx(y) = 2
Dx(z) = 3
Info
on olemas naabrite käes, paneme hinna juurde naabriteni ja sõltuvalt
sellest tekitame tabeli. Kui tabelis mingi asi muutub, siis saadame
selle kohta info vastvalt naabritele tagasi. Algul vaatame oma
teepikkused ära, siis saame naabrite käest lisainfot ja vastavalt
sellele korrigeerime tabeleid. Nii tabelid muutuvad. Kui tabelis
toimus muutus, siis need saadetakse veel naabritele laiali ja kui
nüüd
muudatust ei olnud, siis algoritmi töö jääb seisma.
Kui
kanali väärtus muutub, et y-st x-i väärtus läks üheks, siis ta
saadab selle info z-ile ja z saab teada, et läbi y-i pääseb x-i
ühega ja tema paneb selle ühe juurde ja saab kahe. Kuna tabeli sisu
muutus, siis ta saadab selle tabeli y-ile ja y vaatab, et otse x-i on
1, läbi z-i x on 3. See tähendab, et z transpordib x-i 1+1=2, y
paneb z-ile ühe juurde, saab kolm. Miinimul on 1 ehk see tähendab,
et y sõidab x-ini otse ehk ühega. Nii tabeli väärtus muutub.
Kui
väärtus läheb halvemaks. Kui enne oli y-st x-i 4 ja see asendus
60-ga. Z enne ütles, et tema kaudu on 5 ja y pani ühe otsa ja sai
6. Y teab, et läbi z-i x-i on 6. Z teab, et läbi y-i on 6, paneb
sellele ühe otsa, saab 7. Z ütleb, et läbi tema on 7, y paneb ühe
otsa saab 8. Saadetakse tabel ja z paneb ühe otsa ja läbi y-i saab
9. Halvad uudised levivad aeglaselt ja see on selle algoritmi nõrk
koht. Lõpuks tabel loksub paika, et y-st x-i ei ole mõtet
transportida otse väärtusega 60, vaid läbi z-i väärtusega 51.
Selleks, et pendeldamist vältida, tehakse tabelisse täiendus. Kui z
transpordib pakette y kaudu x-i, siis valetab y-le, et tee z->x on
lõpmatult suur. Nii saab tabeli kiiremini korda, kui on tegemist
halbade uudistega.
30.
Hierarhiline marsruutimineInternet
jagatakse administratiivseteks piirkondadeks (ülikooli võrk,
ettevõtte võrk jne). Toimub kahel tasemel marsruutimine ehk
ülikooli võrgu
servas olevasse ruuterisse ja siis sisemine
ruutimine. Kõik maailma ruuterid ei pea teadma, kuidas ülikooli
võrgu sees ruutimine toimub, vaid on teada üks ruuter, mille kaudu
pääseb sisevõrku ligi.
Intra-AS
– piirkonnasisene marsruutimine
Inter -AS
– piirkonnaväline marsruutimine
Marsruutimine
toimub selliselt, et kõigepealt host-ist läbi ruuterite
servaruuterisse. Sealt läbi ruuteritevahelise marsruutimise teise
piirkonna servaruuterisse. Seal piirkonna sees Intra-AS ruutimise
abil kindla hostini.
///
Näited
Kui
meil on tegemist võrguga x ja me oleme võrgupiirkonnas AS1, siis
meil on vaja informatsiooni, kuidas x-i pääsetakse läbi 1c ja 3a
ja siit ka x-i jõuame.
Kui
x saab olema kahe piirkonnaga seotud, siis on olemas informatsioon
ruuteritel 3a ja 2a ja need omakorda informeerivad järgmisi
ruutereid.
31.
IP aadress ja MAC aadress, ARP
Võrgukihi
aadress on mõeldud selleks, et ühest otspunktist teise saaks
liikuda IP-aadressi järgi marsruutides lõpp-punktini välja läbi
erinevate võrkude. IP-aadress muutub seoses sellega, kui me viime
arvuti teise kohta. Kirjeldan protsessi
Ipv4 baasil, kuna see on
praegusel hetkel veel suuresti kasutuses.
Füüsilise
aadressi mõte on see, et me
liigume ühe kanali piires ühest
punktist teise ning siis jälle järgmise kanali piires ühest
punktist teise kuni me jõuame lõpp-punktini välja. Need on 48
bitised aadressid ja need on võrgukaardi sees olemas ning üldiselt
seda ei muudeta. MAC aadress käib arvutiga kaasas ja igas võrgus,
kus see arvuti viibib on tema MAC aadress alati sama.
IP-aadressi
protokolli päis: 1) versiooni number (4 või 6) 2) päise pikkus 3)
kogu paketi täispikkus 4) fragmenteerimise väljad 5) TTL – arv
mitu sammu läbi mitme ruuteri pakett võib teha (see on selleks, et
pakett ei jääks rändama ehk iga ruuter lahtuab sellest -1 ja kui
see arv saab võrdseks nulliga, siis visatakse see pakett ära, kuna
ta on läinud rändama) 6) millise protokolli kätte tuleb tuleb
paketi sisu anda 7) päise kontrollsumma 8) kaks IP-aadressi, mis on
32-bitised 9) lisaväljade osa 10) andmeosa
Fragmenteerimine
– Erinevatest kanalist ei pruugi minna läbi nii pikad paketid, kui
need on teele pandud. Igal võrgutehnoloogial on oma maksimaalne
paketi pikkus (MTS –
maximum transfer
size - see on baidi jada, mis
korraga ühest võrgukanalist läbi lastakse). Kui see piirang on
olemas, siis tuleb suurem pakett ära tükeldada mitmeks väiksemaks
ja lisada ka vastav päis. Kokkupakkimine toimub sihtpunktis ehk ei
ole mõtet vahepealsetes ruuterites neid uuesti kokku pakkida, sest
võib veel tulla ette selline kanal, kust muidu läbi ei lähe.
Võrgutasemel toimub samuti pakettide tükeldamine ja kokkupakkimine
transpordikihi jaoks. Paketi päises on identifikaator.
IP-aadress
– See on üks olulisemaid aadresse võrkude maailmas ja selle järgi
leitakse üles kindel arvuti suures Internetis. See koosneb neljast
baidist ja 32 bitist ning see kirjutatakse kümnendarvudena, kus on
punktid vahel. Maksimaalne aadress on 255.255.255.255, sest baidi
sisse mahub maksimaalselt 0-255 ehk
suuremaid arve ei saa olla. Igal
ruuteril
sisend ja väljund IP-aadressid on ka erinevad. Täpne
olekski öelda, et IP-aadress on sisend-väljund
liidese aadress,
mitte arvuti ega ruuteri aadress.
Alamvõrgud
– Ühise aadressiosaga võrgusõlmed,
kusjuures nende vahel ei ole
ühtegi IP-aadressiga adresseeritavat võrgusõlme.
IP-aadress
jaguneb kaheks: Kui kogu aadress on näiteks 223.1.1.1 või 223.1.1.2
või 223.1.1.3, siis alamvõrgu aadressi osa on 223.1.1 ja arvuti
aadressiosa 1, 2, 3 lõpus.
Alamvõrgu
mask (Subnet mask) – see ütleb ära, kui suur osa täisaadressist
on võrguaadress ja kui suur osa on hosti aadress. Kaldkriipsu järel
olev arv ütleb ära, mitu bitti aadressist on võrguaadress ja
ülejäänud jääb hostide aadressiteks. IP-aadressi
on võimalik saada nii, et see on võimalik konfigureerida
arvutile ning see on fikseeritud IP-aadress, mis arvutil on ja ka jääb
niikaua kuni võrguadministraator leiab, et see tuleb ära muuta. On
ka teine võimalus IP-aadressi konfigureerida ja see on dünaamiline
hosti konfigureerimise protokoll ehk
DHCP .
Aadressite
jagamine toimub nii, et iga teenusepakkuja saab oma aadressiruumi,
näiteks 20 bitine osa on aadresse ja võib selle jagada erinevate
organisatsioonide vahel. IP-aadressiruumi jagab selline
organisatioon nagu ICANN. Ta jagab aadressiruume, haldab nimeteenuseid ja
domeeninimesid.
Kui
me paneme arvuti võrku siis meil on vaja:
1)
IP-aadressi arvutile määrata
2)
Võrgumaski määrata
3)
Vaja teada lähima ruuteri IP-aadress, et teada kuhu meie arvutist
paketid lähevad, et see edasi saaks marsruuditud
4)
Nimeserveri IP-aadress, kust me saame nimele vastavat IP-aadressit
küsida
Ühest
arvutist teise paketi saatmine:
Me
ise olema arvuti A ja
soovime saata infot arvutile B. Kui meil on
teada arvuti B IP-aadress ja selle järgi meil on vaja teada arvuti B
MAC aadress. IP aadressi järgi saame teada, kas arvuti B on samas
võrgus või tuleb pakett marsruutida läbi mingi marsruuteri. Kui ta
on samas võrgus, siis saadetud datagramm pakitakse kanalikihi
kaadrisse ja kanalikihi
kaadri päisesse pannakse kaks MAC aadressi
(kellele ja kes) ning siis liigub see
kaader kanalikihi piires A-st
B-ni.
Selleks
on olemas ARP (address resolution protocol) tabel, et saada teada
arvuti B MAC aadressi, kui me teame IP aadressi. Sellega saame küsida
IP aadressile vastavat MAC aadressi. ARP tabelis on kirjas IP
aadress, MAC aadress ja TTL. Kui info salvestatakse tabelisse, siis
sinna pannakse mingi aja näit juurde ning sellest lahutatakse iga
sekundiga üks maha ning kui taimer jõuab nulli, siis need teadmised
unustatakse ära. Tabelisse ei jää infot, mida pole kaua aega vaja
olnud ning mida tõenäoliselt ei lähe ka niipea vaja. See tähendab,
et tabelit ei ole vaja tühjendada, vaid see tühjeneb iseenesest.
ARP ongi mõeldud selleks, et me saaksime lokaalvõrgu piires küsida,
et kui keegi tunneb ära oma IP aadressi, siis olgu nii kena ja
vastaku oma MAC aadressiga.
ARP
tööpõhimõte:
Alguses
saadetakse lokaalvõrgu piires kõigile ARP päring ning küsitakse,
kellele kuulub selline IP aadress ning see saatku vastu oma MAC
aadress. Kõik, kes lokaalvõrgus on,
vaatavad üle enda IP-aadressid
ning võrdlevad, kas nende oma oli see millele tehti päring. Kui
keegi tunneb ära oma IP-aadressi, siis ta saadab ainult küsijale
oma MAC aadressi vastu. See info pakkaksegi ARP tabelisse koos
TTL-iga ning see info seisab seal nii kaua kuni taimer on saanud
nulliks ning pärast seda informatsioon unustatakse.
Andmete
saatmine läbi ruuteri teise lokaalvõrku:
Kui
arvuti A tahab saata arvutile B paketti. Esimene asi, mida ta teeb on
see, et ta vaatab oma marsruutimistabelist IP aadressi järgi, kus
arvuti B asub. See tähedab, et tal on vaja teada, kas B asub temaga
samas võrgus või mitte ning selle saab ta teada võrgumaski järgi.
Kui võrgumaskid on samad, siis tähendab, et nad on samas võrgus.
Kui A ja B ei ole samas võrgus, siis A vaatab oma
marsruutimistabelist, et milline on see ruuter, mille kaudu ta
pääseks B-ni saatma. Siis ta saab teada marsruutimistabelist, et
selleks ruuteriks on R. Marsruutimistabelid on nii marsruuteritel kui
ka hostidel. Selleks, et ruuterile R saata on vaja tema MAC aadressi.
Me ei saada mitte IP aadressiga R-ile ehk IP tasemel see pakett jääb
samaks. IP tasemel on kaks aadressi ( arvuti A IP aadress ja arvuti B
IP aadress). Selleks et R-ile saata on vaja teha kanalikihi pakett,
mille sees on kaks MAC aadressi. Kui pakett jõuab ruuterini, siis
harutatakse lahti jälle IP osa (kus on arvuti A IP aadress ja arvuti
B IP aadress). Nüüd ruuter vaatab marsruutimistabeli järgi ning
leiab, et ta on arvutiga B samas võrgus. See tähendab aga seda, et
nüüd on vaja teada arvuti B MAC aadressi. Kui seda ARP tabelis ei
ole, käivitatakse jälle ARP ning saadetakse päring kõigile
küsimusega, et kellele kuulub selline IP aadress ning oodatakse
vastu selle arvuti MAC aadressi. Kui B on töövalmis, siis ta vastab
oma MAC aadressiga. Selleks, et ruuter R saaks arvutile B info saata,
peab ta formeerima uuesti kanalikihi paketi, mis sisaldab kahte kahte
MAC aadressi (ruuteri MAC ja arvuti B MAC aadressid). IP tasemel
aadressid jäävad samaks ning pakett jääb samas nii nagu ta on,
aga kanalikihi tasemel iga kord vastavalt sammule aadressid muutuvad.
32.
DHCP
DHCP
(
Dynamic Host Configuration Protocol). See
võimaldab arvutil võrguga liitudes küsida vaba IP-aadress. See
tähendab, et võrgus on olemas DHCP server (selleks võib olla mingi
ruuter või server või arvuti), kelle käes on vabade aadressite
nimekiri ja kui arvuti liitub võrguga, siis ta küsib
sellelt serverilt aadressi. DHCP variant on hea ja vajalik siis, kui võrgus
olevate arvutite hulk on muutuv, näiteks
WIFI võrkudes. See
tähendab, et aadressid ei ole fikseeritud ja igakord, kui keegi
võrguga liitub, saab ta mingi kindla aadressi. Kui arvuti pöördub
DHCP võrku, siis algselt ta pöördub sellise aadressiga kus on kõik
ühed. See on „
broadcast “ aadress ehk leviaadress ja selle
võtavad vastu kõik, kes võrgus on. Pordi number 67 tähendab seda,
et see on mõldud kõigile, kes võrgus on ja kui selles võrgus on
DHCP server, siis see võtab vastu. Tal endal aadressi ei ole ja
seega ta paneb saatja aadressiks nulli ja pordi numbriks 68, et ta on
DHCP klient. Sellele transaktsioonile pannakse identifikaator, et kui
vastus tuleb, on see sellega seotud. DHCP server saab selle kätte ja
teised saavad ka kätte, kuna neil ei ole serverit, siis nad ei
vasta. Serveri aadress on teada ja pordi number on 67. Kui ta nüüd
kliendile vastab, siis kliendil aadressi veel ei ole, see tähendab
seda, et vastus läheb kõigile ja kliendi pordinumber on 68. Server
pakub välja kindla aadressi kindlaks ajaks. Klient võib saada mitu
pakkumist või ka ühe pakkumise. Siis klient vastab taas aadressiga
kõigile, et tema teeb nüüd selle aadressi peale päringu, mida
talle pakuti. See on selleks, et server saaks aru, et see klient on
endale nüüd aadressi saanud. DHCP aadressid antakse mingiks
ajaperioodiks ja kui see aeg saab läbi, siis on võimalik seda
pikendada. Kuna kliendil endal veel aadressi ei ole, siis ta paneb
saatja aadressiks ikka veel nullid, sest see ei ole veel talle antud
aadress, vaid
pakutud aadress. Nüüd tuleb kviitung, et aadress on
kinnitatud kiendile. Server nüüd taaskord teavitab, et see kindel
aadress on kindlal kliendil olemas.
33.
NAT
NAT
(
Network Address
Translation ) on sisuliselt võrguaadressi
teisendamine/ümbernimetamine. See võeti kasutusele sellepärast, et
IP-aadresse palju ei ole ja need saavad otsa. Tavaliselt antakse
võrguomanikule üks IP-aadress ja sisevõrgu aadressid võib panna
täiesti standardi järgi vabalt. Sisevõrkude jaoks on olemas
sellised kokkuleppelised aadressid: 1) 10.0.0.0 kuni 10.255.255.255
2) 172.16.0.0 kuni 172.16.255.255 3) 192.168.0.0 kuni
192.168.255.255. Neid sisevõrgust välja ei marsruudita. Kui
sisevõrgus olev arvuti saadab võrku paketi teele ja tahab, et see
jõuaks sisevõrgust välja kindlale IP-aadressile, siis sisevõrgus
oleva arvuti IP-aadress asendatakse ruuteri aadressiga ning leitakse
mälust vaba pordinumber, sest muidu ei osata vastust tagasi
marsruutida. Ruuterisse tehakse ka vastavuse kirje, et hiljem tunda
ära sisevõrgus olev arvuti.Pakett läheb teele marsruuteri
aadressiga. Kui tuleb vastus näiteks veebiserverist, siis sihtpunkti
aadressiks on ruuteri aadress. NAT teeb nüüd omakorda asenduse ehk
nüüd sihtpunkti aadress, mis oli ruuteri oma asendab ära tegeliku
sihtpunkti aadressiga ja see info saadakse
NATi tabelist. Ruuter
töötab võrgukihi tasemel ja see tegeleb IP-aadressitega, aga NATi
ruuter peab tegelema ka pordi numbritega. See tähendab, et saatja
aadress ei ole ainult võrgukihi asi, vaid ka transpordikihi asi.
Võrgukihi tasemel tuleb ära asendada IP-aadress ja transpordikihi
tasemel pordi number. See tähendab, et ruuter peaks ronima ka
transpordikihi paketi sisse ja tegelema ka pordi numbritega. See ei
ole ruuteri ülesanne, sest tema peab marsruutima IP-aadressite
järgi. Niikaua, kui on kasutusel Ipv4, on vaja meil kasutada NATi
ruuterit, et sisevõrgust pääseda välisvõrku.
Kui
server on sisevõrgus ja klient on välisvõrgus ehk avalikus
Internetis, siis sellesse serverisse pääsemiseks on vaja NAT
staatiliselt ära konfigureerida, et oleks võimalik serverile ligi
saada. Teine variant on kasutada UPnP protokolli, tänu millele on
võimalik NAT ruuterit konfigureerida. Kolmas variant on see, et
sisearvuti registreerib ennast kusagil lüüsiarvutis ja teine arvuti
pöördub ka selle lüüsiarvuti poole ning selle ülesandeks on need
kaks pöördumist kokku ühendada.
34.
Marsruutimisprotokollid (RIP, OSPF ja BGP)
RIP
–
Routing Information Protocol – kasutab Distance Vector algoritmi.
Informatsioon on naabrite kohta olemas. Informatsiooni saadetakse
kuni 25 sihtvõrguni iga 30 sekundi tagant ja kui 180 sekundi järel
ei ole naaber midagi vastanud, siis see tähendab, et naaber on
mängust väljas ja tabelid tuleb ringi arvutada. Sel juhul
(marsruutimistabel muutus) saadetakse kohe ka kõigile naabritele uus
info ja naabrid saadavad need omakorda edasi ning teade mõne sõlme
ülesütlemisest levib kiiresti üle kogu võrgu. Et vältida
edasi-tagasi hüppamist, siis maksimaalsete sammude hulk mida pakett
teeb mööda võrku on 16, mis on määratud. RIP on rakenduskihi
protokoll ja ta kasutab UDP pakette oma pakettide edastamiseks. RIPi
kasutakse põhiliselt väiksemates võrkudes.
OSPF
–
Open Shortest
Path First – kasutab Link State
marsruutimisalgoritmi. Iga võrgusõlm teab kogu võrgutopoloogiat
ning lühim tee punktide vahel leitakse Dijkstra algoritmiga.
Kõigepealt toimub vastastikune audentimine ehk ei suhelda suvaliste
ruuteritega, vaid suheldakse nende ruuteritega, kellega on teada, et
nad on
legaalsed selles võrgus. Erinevad RIP-ist, mis suudab välja
arvutada ainult ühe ainsa marsruudi, siis OSPF arvutab kohe välja
ka alternatiivseid võimalusi. OSPF on üles ehitatud suuremate
võrkude jaoks, kus omakorda võib teha kahetasemelist marsruutimist.
On olemas magistraalpiirkond ja alampiirkonnad. OSPF eelised RIPiga
võrreldes: kõik OSPF
teated on autentitud, kasutatakse TCP
protokolli (RIPis kasutati UDP-d), lubatud on mitu samaväärset
(võrdselt lühikest) teed kahe punkti vahel (RIPis sai olla ainult
üks lühim tee), toetab suuremaid võrke.
BGP
(Border
Gateway Protocol)
-
Kui
RIP ja OSPF on nn Intra-AS (piirkondade sisesed)
marsruutimisprotokollid, siis BGP on mõeldud piirkondade vaheliseks
marsruutimiseks. Suhtlemisel kasutatakse TCP protokolli ja toimub
vastastikune audentimine ehk luuakse ühendus ja
vahetatakse andmeid.
Aeg-ajalt küsitakse
teiselt , kas ta on „elus“, kui mingit uut
informatsiooni ei ole saata. Erinevalt piirkonna sisesest
marsruutimisest, piirkonnavahelises marsruutimises ei ole eesmärgiks
niivõrd
ratsionaalne ja optimaalne marsruutimine, kuivõrd siin
tulevad mängu juba poliitilised otsused. See tähendab seda, et kas
ma
lasen liikluse läbi oma võrgu või mitte. Erinevalt
piirkonnasisestest marsruutimistest, kus eesmärgiks on võimalikult
ratsionaalselt marsruutida, siis piirkondade vahelise marsruutimise
puhul teid kas avalikustatakse või ei avalikustata ehk vastavalt
sellele kas liiklust lastakse läbi või mitte. Liikluse läbilaskmise
üks kaalutlus võib olla koormus ja teine näiteks turvalisus.
Piirkonna
sisese ja piirkonna välise marsruutimise erinevus on see, et
piirkonna sisemises tehakse otsuseid ratsionaalsusest lähtudes,
piirkondade vahel on otsused pigem poliitilised.
35.
Marsruuterid
Marsruuterid
on
seadmed , mis tegelevad marsruutimisega. Nad täidavad
marsruutimise algoritme ja protokollide abil suhtlevad teiste
omasugustega. Vastavalt algoritmide tabelitest lähtudes teevad
otsuse,
millisest sisendist millisesse väljundisse tuleb pakett
edasi saata. Ruuteril on sisendpordid ja väljundpordid ja keskel on
kommutatsioonisõlm, mis suudab ühest sisendist pakette saata
vastavasse väljundisse, mis tabeli järgi on ette nähtud.
Marsruuteri protsessor korraldab algoritmi täitmist.
Ruuteri
sisendi pool – Kuna ruuter töötab võrgukihil, siis ta teeb
marsruutimisotsuseid lähtudes IP-aadressidest ja ruuteris on
realiseeritud ka kanalikiht ja füüsiline kiht. Alguses saadakse
pakett kätte kui signaalide jada. Kanalikihi tasemel vaadeldakse
paketti ja võetakse ta vastu, et ta on vastava ruuteri
sisendile mõeldud ja harutatakse sealt lahti võrgukihi paketi päise osa. See
läheb võrgukihi tasemele ja jõuab ruuterini ja ruuter saab kätte
paketi päises IP-aadressi ja selle järgi hakkab tegutsema.
Vastavalt IP-aadressile vaadatakse marsruutimistabelist järgi, mis
selle paketiga teha ja toimetatakse läbi kommutatioonisõlme
vastavasse väljundisse. Kui pakette tuleb sisse rohkem, kui
kommutatsioonisõlmest läbi läheb, hakkavad tekkima järjekorrad.
Järjekorrad võivad tekkida puhvrites.
Ruuterid
on ehitatud ajalooliselt kolme moodi:
1)
Mälu põhimõttel ruuterid – See tähendab seda, et protsessor
kirjutas
sissetulevad paketid mällu ja edasi tehti veel otsus ja
kirjutati veel mällu ja siis läksid paketid teele.
Mäluoperatsioonid on protsessorite ühed aeglasemad käsud ja need
on programmeeritud. Tegelikult igasuguseid mäluopratioone tuleks
võimalikult palju vältida.
2)
Siini peale ehitatud ruuterid –Paketid liiguvad sisendpordi mälust
väljundpordi mällu läbi ühiskasutatava siini.
3)
Maatriks ülesehitus – Iga protsessor pidi pääsema mingile
mäluplokile ligi ja seda oli vaja teha paralleelselt, muidu poleks
mitme protsessori
kasutamisel erilist mõtet. Siin oli võimalik luua
paralleelühendusi, tänu millele sai kiirust veelgi tõsta.
Ruuteri
väljuni pool – Siin on võrgukihi tasemel ruuteri puhvrid ehk kui
kommutatsioonisõlmest jõuab pakett väljundisse, siis mööda seda
väljundit peab pakett teele minema. Kõigepealt pannakse ta
puhvrisse ja kui kanalikihi tasemel on kanal vaba, siis pakett läheb
kohe minema, aga kui samal ajal saadetakse mingit paketti, siis tuleb
oodata. Kui puhvrid saavad täis, siis tuleb neid pakette hakata ära
viskama, sest rohkem ruumi mälus pole.
Aeg,
mis kulub paketi saatmisel jaguneb
neljaks : 1) paketi töötlus 2)
järjekorras
ootamine 3) paketi teelepaneku aeg 4) kanalis liikumise
aeg.
36.
Ipv4 ja Ipv6
Kirjeldan
esialgu protsessi Ipv4 baasil. IP-aadressi protokolli päis: 1)
versiooni number (4 või 6) 2) päise pikkus 3) kogu paketi
täispikkus 4) fragmenteerimise väljad 5) TTL – arv mitu sammu
läbi mitme ruuteri pakett võib teha (see on selleks, et pakett ei
jääks rändama ehk iga ruuter lahtuab sellest -1 ja kui see arv
saab võrdseks nulliga, siis visatakse see pakett ära, kuna ta on
läinud rändama) 6) millise protokolli kätte tuleb tuleb paketi
sisu anda 7) päise kontrollsumma 8) kaks IP-aadressi, mis on
32-bitised 9) lisaväljade osa 10) andmeosa
Ipv4
puhul on aadresse kokku 232
ning
aadresse jagatakse ka klassidesse: A-klass – mõeldud väga suurte
võrkude jaoks ning mille puhul IP aadresse võrgus saab olla 224;
B-klass, mis on mõeldud keskmise suurusega võrkude jaoks ja mille
puhul IP aadresse võrgus saab olla 216;
C-klass on mõeldud väikestele võrkudele ja mille puhul IP aadresse
võrgus saab olla 28;
D-klassi aadressid on multiedastusaadressid. Tänapäeval on
kasutusel aga suuresti CIDR ja VLSM tehnikad.
Fragmenteerimine
– Erinevatest kanalist ei pruugi minna läbi nii pikad paketid, kui
need on teele pandud. Igal võrgutehnoloogial on oma maksimaalne
paketi pikkus (MTS – maximum transfer size - see on baidi jada, mis
korraga ühest võrgukanalist läbi lastakse). Kui see piirang on
olemas, siis tuleb suurem pakett ära tükeldada mitmeks väiksemaks
ja lisada ka vastav päis. Kokkupakkimine toimub sihtpunktis ehk ei
ole mõtet vahepealsetes ruuterites neid uuesti kokku pakkida, sest
võib veel tulla ette selline kanal, kust muidu läbi ei lähe.
Võrgutasemel toimub samuti pakettide tükeldamine ja kokkupakkimine
transpordikihi jaoks. Paketi päises on identifikaator.
IP-aadress
– See on üks olulisemaid aadresse võrkude maailmas ja selle järgi
leitakse üles kindel arvuti suures Internetis. See koosneb neljast
baidist ja 32 bitist ning see kirjutatakse kümnendarvudena, kus on
punktid vahel. Maksimaalne aadress on 255.255.255.255, sest baidi
sisse mahub maksimaalselt 0-255 ehk suuremaid arve ei saa olla. Igal
ruuteril sisend ja väljund IP-aadressid on ka erinevad. Täpne
olekski öelda, et IP-aadress on sisend-väljund liidese aadress,
mitte arvuti ega ruuteri aadress.
Alamvõrgud
– Ühise aadressiosaga võrgusõlmed, kusjuures nende vahel ei ole
ühtegi IP-aadressiga adresseeritavat võrgusõlme.
IP-aadress
jaguneb kaheks: Kui kogu aadress on näiteks 223.1.1.1 või 223.1.1.2
või 223.1.1.3, siis alamvõrgu aadressi osa on 223.1.1 ja arvuti
aadressiosa 1, 2, 3 lõpus.
Alamvõrgu
mask (Subnet mask) – see ütleb ära, kui suur osa täisaadressist
on võrguaadress ja kui suur osa on hosti aadress. Kaldkriipsu järel
olev arv ütleb ära, mitu bitti aadressist on võrguaadress ja
ülejäänud jääb hostide aadressiteks.
IP-aadressi
on võimalik saada nii, et see on võimalik konfigureerida arvutile
ning see on fikseeritud IP-aadress, mis arvutil on ja ka jääb
niikaua kuni võrguadministraator leiab, et see tuleb ära muuta. On
ka teine võimalus IP-aadressi konfigureerida ja see on dünaamiline
hosti konfigureerimise protokoll ehk DHCP.
Ipv6
väljatöötamise algne põhjus oli see, et 32 bitiste aadressite
ruum saab otsa. Teine põhjus oli see, et päises oleks vaja midagi
ette võtta, et paketi päise töötlust teha kiiremaks ja tagada
mingeid võimalusi ka teenusekvaliteedi jaoks. Ipv6 päis on 40
baidine ning see ei sisalda fragmenteerimist. Kui pakett on liiga
pikk ja kanalist läbi ei lähe, siis pakett visatakse lihtsalt
minema ja teatatakse saatjale, et see pakett on liiga pikk ja see
tuleb ise lühemaks teha. Selle eesmärk on siis võrgusõlmed teha
võimalikult
kiireks ja kõik ülejäänud töö otspunktidesse
rakendada.
Ipv6
on teistmoodi võrreldes Ipv4-ga: 1) Versiooni number on 6. 2)
Paketile on võimalik anda prioriteeti 3) Paketi jaoks on võimalik
välja mõelda andmevoog ja seda voogu on võimalik identifitseerida.
Siia tuleb sisse virtuaalkanali idee ehk kui marsruut sai paika, siis
on võimalik näiteks selle kanali peal sidekiirust ja
läbilaskevõimet tagada. Tänu sellele saame hakata tagama ka
reaalaja andmeedastust läbi TCP/IP võrkude. 4) Kontrollsumma on
välja visatud, et paketitöötlust kiirendada 5) Igasugused
lisaväljad on välja visatud 6) On olemas ICMPv6 protokoll, mis
ütleb, et kui pakett on liiga pikk ja see visatakse minema, sest
Ipv6 puhul ei toimu fragmenteerimist ning selle kohta saadetakse
veateada saatjale.
Üleminek
Ipv4-lt Ipv6-le : Ehitatakse vahele
tunnel ehk kui Ipv6-nda servas
edasi läheb Ipv4, siis pannakse Ipv6 paketile väline ümbrik juurde
ja edasi ta liigub kui
neljanda versiooni pakett ja teises otsas
võetakse väline ümbrik ümbert ära ning edasi liigub ikka nagu
kuuenda versiooni pakett.
37.
Vigade avastamine ja parandamine, CRC
Vead
võivad olla mitmeid bitte või üksikuid bitte ära rikkuvad. Vigu
avastatakse nii, et me paneme andmeosale lisainformatsiooni lisaks.
Tehakse erinevaid aritmeetika-
loogika tehteid. Kui andmed liiguvad
läbi häirete rikka kanali, siis vastuvõtja arvutab oma
kontrollkoodi ja võrdleb, kas tema kontrollkood klapib sellega, mis
on kaasa antud. Kui ei klapi, siis on viga ja kui klapib, siis võib
väga suure tõenäosusega öelda, et asi on korras. Vigade
avastamine ei saa kunagi olla 100% töökindel, sest alati
eksisteerib tõenäosus, et ikkagi mingi pakett on riknenud. Kui
kanalid on piisavalt töökindlad, siis vigade avastamise peale ei
ole mõtet suurt ressurssi kulutada. Vigade avastamise põhimõte on
see, et paneme liiasusega informatsiooni juurde, arvutades selle
lähtudes andmetest ning siis on võimalik hinnata, kas pakett tuli
korralikult kohale või mitte.
Vigade
avastamise võimalused:
1)
Paarsuskontroll – See saab olla kas ühesuunaline või
kahesuunaline. Ühesuunalise puhul bitijadale pannakse üks
bitt otsa, mis ütleb kas ühtede arv on paaris või paaritu. Juurde
lisatav bitt on 0, kui ühtede arv on paaritu ja bitt on 1, kui
ühtede arv on paaris. Kui üks bitt moondub, siis me avastame vea,
kui kaks bitti moonduvad, siis me ei
avasta viga. Samuti 3, 6 ja 8
biti moondumise korral ei avasta. Kahesuunalise puhul võetakse
arvesse nii
vertikaalsed , kui ka horisontaalsed bitid.
2)
Kontrollsumma – Võetakse kogu paketti, kui 16 bitist kahendarvude
jada, mis liidetakse kokku, pööratakse ühed nullideks ja nullid
ühtedeks ning tekib konrollsumma. Vastuvõtja teeb samasuguse
liitmise ja kui tulemuseks on kõik ühed, siis ta ütleb, et see
pakett on korras. Liidetakse kokku, saadakse summa, mis
inverteeritakse ära ja mis omakorda läheb paketiga kaasa.
Vastuvõtja teeb sama liitmise ning peab saama sama tulemuse. Kui
summa ja inverteeritud summa kokku annavad kõik ühed, siis
tähendab, et pakett on korras suure tõenäosusega.
3)
Kontrollkoodid – Tüüpiliselt tehakse kahendjagamist. Võtame
andmeosa kui D bitti ning kui kahendarvu. Valime polünoomi pikkusega
r+1, milleks on polünoom G. Valime r CRC bitti, R, selliselt, et
saame ning selle omakorda
jagame G-ga, siis me saame, et
ta
jagub täpselt. R on
jagamise jääk. D * 2r
jagame
läbi G-ga, saame jagamise jäägi ja nüüd D pluss jagamise jääk
jagame G-ga läbi ning kui jagub täpselt, siis see ongi
kontrollsumma arvutamise viis, mida tüüpilistes kontrollkoodides
kasutatakse.
Saatmise
poolel paneme andmetele r bitti otsa, jagame r+1 bitise jagatavaga
läbi ja saame r-bitise jagamise jäägi. Paneme jagamise jäägi
r-bittidele otsa ning jagame sama polünoomiga läbi ja saame
jagamise jäägi nulli. Kui see on nii, siis me võime öelda, et see
pakett on korras. Jagamise asemel me tegelikult teeme XOR
tehte .
Vigu
saab parandada kordusaatmisega ehk pakett saadetakse uuesti, kui see
on vigane. Teine variant on koodid, mis võimaldavad vigu parandada.
Vigu parandavad koodid võimaldavad
parandada avastatud vigu. Sellised koodid on
keerulisemad ja
pikemad ning neid kasutatakse üpris harva. Pigem on eesmärk viga teada
saada ja pakett ära visata ning parandamine jääb ikkagi
ülemiste kihtide ülesandeks, sest
igat paketti ei ole mõtet parandada. Kui
on tegemist sellise andmeedastusega, kus paketid võivad kaduma
minna, siis võib vigase paketi
rahulikult ära visata.
38.
Multipöördusprotokollid
Multipöörduprotokollid
ehk Multiple
Access Protocols. Kanalid, mida mööda andmed
transporditakse võivad olla punkt-punkt ühendusega, kus kahe
võrgusõlme vahel on üks ainuke kanal ja keegi teine võrgusõlmedes
seal kanali peal ees ei ole. Teine variant on ühise kasutusega ehk
jagatud kanal ehk leviedastusega kanal, kus ühe kanali peal on palju
võrgusõlmi (rohkem, kui kaks). Kui on tegemist kahe võrgusõlmega,
siis tüüpiliselt on nende vahel pooldupleks või täisdupleks nii,
et üks oma saatmisega teise saatmist ei sega. Leviedastusega kanal
oli algselt Etherneti kanal.
Ethernet algselt ehitati üles siini
tehnoloogia peale ja võrgusõlmed olid siini peal. Kui
üks siini peal saatis, siis see tähendas seda, et kui keegi teine
vahele segas, siis ta rikkus selle saatmise ära ja saatmisest midagi
välja ei tulnud. See tähendas, et mõlemad pidid vait
jääma ja
kokku leppima, kes saadab. Ühisedastus keskkonna peal andmevahetus
on sarnane nagu inimeste vahelises kommunikatsioonis. Kui on tegemist
koosolekuga ning üks hakkab rääkima ja teine tahab ka midagi öelda
ja hakkab esimesest üle rääkima, siis hoopis kolmas tõuseb püsti
ja tahab ka midagi rääkida ning kõik räägivad korraga ning
kommunikatsioonist midagi välja ei tule. Ühine edastuskeskkond on
traadita võrgus ehk WIFI-is. Kui üks saadab ja teine
segab vahele,
siis sellest midagi head ei tule. Ühine edastuskeskkond on ka
satelliitsides. Multipöördusprotokollid on sellised, kus on
tegemist ühise jagatud edastuskanaliga ning kui kaks või enam
üritab korraga andmeid saata, siis toimub andmete „
segunemine “,
mida nimetatakse kollisiooniks ehk põrkeks. Selleks on vaja
põrketuvastus ja lahendus mehhanismi, et kuidas lahendada probleemi,
kui kaks või enam saatmist on omavahel kokku jooksnud. Selleks on
vaja hajutatud algoritmi, mis määrab ära, kuidas kanalit omavahel
jagada ning selle algoritmi töö tuleb korraldada läbi selle sama
ühise edastuskeskkonna. Mingit muud kanalit ei ole, vaid see sama
kanal, mis neil on, läbi selle kanali peavad nad kuidagi kokkuleppe
saavutama . Ideaalne multipöördusprotokoll on selline, et on ühine
edastuskanal , mille läbilaskevõime on R bitti sekundis. Ideaalselt,
kui on üks saatja, siis ta saab enda kätte kõik selle R bitti, aga
kui on n-saatjat, siis igaüks saab osa R-ist. See protokoll peab
olema täistsentraliseeritud ehk ei ole ühtegi võrgusõlme, mis
seda tööd korraldaks ning ei ole mingeid sünkroniseerimisvahendeid
ja see peab olema lihtne.
Multipöördusprotokolle
jagatakse kolme klassi:
1)
Kanali tükeldamise protokoll – Igaühele antakse tükk kanalist.
(
FDMA – sageduse järgi,
TDMA – aja järgi, CDMA – koodi järgi)
FDMA
– Sageduspõhine multipöördus. Sagedusriba jagatakse erinevateks
väiksemateks sagedusribadeks. Kaablisse minnes pakime kõik
sagedused kokku. Sagedusribad on piisavalt laiad ning ülekostvust ei
ole. Hea omadus on see, et igaüks saab oma osa enda kätte ja
kasutab seda nii palju kui tahab. Kui ta seda parajasti ei kasuta,
siis see ressurss on raisus ja seda kellelegi teisele niisama
lihtsalt anda pole võimalik.
TDMA
– Ajapõhine multipöördus. Iga kasutaja saab enda kätte
ajalõigu, millal kanal on tema käsutuses. Seejärel läheb
kasutusõigus üle järgmisele. Pole väga efektiivne, kuna saatjad
saavad oma osa kanalist ka siis, kui neil midagi saata ei ole ning
kasutamata aeg läheb raisku. Üks kasutaja ei saa saata rohkem, kui
tema lõik ette näeb. Vahel kasutatakse ka statistilist
multipleksimist. Siis tuleb andmetele juurde panna ka aadress, et
teada kellele see kuulub.
CDMA
– Koodipõhine multipöördus. Kõik andmevahetus läheb korraga
kanalisse sisse, aga igaüks kodeerib oma süsteemi järgi. Igaüks
kasutab oma koodi, mis on unikaalne ning vastavalt sellele andmed
kodeeritakse ära, pakitakse kokku ja teises otsas võetakse lahti.
2)
Juhupöördusprotokoll – Kui keegi tahab midagi rääkida, tõuseb
püsti ja hakkab rääkima ning kui tekib olukord, et kaks räägivad
korraga, siis need kaks peavad kõigepealt aru saama, et tekkis põrge
ning siis nad peavad seda kuidagi lahendama. (MA, CDMA, CDMA/CD,
CDMA/CA)
Enne
ei toimu
osalejate vahel mingit koordineerimist. Kui
kellelgi on
midagi öelda, siis ta ütleb ja kui seda teevad korraga kaks, siis
tekib põrge ehk
kollisioon . Juhupöördusprotokollide probleem on
see, et kuidas avastada põrkeid ja kuidas nendest jagu saada. Siin
me ei saa öelda, et me pääseme võrku mingi aja jooksul kindlasti,
sest me ei tea kui palju põrkeid tekib ning põrgete lahendamine on
ka tõenäosuslik.
Juhupöördusprotokollide
plussid ja miinused:
Ajaloolislt
kõige vanem on MA (multiple access), siis tuli
CSMA (
carrier sense multiple access) kus enne kuulati kanalit kui saatma hakati ning see
omakorda jagunes CSMA/CD (põrgete
tuvastamine ) ja CSMA/CA (põrgete
vältimine ).
ALOHA võrk –
Hawaii saarte vahel raadiovõrk ajaloos. Saadeti ühel
sagedusel ja kätte saadi info teisel sagedusel. Igaüks, kes tahtis
saata, see saatis ning kviitung oli see, mis ütles kas see saatmine
õnnestus või mitte.
Ajalõikudega
ALOHA – Kanal jagati ajalõikudeks ning kõik, kes tahtsid saatma
hakata,
saatsid alguses ajalõigu. Kui kaks või enam saatsid
korraga, siis tekkis põrge ning kui põrget ei olnud, siis võis
saata järgmisel ajalõigul jälle. Kui tekkis põrge, siis hakati
seda lahendama nii, et enne järgmise ajalõigu algust visati
„täringut“, et kas saata või mitte.
Head
omadused: a) Kui on ainult üks ainuke saatja, siis ta saab kogu
kanali täies mahu enda kätte b) Tegemist on detsentraliseeritud
süsteemiga ning tähtis on ainult lõikude algused ära
sünkroniseerida Negatiivsed omadused: a)
Tekkivad põrked ning osa
ajalõike läheb kaduma b) Võivad tekkida tühjad ajalõigud c)
Kellasid on vaja sünkroniseerida
Üldiselt,
kui kõik tahavad saata, siis on kindlaks tehtud, et 37% läheb
kasulikuks tööks, ülejäänud läheb kollisioonide lahendamiseks.
Ilma
ajalõikudeda ALOHA – Kui oli vaja saata, siis lihtsalt saadeti.
Selle puhul võis üks saatmine rikkude ära eelmise lõpu ja
järgmise alguse. Selle puhul saab kaks korda halvema tulemuse, kui
ajalõikudega ALOHA puhul.
CSMA
– Kanali
kuulamine ehk kõigepealt kuulatakse kanalit ja kui kanal
on vaba, siis saadetakse ning kui kanal on hõivatud, siis oodatakse
niikaua kuni kanal vabaneb. Ka kanali kuulamisel on omad probleemid,
kui vaadelda
traadiga ja traadita võrke. Traadiga võrkudes kanali
kuulamine on lihtsam. Kanali kuulamine aitab selle vastu, et me juba
toimuvat saatmist ära ei riku, aga kaks alustajat võivad ikkagi
kokku põrgata.
CSMA/CD
– Kui me saatmise ajal jätkaks kanali jälgimist ning tekib põrge,
siis signaal levib kõigini ning me saame jätkata kuulamist. Kui me
ei jätkaks kuulamist, siis see tähendaks seda, et me saadaks lõpuni
ja me raiskaks kogu aja ära, kui need riknenud paketid on võrgus.
Kui tekib põrge siis jälgitakse signaalitugevust või võrreldakse
seda, mis saadeti ja mis tagasi tuli ning sellest saab järelduse
teha, et signaal on riknenud. Mõistlik on põrke tuvastamisel
saatmine ära lõpetada ja siis
teistega kokku leppida ja uuesti
saata. Kui kanal on hõivatud, siis oodatakse mingi juhuslik aeg, aga
siis võib juhtuda olukord, et ei kasutata kogu ressurssi ära. Teine
variant on kogu aeg kontrollida, kas kanal on vaba ning kui see
vabaneb, siis kohe saata. Selle
variandi miinus on see, et kui
proovijaid on mitu, siis nad väga suure tõenäosusega tekitavad
kollisiooni.
CSMA/CA
– Üritatakse vältida põrkeid. Kui kanal on vaba, siis kuulatakse
kanalit ning oodatakse ära see aeg, mis peab olema kahe paketi
vahel, et see kanal läheks tühjaks. Juhuslik kohtumise aeg pannakse
vahele selleks, et neid saaks hajutada, kes tahavad võrguga liituda.
3)
Kordamööda saatmise protokoll – Ära on jagatud, kes millal tohib
rääkida (1. reserveeritakse, kes millal tohib võrku kasutada 2.
Võrgus võib olla master, kes annab järjest sõnaõigust 3. Loa
edastus, mille puhul võrgus liigub üks luba ning kelle käes on
luba võib andmeid saata ning kui on oma saatmise ära teinud, annab
loa järgmisele). Siin kasutatakse ära nii häid pooli, kui
üritatakse ka vältida halbu pooli.
Polling
– Süsteemis on üks master, kes võrgu tööd korraldab ning tema
annab järjest sõna. Kanalit jagatakse kordamööda ning põrkeid ei
teki, aga kulub aega selleks, et kõiki järjest küsitleda. Igaühele
on öeldud, palju ta tohib masteri käest saadud loa järel saata.
Siin on võimalik välja arvutada juhtum, millal on jälle
garanteeritud võrku pääs, mida juhupöördusvõrkudes garanteerida
ei saanud. Siin võib probleemiks osutuda master, kui tema ei tööta
päris õigesti või lakkab töötamast. Selles võrgus pidevalt
toimub midagi ehk master pidevalt küsib teistelt, kuid
juhupöördusvõrkudes ei toimu pidevalt tegevus ehk kui kellelgi
saata midagi pole, siis kanal on tühi. Kui masteriga võrgus algab
vaikus, siis see tähendab, et masterit enam ei ole ning tuleb uus
master valida.
Loa
edastuse puhul võrku iseloomustab see, et selles liigub üks luba.
Seda luba antakse aina edasi ning see liigub mööda ringi. Siin ei
ole otseselt mingi juhti, vaid luba. Koosolekuga võiks seda nii
võrrelda, et kelle käes on mikrofon see ka räägib. Loa saatmine
läheb alati ühes suunas järgmisele. Luba on ka see, mis võrgus
tööd korraldab. Loa edastus võtab aega ning et üks kindel klient
saaks taas loa enda kätte, peab ta ootama terve ringi ära. Selles
võrgus saab arvutada välja
pikima aja, millal üks klient saab taas
hakata saatma. Kui ühel midagi saata pole, siis ta annab loa edasi
ning nii see protsess jätkub.
Teine
variant on veel see, et mööda võrku liigub „
rong “. „Veduri“
peal on reserveerimise sahtlid ja kui kellelgi on midagi saata, siis
ta reserveerib omale koha ning paneb oma „
vaguni “ vedurile sappa.
Selline „rong“ liigub mööda võrku ja see kellele on pakett
mõldud korjab „vaguni“ ära.
39.
ALOHA ja CSMA/CD
ALOHA
võrk – Hawaii saarte vahel raadiovõrk ajaloos. Saadeti ühel
sagedusel ja kätte saadi info teisel sagedusel. Igaüks, kes tahtis
saata, see saatis ning kviitung oli see, mis ütles kas see saatmine
õnnestus või mitte.
Ajalõikudega
ALOHA – kanal jagati ajalõikudeks ning kõik, kes tahtsid saatma
hakata, saatsid ajalõigu alguses. Kui kaks või enam saatsid
korraga, siis tekkis põrge ning kui põrget ei olnud, siis võis
saata järgmisel ajalõigul jälle. Kui tekkis põrge, siis hakati
seda lahendama nii, et enne järgmise ajalõigu algust visati
„täringut“, et kas saata või mitte.
Head
omadused: a) kui on ainult üks ainuke saatja, siis ta saab kogu
kanali täies mahu enda kätte b) tegemist on detsentraliseeritud
süsteemiga ning tähtis on ainult lõikude algused ära
sünkroniseerida
Negatiivsed
omadused: a) tekkivad põrked ning osa ajalõige läheb kaduma b)
võivad tekkida tühjad ajalõigud c) kellasid on vaja
sünkroniseerida
Üldiselt,
kui kõik tahavad saata, siis on kindlaks tehtud, et 37% läheb
kasulikuks tööks, ülejäänud läheb kollisioonide lahendamiseks.
Ilma
ajalõikudeda ALOHA – kui oli vaja saata, siis lihtsalt saadeti.
Siis võis üks saatmine rikkude ära eelmise lõpu ja järgmise
alguse. Siis saab kaks korda halvema tulemuse, kui Ajalõikudega
ALOHA puhul.
CSMA
– Kanali kuulamine ehk kõigepealt kuulatakse kanalit, kui kanal on
vaba, siis saadetakse ning kui kanal on hõivatud, siis oodatakse
niikaua kuni kanal vabaneb. Ka kanali kuulamisel on omad probleemid,
kui vaadelda traadiga ja traadita võrke. Traadiga võrkudes kanali
kuulamine on lihtsam. Kanali kuulamine aitab selle vastu, et me juba
toimuvat saatmist ära ei riku, aga kaks alustajat võivad ikkagi
kokku põrgata.
CSMA/CD
– kui me saatmise ajal jätkaks kanali jälgimist ning tekib põrge,
siis signaal levib kõigini ning me saame jätkata kuulamist. Kui me
ei jätkaks kuulamist, siis see tähendab seda, et me saadaks lõpuni
ja me raiskaks kogu aja ära, kui need riknenud paketid võrgus on.
Kui tekib põrge siis jälgitakse signaali tugevust või võrreldakse
seda, mis saadeti ja mis tagasi tuli ning sellest saab järelduse
teha, et signaal on riknenud. Mõistlik on põrke tuvastamisel
saatmine ära lõpetada ja siis teistega kokku leppida ja uuesti
saata. Kui kanal on hõivatud, siis oodatakse mingi juhuslik aeg,
siis võib juhtuda nii, et ei kasutata kogu ressurssi ära. Teine
variant on kogu aeg kontrollida kas kanal on vaba ning kui see
vabaneb, siis kohe saadame. Selle variandi miinus on see, et kui
proovijaid on mitu, siis nad väga suure tõenäosusega tekitavad
kollisiooni.
40. Token ring
See
on selline protokoll, kus on tegemist ringvõrguga. Võrku
iseloomustab see, et selles liigub üks luba. Seda luba antakse aina
edasi ning see liigub mööda ringi. Siin ei ole otseselt mingi
juhti, vaid luba. Koosolekuga võiks seda nii võrrelda, et kelle
käes on mikrofon see ka räägib. Loa saatmine läheb alati ühes
suunas järgmisele. Luba on ka see, mis võrgus tööd korraldab. Loa
edastus võtab aega ning et üks kindel klient saaks taas loa enda
kätte, peab ta ootama terve ringi ära. Selles võrgus saab arvutada
välja pikima aja, millal üks klient saab taas hakata saatma. Kui
ühel midagi saata pole, siis ta annab loa edasi ning nii see
protsess jätkub.
Kaader
koosneb: 1) Start Delimiter (Alguse tunnus) – 1 bait. Selle järgi
saab sünkroniseerida ja saab teada, et tegemist on algusega. Siin ei
ole nullid ja ühed, vaid JK jne. See
erikujuline signaal, mida
andmeosas ei ole ütleb, et nüüd hakkab pihta kaader. 2) Access
Control – Siin on sees
prioriteedid . Tegemist on kas loapaketiga
või andmepaketiga ja siin saab reserveerida prioriteeti.
Andmepakettidel ja lubadel on prioriteedid. Kui on tegemist
prioriteetse loaga, siis tohib ainult see loa endale võtta kes on
sama prioriteediga või kõrgema prioriteediga.
R
on neeb bitid, millega me saame reserveerida endale teatud
prioriteediga luba. Token
on luba ja monitori bitt on vajalik selleks, et kui andmepakett
liigub mööda ringi, siis see kes saatis, selle ülesanne on see
pakett sealt võrgust ära korjata. Kui pakett saadetakse teele, siis
selles on kindlasti olemas sihtpunkti aadress ning see kes selle
paketi ära tunneb korjad selle ära. See pakett tuleb saata aga
lõpuni, sest tema käes ei ole luba ning tema ei saa seda luba võrku
panna. Kui see kes saadab vahepeal võrgust ära kaob, siis
andmepakett võib võrku ringlema jääda, sest andmepaketi ära
korjamise kohustus on sellel, kes selle teele pani. Selleks on võrgus
üks
monitor , kes paneb monitori biti püsti, kui ühe korra tema
juurest mööda ringi see bitt mööda läheb. Kui see pakett teeb
juba teist ringi, siis see sama monitor teeb järelduse ja see, kes
selle ära pidi korjama, võrgus enam ei ole ning tema ülesandeks on
see pakett võrgust ära korjata ja luba edasi anda.
Frame Control – On võimalik kaadri tüüpe ära määrata.
Destination
Aadress – Vastuvõtja aadress
Source
Aadress – Saatja aadress
Data
unit – Sisaldab LLC kaadri andmeid
Frame
Check – Kaadri staatus, mis tähendab seda, et kui see kaadre on
kelleltki mööda läinud, siis siia pannakse tunnus, et kas keegi
tundis enda aadressi ära ja kas keegi kopeeris selle kaadri endale.
End
Delimiter – Määrab ära kaadri lõpu
41.
Token bus
LAN
tehnoloogia ja
analoogne Token
Ringiga . Põhiline erinevus on see, et
füüsiliselt ei moodusta võrk ringi vaid Token liigub mööda ühte
siini. 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 naabri aadressi (Who Follows Me). See,
kellel on luba teab, kes on pärast seda ja küsib, kas keegi tahab
ringiga ü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 ta 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 korrigeeritakse 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)
Datagramm,
mis tuleb võrgukihi käest, pakitakse kanalikihi kaadrisse ja
saadetakse mööda kanalit teele. See jõuab ruuterisse, seal
harutatakse jälle lahti kuni võrgukihini. Sealt võetakse
marsruutimise jaoks aadress, mille järgi tehakse marsruutimise
otsus, saadakse jälle kaader ja jälle läbi kanalikihi läheb
kaader uude sihtpunkti.
Ühest
arvutist teise paketi saatmine:
Me
ise olema arvuti A ja soovime saata infot arvutile B. Kui meil on
teada arvuti B IP-aadress ja selle järgi meil on vaja teada arvuti B
MAC aadress. IP aadressi järgi saame teada, kas arvuti B on samas
võrgus või tuleb pakett marsruutida läbi mingi marsruuteri. Kui ta
on samas võrgus,
siis saadetud datagramm pakitakse kanalikihi kaadrisse ja kanalikihi
kaadri päisesse pannakse kaks MAC aadressi (kellele ja kes) ning
siis liigub see kaader kanalikihi piires A-st B-ni.
Selleks
on olemas ARP (address resolution protocol) tabel, et saada teada
arvuti B MAC aadressi, kui me teame IP aadressi. Sellega saame küsida
IP aadressile vastavat MAC aadressi. ARP tabelis on kirjas IP
aadress, MAC aadress ja TTL. Kui info salvestatakse tabelisse, siis
sinna pannakse mingi aja näit juurde ning sellest lahutatakse iga
sekundiga üks maha ning kui taimer jõuab nulli, siis need teadmised
unustatakse ära. Tabelisse ei jää infot, mida pole kaua aega vaja
olnud ning mida tõenäoliselt ei lähe ka niipea vaja. See tähendab,
et tabelit ei ole vaja tühjendada, vaid see tühjeneb iseenesest.
ARP ongi mõeldud selleks, et me saaksime lokaalvõrgu piires küsida,
et kui keegi tunneb ära oma IP aadressi, siis olgu nii kena ja
vastaku oma MAC aadressiga.
ARP
tööpõhimõte:
Alguses
saadetakse lokaalvõrgu piires kõigile ARP päring ning küsitakse,
kellele kuulub selline IP aadress ning see saatku vastu oma MAC
aadress. Kõik, kes lokaalvõrgus on, vaatavad üle enda IP-aadressid
ning võrdlevad, kas nende oma oli see millele tehti päring. Kui
keegi tunneb ära oma IP-aadressi, siis ta saadab ainult küsijale
oma MAC aadressi vastu. See info pakkaksegi ARP tabelisse koos
TTL-iga ning see info seisab seal nii kaua kuni taimer on saanud
nulliks ning pärast seda informatsioon unustatakse.
Andmete
saatmine läbi ruuteri teise lokaalvõrku:
Kui
arvuti A tahab saata arvutile B paketti. Esimene asi, mida ta teeb on
see, et ta vaatab oma marsruutimistabelist IP aadressi järgi, kus
arvuti B asub. See tähedab, et tal on vaja teada, kas B asub temaga
samas võrgus või mitte ning selle saab ta teada võrgumaski järgi.
Kui võrgumaskid on samad, siis tähendab, et nad on samas võrgus.
Kui A ja B ei ole samas võrgus, siis A vaatab oma
marsruutimistabelist, et milline on see ruuter, mille kaudu ta
pääseks B-ni saatma. Siis ta saab teada marsruutimistabelist, et
selleks ruuteriks on R. Marsruutimistabelid on nii marsruuteritel kui
ka hostidel. Selleks, et ruuterile R saata on vaja tema MAC aadressi.
Me ei saada mitte IP aadressiga R-ile ehk IP tasemel see pakett jääb
samaks. IP tasemel on kaks aadressi ( arvuti A IP aadress ja arvuti B
IP aadress). Selleks et R-ile saata on vaja teha kanalikihi pakett,
mille sees on kaks MAC aadressi. Kui pakett jõuab ruuterini, siis
harutatakse lahti jälle IP osa (kus on arvuti A IP aadress ja arvuti
B IP aadress). Nüüd ruuter vaatab marsruutimistabeli järgi ning
leiab, et ta on arvutiga B samas võrgus. See tähendab aga seda, et
nüüd on vaja teada arvuti B MAC aadressi. Kui seda ARP tabelis ei
ole, käivitatakse jälle ARP ning saadetakse päring kõigile
küsimusega, et kellele kuulub selline IP aadress ning oodatakse
vastu selle arvuti MAC aadressi. Kui B on töövalmis, siis ta vastab
oma MAC aadressiga. Selleks, et ruuter R saaks arvutile B info saata,
peab ta formeerima uuesti kanalikihi paketi, mis sisaldab kahte kahte
MAC aadressi (ruuteri MAC ja arvuti B MAC aadressid). IP tasemel
aadressid jäävad samaks ning pakett jääb samas nii nagu ta on,
aga kanalikihi tasemel iga kord vastavalt sammule aadressid muutuvad.
43.
Ethernet
Ethernet
on domineeriv võrgutehnoloogia traadiga võrkudes. See on
populaarseim LAN tehnoloogia. Algselt oli Ethernet siini topoloogiaga
ning kõik olid ühises põrkedomeenis ehk kui tekkis põrge, siis
see levis kõikide vahel. Edasi
arenes Ethernet nii, et tekkis tähttopoloogia ning
keskele pandi
kommutatsioonisõlm. Kui ühe switchi küljes on ainult üks arvuti,
siis tulemuseks saadi see, et kahe võrgusõlme vahel on Ethernet,
aga mitte ühtegi põrget.
Etherneti
kaadri struktuur: 1)
Preambula (7 baiti ühtede-nullide jada ning
seitsmes ja kaheksas bitt on ühed) See on vajalik saatja ja
vastuvõtja töö sünkroniseerimiseks 2) Kaks kuue baidist aadressi
(saatja ja vastuvõtja MAC aadressid) 3) Tüüp, mis ütleb, ära mis
protokolliga on tegemist 4) Kontrollkood, mille järgi on võimalik
kindlaks teha, kas pakett tuli korralikult kohale.
Ethernet
on ühenduseta andmevahetus ning mingit handshake’i ei toimu saatja
ja vastuvõtja vahel. Ethernet on mitte usaldusväärne ehk mingeid
kviitungeid ei saadeta ning kui kanal töötab ja põrkeid ei teki,
siis suure tõenäosusega läks pakett kohale. Kui sellega on
probleeme, siis need on jäetud lahendamiseks TCP-le. Kui TCP leiab,
et midagi on puudu või korrast ära, siis TCP korraldab pakettide
uuesti saatmise.
Etherneti
puhul kasutatakse CSMA/CD-d. Ethernet tegeleb ise ka pakettide
kordussaatmisega, kuna siin on tegemist põrketuvastusega
protokolliga. Siis kui tekib põrge, siis põrgete lahendamisel
kordusaatmisega Ethernet ikkagi tegeleb. Ethernet töötab selliselt,
et kõigepealt kuulatakse kanalit. Kui kanal on vaba, siis tohib
saatma hakata ning kui tekib põrge, siis hakatakse põrget lahendama
ja tekib ootamine ning vastvalt sellele toimub uuesti saatmine.
Paketi
pikkuse, kaabli pikkuse ja edastuskiiruse vaheline seos:
Etherneti
kaader näeb välja selline, et selle andmeosa on 46-1500 baiti. Kui
saadetakse üks bait, siis pannakse 45 baiti mingit täidet juurde.
Etherneti paketil on miinimumpikkus olemas, sest kui me teeme selle
liiga lühikeseks ning kui tekib põrge ja põrge tuleb tagasi
saatjateni, siis saatja ei pruugi aru saada, et tekkis põrge. Kui
pakett on aga õige pikkusega, siis rikenenud signaal jõuab tagasi
enne, kui saatja saatmist lõpetab ning siis avastataksegi põrge.
Ethernet on üles ehitatud just selliselt, et tänu paketi
miinimumpikkusele ja piiratud maksimaalsele kaabli pikkusele ta
avastab põrked. Kui saatmise lõppedes on
kaablis kõik korras, siis
öeldakse, et saatmise õnnestus ning kui ei ole kõik korras, siis
öeldakse, et tekkis põrge. Kui teeme kaabli lubatust pikemaks või
teeme paketi lubatust lühemaks, siis põrketuvastus ehk CD mehhanism
ei tööta. See on ka Etherneti idee. Kui Ethernet läks 10 korda
kiiremaks, siis tuleb
kaabel teha 10 korda lühemaks. Kui 10 Mbit/s
pealt
mindi 100Mbit/s peale, siis kilomeetrine kaabel läks saja
meetri peale aga kui minna üle 1 Gbit/s, siis saab kasutada 10
meetrit kaablit. Siis muudeti aga paketi maksimaalset lubatud
pikkust. Kaadri formaat jäeti samaks, aga paketi miinimumpikkus
tehti pikemaks ehk kui pakett oli lühike, siis pandi lõppu midagi
juurde.
Etherneti
töö idee on see, et kaabli pikkus ja paketi pikkus peavad tagama
selle, et pakett saadetakse ühest otsast teise ja see riknenud
signaal jõuab tagasi enne, kui paketi saatmine lõpeb. Selle järgi
saatja ütleb, et paketi saatmine õnnestus. Kui me ei täida neid
reegleid siis Ethernet ei tööta ning kaugemate võrgusõlmede vahel
põrgete tuvastamine ei pruugi toimida.
Ethernet
kasutab erinevaid
tehnoloogiaid : koaksiaalkaablit, keerupaari,
optilist kaablit. Vastavalt sellele on füüsiline kiht ka erinevate
standarditega kaetud.
Esimene
tuntud Etherneti oli 10 Mbit/s Ethernet, kus oli kasutuses jäme
koaksiaalkaabel. 10Base2
– 10 Mbit/s ning 200m maksimaalne kaabli pikkus ühel segmendil.
Etherneti puhul kehtis selline reegel 543 ehk 5 segmenti võis
repiiteritega olla ühendatud ehk 5 segmenti, 4 repiiterit ja
kolmes segmendis võisid olla arvutid.
Repiiter
– Füüsilise kihi seade, mis võtab sumbuma hakkava signaali vastu
ja teeb sellest taas korraliku signaali. Sellel on üks sisend ja üks
väljund. Tänu sellele on võimalik kaablit pikendada. 543 reegel
ütles, aga et 5 segmenti ehk maksimaalselt 5 x 200 = 1000m oli
maksimaalne kaabli pikkus 10Mbit/s Etherneti puhul.
Teisena hakati kasutama tähttopoloogiat, kus oli kasutusel hub ehk
jaotur .
Jaotur on füüsilise kihi seade ehk sisuliselt mitmepordiline
repiiter. See on nähtamatu seade ning tal ei ole aadressi. Tänu
jaoturitele oli võimalik üles ehitada keerulisemaid struktuure.
Siin võis iga kanal olla 10 Mbit/s või 100Mbit/s. Siin oli
kasutusel keerupaar kaabel, mille maksimaalne pikkus tohtis olla 100
meetrit arvutist jaoturini. 10Mbit/s Etherneti puhul kasutati
sünkroniseerimiseks sellist kodeerimise viisi nagu Machesteri
kodeerimine. Kui saatja saadab vastuvõtjale, siis ta peab lugema
samas taktis bitte. Manchesteri kodeerimise puhul iga biti keskel on
nivoo muutus. Pideva nivoo muutuse põhjal vastuvõtja hoiab ennast
taktis ja suudab bitid ilusti ära lugeda.
44.
Jaoturid, sillad ja kommutaatorid
HUB
– jaotur.
See
on füüsilise kihi seade. See on seade, mis töötab kui signaali
võimendi. Kui võtab biti vastu ja saadab korrektseks tehtud
signaalina selle biti edasi. Ajaline
viide , mis HUB-is tekib on ühe
biti piires. HUB-i roll on see, et ta võimaldab pikendada
vahemaad ,
mida me saame kasutada ühest arvutist teise saatmisel ehk saame
võrgu suuremale territooriumile laiali jaotada. HUB on sisuliselt
nähtamatu seade. Kui meil on näiteks kolm võrgusõlme HUB-i
küljes, siis meil on ikkagi siini võrguga tegemist, aga see siin on
pakitud ühe
karbi sisse. Kuna tegemist on füüsilise kihi
seadmega ,
siis me ei saa HUB-iga kokku ühendada erinevaid tüüpi võrke. See
tähendab, et 10 Mbit/s ja 100Mbit/s võrke me ei saa HUBiga kokku
ühendada.
BRIDGE
–
sild .
See on kanalikihi seade. Sillad võtavad vastu ja edastavad Etherneti
kaadreid ning analüüsivad kaadri päist ja otsivad sealt üles MAC
aadressi ja vastavalt sellele valikuliselt edastavad pakette. Tehakse
otsus, kas pakett läheb üle silla või mitte. Kui pakett peab
minema üle silla, siis tegelikult see sild on otsapidi Etherneti
võrgus ja sild käitub nagu iga teine Etherneti võrgu seade, ainult
et tal ei ole aadressi. Kui kahe arvuti vahel on sild, siis ei
adresseerita sillale, vaid teisele arvutile. Sild on samuti nähtamatu
seade hostide jaoks. Sillad ei vaja häälestamist ja seadistamist
ning nad õpivad ise, mida nad peavad tegema. Sillad on
liiklusisolaatorid ehk nad
filtreerivad pakette, mida üle silla
saata. Selles mõttes on sillad
isolaatorid , et kui ühe LAN segmendi
sees hostid suhtlevad, siis see liiklus üle silla teise segmenti ei
lähe. Sillad ja jaoturid
lahendavad erinevaid põrkeid. Sillad on
iseõppivad seadmed ehk kui silda tuleb pakett sisse ning saatja on A
ja vastuvõtja on X, siis sild algselt ei tea midagi, et kes kus
asub. Kui pakett tuleb silda, siis selle järgi saab ta teada kumbal
pool asub saatja A. Kui nüüd peaks silda jõudma pakett, mille
saatjaks on X ja vastuvõtjaks on A, siis nüüd saab sild õppida
selle järgi, et X asub
teiselpool . Saatja aadressi järgi sild õpib
ja vastavalt sellele ta oma tabelit ka täiendab ning määrab ära
pordi, kust ta mingi paketi kätte sai.
Sild
töötab selliselt, et kui tuleb pakett, siis ta võtab selle
täielikult vastu ja siis vaatab MAC aadressi, et kuhu saata. Kui tal
on informatsioon olemas, siis ta saadab paketti sinna võrku, kui see
just ei ole sama võrk, kust see pakett tuli. Kui sild ei tea, kuhu
ta peab paketi edasi saatma, siis ta saadab selle edasi kõikidesse
võrkudesse, välja arvatud sinna, kust see pakett tuli.
Sildadega
ei panda kokku suuri võrke, sest tekivad marsruutimisprobleemid.
Sillad toimivad hästi siis, kui kahe otspunkti vahel on üksainus
tee. Kui me teeme sellise võrgu, kus on mitu teed, et pääseda
ühest kohast teise, siis sildadel hakkavad tekkima probleemid.
Marsruuterite juures kasutatakse mitut teed, sest see annab võimaluse
valida parimat marsruuti, kui näiteks üks on hõivatud ja teine ei
ole. Sillad
mis
toetavad puu algoritmi on võimalised tsüklilistest graafidest
jagu saama. Graaf käiakse läbi ja visatakse teatud teed välja, et
saada puukujuline struktuur. Lõppkokkuvõttes see ei ole ikkagi
tulemuslik.
Sild
on võimeline kokku ühendama erinevat tüüpi Etherneti võrke ehk
nii 10 Mbit/s kui ka 100 Mbit/s võrke omavahel. Sillad ei vaja
eelnevat konfigureerimist ning nad on nähtamatud.
Sildade
ja ruuterite erinevused: Mõlemad on seadmed, mis võtavad paketi
vastu, harutavad lahti ja saadavad edasi. Ruuterid
teevad seda võrgukihi tasemel, aga sillad teevad seda kanalikihi
tasemel. Ruuteritel
on marsruutimistabelid ja sildadel on sildade edastustabelid. Kui
hostis on kokku 5 kihti, siis ruuteris on 3 kihti ja
sillas on 2
kihti realiseeritud.
Sildade
plussid: 1) need on lihtsamad ja peavad paketi lahti harutama ainult
kanalikihi tasemeni. 2) sillad õpivad ise
Sildade
miinused: 1) kui meil on tegemist tsükliliste graafidega, siis on
vajalik nendest kõigepealt puu teha, et edasi tegutseda 2) kui on
võrgukihi tasemel leviedastusega saadetud pakettidega tegemist, siis
sillad seda ei filtreeri välja
SWITCH –
kommutaator . See on kanalikihi seade. See ei vaja häälestamist.
Tänapäeval on kasutusel ka hübriidkommutaatorid, kus on ühte
karpi pandud nii teise, kui ka kolmanda kihi seade ehk kommutaator ja
ruuter. Kommutaatori omapära on see, et ta suudab
üleval hoida
erinevaid ühendusi paralleelselt. Selle sisse on pandud
kommutatsioonimaatriks. Kui ühe pordi taga on üksainus host, siis
tegemist on Etherneti võrguga, kus põrkeid ei toimu. Kommutaator on
nähtamatu seade, kuna tal ei ole aadressi ehk kui me paneme
kommutaatori võrku, siis hostide töös otseselt midagi ei muutu.
Edastamine toimub MAC aadresside järgi. Kommutaatorid õpivad
sarnase põhimõtte järgi nagu sillad. Kui üks host tahab saata
teisele hostile paketi läbi kommutaatori, siis kõigepealt jõuab
see pakett kommutaatorisse. Seejärel kommutaator paneb saatja
aadressi oma tabelisse kirja, kui seal teda juba ei olnud ning paneb
ajamärgeni juurde. Kui see teadmine muutub vananenuks, siis
visatakse see teadmine ära. Kui algselt teise hosti kohta midagi
teada ei olnud, siis saadetakse pakett kõigile hostidele, välja
arvatud saatjale. Kui paketi kätte saanud host vastab, siis läheb
info ka tema kohta tabelisse ja kuna nüüd on esimese hosti kohta
info tabelis olemas, siis saadetaksegi vastus ainult konkreetselt
talle.
Switchidega
saab ka kokku ühendada suurema hulga võrke ning kui üks switch on
ühendatud teisega, siis toimub pidev õppimine.
Kommutaatorid
ja ruuterid mõlemad on seadmed, mis võtavad vastu pakette ja
edastavad neid. Ruuteritel on marsruutimistabelid ja kommutaatoritel
on kommutatsioonitabelid.
Kokkuvõtteks:
Liiklust
isoleerivad kõik seadmed (bridge, switch, marsruuter), välja
arvatud HUBi ehk jaoturi. Ainuke,
mis vajab konfigureerimist on ruuter. Teiseb õpivad ise ning HUB ei
vaja mingit õppimist, sest ta võtab biti vastu ja saadab selle
edasi.
Optimaalse
marsruutimisega tegeleb ainult ruuter, kus valitakse marsruuti.
Cut
through – Ilma täit paketti vastuvõtmata on võimalik alustada
edasi saatmist ainult HUBide ja switchide puhul. Sillad ja ruuterid
võtavad paketid täielikult vastu, analüüsivad ja alles siis
teevad edasi saatmise otsuse.
45.
CSMA/CA
Traadita
võrkudes me ei saa kasutada CSMA/CD protokolli, sest sissetulev
signaal on nõrgem kui väljasaadetav signaal ja see summutab
sissetuleva signaali ära. Meil on raske seda analüüsida, kas see
on korralik signaal või mitte. Teine probleem on see, et traadita
võrkudes me ei pruugi kuulata seda võrgusõlme, kes meid segab ehk
oma saatmise pealtkuulamisega ei saa kindlaks teha, kas keegi segab
vahele või ei sega. Üks probleemidest on näiteks peidetud
terminali probleem. Siin tuleb kausutusele võtta CSMA/CA protokoll,
kus üritatakse põrkeid vältida. Traadita võrkudes kasutatakse ka
väga palju kanali jagamiseks koodi järgi kanali jagamist (CDMA).
Kõik saavad korraga saata, aga kasutatakse erinevaid koode. IEEE
802.11 kasutab CSMA/CA protokolli, kus tegeletakse põrgete
vältimisega. Kui kanal on vaba, siis oodatakse ära see aeg, mis
peab olema kahe saatmise vahel. Kui see aeg on kanal ikka veel vaba,
siis oodatakse veel juhuslik aeg ja kui ikka on kanal vaba, siis
saadetakse pakett ära ja oodatakse kviitungit. Kui kviitung tuli,
siis see tähendab, et paketi saatmise õnnestus. See ei pruugi
vältida veel põrkeid ning selleks kasutatakse siin sellist viisi,
et kõigepealt kanal endale reserveerida. Selleks, et põrkeid
vältida, kasutatakse sellist viisi, et kõigepealt saadetakse võrku
pakett RTS (request to
send ). Kui kaks osapoolt teineteist ei
kuule ,
aga nad mõlemad on tugijaama levi ulatuses, siis kõigepealt
saadetakse RTS pakett teele ja reserveeritakse endale see kanal. Kui
kaks osapoolt korraga
üritavad seda teha, siis tekib põrge ning
siis mõlemad ootavad selle peale juhusliku aja ja üritavad uuesti.
Kui tekib selline olukord, et üks pääseb saatma RTS-i ja teine
võtab vastu ja aktsepteerib selle, siis teine osapool saadab välja
paketi CTS (
clear to send), mis jõuab teiste osapoolteni. Tänu
sellele saavad kaks osapoolt omavahel hakata andmeid vahetama ilma,
et teised neile vahele segaksid. Pakettides on ka kirjas, kui
kauaks kanal hõivatuks jääb. Kui saatmine õnnestus, siis saadetakse
kviitung kõigile osapooltele ning nüüd võib RTS-iga uuesti
konkureerida eetrile.
46.
ATMATM
võrk oli algselt üpris kiire ning seal kasutati virtuaalkanaleid
ning oli võimalik garanteerida teatud ajalisi omadusi. Tegemist on
pakettedastus võrguga. Seal kasutatakse pakette ja need paketid
liiguvad kõik mööda paika pandud marsruuti. ATM tuli algselt välja
sellise ideega, et ta on uus võrgutehnoloogia, mis pidi Etherneti
ära asendama, aga tegelikult seda ikkagi ei juhtunud, sest Ethernet
arenes edasi. Ethernet on lihtsam ja odavam võrgutehnoloogia, kui
ATM ning sellest tingituna ta jäi peamiselt kasutusse ja püsima.
ATM-i kasutatakse tuumvõrkude või magistraalvõrkude kokku
ühendamiseks, kuhu pannakse suur ja kiire võrgusõlm.
ATM
koormuse juhtimine – Andmepakettidega liiguvad võrgus ka
halduspaketid, kus on info selle kohta, et võrgus hakkab tekkima
ülekoormus ja tuleb tõmmata hoogu maha. Seal on olemas töörežiim
„
available bit
rate “ ehk niipalju kui on võrgus vaba ressurssi,
nii palju sinna ka andmeid sisse pumbatakse ja mingil hetkel võib
see võrguressurss otsa saada. Seal on olemas bitid NI, mis siis
annavab märku, et ei ole mõtet koormust tõsta, kuna praegune tase
on hea ja CI, mis teavitab, et võrgus on tegemist ülekoormusega ja
tuleb midagi võrgus ette võtta. Kui saatja saadab andmepakette
vastuvõtjale, siis nende vahel liiguvad ka halduspaketid.
Halduspakettidesse teepeal olevad võrgusõlmed panevad
informatsiooni ning selle saavad kätte nii saatja kui ka vastuvõtja.
See on selline võrk, kust võrgust tuleb informatsioon olukordade
kohta. TCP/IPs sellist asja ei toimu.
ATM-il
on kolm kihti:
1)
AAL (adaption
layer ) – See liidestab ATM-i kõrgemal olevate
kihtidega, tüüpiliselt IP-ga (ATM on IP võrkudes kanalikihis
töötavaks protokolliks). Algselt AAL liidestus otse rakendustega
ehk kui arvuti oleks otse ATM võrgus, siis kohe AALi peal töötaks
rakendus. Kui paralleeli tõmmata TCP/IP
mudeliga , siis AAL on nagu
transpordikihiks, sest ta kahes otspunktis liidestub rakendustega.
See on mõeldud selleks, et kahe otspunkti vahelist andmevahetust
korraldada. See teeb ka IP paketid ATM pakettideks ehk võetakse
rakenduse andmed, neile pannakse päis ning saba juurde ja nendest
tehakse ATMi tasemel paketid. ATMi tasemel pakette nimetatakse
rakkudeks. On olemas konstantse edastuskiirusegaega AAL kiht, muutuva
edastuskiirusega AAL kiht ning ka IP datagrammide jaoks spetsiaalne
AAL kiht. IP pakett pakitakse ATMi paketi sisse ning pannakse täiend
juurde, et paketi pikkus oleks 48 baidi kordne.
2)
ATM – See oleks TCP/IP mudeliga paralleeli tõmmates nagu
võrgukiht. ATM kiht tegeleb pakettide kommuteerimisega läbi
erinevate võrgusõlmede sihtpunktini välja. ATM pakub erinevadi
teenuseklasse:
a)
CBR ehk
konstantne bitiedastuskiirus - Antakse saatjale ja
vastuvõtjale kanal, kus on konstantne andmeedastuskiirus. See
tähendab, et andmed kaduma ei lähe ja kõik andmed lähevad õiges
järjekorras ja ajalised omadused on garanteeritud ning ülekoormust
ka ei teki. (video- ja
telefoniside ) b)
VBR ehk varieeritud bitiedastuskiirus –
Garantii on teatud
vahemikus ja ta võib kõikuda, aga miinimum ja maksimum on
garanteeritud. Andmed ei lähe kaduma ja liiguvad sama marsruuti
mööda. Samuti ajalised omadused on garanteeritud ja ülekoormust
tekkida ei saa, kuna maksimumil on piir ees. (video- ja telefoniside)
c)
ABR ehk Olemasolev bitikiirus – Saatjale ja vastuvõtjale antakse
miinimumgarantii. See on garanteeritud, aga kui võrgus on vabu
ressursse, siis saab kiirust tõsta. Andmete kadumaminekut ei
garanteerita, kuna võrgus võib tekkida ülekoormus ja osa pakette
võidakse ära visata. Paketid liiguvad mööda ühte marsruuti, siis
nad järjekorda omavahel ei muuda, aga midagi võib kaduma minna.
Ajalisi omadusi ei garanteerida.
d)
UBR ehk määramata edastuskiirus – See meenutab kõige rohkem
TCP/IP võrke. Siin mitte midagi ei garanteerita. Kui võrk on täis,
siis ei lähe mitte midagi läbi ja kui võrk on tühi, siis läheb
sealt palju läbi. Siin võib ülekoormus tekkida, aga mingit
tagasisidet selle kohta ei
anta . Paketid võivad kaduma minna. Kuna
kõik paketid liiguvad sama marsruuti mööda, siis garanteeritakse
ainult see, et pakettidevaheline
järjekord ei muutu. See meenutab
kõige rohkem seda, mida pakub Internet.
ATMi
rakk on selline, et tal on 5 baiti päis ja 48 baiti sisu. Paketi
päises on kanali identifikaator, kanali tüüp, CLP ning
kontrollkood. ATMi kiht on selleks, et paketis oleva identifikaatori
järgi see pakett liigub läbi erinevate kommutatsioonisõlmede.
3)
Füüsiline kiht – See tagab füüsilise bittide liikumise läbi
erinevate keskkondade. Füüsiline kiht
kooseb kahest kihist:
1)
TCS – Kohandab ATMi paketi vastavalt füüsilisest kihist sõltuvale
tehnoloogiale.
2)
PMD – Tegeleb konkreetse füüsilise edastuskeskkonna järgi
andmeedastusega.
ATM
on selline võrk, kus kasutatakse virtuaalkanaleid. TCP/IP võrgukihi
tasemel ei ole mingeid paikapandud marsruute, aga ATM võrkudes on
paika pandud marsruut. ATM paketi päises on ka virtuaalakanali
identifikaator, mitte sihtpunkti aadress. ATM kasutab kahte sorti
kanaleid ehk siis püsikanaleid ja kommuteeritud kanaleid. Püsikanal
tähendab seda, et kui on tegemist tuumvõrguga, siis on marsruudid
paika pandud erinevate ruuterite vahel. Siis ei ole vaja kanalite
loomise peale hakata aega kulutama. See teeb ka ATM võrgu kiireks.
Kommuteeritud ATM võrkude puhul pannakse igakord marsruut paika.
Üldiselt
marsruut otsitakse üles, siis teine osapoole aktsepteerib selle
marsruudi ja kogu andmevahetus liigub mööda seda etteantud
marsruuti. Füüsilisi ressursse ei reserveerita ja marsruut on
paigas ning igas võrgusõlmes kulutatakse marsruudi leidmisele vähem
aega ehk ei ole vaja igale paketile otsida eraldi teed. Iga pakett
liigub kui omaette nähtus ja iga paketi päises on sihtpunkti
aadress ehk igas paketipäises on virtuaalkanali identifikaator mille
järgi pakett võrgus liigub. Paketi päis muutub igas võrgusõlmes.
Pakettedastusega võrkudes paketi päis jääb samaks ja aadress jääb
paketipäisesse ning igas võrgusõlmes toimub paketi marsruudi
valik. Ruuterites on olemas informatsioon marsruutimistabelites,
mille kaudu toimub pakettide edastus.
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
saavad olla kindlad, et see kellega nad suhtlevad on täpselt need
õiged inimesed kellena nad väidavad ennast olevat ehk keegi teine
ei saa võõra nime all esineda. 3) Sõnumi
terviklikkus – See, mis
teele saadetakse peab ka tervikuna samal kujul kohale jõudma, et
keegi ei pääse teepeal seda sõnumit
muutma ilma, et seda ei
avastataks. Selleks pannakse sõnumile juurde kontrollkood. Kui
sõnumi sisu muuta, siis kontrollkood enam sõnumi sisuga kokku ei
lähe ja saame kindlaks teha, et keegi on seda sõnumit vahepeal
muutnud. See sobib veakindluse tagamiseks, aga turvalisuse mõttes
jääb veidi nõrgaks. Kasutatakse räsifunktsioone, mis annavad
sõnumist fikseeritud pikkusega tulemuse. Nad on piisavalt head, sest
on raske leida kahte erinevat sõnumit X ja Y, et mõlema
räsifunktsioon oleks sama. Võetakse ette sõnum ning lastakse läbi
räsifunktsiooni ning saadakse räsi ehk sõnumi signatuur ehk
allkiri .
4)
Saadavus ja juurepääsu kontroll – Võrgus olevad teenused peavad
olema kõigile, kellele need on mõeldud, kättesaadavad.
Sõnumile
„näpujälje külge
panemine “ – Võtame sõnumi ja meil on
olemas salajane võti, mille sõnumile juurde paneme ja laseme läbi
räsifunktsiooni. Selle paneme sõnumile sappa ja teises otsas
tehakse sama tegevus. Arvutatakse sõnumist räsifunktsioon ja
võetakse see räsifunktsioon, mis sõnumiga kaasas käis. Siis
võrreldakse neid ja kui see annab sama tulemuse, siis võib öelda,
et see sõnum on olnud muutumatu. Räsifunktsioonide arvutamiseks on
erinevad algoritme ning ühed tuntumad on MD5 ja SHA-1.
Teod,
millega sissetungija saab ebameeldivusi tekitada on: 1) Pakettide
pealtkuulamine ja
salvestamine kanalis - Kuna paketid liiguvad
avalikus võrgus, siis neid on võimalik pealt kuulata ja kätte
saada. 2) Saatja aadressi ära muutmine
–
Kuna
alates võrgukihist on kõik osa operatsioonisüsteemist, siis
järelikult operatsioonisüsteemi sees on võimalik ära muuta saatja
aadressi ehk kellegi teise nime all saata. 3)
Võrgu loomine – Võimalik on luua arvutitest selline võrk, kas
tahtlikult või mittetahtlikult arvuteid viirustega nakatades ja nad
korraga panna esitama päringuid serverile ja sisuliselt server umbe
ajada. 4) Andmete muutmine, sisestamine, eemaldamine pakettides 5)
Teenuste kasutamise
keelamine – Võimalik on keelata teises arvutis
teatud teenuseid kasutada, kui ligi pääseda teise arvutisse.
48.
Krüptograafia, algoritmid ja võtmed
Krüptograafia
tähendab tõlkes „salajane kirjutamine“.
Protsessi
kulg näeb välja selline:
1)
Avatekst – Info, mida soovitakse saata, ilma et see oleks kaitstud.
2)
Krüpeerimisalgoritm – Sisaldab kõike seda, mida avatekstida
tehakse ehk selles määratakse ära tegevused ja operatsioonid.
3)
Võti – Selle abil krüpteerimisalgoritmi kasutades
rakendame seda
avatekstile ja saame krüpteeritud teksti. See annab võimaluse
varieerimiseks. Võtme pikkus määrab ära võtmete hulga, kui palju
tuleb neid läbi proovida.
4)
Krüpeeritud tekst – Saadetakse mööda kanalit minema.
5)
Dekrüpteerimisalgoritm – Vastuvõtja rakendab seda algoritmi, et
avatekst kätte saada.
6)
Võti – Seda rakendades dekrüpeerimisalgoritmile on võimalik
avatekst kätte saada
Krüpeerimisalgoritme
on kahte tüüpi:
1)
Sümmeertilise võtme algoritmid ehk salajase võtme algoritmid –
Üks ja sama võti nii saatjal kui ka vastuvõtjal ja seda rakendades
krüpeerimise/dekrüpteerimise algoritmile saame šifreerida või
dešifreerida. Kui saatja või vastuvõtja selle võtme avalikustab,
siis andmete vahetamine ei ole enam salajane.
2)
Asümmeeriline võtme algoritm ehk avaliku võtme algoritm – Siin
on kaks erinevat võtit ehk ühe võtmega krüpeeritakse ja teise
võtmega dekrüpeeritakse. Ühest võtmest teist tuletada ei ole
võimalik. Siin on üks võti avalik ja teine on salajane. Kui
tahetakse saata näiteks kirja ühele kindlale kasutajale, siis
kasutatakse selle kasutaja avalikku võtit. Kõik saavad seda
avalikku võtit kasutades sellele kindlale kasutajale kirjutada, aga
seda saab dekrüpeerida ainult siis, kui see on avaliku võtmega
kinni pandud, sest lahti saab ainult salajase võtmega. See salajane
võti on ainult kindla kasutaja käes.
Tüüpiliselt
tänapäeval on krüpeerimisalgoritmid avalikud ja võtmed on
salajased. Võti on see, mis tagab salastatuse. Kõik algoritmid ei
ole päris avalikud, sest näiteks
pangad on algoritme
ei avalikusta. Samas algoritmide salastamine ei ole alati võimalik,
sest need inimesed, kes neid algoritme välja mõtlevad, liiguvad ka
ühelt töökohalt teisele ja sellest tulenevalt need tulevad ikkagi
mingi aja möödudes avalikuks. Samuti kui on teada
krüpeerimisalgoritm, siis see ei pruugi aidata alati dekrüpeerida,
sest tegelikult võtme pikkus on see, mis tagab salastatuse. Kui on
tegemist väga hea algoritmiga, siis selle teadmine meid ei aita,
sest peame ikkagi kõikvõimalikud võtmed läbi proovima. Kui uus
algoritm välja mõeldakse, siis lastakse üldiselt suur hulk inimesi
selle algoritmi kallale ja tüüpiliselt pannakse välja ka auhindu,
kui keegi suudab selle lahti muukida. Hea algoritm on see, kus ei
anna mingeid
variante välja mõelda, et proovitavate võtmete hulka
saaks vähendada. Kui võtmete hulk on väga suur, siis võtmete
läbiproovimine võtab palju aega ja ressursse ning see ei tasu
üldiselt ära. Teine aspekt on see, et võrgus liigub väga palju
igasuguseid pakette ja kuidas leida nende hulgast üles just täpselt
ainult need, mida tasub hakata lahti muukima.
49.
Sümmeetrilise võtme krüptograafia, DES
Meil
on kaks osalist – saatja ja vastuvõtja. Neil on omavahel kokku
lepitud salajane võti. Kui kumbki hoiab oma võtit saladuses, siis
see sõnum krüpeeritakse ära algoritmi ja võtme abil. Siis
saadake selle võtme abil šifreeritud sõnum ja see dekrüpeeritakse jälle
sama võtme ja algoritmi abil ja teist korda seda võtit rakendades
sellele krüpeeringule saame selle sõnumi tagasi.
Krüpeerimise
näited, mida on maailmas kasutatud:
Asendusšiffer
– Üks tähestik asendatakse lihtsalt teise tähestikuga. Kui on
tegemist ühe tähestikuga, siis on monoalfabeetilise šifriga
tegemist. Siin võib olla tegemist kas lihtsa nihkega või täiesti
segamini pööratud variantidega. Seda on üpris kerge lahti murda,
sest inglise keeles on tähestikus 26 tähte ja probleemiks on ka
keele omapära. Igas keeles on oma tähtede esinemise sagedus ning
see on igas keeles üpris omapärane. Selliseid viise tänapäeval
arvutustehnika
olemasolul enam ei kasutata, sest neid on lihtne lahti
murda. Ajaloost on tuntud Caesari šiffer. Iga tähel on tähestikus
oma järjekorranumber ja sellele liidetakse +3 otsa ehk siis vastavat
tähestikku nihutatakse kolme võrra. Dešifreerimine toimub
vastupidi ehk järjekorranubrist lahtutakse -3 ja saadakase vastavad
tähed. Polüalfabeetilise šifri korral on kasutusel mitut
tähestikku. Üks ja sama täht võib erinevates kohtades saada
erineva vaste. See suurendab variantede hulka, aga ikkagi, kui on
piisavalt pika
tekstiga tegemist, siis on võimalik keele
statistilisi omadusi arvestades välja visata neid variante, mida ei
tasu läbi proovida. Polüalfabeetilise šifri korral võib võtmeks
olla näiteks see, kui palju tähte nihutatakse. Üldiselt vanemal
ajal krüpeeriti
tekste , tänapäeval aga kahendinformatsiooni ehk
bitijada.
Võimalused
lahti murdmiseks:
1)
Proovida kõikide võtmete läbiproovimist
2)
Üritada analüüsida, eriti kui algoritm on käes
3)
Tuntud avateksti rünnak - Kui on olemas osa avateksti ja sellele
vastavat krüpeeritud teksti
4)
Valitud avateksti rünnak – Kui on võimalik valida teksti ja saada
sellele
tekstile vastavat krüpeeringut
DES
(Data Encryption Standard) – Kasutati 56 bitist võtit ja 64
bitiste blokkide kaupa krüpeeriti. DES-i turvaliseks tegemiseks
kasutati kolmekordset DES-i ehk 3-DES-i. Sel
juhul kasutatakse kahte võtit kolm korda erinevalt kombineerides või
kolme erinevat võtit. See teeb võtme olulisemalt pikemaks ja ka
turvalisemaks. Teise
asjana seotakse
plokid omavahel sõltuvusse ja
kui hakatakse dekrüpeerima plokke vales järjekorras, siis sealt
midagi mõistlikku välja ei tule. Kui näiteks 64-bitine
plokk tuleb
sisse ja rakendatakse 54-bitist võtit ja saadakse uus 64-bitine
plokk. Kõigepealt see 64 bitti keeratakse omavahel segamini. Vasak
pool ja parem pool pakitakse kokku omavahel koos võtmest võetud 48
bitiga ja sellest tekib uus selle ploki parem pool. Parem pool läheb
vasakuks pooleks ja uus see, mis oli eelmise ploki parem pool, läheb
vasakuks pooleks ning sellega tehakse jälle uus tegevus. See
parempool omakorda läheb järgmise tsükli vasakuks pooleks. Nii
tehakse 16 ringi ja siis veel keeratakse need bitid omvahel segamini.
Sellega DES tegeleb. DES-i edasiarendus on AES. Seal kasutatakse
128-bitiseid blokke ja erinevate pikkustega võtmeid. Seda peetakse
olulisemalt turvalisemaks. Kui DES-i puhul kõikide võtmete
läbiproovimine võtaks aega võimsal arvutil 1 sekund, siis AES-i
puhul umbes 149 triljonit aastat. Plokk krüpeeritakse kas voošifri
või plokkšifriga. Voošiffer tähendab seda, et sisse tuleb üks
bitt ja selle biti peal rakendatakse võtit ja vastavalt sellele
võtmele ja bitile, need kaks pannakse omavahel välistava VÕI-ga
kokku ja tekib uus bit. Kasutatakse ka plokkšifreid ehk lastakse
sisendplokk läbi mingi krüpeerimiseploki ja tulemuseks on
samasugune plokk.
Tüüpiliselt
sümmeetrilise võtme algoritmid on sadu tuhandeid
kordi kiiremad,
kui asümmeerilised ehk avaliku võtme algoritmid.
50.
Avaliku võtme krüptograafia, RSA
Kaks
matemaatikut Diffie ja Hellman tulid välja mõttega, et on olemas
matemaatilisi opratsioone, mida ühtepidi on võimalik lihtsalt teha,
aga mida tagurpidi teha on suhteliselt tülikas või võimatu. Selle
abil on võimalik tuletada võtmeid. Kaks võtit ja ühe
tuletamine teisest ei ole võimalik.
Avaliku
võtme krüptograafia skeem:
Kaks
võimalust: 1) Salastamiseks 2) Audentimiseks ehk sõnumi
allkirjastamiseks
Salastust
saab tagada selliselt:
Kui
meil on kaks kasutajat. Meil on esimese kasutaja avalik võti ja
salajane võti. Meil on teise kasutaja avalik võti ja saljane võti.
Kummalgi on oma komplekt võtmeid ja kahe peale kaks komplekti
võtmeid. Salajast võtit ei anta mitte kellelegi, aga avaliku võtme
võib teha nähtavaks kõigile. Kui esimene kasutaja tahab teisele
kirjutada nii, et ainult teine kasutaja saaks seda lugeda, siis ta
kasutab teise kasutaja avalikku võtit, mis on kõigile teada.
Krüpeerib selle kirja ära ning ainuke, kes selle lahti saab võtta
on teine kasutaja oma salajase võtmega. Avaliku võtmega pannakse
kinni ja avaliku võtmega seda uuesti lahti võtta ei saa ning lahti
saab võtta ainult selle kasutaja salajase võtmega, kelle avalikku
võtit me oleme kasutanud. Esimese kasutaja avalik võti ja teise
kasutaja salajane võti ei ole omavahel seotud. Selleks, et kirjutada
kirja nii, et ainult teine kasutaja saaks seda lugeda on meil vaja
tema avalikku võtit ja pärast seda loeb teine osapoole selle oma
salajast võtit kasutades.
Audentimine
– Kui esimene kasutaja tahab kirja kirjutada nii, et see oleks
kindlaks tehtud, et see on tema kirjutatud, siis esimene kasutaja
paneb selle kokku oma salajase võtmega. Seda saab lugeda esimese
kasutaja võtmega. Selle mõte on see, et kui see kiri on lahti
võetav esimese kasutaja avaliku võtmega, siis see garanteerib
selle, et see on krüpeeritud esimese kasutaja salajase võtmega.
Veel garanteerib se selle, et esimene kasutaja, kes selle krüpteeris
oma salajase võtmega, siis sai ainult tema seda teha. See on
digiallkiri ehk see garanteerib selle, et keegi teine seda
allkirjastada ei saanud, peale esimese kasutaja.
Avaliku
võtme krüptograafiat saab kasutada kahtepidi, kas salastamiseks ja
allkirjastamiseks. Kui me tahame teha mõlemat, siis tuleb mõlemat
skeemi kasutada korraga.
Avaliku
võtme krüptograafia puhul meil on algoritm, sõnum ja teise
kasutaja avalik võti. Sellega krüpeeritud tekst läheb teele ja
teine kasutaja dekrüpteerib selle oma salajase võtmega. Kui me
rakendame sõnumile avalikku võtit, siis veel korra tulemusele
salajast võtit, siis me saame lähteteksti tagasi ja ka vastupidi.
Üks tuntumaid ja veel ka kasutusel olevaid on RSA.
RSA
seisneb selles, et me
oskame korrutada, aga me ei oska suuri arve
teguriteks lahutada, sest see on keeruline. Kui on kahe algarvu
korrutamisega tegemist, siis on keerulisem teguriteks jagamine.
Siiani ei ole keegi leiutanud sellist algoritmi, kuidas seda teha.
Meil on kaks
suurt algarvu p ja q ning me korrutame need omavahel läbi, siis
saame n-i (n=p*q). See on üks võtme komponent. Kui me oskame selle
n-i uuesti p-ks ja q-ks tagasi teha, siis on pool lahtimurdmist
tehtud. Järgmisena tuleb arvutada välja z, mille saame nii: z =
(p-1)(q-1). Järgmisena valime e (e
Kõik kommentaarid