1.
Üldine kommunikatsiooni mudelRr
Kommunikatsioonisüsteem
ei tee vahet sellel
mida me
täpselt edastame (video,
heli, pilt jne kõik tõlgitakse ikkagi 1 ja 0 jadaks)
Simplex
- ühesuunaline
Pool-
Duplex - mõlemat pidi, aga korda mööda, walkie-talkied, ainult üks saab
korraga andmeid
edastada Täis-Duplex
- mõlemat pidi ja samal ajal, telefonid
Süsteemi
rrRrrrrr on infovahetus, seega meil on:
Allikas
-
Saatja -
Edastaja -
Vastuvõtja -
Sihtpunkt Allikas
- genereerib edastamiseks vajaliku infoex
Saatja
- kodeerib allika poolt genereeritud info signaaliks (ADC nt kui
edastame heli)
Edastaja
- vastutab signaali transportimise eest punktist A punkti B
Vastuvõtja
- dekodeerib saadud signaali sihtpunkti
jaoks arusaadavasse
vormi
Sihtpunk
- self-explanatory, aga
okei , see kes kasutab
saadetud infot
2.
Kommunikatsioonisüsteemi ülesanded Signaali genereerimine - ja ka edastamine , signaali ühest r teise üle viimine
Sünkrroniseerimine - andmevahetus peab samas taktis, muidu tekivad vead sRisse, so peab vastutama, et saatja R vastuvõtja töötaks samas taktis
Andmervahetuse manageerimine - ülekandesüsteemi mõistlik kasutamine-koormamine
Vookontroll - et ei tekiks nö r, liikluse suunamine, ressursi kasutamine, sest vastuvõtja saab ainult mingis kindla kiirusega pakette vastu võtta. Kui puhver on täis, siis andmed lähevad kaotsi.
Veaparandus/tuvastus - nt kontrollsummade/bittide abil, vajadusel palub uuesti saata paketti, vajalik mürarikkas keskkonnas
rr
Marsruutimine - Pakett õigesse sihtkohta toimetada võimalikult lühikest teed pidi
Taastumine - kui tekib veaolukord, siis oskab händelida, mitte ei viska susse püsti, süsteem peab aru saama, kus parasjagu tööga pooleli oldi (rr tehtud, mis tegemata)
Sõnumite formattimine - Saatja ja vastuvõtja omavaheline suhtlemine , seega peab olema sama kodeering
Turvalisus - krüpteerimine, privaatkanalid
Võrgu manageerimine
Liidestus - kokku ühendamine, nt arvuti+võrk, võrk+võrk
RVõrgutopoloogiad
Täielikult
ühendatud - ressursikulukas, aga pole marsruutimistr vaja teha seega
peaks aega kokku horrr.
Tähtvõrk
- üks keskjaam, millega on kõik teised ühendatud, suht dodgy
variant kuna kogu süsteem sõltub sellest keskmisest
Siinivõrk
(ülemine) ja Ringvõrk
Võrgu
tüübid:
- LAN - privaatselt omatud, ühendab seadeid suletud kohas (kool, kodu, kontor etc), skoop on küll väike, aga enamasti on andmeedastus parem kui WAN puhul
- MAN - üle linna ühendatud võrk (metropolitan area)
- WAN - kaugühendused, suured alad, think eri linnad, riigid ( wide area)
3.
Mitmekihiline arhitektuur postisüsteemi näite baasil
Story
time - Kirja edastamine koosneb etappidest. Esiteks meil on saatja ja
vastuvõtja, teiseks sel ajal kui kiri on teel, siis ei teata selle
sisust midagi.
Saatja
peab kirja adresseerima, et see oleks kohale toimetatav.
Saatja
- Postkontor - Transpordivahendid - Postkontor (võib korduda
mitu korda, sest kiri võib läbida ka mitu postkontorit) - Saaja.
Vahepealsetes etappides ehk transpordil ja postkontories ei teata
midagi kirja sisust.
Allikas
on andmete genereerija, Saatja teisendab andmed transpordiks sobivale kujule (bittideks), Edastaja - transpordib signaali
ühest kohast teise, Vastuvõtja - võtab signaali vastu ja
teisendab arusaadavale kujule, Adressaat kasutab saadetud
andmeid.
Kiri
peab olema koostatud kindlate reeglite järgi: übriku sees, aadress.
Meie ei näe postisüsteemi (nagu teised kihid ei näe mis
neist väljaspool toimub). Kiri on nagu rakenduskihi protokoll -
reeglid, kuidas sõnum kirja panna, mis keeles jne. Postisüsteemi huvitab ainult mis on kirja peal, mitte sisu.
2
kihti omavahel seotud liidesepunktide abil. Kirja kirjutajat ei
huvita kuidas kirju sorteeritakse (pole vajalik info) ja sorteerijal
on ükskõik mis seal kirja sees on seega teineteisest sõltumatud.
Postkontoritel on ka oma protokoll kuidas neid kirju peab pakkima nt
nööriga, kotti etc.
Juures
on ka legit teenuse edastamise süsteem. Ülemine kiht pakub teenust
alumisele. Igal kihil on omad protokollid (reeglid) ja teenused.
4.
Kihid, teenused, protokollid ja andmete liikumine läbi kihtide
Kihilist
arhitektuuri kasutatakse, sest nii on võimalik eraldada arvutivõrk
ja riistvara konkreetsest rakendusest, kõik komponendid on
iseseisvad ja neid saab asendada. Kihtidel ei ole vaja teada kuidas
mingi teine kiht töötab, aga oluline on mis teenuseid pakub üks
kiht teisele (alumine pakub teenuseid ülemisele [kui nilbe saab
olla?])
Kihte
on kokku kolm, kõige alumine on võrgukiht
Failiedastus arhitektuur (lihtsustatud ver)
3 kihi mudel
Failiedastus rakendus
Rakenduskiht
-failid & failiedastuskäsud
Aplikat. protokoll (Pm reeglid kuidas pakette teha)
Kommunikatsiooni moodul
Transpordikiht
Kommun . seotud sõnumid
Transpordi protokoll
Network Access Module
Võrgukiht
Kommun. võrk
Võrgukihi protokoll
1.
Tase: Failiga seotud tasemel toimingud
2.
Tase: Kommunikatsiooniga seotud tegevused - faili tükeldamine,
saatmiseks ettevalmistamine. Räägime pakettidest, sisu pole oluline
(ei tee vahet kas edastame pilti või videot), kommunikatsiooni
korraldamine.
3.
Tase: Füüsiline andmeedastus - konkreetne võrgutehnoloogia, mis
tegeleb andmeedastusega.
Protokoll
(so scary, such koll) - süntaks , reeglistik mille järgi
moodustatakse pakette, vajalik kontrolli teostamiseks, sisaldab infot
kuidas veaolukordi lahendada, mida andmetega peale hakata ja mida
mingid väljad üldse tähendavad, info mis taktis toimub
andmeedastus. Pm kui seda järgida, siis on kaks osapool võimelised
omavahel suhtlema. EHK Süntaks, semantika , ajastus.
Neid
soovitatakse standardiseerida, kui on eeldada, et kasutajaskond on
lai, lisab paindlikkust. Nõrkuseks see, et “külmutab” tehnoloogia ja sama asja jaoks luuakse mitu standardit.
Saatja
ja vastuvõtja samad kihid suhtlevad omavahel tinglikult , e alumise
kihi poolt temale osutatud teenuseid ja eelnevalt kokkulepitud
protokolli kasutades. Iga kiht lisab saadud andmetele päise
ja edastab tulemuse madalamale kihile , vastuvõtmisel võtab iga kiht
talle määratud päise maha ehk sort of nagu ümbrikud (digging dem
postal refrences)
Aadressid on liidesepunktides - võrgukihi aadress on IP aadress.
Päised
-
Transpordikihi päis : Sihtkoha SAP, järjekorra nr
Võrgukihi
päis: Sihtarvuti aadress
IP
aadress et leida üles arvuti, SAP et teada kus pordis asub rakendus.
Mis
juhtub andmetega? Pannakse iga kihi poolt justkui ümbrikusse, ehk
lisatakse iga kihi poolt oma päis juurde, mis sihtkohas kenasti maha
kraabitakse (kapseldamine). Alt üles liikumisel viskab iga kiht oma
päise minema.
Kiht
N osutab teenust kihile N+1 ja saab mingit teenust
kihilt N-1. Kihil N on ühine protokoll mõne teise N kihiga .
5.
OSI mudel (hahaha ok hammustage patja , see tuleb romaan)
http://i.imgur.com/sA5hK3K.png
Kui
olid veel pimedad ajad (loe: 1970ndad) oli igal suuremal
arvutitootjal oma protokoll, mis on dumb as fuck , sest need ei olnud
ühilduvad ja võrgus said olla ainult ühe tootja arvutid . Seetõttu
loodi ISO poolt see fancy mudel mille abil saavad Mac ja HP ka
tänapäeval läbi.
Selle
kohaselt jagatakse sõnumi edastamiseks vajalikud funktsioonid 7 kihi
vahel. Iga kiht suhtleb otseselt vaid naaberkihiga ja madalamate
kihtide kaudu ühenduspartneri sama kihiga.
PS.
Tabelis on kõrgemalt kihilt madalama poole
Rakenduskiht
Tegeleb võrgu läbipaistvuse, ressursijaotuse ja probleemide lahendamisega, kasutajate viis OSI keskkonnaga suhelda (võrguteenuste esitamine lõppkasutajale mugaval kujul)
Esituskiht
Võrgust saabuvate andmete teisendamine üldkujult konkreetse rakenduse jaoks sobivale kujule ja vice versa. Siin tegeletakse veel failide ligipääsuõigustega ja lukustamise kontrollimisega, andmete (de)krüpteerimine, põhimõtteliselt tõlgib andmeid rakenduse ja võrgu vahel
Seansikiht
Reguleerib kes-kellega ühenduses on, katkestab ühendusi rakenduste vahel, autentimine. Tagab andmevahetuse turvalisuse
Transpordikiht
Vastutab kahe punkti vahelise andmeedastuse eest, veakontroll ja vookontroll teostatakse samuti siin. Tegeleb lõppjaamade vahelise andmesidega. Rakenduselt saadud andmed segmenteeritakse ja määratakse ning kontrollitakse nende järjekorda . Määrab kas kasutatakse TCP või UDP protokolli. Alates sellest kihist võib lugeda ühendust punkt-punkt ühenduseks.
Võrgukiht
IP aadresside tasemel tegutsemine, vastutab ühenduste alustamise, pidamise ja lõpetamise eest. Andmeühikuks datagram. Pakettide marsruutimine, vookontroll. Datagrammide tükeldamine, adresseerimine, veatöötlus. IP aadressidega tegutsemine.
Kanalikiht
Jagab saadud paketid kaadriteks, enne kui nad füüsilisse kihti saadab (fragmentation). Võtab füüsilisest kihist vastu kinnituskaadreid (pm ACK kaadrid et jou, miski ei põle kõik ok), teostab veakontrolli ja kui on mingi kala, siis saadab kaadri uuesti. PS. Töötab biti tasemel, lisab mingi kontrollbitte lõppu a la kas summa peaks tulema 1 või 0 jne. PPS. Kui saadetakse pakett mille MAC adres on kõik ühed, siis see on mõeldud kõigile, kes võrku on ühendatud, kontrollib ka MAC aadresse (kas pakett on mõeldud antud seadmele või ei). MAC aadressidega tegutsemine
Füüsiline kiht
Bittide ülekandmine. See on kõik füüsiline, käegakatsutav kraam nagu juhtmed, töösagedus, pinged, topograafia, mis kaablid on kasutusel jne.
Trololo kiht
Andmeedastus kõige algelisemal viisil. Üldnimetus on “Tra ma ei viitsi” ja selle alakihid on (nh trummipõrin) “ema” ja “padrunid”. Info edastatakse diileri kaudu (aga ta peab nunnu olema ja sierraga sõitma sest mdea midagi muud vist ei eksisteeri, ahja kasse võiks ka olla), kes suhtleb füüsilisest kihist (konspekti lugesid w? gg) kõrgematega. Ja nhh ta üldse selline kiht, millega tegelikult pole väga muud teha, kui Pirso lotr.txt jagada. Väga äge! (Katsu vaid Arrak kustutada midagi)
Pakett
liigub kihtidest 7 - 1, jõuab ruuterini, kus ta harutatakse lahti
võrgukihi tasameni ( marsruuterid töötavad IP aadressidega) ja
tehakse marsruutimisotsus ja saadetakse edasi järgmisesse arvutisse .
Seejärel liiguvad andmed jälle alt üles e 1 - 7.
Iga
kiht on omaette moodul ja saame ehitada vastavalt vajadusele.
6.
TCP/IP mudel
Erinevaid
esitusi 3-5 kihti, aga kuna Reinu on Reinu siis saame kõik 5 ära
õppida.
Rakenduskiht
Kasutajatele teenuse osutamine. Sisaldab OSI rakendus-, esitlus- ja seansikihti. Käsitletakse iga protsessi, mis toimub transpordikihist kõrgemal, kõik kasutajaga seotud toimingud. Log-in, WWW access, FTP, SMTP , HTTP (web). Sõnum
Transpordikiht
Juhib programmide omavahelist suhtlemist võrgus, kasutades TCP või UDP protokolli. Process -process data transfer . Segment . Suhtlus protsesside vahel
Internetikiht
Selle abil saavad suhelda kaks masinat, mis asuvad erinevates alamvõrkudes. Seega seda kihti kasutavad lõppjaamad ja marsruuterid.Toimub adresseerimine erinevate võrkude vahel. Kasutusel IP ja ICMP protokollid. Source to destination marsruutimine. Datagramm. Suhtlus hostide vahel.
Võrguliidesekiht
Füüsiline adresseerimine ja parameetrite määramine. Seob endas OSI kanalikihi ja mingil määral ka füüsilise kihi. Vastutab lõplike kaadrite moodustamise eest, mida füüsilisse kihti edasi saata. MAC aadressi tasemel adresseerimine. Tegeleb ka mingil määral vigade tuvastusega - CRC. Cycling Redundancy Check - ehk mingi algoritmi järgi arvutatakse kontrollsumma, mis lisatakse kaadrile(?) juurde ja vastuvõtjas kontrollitakse.
Füüsiline kiht
Sellel tasemel toimub füüsiline andmeedastus. Bittide edastamine, data rate , sünkroniseerimine, defineerib elektrilised vm füüsilised parameetrid seadmetele ja keskkonnale. Määratakse andmete kodeerimisviis signaaliga, veakontroll ja kaadrite liikumine võrgu seadmete vahel määratud alal. See standardiseerib kõik võrgu aktiivseadmed (võrgukaardid, modemid).
7. Ühendusele -orienteeritud ja ühenduseta andmeedastus
Ühendusele
orienteeritud (TCP protokoll):
- Eesmärk on andmete transportimine lõppsüsteemide vahel
- “Handshaking” - valmistuda andmeedastuseks ette ehk saadetakse nö tervituspakette
- TCP - usaldusväärdne, andmed kantakse edasi järjekorras, kui midagi läheb kaotsi, siis seda teadvustatakse ja saadetakse uuesti
- Vookontroll - saatja ei koorma vastuvõtjat üle (Saatja ja vastuvõtja vaheline)
- Ummistuskontroll - kui on overload, siis saatja võtab tempot maha (Saatja ja võrgu vaheline) - Viimase kahega saame tegeleda, sest on loodud ühendus.
- Alati tuleb oodata kinnituskaadreid, kui kinnitus tuleb kauem siis võrk on koormatud, kui seda üldse ei tule siis võrk on ülekoormatud.
Ühenduseta
andmeedastus (UDP protokoll):
- Sama eesmärk: andmete transportimine lõppsüsteemide vahel
- UDP - ebausaldusväärne andmete transportimine
- Voo- ega ummistuskontrolli pole
- Kasutavad nt: HTTP (web), FTP (file transfer), Telnet (remote login ), SMTP ( email )
8.
Kanalikommutatsioon ja pakettkommutatsioon, paketi pikkus
Kanalikommunikatsioon
( circuit switching) - sidetehnoloogia, kus kahe seadme vahel
moodustatakse kahe otspunkti vahel ühendus vajalikuks ajaks
(traattelefonid). Sobib andmeedastuseks, kui on vaja edastada andmeid
kiiresti ja reaalajas .
Kanal reserveeritakse täielikult ühenduse ajaks. Vajalik on eelnev
ühenduse loomine, see tagab kindla edastuskiiruse. Ühendusele
orienteeritud andmeedastus (TCP). Suure kanali korral saab
kasutada aja (erinevatel hetkedel kasutavad kanalit eri kliendid) või
sageduse ( erineval sagedusel edastatakse eri infot) järgi
tihendamist. Ei sobi arvutitevaheliseks suhtluseks , sest ressurssi
läheb raisku.
Pakettkommunikatsioon
(packet switching) - Kasutatakse jagatud ressurssi. Iga pakett
võib liikuda erinevat marsruuti pidi - e võib esineda võrgusõlmedes
viivitusi. Efektiivsem, kui on lubatud teatav hilinemine. See ei
ole ühendusele orienteeritud, seega saab muuta,
kasutades kõrgemate kihtide protokolle.
Sõnumid
jagatakse pakettideks, iga pakett edastatakse eraldi ja eri paketid
võivad minna sihtpunkti eri teed mööda seega jõuavad suht
suvalises järjekorras kohale. Esialgne sõnum koostatakse neist, kui
kõik sõnumi paketid on kohal. Ruuter peab ootama kuni terve pakett
on ära laadinud, enne kui midagi edasi saadab (store and forward ).
Kasutajad
jagavad võrguressursi, iga pakett kasutab kanalit täies mahus.
Nõudlus võib olla suurem kui ressurss, “pudelikael” võib
tekkida, kus paketid kujuvad järjekorda ja ootavad kanali
vabanemist.
Vastuvõtmine
- analüüsimine - edasi saatmine = 3 sammu
Miks
see on winning side - Lubab mitmel kasutajal korraga kasutada, nt 1
Mb/s kanal, igal kasutajal 100 kb/s kui “aktiivsed”, aga
tõenäosus, et kõik on kogu aeg aktiivsed on piisavalt väike.
Sidekanaleid ei ole mõtet projekteerida max olukordade jaoks, sest
siis on võrk alakoormatud (nii nagu pole mõtet teha Pirita teed 5
realiseks, lihtsalt sellepärast et 2x päevas on seal tipptund).
Pros
- Sobib andmeedastuseks, kus me vahepeal kasutame kanalit, vahepeal vaikus. Lihtsam, ei ole handshakingut.
Cons
- Viivitused, andmekadu, pole protokolle, mis tagaksid kindla
andmevahetuse ja vookontrolli.
Endiselt
avatud probleem e kuidas imiteerida kanalikommutatsiooni
pakettkommunikatsioonis.
Datagram
network - nt DCP-IP võrgud , sihtkoha aadress paketis määrab
kuhu ruuterisse edasi hüppame, marsruut võib muutuda sessiooni
jooksul, suht nagu sõidaksid sõbrale kuhugi X kohta külla ja mingi
kohalik soovitab sul hoopis Y teed kasutada. See ei ole ei
ühenduseta ega ühendusega võrk.
VÕI
Virtuaalahel - Rakendatud pakettedastusvõrkudes. Ressurss on
kõikidele kasutatav. Marsruut on ette ära otsustatud, ehk igas
sõlmes ei tehta enam otsust et kuhu peaks minema ja kust kaudu oleks
parem.
Sõnumikommunikatsioon
- andmed pannakse pakettidena teele ja igal pakil on küljes aadress
kuhu saata. Saadetakse edasi kõik ühe sõnumi paketid korraga.
Võrgusõlmed peavad saama kätte kõik sõnumi paketid, enne kui
võivad midagi edasi saata, seega viivitus võib suurem olla.
Paketi
pikkus - Kiirema andmeedastuse tagamiseks on mõistlik andmeid tükeldada e teha pakette. Okei kujuta ette, et sa saadad filmi, aga
ei tükelda seda pakettideks. Ruuter peaks ootama kuni terve see jama on ära laadinud, enne kui ta saab hakata järgmisesse kohta edasi saatma infot. Pakettidega saab saata esimese paketi teele ja samal
ajal hakata järgmist edastama . Pm kujuta ette inimesteliini, kes
annavad veeämbrit edasi. Pole vaja oodata, et see ämber jõuaks
viimase inimeseni, pm võib jätta ainult 1-2 inimest vahet ja
järgmise teele saata.
Lisaks
sellele, kui pakett on suur ja läheb kaduma, siis tuleb see uuesti
saata + vigade esinemise tõenäosus on suurem - ehk viskame veel
rohkem pakette ära.
Liiga lühikese paketti puhul on kasulikke andmeid vähe (päis on ka,
andmeid võiks olla rohkem kui päise pikkus).
Paketi
optimaalse pikkuse leidmine on fun shit . Liiga lühikese korral
raiskad aega, liiga pika korral samuti (nt midagi läheb kaotsi,
uuesti saatmine võtab ropult aega), arvestada tuleb ka üleminekuga ühelt seadmelt teisele.
1.
Pilt - Paketiedastus kahe otspunkti vahel, nt ruuterist-ruuterisse.
Pakett läbib 3 kanalit. 99 ajaühikut kulub paketi edastuseks.
2.
Pilt - Teeme selle sama paketti lühemaks, tükeldame. 3*13=65
ajaühikut
9.
Multipleksimine sageduse, aja ja koodi järgi
FDM
e sagedusmultipleksimine - Mitmele sõltumatule signaalile ühises
edastusmeedias eraldi sagedusriba eraldamine. Sagedusmux võtab vastu
sisendsignaale individuaalsetelt lõppkasutajatelt ja genereerib
kõigile oma sageduse. Tulemuseks on laia ribalaiusega liitsignaal,
mis sisaldab kõigi lõppkasutajate andmeid. Kaabli teises otsas
eraldatakse signaalid demux-iga ja marsruuditakse lõppkasutajale.
TDM
e aegmultipleksimine - Andmejadasid kombineeritakse nii, et
eraldatakse igale andmejadale erinev ajaintervall. Selle puhul
edastatakse fikseeritud ajaintervallide järjestust mitu korda üle
üheainsa side kanali. Kui on arvuti kord “rääkida”, kellel
pole enam midagi edastada, siis ta ongi enda ajavahemikus vait.
Andmeid saab edastada vaid sellel kindlal ajaintervallil, nii on
tagatud et ei hakata teineteisest “üle rääkima”.
CDMA
e koodijaotusega hulgipöördus - Kasutajal on kogu kanalile
juurdepääs, igale signaalile määratakse kood ja sellega tehakse
eri signaalidelt vahet. Signaal “venitatakse” üle ribalaiuse.
Saatja kodeerib oma signaali sama mustriga, mida kasutab vastuvõtja
dekodeerimiseks. Kasutab 64 ?laiust seega hästi turvaline
infoedastusviis.
https://www.reddit.com/r/askscience/comments/2gpmga/how_does_cdma_work/ - üli dope seletus
10. Ajalised viited võrkudes
Processing delay e Paketi töötlemise peale kuluv aeg - Vigade
kontroll, aadressi otsimine, päise lugemine, ehk iga pakett võetakse
vastu, päisest tuleb välja lugeda info kuhu see edasi saata ja see
võtab aega.
Queuing
delay e järjekorra peale minev aeg - Pakett ootab, et
see edasi saadetakse. Ooteaja pikkus sõltub varem saabunud
pakettidest, mis samuti ootavad. Tavaliselt mikro kuni millisekundid.
Igatahes, on vaja oodata, kuni protsessor vabaneb, et üldse paketti
töödelda, määrav on ka võrgu koormus. Juhtub kui pakette tuleb
kiiremini, kui kanal neid händelida jõuab. Kui “järjekorras”
vaba ruumi pole läheb pakett kaotsi - ära visatud pakett = suurem
võrgukoormus.
Transmission
delay e paketi võrku saatmiseks kuluv aeg - Sõltub
kanali enda kiirusest. Kui pakett on X bitti pikk ja edastuskiirus Y
bit/s, siis kulub aega X/Y sekundit.
Propagation
delay e andmete liikumise aeg - Signaali leviku aeg
edastuskeskkonnast järgmise ruuterini. Kiirus sõltub
edasutusmeediast. Kui L on kahe ruuteri vaheline kaugus ja M on
edastuskiirus, siis viide on L/M (millisekundites). Ehk meediumi
viide, aeg, mis kulub pakettidel sidekanalis liikumiseks.
Seega
üldine delay on summa neist neljast.
11.
Arvutivõrkude ja Interneti ajalugu
Kirjutan
teile ilusa inglise keelse teksti sest...okei kui ma mõtlen välja
mis-mis on, siis tõlgin ära ka. Iga kümnendit peab oskama
iseloomustada!
1961-72
The
importance of computers began to rise in the 60s, so only now did
people start to wonder how to connect several computers. Traffic was
going to be bursty, meaning that there will be intervals of activity
followed by a period of inactivity ie sending a message and then
waiting for a response or contemplating the received response.
Thus
three groups of researchers, unaware of each others’ research,
began inventing packet switching as an alternative to circuit
switching. This pretty much laid down groundwork for nowadays Internet .
In
67(I think?) the overall plan for ARPAnet was published, the first packet-switched computer network and the ancestor of today’s
Internet. By 72 ARPAnet had grown from four to fifteen nodes and the
first host -to-host protocol was completed. Since the latter
was created, it was possible to begin developing applications.
1972-80
The
initial ARPAnet was a solitary, closed network. To communicate
with a host one had to be physically connected to another ARPAnet
IMP. In the mid-seventies, other packet switching networks were
created - ALOHAnet, DARPA, Telenet etc.
The
number of networks was growing , but they still weren’t connected.
Internetting is the fancy-pansy term used to describe forming
a network of networks. These principles were embodied in TCP (differs
greatly from the one used nowadays). The early versions of TCP
combined a reliable, sequenced data delivery (still part of TCP now)
and forwarding functions (now performed by IP). IP was seperated
when it was realised that passing data around while trying to find the real host was unreasonable. This was all researched by DARPA.
Meanwhile
ALOHAnet was being developed in Hawaii. It was a packet-based radio network that allowed multiple remote sites communicate with one
another (islands and all that). ALOHA protocol was the first
multiple-access protocol to allow users to share a single broadcast communication medium while being in random locations (radio
freq). The research was later used while developing the Ethernet protocol. Ethernet protocol was supposed to connect multiple PCs,
printers etc, meaning they were pretty much trying to develop LAN.
1980-90
The
number of hosts connected to ARPAnet was around 200. The 80s was a
period of rapid growth , much of that a direct result of several
efforts to connect several universities . BITNET provided e-mail and
file transfers between several universities while CSNET was formed to link uni researchers who had no access to ARPAnet.
In
83 the official TCP/IP was deployed as the standard ARPAnet
protocol, replacing NCP. DNS was also developed (a map between
human-readable web adresses and IP adresses).
In come the French who launched the Minitel project, a plan to
bring data networking into everyone’s home. It consisted of a
public packet-switched network, Minitel servers and inexpensive
terminals with built-in modems (that were slow af). It proved to be
tremendously successful, as the French government gave away a free
Minitel terminal to each French household that desired one (people
love free stuff).
1990s
Coming
soon - the commercialisation of the Internet. ARPAnet ceased to
exist. In 91 NSFNET lifted its restrictions and was made
available for commercial purposes. It was decomissioned in 95 as
Internet backbone traffic was handed over to ISPs.
The
main grand (actually important) event was the emergence of WWW application , which became the gateway to make the Internet
accessible to nearly everyone (previously used by the military or
universities to exchange research). It made it possible to deploy
several application without which, us university students , would be
long dead like search engines, online stores and social networks
(what else do you need?).
The
Web was invented at CERN (that place is bae) - they developed an
initial version of HTML, HTTP, a Web server and a browser (the
most basic key components). Around the end of 93 there were about 200
Web servers in operation.
By
95 university students were using Netscape to access the Web daily , companies began to operate on Web servers and moved commerce to the
Web. In 96 Microsoft started to make browsers, initialising war
between Netscape and Microsoft. The latter obviously won since you
most likely haven’t heard of the former before.
From
that point on it was a grand influx of major corporations and
startups creating Internet products, services . By the end of the 90s,
the Internet supported a shitton of applications, but the four most
prominent ones worth mentioning are: e-mail (including
attachments), the Web (browsing, commerce), IM (with contact lists),
P2P file sharing of MP3s.
2000s
Pretty
much everything is in rapid development - transmission speed ,
deployments, faster routing etc.
Agressive
deployment of Internet access to homes, not just cable modems, but
also fibre. Since high-speed Internet access is so widespread, it
has created a stage and demand of video applications, streaming and
video confrences (Youtube, Netflix, Skype).
As
high-speed public Wi-Fi, 3G and 4G is practically ubiquitous
it makes it possible to remain connected constantly, but also allows
location-based applications. Online social networks - most people
practically live there.
Online service providers like Google and Microsoft have deployed their own
networks, which do primarily two things: firstly they connect their
own global data centers to one ridiculous amount of information, but
secondly they also use it to bypass the Internet.
Cloud computing becoming common and widespread, most companies and
universities have migrated their Internet applications to the cloud.
12.
Mida erinevad rakendused nõuavad võrkudelt
Kui
kaks rakendust asuvad samas arvutis: kasutavad suhtluseks ICP-d
(operatsioonisüsteemi poolt defineeritud). See lubab kahel
rakendusel vahetada omavahel andmeid. Rakendused klassifitseeritakse
kliendiks ja serveriks, üks roll ei välista teist.
Kui
asuvad eri arvutites, siis on vaja rakenduskihi protokolle.
Rakendused nõuavad kahetasemelist adresseerimist: esiteks tuleb
leida IP-aadress ja seejärel pordi nr (ehk kus asub rakendus, SAP).
Rakenduskihid kasutavad transpordikihi TCP (töökindel, ühendatud)
ja UDP protokolle.
Rakenduskihi
protokollid defineerivad: mis tüüpi sõnumeid vahetatakse (request, response), sõnumi süntaksi (mis väljad sõnumis on),
semantika (väljades oleva info tähendus), reeglistik kuidas ja
millal rakendused saadavad ja vastavad sõnumitele.
Rakenduste
arhitektuurid
Klient - Server :
Server on alati host rollis, püsiva IP aadressiga . Kliendid
suhtlevad serveriga, nad võivad olla kuidagi kaudselt omavahel
ühendatud ja muutuvate IP aadressidega, aga kaks klienti otse
omavahel ei suhtle . On olemas ka nimeteenus - kõigepealt käime läbi
nimeteenuse, saame vastava IP aadressi ja siis pääseme serverisse.
Iteratiivne server: Üks ühendus korraga (UDP), server istub
mingi pordi taga
Concurrent server: Rohkem kui üks klient korraga. Pm kui
mingi klient võtab serveriga ühendust, siis server teeb iseendast
nö koopia ning laseb kliendil sellega suhelda ja kuulab samal ajal
edasi, kas keegi teine üritab veel ühendust saada või ei. (TCP).
Reinu seletus - Server on oma pordi küljes, kui oleme ühenduse
loonud, siis vabastab server oma pordi tesie kliendi jaoks. Luuakse
püsikontakt serveriga.
P2P:
Arvutisüsteemid, mis on omavahel ühenduses interneti kaudu ehk
failide edastamiseks ei ole vaja suhelda serveriga. Pm need kaks
arvutit funktsioneerivad kui teineteise serverid . Ehk...piraatlus
põhimõtteliselt. Mõlemal poolel on piiratud ligipääs, tavaliselt
teistel kasutajatel on ligipääs ainult ühele kaustale, mis
“serveri pool” ise ära defineerib.
Eelmise
kahe armulaps/hübriid/chimera/sodomy tulemus/P2PWeb: Kasutab P2P
suhtlust, et jagada ligipääsu netilehekülgedele. Pm on võimalik
kanda web cache ’id üle (content delivery networks) ja kui on
kiirem aeg, siis saab kasutajatele saata veebilehed . Suht kasutu kui
on tegemist dünaamilise lehega , mis eeldab, et kasutaja on pidevalt
ühendatud, aga hea viis kuidas ülekoormust vältida, kui soovitakse
lehte mis ei muutu eriti aja jooksul.
Rakenduse
jaoks võrku iseloomustavad parameetrid:
Andmete
kadu - Sõltuvalt rakendusest võib andmete kadu isegi suht okei
olla. Otseülekande puhul on no-no, failide edastamise korral on suht
suva, saab alati vigase paketti uuesti saata.
Ajalised
viited - Jällegi, kui tegemist on faili/e-kirja jms üle
kandmisega, siis sa ei sure ära kui midagi on vaja uuesti saata.
Meanwhile kõik reaalajas andmeedastused, kus see omab ka tähtsust,
et kõik ühe korraga ja ASAP üle tuleks, siis sellel on tähtsust
ka (nt online mängud).
Edastuskiirus
- Osad rakendused vajavad mingit minimaalset edastuskiirust, et olla
efektiivsed.
Turvalisus
- Krüpteerimine, data integrity
Vastavalt
vajadusele kasutatakse kas TCP või UDP protokolli. TCP on
veakindel, paketid pannakse alati õigesse järjekorda (ajakulu).
UDP-s ei ole veakontrolli, paketid tulevad suvalises
järjekorras kohale ja pole ka garantiid , et kõik kohale jõuab.
13.
HTTP
HyperText
Transfer Protocol - veebi rakenduskihi protokoll, kasutatakse kliendi
ja serveri programmides ehk klient ja server suhtlevad omavahel
saates HTTP sõnumeid. HTTP, since ta on protokoll siiski, defineerib
jällegi sõnumite struktuuri ja kuidas sõnumivahetus toimub. HTTP
kasutab TCP protokolli. Ei kontrolli seda kuidas kliendi
browser HTMList aru saab ja mida reaalselt näidatakse.
Defineerib
kuidas browserid küsivad veebilehti veebi serveritelt ja kuidas
server need kliendile edastab. Pm kui klient klikib mingile URLile,
siis saadetakse serverisse HTTP request, server seejärel fetchib
kõik objektid ja saadab need HTTP response sõnumiga tagasi
(veebilehed koosnevad objektidest , nt HTML leht 5 pildiga, sisukas
eks, on kokku 6 objekti). URL koosneb host name + path name
ww. something .com/mingikaust/pilt.jpg
HTTP
ei jäta meelde (olekut mittesäilitav), mis juba tehtud on. Kui
klient küsib serverilt mõne sekundilise vahega sama veebilehte,
siis server ei vasta et “Hei, sa just said selle ju?” vaid kaevab
uuesti sama lehe välja ja saadab kliendile. Seega kui X on saadetud
ei saa ka öelda “Saada X+1”
HTTP
(mittepüsiv ühendus)
Okei
kuidas see veebilehe küsimine käib - HTTP klient alustab serveriga
TCP ühendust (handshaking), klient saadab serverile request sõnumi
kus on ka path name mis lehte ta otsib, HTTP server otsib küsitud
objekti üles ja koostab HTTP response sõnumi, server ütleb TCP’le,
et sulge ühendus. TCP teeb sellele seen at ja ei lõpeta ühendust,
enne kui on kindel, et klient sai andmed kätte. HTTP klient saab
vastuse kätte, TCP lõpetab ühenduse. Klient kraabib HTTP sõnumist
HTML faili välja ja leiab viited piltidele. Eelnevalt mainitud stuffi korratakse kõigi piltide jaoks ka.
Iga
kord sulgetakse TCP ühendus, ehk korraga edastatakse ainult üks
request-response sõnum ja kõik objektid saadetakse ükshaaval. Aga
kuna me ei ela enam dark age’is, siis enamik browsereid teevad
tänapäeval korraga 5-10 TCP ühendust, millest igaüks händelib
ühte response-request transaktsiooni.
Püsiv
HTTP
So...tavaline
mittepüsiv HTTP on arusaadavatel põhjustel natuke dodgy. Iga
objekti jaoks on vaja uut requesti ja enamasti veebilehel on kõvasti
rohkem infi kui mõned pildid ja mõnikümmend rida html koodi. See
kõik oleks fine and dandy, kui veebiserver ei peaks tegelema sadade
kuni tuhandete eri klientidega korraga, round trip time veniks väga
pikaks (TCP ühenduse loomise RTT ja objekti saatmise RTT).
Püsiva
ühenduse puhul jäetakse TCP ühendus avatuks, klient ja server
saavad üle selle sama TCP ühenduse suhelda ehk html + kõik need
pildid saab ühe ühenduse kaudu saata. Mis veel on tore, et kui
klient küsib serverilt mingit muud lehte ja see on seal juhuslikult
olemas, siis saab ikka sedasama TCP ühendust kasutada. EHK RTT on
palju lühem (ainult üks handshaking nt). Ühenduse loomise RTT +
iga objekti saatmise RTT
Mittepüsivat
ühendust on lihtsam teha. Luuakse sama palju paralleelühendusi kui
on objekte vaja üle tuua, ehk töö tehakse paralleelseks.
HTTP
sõnumeid on kaht tüüpi - Response ja Request.
Request
sõnum koosneb - request reast (GET, POST, HEAD käsud nt GET
/somedir/leht.html), headerid (host, user -agent, connection , keel),
tühi rida mis väljendab sõnumi lõppu (?)
POST
vs GET - Post saadab serverisse nt jsoni või ajaxiga kasutaja andmed
(ei ole ns näha mis saadet), GET paneb andmed URL-i
(www.blah.com/?user=hallabanana). Get on väga retarded kui saadad nt
sisselogimisandmeid + GET’il on piirang kui palju andmeid saad
saata.
HEAD
- Palub serveril jätta küsitud objekti response sõnumist välja e
kui sa for some reason tahad ainult HTTP response sõnumit näha
PUT
- Saame faile üles laadida , URLis on path kirjas kuhu see fail panna
DELETE - Saame kustutada faili, asukoht on URLis kirjas.
Response
SÕNUM MMM SPARTA koosneb - status rida (kohe räägin neist),
headerid (kuupäev, server, viimati muudetud, sisu pikkus,
content-Type nt text/html), andmed mida requestiti
Kliendi
autentimine - Kuna HTTP on olekuvaba, siis läheb iga päringuga parool kaasa koos kasutajanimega. Kui serverile sobib, siis saame
ligipääsu.
HTTP
response status koodid
200
- OK, request õnnestus, objektid sõnumis allpool
301
- Objekti hoitakse püsivalt mujal, uus aadress allpool
400
- Bad request, server ei saa request sõnumist aru
404
- :D seda teate ikka, e nõutud dokumenti ei ole serveris
505
- HTTP version not supported
Küpsised
(suhkruvabad, Diablo omad)
Veebilehtede viis info salvestamiseks (muudab serveri põhimõtet, et oleks
olekuvaba), mida järgnevatel päringutel võib vaja minna. HTTP
response ja request on cookie header täitsa olemas. Cookie fail
hoitakse kliendi juures, browser manageerib sellega ise. Pm
funktsioneerib ID’dega, mis on serveri poolt genereeritud ja
salvestatud. Uue päringu alustades esitab klient serverile enda ID,
serveril on Cookie enda andmebaasis olemas.
Kui
uuesti läheme sinna lehele, siis server juba selle ID vm
identifikaatori järgi tunneb ära kasutaja. Kõik külastatud
leheküljed jäävad vahemällu, et hiljem vaadates saaks neid arvuti
enda mälust korjata - vähendab ajakulu. Tänage neid küpsiseid -
nüüd on teil olemas online shopping cart. Cookie jätab jälje
selle kohta, kus oled käinud. Enda arvutist saab selle eemaldada kui
cookie ära kustutad .
Cookied
on nõrk autoriseerimine - pole sama hea kui parool ja see pole
kaitstud, nende eesmärk on pigem töökorraldus (eelnevalt mainitud
nt ostukärud ei kao ära).
Mitte
HTTP’ga seotud, aga vb hea teada - Web caches
E proxy server. Pole vaja minna alati originaalserverile. Kõigepealt
vaadatakse enda vahemälust, kas seda lehte on külastatud. Kui
vahemälus pole pöördud proxy serveri poolde ja kui seal ka pole,
alles siis päärdud originaalserveri poole. Eesmärk on vähendada
võrgukoormust. Tavaliselt cache on teenusepakkuja (ISP) juures.
Kui vahemälu saab täis, siis mingi reeglistiku järgi kustutatakse
andmeid nt lehed mida pole ammu külastatud, lehed millel on kõige
vähem külastajaid jne.
Conditional
GET Kui seda lehte on muudetud X ajal, siis saada või ära
saada. EHK Eesmärk on mitte saata objekti, kui cache versioon on
up-to- date . Selle jaoks paned HTTP requesti if-modified-since:
somedate. Kui pole muudetud somedate’st, siis server saadab tagasi
vastuse, et lehte pole muufetud e cached veebilehte ei ole vaja
uuesti saata.
14.
FTP
Failiedastusprotokoll
(FTP - File Transfer Prototcol) on standardne arvutivõrgu
protokoll, mida kasutatakse failide vahetamiseks ja muutmiseks
TCP/IP-põhises võrgus, mõeldud failide transportimiseks serveri ja
kliendi vahel. FTP-d saab kasutada paroolautentimisega või anonüümse
kasutajaga. FTP määratleti 1985. Aastal. Alguses töötasind
kõik FTP-rakendused käsureal, kuid siis loodi kõigile op
süsteemidele FTP graafiline kasutajaliides .
- Failiülekanne kaughostist kohalikku hosti või vastupidi.
- Kliendi/serveri mudel:
- Klient: see, kes algatab ülekannet (kas kaughostist või kaughosti)
- Server: kaughost
- FTP: RFC 959
- FTP server: port 21
Tavalisi
FTP-ühendusi ei peeta tänapäeval turvaliseks, sest kogu info (ka
paroolid) liiguvad võrgus krüpteerimata kujul. Turvalisuse huvides
on soocitatav kasutada FTPS (FTP over Implicit TLS/SSL) või FTPES
(FTP over Explicit TLS/SSL) laiendatud protokolle.
Tüüpiline
scenario näeb välja nii, et meil on kasutaja, kes tahab local hostist kuhugi kaug hosti oma faile laadida. Selleks, et oma
kaugkontole ligi pääseda, peab kasutaja end autentima. Pärast seda
saab kasutaja hakata laadima faile kaughosti ja vastupidi.
Kasutaja
(kes suhtleb läbi FTP UI) edastab kõigepealt kaughosti nime, FTP
klient loob TCP ühenduse FTP serveriga. Seejärel edastab kasutaja
oma nime ja passi, mis edastatakse üle TCP ühenduse. Kui
autentimisega on kõik OK, saab kasutaja hakata faile üles/alla
laadima.
Seega,
suht HTTP sarnane (mõlemad jooksevad TCP peal), aga suurim erinevus
on, et FTP avab kaks TCP ühendust paraleelselt, et faile edastada: control connection ja data connection. Control connection on
isikliku info saatmiseks nt paroolid, identifikaatorid, kaughosti
muutmise käsud, failide “Put” ja “Get” käsud edastatakse ka
selle ühenduse kaudu.
Data
connection on selleks, et fail päriselt ka saata.
Because
FTP uses a seperate control connection, FTP is said to send its
control information out-of- band (Kuidas tõlkida seda???). HTTP ja
SMTP samas on in-band.
Terve
ühenduse jooksul peab FTP server “meeles hoidma” kasutajat
( maintain state). Kui täpsem olla, siis server peab konkreetset
kontrollühendust oskama siduda konkreetse kasutaja kontoga ja
jälgima mida ta teeb. Kuna FTP server peab nii palju infot meeles
pidama, siis see piirab sessioonide arvu, mida server suudab korraga
pidada. Samas HTTP on olekuta ja ei pea jälgima kasutajat.
Käsud
saadetakse 7-bit ASCII formaadis , seega nii nagu HTTP käsud, on ka
FTP käsud meile loetavad. Iga käsk koosneb neljast ASCII tähest,
mõnel võivad veel mingid argumendid juures olla.
Tüüpilised
käsud:
USER
username:
PASS password:
LIST:
Küsid kõikide failide nimistut
RETR
filename: Küsid konkreetset faili
STOR filename: Failide üleslaadimise käsk
Tavaliselt
saab igale FTP käsule vastuse. Server vastab kolmekohalise numbriga,
iga numbriga võib olla seotud veel mingi sõnum (kinda nagu HTTP
status koodid)
Nt
331 Username OK, password required
125
Data connection already open ; transfer starting
452 Error writing file
15.
Elektronpost, SMTP ja MIME
Nagu
tavaline post on ka elektronpost asünkroone kommunikatsiooniviis -
inimesed saadavad ja loevad kirju, siis kui see neile mugav on (Khm
Tammet võiks oma meili lugeda). E-kirjad on odavad, neid on lihtsam
laiali saata ja sinna saab pikkida igast jama külge nagu pildid,
videod, lingid, HTML-formattitud teksti (kuigi sa võid käsitsi
tavakirja ka HTML lehena kirjutada).
Meilisüsteem
koosneb kolmest põhi osast: kasutajaliidesed (?user agents), meili
serverid ja SMTP (Simple mail transfer protocol).
Kasutajaliidesed
- lasevad meil lugeda, vastata, edasi saata, salvestada ja koostada
sõnumeid nt Microsoft Outlook, Apple Mail. Kui Alice on
kasutajaliideses oma kirja ilusti valmis kirjutanud, saadab
kasutajaliides tema kirja meiliserverisse.
Meiliserverid
- kus on edastamiseks mõeldud kirjad. Kui Alice vajutab ‘Saada’,
siis kiri edastatakse tema väljaminevate sõnumite järjekorda. Kui
Bob tahab seda sõnumit lugeda, siis tema mailbox korjab Bobi
meiliserveri inobxist selle. Igal vastuvõtjal on meiliserveris ka
mailbox. Mailbox vastutab ja säilitab talle saadetud sõnumid.
Seega
üldine teekond on:
Saatja
kasutajaliides - Saatja meiliserver - Saaja meiliserver - Saaja
mailbox.
Kui
Bob tahab oma mailboxi kirjadele ligi pääseda, siis tema meili
server teeb kõigepealt Bobi autentimise (kasutajanime ja parooliga).
Alice
server peab ka tegelema Bobi serveri fuckupidega. Nt - Kui ei õnnestu kirja edastada, siis Alice server hoiab sõnumit järjekorras ja
proovib uuesti. Uued katsed toimuvad nt iga 30 minuti tagant ja kui
mingi ajaühiku järel (paar päeva) ei ole õnnestunud kiri
edastada, siis meiliserver kustutab selle ja annab Alice’le teada
e- maili teel, et kiri ei läinud kohale.
SMTP
On
rakenduskihi protokoll. Kasutab TCP ühendust kirjade edastamiseks serverite vahel. Nagu enamike rakenduskihi
protokollidega. On ka SMTP’l kliendi ja serveri pool. Igal
meiliserveril jookseb nii kliendi kui serveri SMTP, sest täidetakse
mõlemat rolli.
Palju
vanem kui HTTP ja ajale jalgu jäänud, nt: piirab et mitte ainult
päis vaid ka body on 7-bit ASCII koodidega väljendatud. See oli
1980ndatel okei, aga tänapäeval edastatakse multimeedia faile +
need on ka suurema mahuga ehk binaarsed andmed tuleb tõlkida
ASCIIsse ja pärast vastuvõtja peab need ka dekodeerima.
PS.
SMTP ei kasuta vaheservereid meilide saatmiseks, vahet pole kui
kaugel Alice ja Bob teineteisest on. TCP ühendus on otse saatja ja
saaja serverite vahel. Kui nt Bobi server on maas , siis sõnum püsib
Alice meiliserveris (3 on järjekord ) ja ootab kuni saab uuesti
proovida, kirja ei saadeta kuhugi vaheserverisse ootama.
Kuidas
lege andmeedastus toimub:
Luuakse
TCP ühendus (kui Bob on koomas, siis Alice ootab kuni saab ikkagi
luua selle) ja tehakse rakenduskihi tasemel handshakeimist (SMTP
kliendid ja serverid tutvustavad iseennast enne kui andmeid
edastavad). Selle teretamise ajal ütleb SMTP klient saatja e-maili
ja saaja e-maili. Kui see viisakusejama on tehtud, siis saadab klient
sõnumi.
Kuna
kasutame TCP ühendust, siis on kindel, et kõik andmed jõuavad ka
kohale. Kui meil on juhuslikult sellele serverile veel midagi saata,
siis hoitakse TCP ühendust lahti seni, kuni oleme kõik edastanud. S
- server (hostname hamburger.edu), C - klient (hostname crepes.fr),
pärast koolonit olev jama on see mis TCP kaudu edastatakse.
Kui
midagi algusest meelde jäi, siis 4 tähelised asjad on ASCII
formaadis käsud ja need numbrid on status sõnumid. Selle üksiku
punkti saatmine ütleb serverile siin, et nüüd on meie e-kiri
lõpule jõudnud ja rohkem ei tule midagi.
MIME
Ehk
Multipurpose Internet Mail Extensions - Interneti standard, mis
laiendab emailide formaati. Jällegi kui veidi mälurakke venitate,
ss meenub, et emailid said olla ainult ASCII formaadis, mis oli
piltide jms multimeedia edastuse puhul jama, sest peab binaarse info
tõlkima ASCII formaati ja saaja poolel vastupidi.
Pm
kõik meilid edastatakse MIME formaadis SMTP kaudu. Kuigi see
disainiti SMTP jaoks, siis seda kasutatakse ka HTTP ja WWWs.
MIME
lubab saata texti, mis ei ole ASCII character setis, lisasid mis pole
tekst (heli, video, pildid jne), päise infot mis sisaldaab ka
mitte-ASCII tähti + kiri võib olla mitmeosaline.
16.
DNS
Inimesed
kasutavad veebilehtede “verbaalset” nime, ehk midagi, mida
suudame ise ka meelde jätta. Ruuterid jne kasutavad IP aadressi (32
bit aadress), et datagramme saata-vastuvõtta. DNS on seega kogum IP
aadressidest ja neile vastavatest domeeninimedest. Kõik nimed ei ole
ühes serveris, aga on mitu DNSi. Domeeninimedest ei saa esiteks
ruuterid suht midagi aru ja teiseks ei ütle domeeninimi eriti midagi
asukoha kohta. Okei kui seal on .jp lõpus, siis teame et server asub
ilmselt Jaapanis, aga see ei ole ka piisavalt täpne.
IP
on 4 bitine ja hierarhiline . Iga biti väärtus 0-255. Hierarhiline,
sest iga bit annab meile aina detailsemat informatsiooni
DNS
on - jaotatud andmebaaside võrgustik, hierarhiline ja rakenduskihi
protokoll, mis lubab hostil teha päringuid nendesse andmebaasidesse.
Seda kasutavad teised rakenduskihi protokollid nt HTTP, SMTP, FTP.
Que
halb tõlge, aga igatahes oletame, et teeme HTTP requesti
royalpug.edu/smth.html jaoks. Et oleks võimalik HTTP requesti üldse
saata on meil vaja leida royalpug.edu IP aadress:
1.
Meie arvuti käivitab DNS rakenduse kliendi poole.
2.
Browser võtab host nime (royalpug.edu) URList ja annab selle DNS
rakendusele.
3.
DNS klient saadab host nimega päringu DNS serverisse.
4.
DNS klient saab mingi hetk vastuse, milles sisaldub host nime IP
aadress.
5.
Kui browser saab IP aadressi kätte saab ta alustada TCP ühendust.
Sealt
tuleb üks võimalik ajaline viivitus juurde, mida me kas ei märka
üldse või märkame väga. Enamasti on soovitud IP aadress mõne
lähedal asuva DNSi vahemälus olemas, mis esiteks vähendab DNSide
koormust ja võrgukasutust.
DNS
teeb veel mõnda lahedat asja:
Host
aliasing - ehk kui on mõni host, kellel on suht keeruline nimi,
siis tal võib olla nt veel 2 nime. See pikka ja keeruline nimi on
siis kanooniline host nimi. Aliased on tavaliselt lühemad/lihtsamad.
Meiliserveri
aliasing - kasutajad tahavad lihtsaid emaile. Kui Bobil on
hotmail konto siis ta email meie jaoks on nt [email protected], aga
meiliserveri jaoks on see nimi palju keerulisem (nt tegelt võib seal
olla veel Bobi piirkond kirjas a la relay.east-europe.hotmail.com).
DNSi saab kasutada, et leida see keerulisem email üles.
Koormuse
jaotamine (?) - Load distribution, Kopeeritud veebiserverite
vaheline liikluse jaotamine. Suuremad saidid nagu cnn, facebook jne
omavad mitut serverit, mis kõik jooksevad omaette süsteemina ja
neil kõigil on oma IP aadress. Kui klient teeb DNS päringu nt
cnn.com jaoks, siis DNS tagastab talle kõigi nende serverite IP
aadressid, aga vahetab iga vastuse puhul nende järjekorda, sest
tavaliselt HTTP request läheb sinna IP aadressile , mis on kõige
esimene.
Miks
on üldse mitu DNSi, mitte üks eriti suur server:
1.
Kui sellega läheb midagi ****, siis põhimõtteliselt internet kukub kokku
2.
Liiga suur koormus
3.
Kaugus - üks andmebaas ei saa olla kõigile lähedal, massive delayd
kui keegi kauge host peab läbi umbes liini oma päringut ootama
4.
Ülalpidamine - peaks omama nimistut kõikidest hostidest, liiga
palju infot + pidev uuendamine
Name
space, ehk nimede väli võib olla ühetasemeline (flat) või
hierarhiline. Ühelgi DNSil pole kogu internet ära kaardistatud.
Ühetasemeline
- unikaalsust on raske saada, kui domeeninimi on juba kasutusel, siis
tuleb uus teha, tehakse palju päringuid.
Hierarhiline
- Nimi peab olema unikaalne ainult teatud piirkonnas, mitte üle kogu
maa. Nt ttu.edu.ee oleks hierarhiline domeeni nimi, punktid vahel.
Serverite hierarhia on laias laastus:
root - Neid on ca 247 tk üle maailma? Nüüdseks ilms rohkem
TLD
- vastutavad domeenide nagu com, org, net jne eest
Authorative
- Iga organisatsioon , millel on avalikusele mõeldud veebiserverid
ja/või meiliserverid peab omama avalikke DNSi.
FQDN
(Täisnimi) -
PQDN
(Osaline nimi) - Suffiks pannakse juurde, et tagada nimede
unikaalsus.
DNS
pakub teenust, et saame nimele vastava IP aadressi või vastupidi.
DNS on hajutatud üle maailma.
Nt
Root DNS Serverid jagunevad kolmeks - com DNS serverid, org
DNS serverid ja edu DNS serverid (TLD). Need jagunevad veel
omaette DNS-ideks (Authorative). Igal teenusepakkujal nt amazon , yahoo on oma nimeserver. Pm kui sa tahad näiteks amazon.com
IP aadressi saada, siis klient kõigepealt küsib root serverilt com
DNS serveri asukohta , kontakteerub TLD serveriga mis annab
authorative serveri IP aadressi ja lõpuks saab amazon.com serveri
käest küsida domeeni IPd.
Domeen ehk see veebisait ise on DNSi mingi alampuu (# graafi teooria)
NS’ide
hierarhia - Root server jaguneb nt arpa ja edu serveriks. Edu server
jaguneb blabla.edu, puglife.edu jne
Com
- commercial organisations
Edu
- Educational institutions
Org
- nonprofit organisations
Lisaks
on veel domeenid riikide järgi, ehk kas lõppu tuleb .jp, .ee, .fi
jne. Üle maailma on mitu suuremat DNSi, kui meie piirkonna oma ei
leia mingit päringut, siis ta küsib endast kõrgemal asuva NSi
käest ja tagastab sealt saadud vastuse.
TLD
ja Authorative Serverid
Top-level
domain - vastutab com, net, edu ja kõigi riikide ee, fi, fr jne
domeenide eest.
Authorative
- Ah..tra mdea ma googeldan
Local
NS
Ei
kuulu otseselt ühegi hierarhia alla, iga ISP’l (firma, ülikool)
on üks. Kui host teeb DNS päringu, siis see edastatace LNS’i, mis
käitub nagu proxy/vahemälu ja vajadusel edastab päringu. Päringu
vastus salvestatakse host arvutisse ja ka proxisse + lisatakse TTL.
LNS asub enamasti lähedal, ülikooli vms puhul asub ilmselt samas
võrgus, LANi puhul asub a la mõne ruuteri kaugusel.
Iteratiivne
nime päring - ehk pöördun DNSi, kui tema ei tea, siis suunab mu
edasi kuhugi mujale.
Rekursiivne
nime päring - Minu päring hakkab üle maailma ringi jooksma, vastus
tuleb mööda sama teed tagasi. Tülikas lahendus.
Kui
mingi NS kaardistab midagi ära, siis ta salvestab selle vahemälusse.
Iga mingi aja tagant vahemälu tühjendatakse. TLD serverid on
tavaliselt LNSide vahemäludes, tänu sellele ei käida eriti palju
root NS’ ides . See teeb ka päringute aja lühemaks, iga kord kui
facebooki lähed (või ükskõik kes selles samas võrgus) siis ei
ole vaja kuskilt kaugelt hakata seda IP-d otsima vaid see on LNSis
juba olemas.
DNS
RR ehk resource records - koosneb hostname-to-IP aadressist ja
mappingust. Iga DNS vastus edastab ühe neist RRidest. Koosneb (name, value , type, ttl)
Type
A - nimi on hostname ja value on IP - Kasutatakse kui see DNS on
mingi hostname jaoks authorative DNS (isegi kui pole, siis tal võib
see päring ikkagi vahemälus olla)
Type
NS - nimi on domeen, value on authorative DNSi host-nimi kelle käest
IPd küsida (kui antud NS ei ole authorative, ta sisaldab sel juhul
ka Type A sõnumit(? record ) mis pannakse NS tüübi Value väärtuses)
Type CNAME - nimi on alias host nime kanooniline nimi. e (royalpug.com,
relay1.caliphate.royalpug.com, CNAME)
Type
MX - Value on meiliserveri kanooniline nimi, millel on alias host
nimi Name.
17.
Töökindel andmeedastus
Ehk..TCP?
Aga selle kohta on all mitu küsimust ju? Või ta mõtleb p2p
andmeedastust?
3.4
Principles of Reliable Data Transfer
Lk
28 Merikese 230 lk konspektist
Eksamil
vaja teada - millised on töökindla andmevahetuse tagamisega seotud
probleemid ja kuidas neid lahendada
18.
Go- back -n:
PIPELINED
PROTOCOLS:
- Pipelining: Sender allows multiple, “in- flight ”, yet-to-be-ack-d packets
- Range of sequence numbers must be increased
- Buffering at sender and/or receiver
- Pipelined protocols:
- Go-Back-N
- Sender can have up to N unacked packets in pipeline
- Receiver only sends
- Sender has timer for oldest unacked packet
- When timer expires, retransmit all unacked packets
- Go-Back-N: Sender
- K-bit # in packet header
- “ Window ” if up to N, consecutive unacked packets allowed
- ACK(n): ACKs all packets up to, including seq # n - “cumulative ACK”
- May receive duplicate ACKs
- Timer for oldest in-flight packet
- timeout(n): retransmit packet n and all higher seq # pkts in window
PS.
Seda läheb eksamil vaja! Miks akna suurus peab olema väiksem kui
pakettide järjekorranumbrid.
***Vastuvõtja
liigutab enda akent autom . Edasi, kui saab õige paketi kätte
Go-Back-N
ehk saatja võib saata mitu paketti ja ei pea ACK sõnumeid ära
ootama, aga on aknaga piiratud ehk mitu ackimata paketti tohib olla
saatmises.
Saatja
saadab järjest pakette, kui #0 on ära saadetud hakkab kohe #1
saatma. Vastuvõtja võtab #0 vastu, saadab ACK0 ära ja samal ajal
võtab juba #1 vastu jne. Kuni asi hakkab uuesti 0 lugema.
Saadad
ACK viimase terviklikult kättesaadud paketti numbriga, saadad nii
kaua kuni saad õige järjekorra# paketi.
19.
Selective-repeat(teine pipelined protokoll)
- Receiver individually acks all correctly received pkts
- Buffers pkts, as needed, for eventual in-order delivery to upper layer
- Sender only resends pkts for which ACK is not received
- Sender timer for each unACKed pkt
- Sender window
- N consecutive seq #’s
- Limits seq #s of send, unACKed pkts
Erinevalt
GBN ei ole vaja saata kõike uuesti, vaid ainult need pakettid mille
puhul vastuvõtja arvab , et võivad olla vead sees. Oletame, et meil
jääb keskelt 1-2 paketti puudu. Vastuvõtja hoiab juba
olemasolevaid pakette puhvris ja ootab ära kuni ta saab madalama
järjekorra numbriga puuduolevad pakettid kätte ja alles siis
edastab need ülemisele kihile. Igal paketil on oma enda timer.
20.
TCP ühenduse loomine ja sulgemine
- FTP klient loob ühenduse FTP serveriga üle TCP-pordi 21
- Klient autoriseeritakse kontrollühenduse teel
- Klient sirvib kaugfailisüsteemi (remote) kataloogi (directory :D) ja ta saadab käske kontrollühenduse teel
- Kui server saab käsu failiedastuseks, luuakse TCP-port 20 kaudu teine ühendus, mida kasutataksegi failide edastamiseks
- Pärast ühe faili ülekannet sulgeb server andmeühenduse (TCP-port 20) ja avab selle uuesti, et järgmist faili saata.
- Kontrollühendus: “out of band”
- FTP server peab sessiooni ajal säilitama kasutaja oleku. Täpsemalt, server peab seostama kontrollühenduse konkreetse kasutaja kontoga ja server peab jälgima kasutaja hetke directory tree’d. Selle info (kasutaja oleku) jälgimine iga sessioonis kasutaja kohta tunduvalt tõkestab sessioonis olevate kasutajate koguarvu, mida FTP suudab samaaegselt säilitada. (seepärast on HTTP parem, ei pea jälgima kasutaja olekut)
“Out-of-band”
- on võrgu protokolli omadus, millega teostatakse andmekontrolli.
Out-of-band kontroll suunab kontrollinfo põhiandmetest eraldi
ühenduse peale. Näiteks FTP kasutab seda kontrolli, sest FTP saadab
oma kontrollinfo (sisaldab kasutaja tunnust, salasõna, put/get
käske) ühe ühendusena ja saadab faile teise paralleelse
ühendusega.
Throughout
a session, the FTP server must maintain state about the user.
In particular, the server must associate the control connection with
a specific user account , and the server must keep track of the user's current directory as the user wanders about the remote directory
tree. Keeping track of this state information for each ongoing user
session significantly impedes the total number of sessions that FTP
can maintain simultaneously. HTTP, on the other hand , is stateless
-- it does not have to keep track of any user state.
TCP
ühenduse loomine algab käesurumisega ehk saatja ja vastuvõtja
peavad tegema veidi eeltööd enne kui algab päris andmeedastus (nt
edastama parameetreid). (Kudos to Intsu) Ei ole otseselt ühendus,
kuna saatja ja vastuvõtja arvutis jookseb TCP protokoll omaette ja
teised kihid ei tea mädagi sellest. Ruuterid näevad ainult
datagramme, mitte ühendusi.
TCP
ühendus on täis-duplex ehk andmed võivad liikuda mõlemat pidi ja
samal ajal, ühe kasutaja andmeedastus ei pane kogu kanalit kinni.
Aga ta on alati kahe “otspunkti” vahel ehk ühe saatja ja ühe
vastuvõtja vahel. Multicasting ei ole TCP’ga võimalik.
Okei
- ühenduse enda loomine. Oletame et kliendi protsess tahab alustada
ühendust serveri protsessiga. Kliendi app annab kõige pealt enda
transpordi kihile teada, et tahab serveri protsessiga ühendust
saada. Selleks on vaja serveri nime ja porti .
Muidu
Syn ja Ack saadetakse eraldi, aga kuna see on waste of space, siis
enamasti need kaks ühendatakse ja saadetakse kliendile korraga.
1.
Saada päring ühenduse loomiseks
2.
Server saadab vastuseks paketi connection granted ja algab ühendus
3.
Kliendi kinnitus ja klient võib sinna juba panna andmed.
Ühenduse
sulgemine
Tavaliselt
juhul lõpetavad mõlemad pooled ühenduse saates välja FIN sõnumi.
See on pm request teisele poolele ühendus lõpetada. Ühendus pole
enne lõpetatud kui mõlemad pooled pole saatnud välja FIN sõnumit
ja saanud vastu ACK sõnumit.
Ehk
ühenduse sulgemine ei ole kolme sammuga? What... FIN sõnumi
vastuvõtja peab enne rakendusele teada andma, et selline sõnum on
ja siis ootama rakenduselt vastust et kõik on ok ja võib ühenduse
lõpetada.
21.
TCP töökindel andmeedastus
Segmendid
võivad tulla suvalises järjekorras kohale, aga kõik on
nummerdatud. TCP nummedab baite.
Millal
uuesti saadetakse?
- Segment sai transpordi käigus viga
- Segment ei jõua üldse kohale
- Saatja ei tea, et midagi valesti läks
- Igale paketile ei pea kviitungeid saatma, puhvrisse jäävad augud sisse
- Kui tuleb timeout ACKe oodates, siis saadetakse uuesti
Baitide
nummerdamise loogika - Andmete saatmisel on esimese baidi nr
(sequence)
Kviitungil
on nr, mida me järgmisena ootame (ACK)
Ehitab
IP mitte eriti töökindla protokolli peale töökindla
andmevahetuse, kasutab kumulatiivseid kviitungeid. Kordussaatmise
käivitab timeout/duplikaat ACK.
Saatja
poolt vaadatuna - Loo segment seq #, saada ära ja pane taimer käima.
Kui tuleb timeout saada segment uuesti ja pane taimer uuesti käima.
Kui saad ACK kätte nt mingi varasemalt unACK segmendi kohta - uuenda
mis on ACK ja mis NACK .
Saadetakse
uuesti kui - ACK läheb kaduma või Timeout on liiga lühikeseks
määratud. Kui tuleb 3 ühesugust kviitungit, siis saadetakse kohe
uuesti see pakett, mis on kõige varem saadetud, isegi kui pole veel
timeout.
22.
TCP taimerid
RTT
on miinimum aeg mis kulub andmete saatmiseks ja kviitungi kätte
saamiseks. Peab olema väikese varuga, et me ei hakkaks mitu korda
saatma samu pakette. Samas, kui see aeg on liiga pikk, siis ei jõua
vastu võtta ( segmenti kaotsi minekule reageeritakse liiga
aeglaselt).
Seda
saab kaudselt hinnata - kui kaua võtab aega kviitungi tulek? Sellest
lähtudes suurenda/vähenda timeout aega.
1.
Kordussaatmise taimer
2.
Püsivuse taimer - Tegeleb andmete saatmise püsivusega. Okei
oletame, et saatja saadab ühe paketi ära, saab ACKi, saadab nüüd
järgmise, aga see läheb kaotsi. Saatja ei tea, et võiks andmed
uuesti saata. Pannakse püsivuse taimer käima. Kui tuleb time out,
siis saatja saadab 1 baidise segmendi mis on sorta nagu proovipakett.
3.
Keep-alive taimer - Et olla kindlat, et teine osapool on “elus”,
küsitakse iga mingi aja tagant kinnitust.
4.
Time-waited taimer - Seotud ühenduse sulgemisega, kui ühendus
lõpetatakse, siis tegelikult on see veel mingi määratud aja lahti,
et korjata paketid, mis veel ülekandmisel.
23.
TCP voo juhtimine
Saatja
ei koorma vastuvõtjad üle, saates liiga palju liiga kiiresti (Nt
kallad bensiini ühest kanistrist teise ja paned lehtri vahele.
Kallad sellise kiirusega, et lehter üle ei hakkaks ajama , muidu
puhver umbes ja paketid lähevad kaduma). Selle jaoks on nt
speed-matching, mis tagab selle, et saatja saadab andmeid
sellise kiirusega, millise kiirusega vastuvõtja suudab neid lugeda.
Et tagada flow control, sunnib TCP hoidma saatjal muutujat
nimega “receive window,” mille abil on tal aimu sellest,
kui palju on vastuvõtjas puhvriruumi. Kuna TCP on full -duplex,
säilitavad mõlemal pool ühendust olevad saatjad selge
vastuvõtuakna (receive window-i).
Ütleme,
et saatja A saadab midagi vastuvõtjale B (ehk A->B)
LastByteRead
- viimane baidinumber andmejadast, mis loeti puhvrist B-rakenduse
poolt.
LastByteRcvd
- viimane baidinumber andmejadast, mis tuli võrgust ja istub nüüd
puhvris B juures.
RcvWindow
muutub aja jooksul ehk siis on dünaamiline (valem on pildil v kui
aru ei saa, siis:
RcvWindow
= RcvBuffer - [LastByteRcvd - LastByteRead]).
Iga
kord, kui B saadab A-le midagi vastu, võib ta RcvWindow-i väärtust
muuta vastavalt vajadusele.
Kui
B puhver on täis (RcvWindow = 0) ja A-le pakette vastu ei saada, mis
siis juhtub? A ei saa ju kunagi teada, et ta võiks uuesti saatma
hakata. Siinkohal on kavalus mängus, TCP ei ole loll (sama ei saa
öelda eksami tegijate kohta)! Nimelt kui RcvWindow on 0 või vähem,
saadab A B-le segmente ühe databytega(?). Vastuvõtja tajub neid
segmente, lõpuks puhver tühjeneb ja RcvWindow väärtus kasvab suuremaks kui null.
24.
TCP koormuse juhtimine
Võiks
ju arvata, et voog ja koormus pmts sama asi, aga vot, siinkohal
eksid! Ikka ei ole sama asi!
Sarnaselt
voo “receive windowle” on koormuses “congestion window”,
mis on eraldi muutuja, mille üle saatja arvet peab.
Slow
start: Kui ühendus algab, saadetakse segmente
eksponentsiaalselt: kõigepealt 1, siis 2, siis 4 jne, kuni tekib
loss.
Additive increase : Pakettide saatmisel akent suurendatakse koguaeg ühe
MSS (Maximum segment size) võrra iga RTT ( ajavahemik mis kulub info
saatmise ja ack paketti kättesaamiseks) niikaua , kuni tekib
kaotsiminek (loss)
Multiplicative
decrease: Pärast kaotsiminekut (loss) tehakse aken poole
väiksemaks ja algab Additive Increase. Ehk siis saadetakse vähem
segmente.
ACK
peaks kinnitus olema (acknowledgement). Mingid valemid olid vist ka
sarnaselt voole, aga las ta praegu jääda.
25.
UDP (User Datagram Protocol)
Transpordikihi
protokoll. Lubatud andmete kaotsiminek ning vales järjekorras kohale
jõudmine.
UDP
teeb pmts nii vähe, kui üks transpordiprotokoll üldse teha saab
(pmts nagu mina, et teha nii vähe kui
võimalik), Peale multipleximise/demultipleximise ei lisa
ta IP-le midagi. Kui rakenduse autor otsustab TCP asemel UDP-d
kasutada, siis rakendus pm räägibki otse IP-ga.
UDP
võtab rakendusest sõnumi, topib talle allika ja sihtkoha portid,
lisab veel kaks väikest välja ja annab selle võrgukihile edasi. // UDP segment natuke allpool. Need 2 lisavälja peaks pikkus ja
checksum olema.
Ebakindel
& sorteerimata kohaletoimetus
- Pole “tarbetuid dekoratsioone”, “bare bones” Interneti transpordi protokoll.
- “ Best effort” teenus: UDP segmendid võivad kaotsi minna või jõuda rakenduseni vales järjekorras
Connectionless
ehk siis ühendusevaba:
- Käepigistust (handshaking) saatja ja vastuvõtja vahel ei toimu ehk lslt hakkab tulistama andmeid.
- Iga UDP segmenti koheldakse üksteisest sõltumatult.
UDP-d
kasutatakse:
- Striimimisel multimeedia appides (youtube, twitch, erinevad tubed-hubid) - tolereerivad andmete kaotsiminekut (loss-i), kiirustundlik (rate sensitive)
- DNS
- SNMP
Usaldusväärne
ülekanne üle UDP:
- Selle lisab rakenduskiht
- Rakenduste spetsiifiline errorite leidmine
UDP
päis suht ez pz: koht kust tuli, koht kuhu läheb, pikkus (vt
pilti), checksum, appdata.
UDP
Checksum (kontrollsumma) eesmärk: leida erroreid segmendis ära
pööranud bittide näol. Teeb seda, sest paljud ...lülid?....allika
ja sihtkoha vahel ei pruugi üldse mingit kontrolli teostada.
Saatja:
- Kohtleb segmenti kui 16 bitist täisarvude jada
- Liidab segmendi sisu (paneb bitid paika)
- Pistab checksumi sinna UDP kastikese sisse
Vastuvõtja:
- Arvutab kättesaadud segmendi checksumi
- Saatja checksum ja vastuvõtja checksum peavad kokku andma 1 jada, ehk checksum on summa inversioon.
26.
Datagrammvõrgud ja virtuaalahelatega võrgud
Lilla
kasukaga Pugile pühendatud küsimus.
Datagrammvõrgud
pakuvad võrgukihil ühendusevaba(UDP - connectionless) teenust.
Virtuaalahelatega
võrgud pakuvad võrgukihil ühendusega(TCP - connection,
handhsaking) teenust.
(vt
küsimus 7, saad targemaks). Sm, see on võrgukihi analoog sellele.
TCP ja UDP on ikkagi transpordikihi protokollid. Võrgukihis on meil
host-to-host ühendamine, teenus mida pakutakse transpordikihile. Transpordikihis on process-to-process ühendusteenus, mida pakutakse
rakenduskihile.
Võrgud
on kas datagramm- või virtuaalahelatega võrgud, aga ei saa
olla mõlemat korraga.
Virtuaalahel:
- Ühenduse ülesseadmine ja mahavõtmine (?? teardown) iga ühenduse kohta enne, kui data voolama hakkab
- Iga pakett kannab VC (virtuaalahela) identifikaatorit (mitte sihtkoha aadressi)
- Iga ruuter, mis tee peale jääb, säilitab iga mööduva ühenduse “oleku”. Ehk lisab enda edastustabelisse rea ja kui ühendus lõpetatakse, siis peab selle ka tabelist eemaldama.
Koosneb
kolmest faasist:
- VC setup - Saadab transpordikihi kontaktid võrgukihti, täpsustab sihtkoha aadressi ja ootab et võrk looks virtuaalahela. Võrk teeb kindlaks tee saatja ja vastuvõtja vahel (määrab ära mis ruutereite ja linkide kaudu sinna jõuda) ja ka määrab iga lingi VC numbri. Viimasena lisab iga ruuteri edastustabelisse uue rea.
- Andmeedastus - Kui ühendus on loodud, siis hakkavad pakettid tõka-tõka sõitma mööda ahelat
- VC teardown - Alustatakse kui saatja (või vastuvõtja) annavad võrgule teada, et soovivad ahela lõpetada. Võrgukiht annab end systemile (...otspunkti süsteemi?) teada, et oli soov lõpetada ja võtab ruuterite marsruutimistabelist vastavad read ära
Virtuaalahel
koosneb:
- Tee (path) algusest lõpuni (from source to destination), sari ühendustest ja ruuteritest
- VC numbrid - üks number iga lingi jaoks, mis tee peale jääb (need on need, mida pakett kannab dest. aadressi asemel, loe paar rida ülevalt). Iga “tee” mis viib ruuterist välja on link ja need on nummerdatud.
- Edastustabel, kus peab tee peale jäävaid VC numbrid. Kuna numbrid on eri ruuterites erinevad, siis iga ruuter peab ise asendama source VC numbri enda tabeli järgi
VC numbreid saab iga lingi peal muuta, need tulevad edastustabelist.
VC
ühendus (A -> B). Iga punkt on üks nn ühendus vms, mis liigub
ühte- v teistpidi piki jubinaid.
- A helistab B. B näeb kõne.
- B võtab kõne vastu. A-l on kõne ühendatud
- A alustab datavoogu. B võtab data vastu.
Kasutatakse
nt ATM(asynchronous
time- division multiplexing), kaadriedastustes(??
Wut. frame-relay).
ATM
frame relaydes. Misiganes see tähendab.
Ei
kasutata tänapäevases internetis.
Datagrammvõrgud:
- “Kõne” üles ei seata (nagu on VC-l)
- Ruuterid: otspunktide vahelist olekut ei ole, nad ei säilita ka VC numbreid
- Pakette saadetakse edasi kasutades sihtkoha hosti aadress
Datagrammid
jooksevad lihtsalt niimodi ringi, otspunktidevahelised ühendused puuduvad. Ei ole mingit teed ette täpsustatud, marsruutimine toimub
kohapeal.
Seda
tabelit ma ei oska ümber jutustada. Pilt räägib rohkem kui 1000
sõna! (datagrammi edastustabel). Kuna aadresse on idiootselt palju,
siis ruuteritel on öeldud et kui IP aadressi prefiks on X kuni Y
vahemikus, siis minge linki 0, kui M-N vahemikus, siis linki 1 jne.
Ehk ruuter ei vaata kust pakett tuli vms, vaid vaatab sihtkoha IPd ja
vaatab oma marsruutimistabeli vahemike. On ka üks link mis on
mõeldud kui IP prefix ei sobi ühegagi ruuteri omadest .
Mis
neil siis vahet on? (kes inglise keelt ei oska, siis võin oma
võimetekohaselt tõlkida).
27.
Marsuutimine
Musta
kasukaga Pugile pühendatud küsimus
Pmts,
kui loengus mäletate, olid mingid sõõrikud (need on ruuterid), mis
olid omavahel ühendatud ning nende vahel olid numbrid. Üldjuhul
minnakse läbi sõõrikute, mille vahel on kõige väiksem number.
Võtta neid numbreid kui ressursikulu.
Nende numbrite summa, mis tee peale jäävad on pmts “tee hind” (cost
of path). Marsruutimisalgoritmid leiavad ise, mis kõige “odavam”
tee on. Maksumus (cost) võib alati olla 1, olla
pöördvõrdeliselt seotud ribalaiusega (bandwidth) või
pöördvõrdeliselt koormusega (congestion).
Klassifitseerimine:
Global:
Decentralized:
- Ruuter teab füüsiliselt ühendatud naabreid ning nende “maksumust”
- Iteratiivne arvutamisprotsess, naabritega info vahetamine, hakkad järjest naabritelt küsima nende tee “maksumust” jne kuni leiad kõige odavama tee
- “ Distance vector ” algoritmid!
Static:
- Marsruudid muutuvad aeglaselt ajapikku
Dynamic:
- Marsruudid muutuvad kiiremini. Perioodiline uuendus tulenevalt linkide maksumuse muutumusega.
28.
Link state marsruutimisalgoritm
Sinise
kasukaga Pugile pühendatud küsimus
Dijkstra algoritm :
- Võrgu topoloogia, linkide maksumus teada kõikidele sõlmedele ( node ). See saavutatakse “link state broadcastiga” (? ehk siis vist “räägivad” omavahel). Kõikidel sõlmedel on sama info.
- Arvutab väikseima võimaliku maksumuse ühest sõlmest (“source node”) kõikidesse teistesse sõlmedesse. -annab edastustabeli (forwarding table) sellele sõlmele.
- Iteratiivne: Pärast k iteratsiooni teab vähimat maksumust k-destinatsioonidele
Dijsktra
algoritmi notatsioon.
Algoritmi
valem/kood, kuidas asi toimib.
Paar
näidist (piltiega lihtsam aru saada):
Jälgi
nooli ja neid numbreid
Näide
2:
See
tabel vist on suht tähtis, et proovige aru saada, kuidas see toimib
Jubinad
arvutavad kõige lühema marsruudi igasse sõlme, kus algussõlmeks
on “u”.
Tulemus
on järgmisel pildil koos edastustabeliga. Pm lisad iga kord ühe
marsruuteri juurde, a la meil on vaja jõuda u - w. Otse tee oleks X
ühikut, aga kui meil oleks uv ruuterid, siis oleks tee Y ühikut.
Edastustabel,
kus on optimaalsed marsruudid.
29.
Distance vector marsruutimisalgoritm
Kuldse
kasukaga Pugile pühendatud küsimus
Bellman-Fordi
võrrand (dünaamiline programmeerimine ):
Aeg-ajalt
saadab iga sõlm oma kaugusvektori (distance vector) hinnangu
(estimate) oma naabritele.
Ehk
- kaugus u-z leidmiseks leia u kaugus kõigist tema naabersõlmedest,
leia naabersõlmede kaugus sihtpunktist (kõige optimaalsem), liida
vastavad väärtused ja leia neist kõige väiksem.
Distantsvektori
algoritm:
Iteratiivne,
kus iga kohalik (local) iteratsioon toimub, kui:
- Kohaliku lingi maksumus muutub
- Naabrilt sõnum DV uuendamiseks
Distributeeritud:
- Iga sõlm teavitab naabreid ainult siis, kui nende DV muutub (naabrid siis teavitavad oma naabreid, kui vaja (ehk kui nende tabel veelkord optimeerub)).
Iga
sõlm ootab naabersõlmelt sõnumit, arvutab oma tabeli ning kui
midagi on muutunud, teavitab naabreid.
Marsruutimistabel.
Pilt võib tunduda esialgu kirju, aga põhimõtteliselt iga sõlm
täidab tabelis enda rea ning edastab selle oma naabritele. Kokku
kombineeritakse optimaalne edastustabel.
30.
Hierarhiline marsruutimine
Punase
kasukaga Pugile pühendatud küsimus
Suurus:
600 miljonit ruuterit. Kui kõik ruuterid teaksid kõiki marsruute,
siis tekiks selline ajuvähk, et
universum vajuks kokku. Seepärast on ruuterid jaotatud
autonoomseteks süsteemideks (autonomous systems) [AS].
Iga
autonoomne süsteem on tavaliselt hunnik ruutereid, mis kuuluvad ühe
administratiivse üksuse alla, näiteks ISP (Internet Service
Provider, a-la Telia v Starman) või mingi firmasisene võrk.
Ruuterid, mis kuuluvad samasse AS-i kasutavad sama
marsruutimisprotokolli (kas LS v DV) ning omavad infot üksteise
kohta. Algoritm, mis jookseb AS-isiseselt, nimetatakse ingl k “intra
autonomous system routing protocol”-ks.
Muidugi
tuleb ka AS-e omavahel ühendada. Seetõttu antakse vähemalt ühele
ruuterile (AS siseselt) lisavastutus, kui pakette tuleb AS-ist välja
saata. Selliseid ruutereid kutsutakse ingl k “gateway
router”-ks. (pm ühendatud teise AS gateway ruuteriga).
Inter -AS
ühendab siis AS-e omavahel.
Pakett
tahab minna 1d ruuterist x AS-i. inter-AS protokolliga
propageeritakse infot kõikidele AS sisestele ruuteritele. Seejärel
otsustab intra-AS protokoll, kuidas kõige paremini 1c-sse saada
(kuna ta on gateway ruuter x-i jõudmiseks).
Kui
on olukord, kus saab liikuda mitut moodi (läbi AS3 või AS2), siis
otsustab inter-AS protokoll, kuidas paremini toimida on. Tavaliselt
kasutatakse kuuma kartuli marsruutimist (hot potato routing)
ehk valitakse kõige lähem gateway ruuter (v madalama maksumusega
siis, ma eeldan, sest 1c ja 1b on mõlemad ühe hüppe kaugusel).
31.
IP aadress ja MAC aadress, ARP
Vasakul
heledama punase kasukaga Pugile
pühendatud küsimus.
Wtf
ma siin teen?!
IP
aadress: võrgukihi jubin vist? // IP-aadress
ehk internetiaadress
(inglise keeles Internet
protocol address)
on internetiprotokolli kohane arvutite ja muude arvutivõrgus
toimivate seadmete omavaheliseks suhtlemiseks avalikus arvutivõrgus
vajalik ülemaailmselt või kohtvõrgus unikaalne aadress, sarnaselt
maja- või telefoninumbriga või posti
sihtnumbriga. Lühend IP tähistab interneti protokolli standardit.
Võrgukiht.
MAC
aadress: igale võrguseadmele määratud unikaalne aadress, mida
kasutatakse kanalikihis kommunikatsiooniks // MAC-aadress
ehk meediumipöörduse
juhtimise aadress
(inglise keeles Media
Access Control address)
on füüsilise võrguliidese unikaalne identifitseerija. Näiteks on
MAC-aadress arvuti võrgukaardil ja ruuteri võrgupesadel.
Kanalikiht.
Kui ühel
võrgusõlmel on mitu võrguliidest, siis on neil eraldi
MAC-aadressid. Enamasti määratakse MAC-aadress võrguseadmele
tootmise käigus ja seda muuta ei saa.
IP muutub
sellele vastavalt kuhu võrku oled parasjagu ühendatud, MAC on nagu
see sitt tatokas millest lahti ei saa mille purjuspäi tegid ja mis
on (loodetavasti) unikaalne sulle ja mida muuta enam ei saa.
Subnet mask
- Näeb välja selline, et ühel pool 0 ja teisel pool 1 (11111000000
jne). Võrgu bitid määratakse 1ks ja hosti bittid 0ks (e kui
marsruudime, siis kus lõppeb võrgu aadress mida otsime ja kust
algab konkreetse seadme aadress). Pm turvaeesmärgil tehakse (mitte
ainult, aga nagu boonus vms).
ARP:
Aadressiedastuse protokoll (Address resolution protocol). Vastendab
IP aadressi riistvara ehk MAC aadressiga. IP-aadressi
ja alamvõrgumaski (subnet
mask)
abil tehakse kindlaks, kas andmepakett on suunatud sisevõrku või
välisvõrku. Kui on tegemist sisevõrku adresseeritud andmepaketiga,
siis saadakse riistvara aadress (MAC-aadress) ARP-tabelist (tabelist,
kuhu on puhverdatud varasemad ARP-päringud). Kui ARP-tabelis vastav
sissekanne puudub, siis saadab arvuti kõigile sisevõrgus olijatele
(broadcast message) välja ARP-päringu IP-aadressile vastava
riistvaraaadressi väljaselgitamiseks. Vastava IP-aadressiga arvuti
vastab nimetatud päringule. Seejärel uuendab päringut väljasaatnud
arvuti oma ARP-tabelit. Järgnevas infovahetuses on andmepaketid
varustatud lisaks IP-aadressile
ka riistvara aadressiga. Seejärel on võimalik infovahetus
sisevõrgus ka kohtvõrgu protokollidega, mille IP-aadress puudub.
http://dijkstra.cs.ttu.ee/~kekalb/side5/ - See prax oli nende erinevate protokollide kohta ja kuidas
töötavad.
Elagu
wikipedia.
32. DHCP
DHCP
ehk Dynamic Host Configuration Protocol on võrgukihi (Network
Layer) protokoll, mille alusel ruuter jagab IP aadresseid temaga
ühendatud seadmetele automaatselt.
Võrguadministraator
võib seadistada DHCP-d kahte moodi:
- 1. Seade, mis end ruuteriga ühendab saab iga kord sama IP
- 2. Seadmele antakse iga kord, kui ta ruuteriga ühendab, ajutine IP (võib olla erinev iga kord).
DHCP-d
kutsutakse ka plug-and-play protokolliks. DHCP on väga mugav
ja laialt kasutatud võrkudes, kus uued seadmed tihti ühinevad ja
vanad lahkuvad .
DHCP
on klient-server protokoll selles mõttes, et uut ühinevat seadet
võib käsitleda kui klienti ning igal alamvõrgul on tüüpiliselt üks aktiivne DHCP server, mis jagab IP aadresse.
DHCP
protokolliga IP jagamine käib neljas etapis:
DHCP serveri otsimine (pm ruuter). Uus seade, mis tahab võrku ühendada, saadab UDP paketi pordil 67, mis on pakitut IP datagrammi. Kuna uus seade ei tea ühegi ruuteri aadressit, siis saadab ta selle paketi sihtaadressiga 255.255.255.255 ning lähteaadressiga 0.0.0.0, selle saavad kätte kõik võrku ühendatud seadmed.
DHCP serveri pakkumine. DHCP server, milleni jõudis eelmine pakett, saadab paketi sihtaadressiga 255.255.255.255, mis sisaldab eelmise paketi ID-d, pakutud IP aadressi, võrgumaski ja pakutud IP aadressi kehtivusaega.
DHCP päring. Kui eelmine pakett jõuab seadmeni, mis endale IP-d otsib, vastab ta sellele DHCP päringuga, korrates eelmise paketi sisus olevaid parameetreid.
DHCP ACK. Kui eelmine pakett jõuab DHCP serverini, vastab server ACK-iga kinnitades, et nüüd kuulub pakutud IP uuele seadmele.
33.
NAT
NAT
ehk Network Address Translation on võrgukihi protokoll, mida
kasutavad ruuterid, et edastada õigeid pakette õigetele seadmetele
oma võrgus. Kui näiteks võrgus on seade, mille kohalik IP (saadud
ruuterilt näiteks DHCP abil) on 10.0.0.1 ning ta tahab saata
vahetada andmeid välise veebiserveriga aadressil 128.119.40.186
pordil 80, siis protsess näeks välja selline:
Seade saadab oma paketi LAN-i koos (suvalise) lähtepordiga 3345.
Ruuter saab kätte paketi ning enne, kui ta edastab paketi, vahetab ta paketis lähteaddressi 10.0.0.1:3345 uue aadressiga 138.76.29.7:5001, kus 138.76.29.7 on ruuteri IP-aadress nähtav ülejäänud maailmale ning 5001 on suvaline port, mille abil ruuter tuvastab, millise kohaliku seadmega see pakett seotud on.
Kui veebiserver saab paketi kätte, saadab ta oma vastuse sihtaadressiga 138.76.29.7:5001, sest see on see, mida ta kätte saadud paketis näeb lähteaadressina.
Ruuter saab paketi kätte, vaatab oma tabelisse ja näeb, et port 5001 tähendab, et pakett tuleb saata seadmele IP-ga 10.0.0.1 pordil 3345 ning teeb seda, kõigepealt vahetades paketis sihtaadressi 138.76.29.7:5001 välja uue sihtaadressi 10.0.0.1:3345 vastu.
See
on see, kuidas NAT-enabled ruuter edastab pakette
välisseadmete ja kohalike seadmete vahel.
Also
see on ka põhjus miks mingi “determine your IP” saidid näitavad
erinevat IPd kui see, mida ise näed oma arvutist - sest arvuti otse
ei suhtle tegelikult kellegagi, edastab ruuterile soovi etc.
34.
Marsruutimisprotokollid (RIP, OSPF ja BGP)
Marsruutimisprotokollid
(Routing Protocols / Routing Algorithms) on protokollid, mille
abil valitakse parim tee paketi saatmiseks ühelt ruuterilt teisele
vahepealsete võrguseadmete kaudu.
RIP
ehk Routing Information Protocol on DV (Distance Vector)
protokoll, mis kasutab ruuterite vahelise kauguse ühikuna
hop- count ’i, see tähendab, et iga kahe ruuteri vaheline
ühendus on kaaluga 1 ühik. Ruuteris hoitakse RIP tabeleid, milles
on kirjas iga kahe võrgusõlme kohta nende kaal. Ruuterid, mis on
omavahel otseühenduses, jagavad oma tabeleid iga 30 sekundi tagant,
parandades kaale. Kui mõne ruuteriga pole tabelivahetust toimunud
üle 180 sekundi, loetakse too ruuter kättesaamatuks ning kaal seatakse lõpmatuks.
OSPF
ehk Open Shortest Path First loob tabeli kõikidest
võrgusõlmedest, määrates iga otseühendatud kahe ruuteri vahele
kaalu 1 ning ülejäänutele lõpmatuse. Seejärel jooksutab Djikstra
algoritmi kogu tabeli (graafi) peal, saavutades iga kahe võrgusõlme
vahele vähima kaalu. Kaalud on samuti hop-count’ides.
BGP
ehk Border Gateway Protocol on protokoll, mis võimaldab optimaalsete
teede leidmist suurtes võrkudes (üle mitmete AS-de, AS ehk
Autonomous System on nagu ISP mingi alamvõrk, guugelda). RIP
ja OSPF on AS-sisesed marsruutimisprotokollid. BGP arvestab AS-ide
kättesaadavust ja ka eeskirju, mis lubavad või keelavad kindlaid marsruute. KUI BGP-d ei eksisteeriks, oleks iga AS eraldi võrk ning
üksteise võrgusõlmede kaudu ei saaks pakette saata, st AS-id ei
saaks üksteise seadmetega suhelda. Eri AS-idesse kuuluvad ruuterid
vahetavad üksteisega infot selle kohta, missugusesse AS-i saab
ühendada missuguse AS-i kaudu.
35.
Marsruuterid
Marsruuterid
on võrgukihi seadmed, mis tegelevad datagrammide (ehk
võrgukihipakettide) edastamisega. Marsruuter loeb datagrammide
päistest sihtmarsruuteri aadressi ning valib selle järgi järgmise
marsruuteri, millele pakett edastada. See, mis andmed on datagrammi
sisus (payload), ei mõjuta marsruuterite tööd, sest
ruuterid ei jooksuta rakenduse- ega transpordikihi protokolle.
Igal
ruuteril on marsruutimistabel. Ruuter loeb temasse saabuva datagrammi
päist ning otsib tabelist päises asuva sihtaadressi järgi, millise
ühenduse kaudu datagramm edasi saata.
Tähtsamad
elemendid:
- Sisendpordid (input ports ) - siia tulevad datagrammid
- Switching fabric - väike võrk ruuteris, mis ühendab sisend - ja väljundpordid
- Väljundpordid (output ports) - siia lähevad datagrammid
- Marsruutimisprotsessor (routing processor) - väike arvuti ruuteris, mis jooksutab algoritme ja protokollide järgi edastab datagramme; see loeb datagrammide sisu
36. Ipv4 ja Ipv6
IPv4
on IP (Internet Protocol) versioon, kus siht- ja
lähteaadressitena kasutatakse 32-bitiseid (4-baidiseid) aadresse.
Pildil on IPv4 datagrammi formaat .
IPv4
aadresse kirjutatakse kui 1-baidised arvud eraldatud punktidega.
Näiteks 193.32.216.9, mis kahendkoodina oleks
11000001.00100000.11011000.00001001,
kus iga arv on üks bait ehk 8 bitti ehk võib omada erinevat
väärtust. IP-aaddressis on need väärtused vahemikus
kuni
ehk 0-255. See tähendab, et ei eksisteeri näiteks aadressit
256.0.0.1 või 192.168.999.3.
Kui
mingisuguse alamvõrgu aadress on kujul 223.1.1.0/24, siis “/24”
ehk alamvõrgumask näitab, et aadressi esimesed 24 bitti viitavad sellele võrgule. See tähendab, et kui keegi tahab saata paketti
sihtaadressiga 223.1.1.X, siis olenemata X-i väärtusest (0-255)
suunatakse see pakett sellesse võrku aadressiga 223.1.1.0/24, sest
esimesed 24 bitti (3 baiti ) 223.1.1 seal IP ees viitavad sellele
võrgule. Millisele seadmele täpsemalt pakett edasi saata selles
alamvõrgus, otsustab see seade alamvõrgus, kellele pakett suunati.
Pildi peal on näha kolm alamvõrku: 223.1.1.0/23, 223.1.2.0/23,
223.1.3.0/23. Kuna alamvõrgu aadressi määravad esimesed 23 bitti
(/23), siis viimased 32-23=9 bitti määravad täpsemalt, millise
seadmega alamvõrgus on tegemist. See tähendab, et alamvõrku
223.1.1.0/23 kuuluvatel seadmetel võivad olla sellised aadressid,
kus esimesed 23 bitti on samad, mis võrgumaskil, kuid viimased 9
bitti mistahes väärtusega (11011111.00000001.0000000-.--------).
Seega
antud näite puhul vahemikus
223.1.0.0
(11011111.00000001.00000000.00000000)
kuni
223.1.1.255
(11011111.00000001.00000001.11111111).
IPv6
on IP versioon, kus siht- ja lähteaadressitena kasutatakse
128-bitiseid (16-baidiseid) aadresse, mille eesmärk on sama, mis
IPv4 aadressitel. See loodi sellepärast, et 32- bitise IPv4
võimalikke erinevaid aadresseid on ainult ~4 miljardit. Kuidas IPv6
aadressit kirja panna: 2001:0db8:0000:0000:0000:ff00:0042:8329,
kus kooloniga on eraldatud 16-bitised 16nd-koodid, st iga 4-st
märgist koosnev arv on 2 baiti vahemikus 0000
kuni ffff.
IPv6
on backwards-compatible,
st IPv6 datagrammi saab teisendada IPv4 datagrammiks (mõned baidid peab lihtsalt ära kustutama). IPv4 datagrammist aga IPv6 datagrammi
üks-üheselt ei saa moodustada. Seega, eksisteerivad seadmed, mis ei
oska IPv4 datagrammidega midagi peale hakata.
37.
Vigade avastamine ja parandamine, CRC
Vigade
avastamisega võivad tegeleda erinevad kihid. Rakenduskihis võib
olla mingisugune kontroll, transpordikihis checksum’i abil
(TCP ja UDP), võrgukihis (IPv4) ja ka kanalikihis.
Checksum’i
abil (TCP, UDP, IPv4) toimub vigade avastamine selliselt :
11000111 (1. bait)
+00010101
(2. bait)
11011100 (1. ja 2. baidi summa)
+10000101
(3. bait)
01100010 (2. ja 3. baidi “summa”)
Viimasel
liitmisel mõlema baidi suurimad järgud olid 1,
seega toimus ülekanne väikseimasse järku (parempoolne bitt ). Iga
normaalne inimene, kes kirjalikult liita oskab, saaks viimasel
liitmisel vastuseks:
11011100 (1. ja 2. baidi summa)
+10000101
(3. bait)
101100001
(9-bitine summa)
Aga
kuna meil on baidis 8 bitti, siis vastus muutub nii, et ülekanne
liidetakse 8-bitisele summale:
01100001
(8-bitine summa;
9-bitisest summast jäta 8 bitti alles)
+00000001
(ülekanne väikseimasse järku)
01100010
Kui
kõik baidid on kokku liidetud, siis inverteeritakse vastus. Kui meil
oli kogu paketi sisu ainult 3 baiti, siis praegusel juhul checksum
tuleks viimase summa inversioon ehk
01100010
-> 10011101.
Vastuvõtja
poolel kontrollitakse, kas pakett on vigane nii, et liidetakse kõik
baidid (jällegi rekursiivse ülekandega) ja checksum. Vastuses ei
tohi olla ühtki 0-i.
11000111 (1. bait)
+00010101
(2. bait)
+10000101
(3. bait)
+10011101
(checksum)
11111111 (kui siin on mõni 0, siis
pakett jõudis vigasena kohale)
Kanalikihis
on mitmeid meetodeid kasutusel vigade avastamiseks.
Paarsuskontroll (Parity Check) - loetakse üle, kas kaadris (kanalikihi paketis) on paaris- või paaritu arv bitte ning vastavalt sellele seatakse paarsusbitt (Parity Bit) üheks või nulliks. Vastuvõtja poole peal peab kogu kaadris olevate ühtede arv olema alati (kui paarsuskontroll on Even ) paaris (kui arvestada ka paarsusbitti).Kui paarsuskontroll on Odd, siis on paarsus bit 1 ainult siis, kui ühtesid on paaritu arv.
Selle meetodi probleem on aga see, et kui kohale jõudvas kaadris on paarisarv bitte ära flippinud (1 -> 0 või 0 -> 1), siis vastuvõtja poole peal viga ei tuvastata.
Kahedimensiooniline paarsuskontroll - paarsusbitt eksisteerib andmebittide iga rea ja iga veeru jaoks ( biti puhul on paarsusbitti; pildi peal ).
CRC ehk Cyclic Redundancy Check.
Saatja tahab vastuvõtjale saata sõnumit , kus on bitti.
Näiteks: , .
Alguses lepivad saatja ja vastuvõtja kokku -bitises sõnes ehk generaatoris , kus esimene bitt on alati 1.
Näiteks: , .
Saatja lisab sõnumi lõppu -bitise sõne nii, et -bitine tulemus jaguks täpselt -ga moodul-2 aritmeetikas.
Näiteks: , ,
Moodul-2 aritmeetika tähendab siin seda, et liitmisel ja lahutamisel ei ole ülekannet, vaid iga kahe kohakuti asetseva biti peal kasutatakse lihtsalt XOR-i. Ehk liitmine ja lahutamine annavad täpselt sama tulemuse.
Näiteks: 10010 Näiteks: 10101001
+10111 -11001010
00101 01100011
-i arvutamiseks leitakse moodul-2 aritmeetikas jääk jagamisel -ga.
Näiteks: , , , jagamine (R/G):
101110000 : 1001
-1001 | (-G)
1010 |
-1001 | (-G)
1100 |
-1001 | (-G)
1010|
-1001| (-G)
011| (jääk R, rohkem bitte pole ülevalt võtta)
Seega kontrollimiseks vastuvõtja lihtsalt jagab generaatoriga moodul-2 aritmeetikas ning kui on jääk, siis järelikult on pakett vigane, vastasel juhul mitte.
Näiteks: , , jagamine:
101110011 : 1001
-1001
1010
-1001
1101
-1001
1001
-1001
0 (jääk peab tulema 0, kui pakett õige)
38.
Multipöördusprotokollid
Võrgukihis:
Need
on protokollid, mis võimaldavad andmete (või andmevoogude)
edastamist ehk täpselt samade andmete samaaegset edastamist
mitmetele vastuvõtjatele. Ebaeffektiivne oleks luua serveril korraga
ühendus kõigi (nt sadade tuhandete) klientidega ning ükshaaval
neile kõigile saata järjest samu pakette. Selle probleemi
lahendamiseks on multipöördusprotokollid.
IGMP
(Internet Group Management Protocol) on multipöördusprotokollide
baas, mille alusel suhtleb seade endaga otseühendatud ruuteriga, andes talle teada, et mingi rakendus sellel seadmel soovib ühineda
teatud multipöördusgrupiga (multicast group). Kuna IGMP alusel
toimub ainult seadme ja tema otseühenduses oleva ruuteri vaheline
suhtlus, siis eraldi protokolle on vaja, et toimuks andmete
edastamine kõikidele kindlasse multipöördusgruppi kuuluvatele
seadmetele - multipöördusprotokolle.
Multipöördusprotokolli
sisu on umbes selline, et saatja saadab endaga otseühendatud
ruuterile datagrammi; seesama ruuter edastab kõikidele
hierarhiliselt kõrgema taseme ruuteritele (peab teadma, millistesse
võrkudesse üldse kuulub vastuvõtjaid antud multipöördusgrupist)
selle sama datagrammi; kõik kõrgema taseme ruuterid edastavad selle
datagrammi oma võrku kuuluvatele alamvõrkude ruuteritele (jällegi
ainult nendele, kuhu kuulub vastuvõtjaid), jne.
Kokkuvõtvalt:
paljud paljud ruuterid dubleerivad (sest seadmed suhtlevad
ruuteriga) datagramme oma alamvõrkudesse, et need kõikidesse
sihtkohtadesse jõuaks, selle asemel et saatja saadab igale
vastuvõtjale eraldi.
Kanalikihis:
Multipöördusprotokollid
(Multiple Access Protocols) koordineerivad seda, kuidas ühel
kanalikihiühendusel (näiteks siini peal), millega on ühenduses
mitmed seadmed korraga, saadavad andmeid, ilma et üksteist liiga
palju segaks (nagu klassiruumis otsustab õppejõud, kes võib
rääkida, muidu kõik mölisevad samal ajal).
Multipöördusprotokollid jagunevad üldiselt kolme klassi:
Channel Partitioning Protocols - kanalit (kas sagedust või aega) jaotatakse osadeks
FDM (Frequency Division Multiplexing) - jagab sageduse erinevatele seadmetele
TDM (Time Division Multiplexing) - annab iteratiivselt igale seadmele väikse ajalõigu
Vaata 9. teemat FDM ja TDM seletusteks.
CDMA (Code Division Multiple Access) - igale seadmele antakse erinev kood, mille abil kodeeritakse saadetavad bitid selliselt ära, et kõik seadmed saavad samal ajahetkel andmeid saata, ilma et kokkupõrked andmeid kanali peal rikuks.
Random Access Protocols - iga seade üritab oma andmeid saata, kui tekib kokkupõrge kellegi teisega , siis enne uuesti saatmist seade ootab suvalise ajahetke.
Siia alla kuuluvad ALOHA ja CSMA , vaata 39. (järgmist) teemat.
Taking-Turns Protocols - kõik seadmed iteratiivselt edastavad oma andmeid kordamööda nii, et kui üks on lõpetanud, siis järgmine võib alustada. Sellised protokollid jaotuvad omakorda kahte klassi:
Polling Protocol - üks seade on nn master seade, mis reguleerib, kes oma andmeid võib mingil ajahetkel saata (nagu õppejõud klassis reguleerib, kes räägib). Master seade ütleb iteratiivselt igale seadmele, mitu kaadrit ta võib nüüd edastada. Kui ta on lõpetanud, ütleb Master järgmisele, mitu kaadrit ta võib edastada, jne.
Token -Passing Protocol - puudub master seade, mis reguleeriks kõike, vaid selle asemel eksisteerib nö luba (token), mis kuulub igal ajahetkel ainult ühele seadmele. Mingil hetkel see seade edastab loa järgmisele.
39.
ALOHA ja CSMA/CD
ALOHA
ja CSMA on multipöördusprotokollid (täpsemalt Random Access
Protocols), vaata 38. (eelmist) teemat.
Slotted
ALOHA.
- Aeg on jaotatud kindla pikkusega vahemikeks.
- Kõik seadmed antud kanali peal on sünkroniseeritud nii, et teavad täpselt, millal järgmine ajavahemik algab ning kaua see kestab.
- Kui mingil seadmel on vaja saata kaadrit (kanalikihi paketti), siis ta ootab järgmist ajavahemikku ning üritab selle alguses saata.
- Kui saatmisel ei tekkinud kokkupõrget, siis jõuab kaader ilusti sihtseadmeni.
- Kui saatmisel tekkis kokkupõrge, siis iga järgmise ajavahemiku alguses on tõenäosus , et ta üritab seda kaadrit uuesti saata.
Kuna
tegemist on tõenäosusega, et kaader uuesti saadetakse, siis
kokkupõrked tekivad tüüpiliselt sellest, kui juhuslikult mitu
seadet üritavad korraga uuesti oma kaadrit saata. Lõpuks peaks kõik
seadmed oma andmed edastatud saama, kuna juhuslikult otsustades, kas
uuesti saata või mitte, tekib lõpuks olukord, kus pole kokkupõrget.
ALOHA
(aka Pure ALOHA).
- Erinevalt Slotted ALOHA-st ei ole seadmed sünkroniseeritud.
- Kui seadmel on vaja kaadrit kanalile saata, saadab ta selle KOHE.
- Kui tekkis kokkupõrge mingite muude andmetega, siis saadab ta selle KOHE uuesti tõenäosusega . Kui tõenäosus ütles, et ta ei saadaks seda kohe uuesti, siis ootab ta kindla ajavahemiku ja saadab selle kohe uuesti tõenäosusega Rinse and repeat.
CSMA
ehk Carrier Sense Multiple Access.
Erinevalt
ALOHA-dest, kuulatakse CSMA puhul ka seda, mis toimub ümberringi.
ALOHA
analoog päris elus on see, et mingi vant hakkab (mingi tõenäosusega)
lihtsalt lobisema, segades kõikidele teistele vahele, kes parasjagu
oma juttu räägivad. Kui midagi pole aru saada (kokkupõrge, sest
kõik räägivad korraga), siis jääb ta vait, aga mingi
tõenäosusega hakkab jälle varsti lobisema.
CSMA/CD
on “viisakas” protokoll, mis tegutseb järgnevalt:
- Carrier Sensing (CS) - kui keegi teine hetkel oma andmeid edastab, siis seade ootab, kuni ta on lõpetanud ning kanal on vaba (päris elus inimene kuulab teise lõpuni, enne kui rääkima hakkab)
- Collision Detection (CD) - kui keegi teine avastas ka, et kanal on nüüd vaba ning hakkas ka oma andmeid edastama juhuslikult täpselt samal ajal, kui esimene, siis mõlemad seadmed lõpetavad koheselt andmeedastuse ja ootavad suvalise ajahetke, enne kui uuesti proovivad. Kui selle suvalise ajahetke jooksul keegi teine hakkas oma andmeid edastama, siis oodatakse jällegi viisakalt, kuni kanal vaba on.
Nende
kahe reegli (CS ja CD) järgimisel on protokolliks CSMA/CD ehk
Carrier Sense Multiple Access with Collision Detection. Kui
järgitakse ainult CS-i ning CD-d mitte, siis on protokolliks
lihtsalt CSMA.
40.
Token ring
Token ring on
multipöördusprotokolli (täpsemalt Taking-Turns Protocols,
veel täpsemalt Token-Passing Protocols) üks võimalus, kus
seadmed moodustavad füüsilise ringi, kus luba liigub ringis . Iga
seade teab, millisele seadmele ta peab loa edasi andma, kui ta on oma
andmete edastuse lõpetanud. Näiteks nr 1 annab nr 3-le, nr 3 annab
nr 2-le ja nr 2 annab nr 1-le, seadmed moodustavad ringi.
Kui
luba jõuab seadmele nr 2, siis ta edastab teatud arvu kaadreid (kui
tal on neid palju, siis ta edastab mõned neist) ning seejärel
edastab loa spetsiaalse kaadriga seadmele nr 1. Kui näiteks seadmel
nr 1 ei ole kaadreid edastamiseks, siis ta ei jää ootama, vaid
edastab koheselt loa edasi seadmele nr 3.
On
olemas mitmeid viise välja töötatud sellistest vigadest
taastumiseks, nagu mis juhtub siis, kui loaga seade plahvatab ning ei
edastagi oma luba kellelegi. Või mis juhtub siis, kui üks nendest seadmetest otsustab, et ta ei annagi kunagi luba edasi, vaid lihtsalt
edastab tuimalt ainult oma andmeid.
41.
Token bus
Token
bus on loaedastusega siinvõrk.
Erinevus
token ringiga - füüsiliselt ei moodusta võrk ringi, vaid token
liigub mööda ühte siini.
Seda
kasutatakse näiteks tööstusautomaatika võrkudes.
Token
bus ülesehitus:
FC
on juhtbait, mis määrab paketi tüübi. FCS on kontrollsumma.
Token
Busi paketid:
Claim token (CT)-
Solicit successor (SolS)- kas keegi on nende kahe numbri vahel (võrgusõlmede). Ehk siis kas keegi soovib nende vahele liituda
Who follows me (WF)- kes temale järgneb, ehk otsitakse, kes on peale seda kellele ta alguses pidi loa saatma.
Resolve contention (TS)
Set successor (SetS)- annab teada, mis järgnes temale, siis ei kao järjekord ära
Token (T)- tokeni saatmine
Igale
võrgusõlmele on määratud ajapiirang, kui kaua token tema käes
saab olla.
Iga
võrgusõlm peab teadma oma naabri aadressi- Who Follows Me?.
- Kuidas andmed liiguvad (üldiselt):
Luba (token) jääb ajutiselt saatjale ning andmed liiguvad saajale. Saaja saadab
kviitungi vastu ning kui saatja saab selle kätte, antakse token
edasi järgmisele.
Oletame,
et nr 2 soovib ringist lahkuda. Ta saab loa nr 1, peale seda saadab
välja paketi SetS 1-->3, ehk ühele järgneb kolm. See pakett
jõuab nii 1 ja 3, panevad selle tulemuse kirja, et teaksid kellele
siis luba saata/vastu võtta. Nüüd saadab 1 uuesti loa välja, aga
hoopis nr 3le.
- Ringist ebaviisakalt lahkumine:
Load kaovad ära-
korratakse saatmist, kui see ei õnnestu, siis saadetakse pakett WF
(who follows me ehk kellele see, kes ringist ära kadus , loa oleks
pidanud saatma). Kui saadakse teada, kes kadunukesele järgneb, siis
see, kes järgneb saadab välja SetS.
Aeg-ajalt küsitakse,
kas keegi on minu ja minu saadetava võrgu vahel- kes soovib liituda
SolS. Kui soovijaid on rohkem kui üks, siis tekib põrge- see aga
lahendatakse nii, et RC saadetakse mõlemale soovijale tagasi ning
tehakse ajaaken saatmiseks- kui nad aga uuesti kokku sõidavad, siis
tehakse uuesti RC ja võetakse järgmised 2 bitti ning vaadatakse aja
saatmise tabelit. Jne.
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 mõeldud ja kes saatis) 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 (gateway), 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. Ethernet on juhupöördusvõrk,
ehk pole garantiid, kui nt kaks tahavad korraga rääkida- tekivad põrked . Seetõttu on ethernet tõenäosuslik- mida suurem on kiirus,
seda väiksem on põrgete tõenäosus.
Ethernet
on ühenduseta andmeedastus. Käepigistust ei toimu ning on
unreliable.
Etthernet
on ühinduv- paketti ei pea ringi formateerima- lihtsalt kiirus on
erinev.
Etherneti
ajalugu:
Ethernet
sai alguse siinivõrguna. Alguses kasutati bus topoloogiat, etherneti
arenedes, hakati kasutama kommuteerituid, ehk tähtetherneti, mille
keskel on switch ning igas otsas on erinev etherneti võrk, mis
tagas, et põrkeid ei ole.
Kasutab
CSMA/CD edastusmeetodit:
Ethernet
töötab CSMA/CD meetodi peal- kõigepealt kuulatakse kanalit, kui
kanal on vaba, siis saadetakse andmed, kui ei ole vaba, siis
oodatakse. Ehk põrkeid väga vältida ei saa, kuid akna kuulamine
annab teada, et me kellegi toimivale saatmisele vahele ei segaks.
Kuidas
põrke korral tegutsetakse:
Kui
NIC tuvastab võrgus veel mingi andmeedastuse- ehk keegi segab vahele- siis saatmised jäetakse pooleli ning saadetakse jam
signaal (NIC poolt), mis annab kõigile teada olukorrast võrgus- on
tekkinud põrge. Siis hakatakse ekspodentsiaalselt kokkupõrganud
võrgusõlmi omavahel hajutama- need kes ei osalenud põrkes, hoiavad
korraks eemale. Nende käes on ajutiselt kanal, kes põrkes osalesid.
Hakatakse tegema täringuviskamist, kes nendest siis oma andmed enne
saab ära saata.
NIC
on füüsiline jubin arvuti küljes (emaplaati ehitatud), mis töötab
füüsilise- ja kanalikihi tasemel. Ilma selleta ei saaks suhelda
suht kellegagi.
Etherneti kaader:
- Preamble- kindel bitijada, mis näitab, et algab uus kaader. Sünkroniseerib saatja ja saaja kellad.
- Addresses- saatja ja saaja MAC aadressid
- Type- näitab millist kõrgema taseme protokolli kasutatakse
- Data
- CRC- nelja baidine kontrollkood, ehk veakontrolliks
Etherneti standardid /tehnoloogiad:
10Base2. Esimene etherneti versioon. Oli 10Mbps, kaadripikkus oli max 200m, töötas hoax kaablil, mille otstes olid terminaatorid. Kogu kanal oli ühe saatja käes.Pikendamiseks kasutati reptiitereid (kordajaid- füüsilise kihi seade), mis võtab vastu bitijada, võimendab need ning väljastab teise otsa.
10BaseT.T - tähendab, et kasutatakse Twisted Pair (keerupaar kaablid) kaabeldust. Hubist Switch'ni on võrk ülesehitatud täht-topoloogiaga. Maksimaalne distants kahe võrguseadme (nt. huub ja arvuti võrgukaart) on 100m.
Hub jagab võrku ja võib ka koguda statistilist informatsiooni
võrguliikluse kohta. Hub jaotur on seade, mis on pmst mitmepordine
repiiter ehk signaali võimendi. Ta võtab vastu ühe biti ja saadab
kõigile. Kui kuskil tekib põrge, siis on kõik osalisteks.
Võeti
kasutusele Manchester encoding, selleks et vältida
pikki nullide ja ühtede jadasid- iga biti keskel toimub signaali
nivoo muutus, selleks et hoida saatja sünkroonis vastuvõtjaga.
44.
Jaoturid, sillad ja kommutaatorid
Jaotureid, sildu ja
kommutaatoreid kasutatakse võrkude kokkuühendamisel.
Switch on kanalikihi
seade. (ruuter on võrgukihi seade)
HUB ehk jaotur.
Hub
on füüsilise kihi seade. Tal on palju porte, mistõttu on võimalik
temaga ühendada palju seadmeid. Hubiga ei saa erinevaid ethernette
kokku panna, kuna kiirused on erinevad. Hub ei võta andmeid vastu
pakettide kaupa, vaid bittide haaval. Hubiga saame teha distantsi
pikemaks, kuna on ka signaali võimendajaks.
Kui
tekib põrge, siis see levib kõigini- pmst nagu siini küge oleks
ühendatud. Hub sobib väikestes võrkudes.
SILLAD.
Sillad
on kanalikihi seadmed. Neil on vähe porte. Võtavad vastu etherneti
kaadreid, salvestavad ja saadavad edasi valikuliselt MAC aadresside
abil. Sild on võimeline erineva kiirusega ethernee kokku ühendama.
Sillal ei ole aadressi- ta on nähtamatu arvutite jaoks. Sild järgib, kas
kanal on vaba, tegeleb põrgetega (ehk CSMA/CD protokolli järgimine ).
Sillad on iseõppivad seadmed- õpivad kes kuskil asuvad, ehk teada,
kuhu pakette edastada.
Sild
jagab võrgu segmentideks kanalikihi mõttes, IP võrgu mõttes
mitte, kuna IP aadress on sama. Sildadega võrgueffektiivsus
suureneb. Põrge ei levi üle silla, kuna pakett võetakse vastu tervikuna ja alles siis saadetakse ta edasi, kui sild on veendunud,
et ta tuleb saata teise segmenti.
Sillal
on edastamistabel. Kui neid andmeid sealt tabelist ei ole vaja olnud
mingi x aja jooksul, siis see teadmine kustutakse.
Sillad
ei suuda valida mõislikke marsruute nagu ruuterid näiteks suudavad.
Tekivad seetõttu ka erinevad probleemid- nt tabeleid kirjutatakse
korduvalt üle. See on lahendatav- on tehtud algortim, mis muudab
graafi puukujuliseks struktuuriks, ehk mingid teed pannakse kinni.
Kuidas sild
töötab:
Kui silda jõuab
pakett: kui tal on info olemas- kes kuskil asub ning teab, et
sihtpunkt on samas segmendis, kus pakett tuli, siis seda teise
segmenti ei saadeta, kuna hubiga jõuab info kõigini.
Kui sihtpunkt on
teises segmendis, sild saadab paketi sihtkohta- kui teab sihtkoha
aadressi. Kui ei, siis saadab kõigile, v.a sellele, kellelt pakett
tuli.
Sillad vs
ruuterid:
Sillad
töötavad II kihi peal, ruuterid III. Ruuterid harutavad paketi III
tasemel lahti. Sillad tegelevad MAC aadressiga, ruuterid IP.
Sillad-
väikestes võrkudes, ruuterid- suurtes võrkudes.
SWITCHES.
SWITCH
on pmst sama, mis mitmepordiline sild. Switch on võimeline mitut
paralleelset andmevahetust läbi laskama- on täistupleks ja põrkeid
ei ole.
Switch on sildadega
väga sarnane- MAC aadressi järgi toimub valikuline saatmine,
switchid on iseõppivad seadmed. On läbipaistvad arvutitele- neil ei
ole aadressi. Neil on marsruutimistabel.
Switchi töötamise
algoritm on sama, mis sillal- Kui switchi jõuab pakett: kui tal on
info olemas- kes kuskil asub ning teab, et sihtpunkt on samas
segmendis, kus pakett tuli, siis seda teise segmenti ei saadeta, kuna
hubiga jõuab info kõigini.
Kui sihtpunkt on
teises segmendis, sild saadab paketi sihtkohta- kui teab sihtkoha
aadressi. Kui ei, siis saadab kõigile ( flood ), v.a sellele, kellelt
pakett tuli.
Switchiga saame
kaablit pikendada, ehk suurema võrgu luua. Põrkedomeenid on
isoleeritud.
Switches vs
routers
Sama, mis sildadel.
Hub on ainuke, kes
ei tegele liikluse isoleerimisega.
Kõik saavad hakkama
ilma konfigureerimiseta, v.a ruuterid.
Optimaalne
marsruutimine toimub ainult ruuterites.
Hubid ja switchid on
võimelised paketti täiesti vastuvõtmata edasi saatma (nt ainult
päis on käes, teine pool on veel tulemata).
45.
CSMA/CA
CSMA/CA
(Carrier Sense Multiple Access / Collision Avoidance) - Kuulatakse
igasugust signaali, sõltumata, kas tegemist takistava või
andmesignaaliga. Kui midagi kuuldakse, kõik jaamad peatuvad ja
ootavad. Spetsiaalset mürasignaali ei saadeta.
Võimalik
kasutada nn. pollingut, st. on jagatud, millal keegi räägib.
Võimalik küsida õigust rääkimiseks.
Token
passing - luba rääkida liigub osapoolte vahel ringiratast.
Kasutatakse
juhtmeta võrkudes Wireless LAN näiteks. Selle puhul ongi märgitud
CA ehk üritatakse kokkupõrkeid vältida. Kuna juhtmeta võrgu puhul
pole võimalik saatmise ajal kanalit kuulata. Enne saatma minekut aga
kuulab kas kanal on vaba.
Kui
tekivad samaaegselt soovivad saatjad siis käsitakse neil kõigil
oodata mingi random aeg ning kelle random aeg on lühem ongi „võitja“
ja hakkab oma andmeid koheselt edastama.
Samamoodi
nagu Slotted Aloha puhul võib saatele minna ainult ajapilu alguses
(vähendab kokkupõrkeid).
46.
ATM
ATM
(Asynchronous Transfer Mode) võrk on pakettedastus tehnika mida
kasutavad telekommi võrgud, mis kasutavad async TDM (aeg muximine)
et andmed kodeerida väikestesse, määratud pikkuseda pakettidesse.
Ta põhineb pakettedastusel, virtuaalahelatel ning suudab tagada
ajalised nõuded heli, video jms edastamisel. ATM võimaldab vaid
kindla pikkusega pakette(5+48 baiti), kusjuures need paketid on
suhteliselt lühikesed võrreldes varasemate edastusviisidega.
ATM
on ühendusele orienteeritud. ATM loob fikseeritud kanali või ruudi (rout) kahe punkti vahel kus andmeid edastatakse, mis on erinev
TCP/IP-st kus iga pakett võib valida erineva tee saatjast saajani.
Lühikesed
paketid võimaldavad edastada audiot, videot ning andmeid üle sama
võrgu nii, et üks andmetüüp ei tõmbaks kogu liini umbe. See
kitsendus teeb ATM puhul lihtsamaks saadetiste jälgimise ning
arveldamise kuid muudab võrgu vähem kohanevaks võrguliikluse
ootamatutele muutustele.
ATM
ülekandmisel on 4 võimalust kiiruse ja andmemahtude suhte
garanteerimiseks ajas:
Constant
Bit Rate (CBR) - ülekandekiirus on fikseeritud, andmed saadetaks
püsiva voona. Analoogiline punkt-punkt ühenduse fikseeritud liinile
Variable
Bit Rate (VBR) - Garanteeritakse teatud kanalimaht, kuid andmeid ei
saadeta võrdselt. Kasutatakse üldiselt kõne ja videokonverentside
tarbeks.
Unspecified
Bit Rate (UBR) - läbilaskemahud pole garanteeritud. St. kiirus võib
oluliselt muutuda. Kasutatakse selliste rakenduste nagu
failiülekanded puhul, kus ajaline viide on lubatav.
Available
Bit Rate (ABR) - garanteerib mingi mininmaalse läbilaske, kuid lubab
suuremat läbilaset, kuid võrk seda võimaldab.
Luuakse
virtuaalahel, erinevalt datagrammiedastusest, kus paketiga
kaasas olev aadress on vastuvõtja aadress, virtuaalahela puhul on
kaasas virtuaalahela identifikaator , mis muutub pidevalt. Kõikides
kommutaatorites võetakse pakett lahti, vahetatakse virtuaalahela
identifikaatori number ära, arvutatakse kontrollsumma, pakitakse
uuesti kokku ja saadetakse edasi. Vigaseid pakette edasi ei saadeta.
IP
üle ATM-i
IP
puhul on Mac ja IP aadressid
IP
üle ATM-i puhul on IP ja ATM aadressid.
47.
Võrkude turvalisus ja ohud
Turvalisus
võrgus tähendab seda, et ainult saatja ja identifitseeritud saatja
peaksid "mõistma" teate sisu. Selleks saatja krüpteerib
ja vastuvõtja dekrüpteerib teate.
Autentimise
eesmärk on saatja ja vastuvõtja omavaheline kinnitus, et tegemist
on õigete inimestega (masinatega). Nii saatja kui vastuvõtja
soovivad kindlustada, et teadet ei ole modifitseeritud saatmise ajal
ega selle järel.
Interneti
turvalisuse ohud:
Pakettide
pealtkuulamiseks on kaks võimalust: pealtkuulaja istub liini peal
või pealtkuulaja asub võrgusõlmes. Kui keegi saab kätte võrgust
võõrad paketid, on tal võimalik sealt kõike lugeda, ka paroole
(ntx pop3 ja telneti puhul liiguvad paketid üle võrgu krüpteerimata
kujul).
Võimalik
on ka pakettide saatmine nii, et paketi päises on teine IP aadress
kui saatjal tegelikult, sel juhul vastuvõtja määrab saatjaks vale
arvuti, mis võimaldab ühel arvutil teeselda, et ta on teine.
Liigse
paketi tulvaga blokeerida sõlmpunktid või vastuvõtja nii, et
soovitud paketid ei tule läbi(Denial of service (DOS)).
Kui
rünnatakse pakettide tulvaga mitmest kohast, on tegemist
"Distributed DOS'ga".
Kokkuvõtlikult:
Kasutatakse
krüptograafiat (avaliku võtme ja sümmeetrilise võtme krüptograafia ), autentimist, meetodeid, mis näitavad, kas sõnum on
muudetud või mitte, turvalist elektronposti, turvalist
andmeülekandmist, Ipsec-i. Lisaks kasutatakse veel täiendavaid turvavahendeid nagu tulemüürid.
48.
Krüptograafia, algoritmid ja võtmed
Krüptograafia
tähendab tõlkes „salajane kirjutamine“.
Protsessi
kulg näeb välja selline:
1)
Algtekst – Info, mida soovitakse saata, ilma et see oleks kaitstud.
2)
Krüpeerimisalgoritm – Sisaldab kõike seda, mida avatekstiga
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 oma 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õik võ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
Sümmeetrilise
võtme puhul on krüpteerimiseks ja dekrüpteerimiseks sama võti.
Sümmeetrilise võtme puhul on probleemiks turvaline võtmeedastus.
(kaks meest saavad kõrtsus kokku ja vahetavad võtmeid)
DES
(Data Encryption Standard) on tänapäeval praktiliselt asendudnud
3DES'ga, mis kasutab 3 võtit. DES'i korral jagatakse andmed 64
bitisteks blokkideks ja kasutatakse 56 bitist võtit. Mida pikem
võti, seda keerukam on lahtimurdmine. DES'i puhul ei ole teada
ühtegi tagaust. DES'i puhul kasutatakse nihutamisi ja
loogikatehteid. DES'i on võimalik realiseerida ka riistvaraliselt,
olles 1000 - 10000 korda kiirem kui RSA, programmiliselt on DES 100
korda kiirem kui RSA. DES'i on võimalik murda ainult "brute
force" meetodiga, st proovides kõiki võtmevariante kuna
märkide esinemissageduse analüüs vms meetod ei anna tulemusi.
50.
Avaliku võtme krüptograafia, RSA
SLAID 44!!! Kaheksas pt!- oluline slaid.
Okei, pm (kui ma õigesti aru saan) on Alice’l kaks võtit,
Kaa(Avalik) ja Kas(Secret), sama lugu on ka Bobiga. Et Bobile
saadetav kiri ära krüpteerida võtame Bobi avaliku võtme,
rakendame seda kirjale ja seda dekrüpteerida saab ainult Bobi
salajase võtmega.
Ühest
võtmest teist tuletada ei saa
VALEM PEAB OLEMA PEAS- slaid 49 pt8!!
Hea oleks kui teaks slaid 46 RSA algoritmi.
Avaliku võtme kinnitamine- slaid 94 pt8. Kolmas usaldatav
osapool.- põhimõte.
51.
Autentimine
Toiming,
kus saatja ja vastuvõtja kinnitavad üksteise identiteeti.
Olemi
väidetava identsuse verifitseerimise toiming. Kasutatakse sageli
kasutajanime ja parooli küsimist.
52.
Digitaalallkiri
Võtame
oma andmepaketi, arvutame räsifuniga krüptolühendi, mille
krüpteerime OMA PRIVAAVÕTMEGA. See, kes tahab allkirja kontrollida,
võtab selle sama sõnumi, arvutab selle sama krüptolühendi ja minu
krüptolühendi ja dekodeerib selle MINU AVALIKU VÕTMEGA. Ja võrdleb
minu arvutatud tema arvutatuga -kui need on samad, siis kiri on
muutumatul kujul kohale jõundun.
53. Sertifitseerimine
Protseduur ,
millega kolmas osapool annab tagatise, et andmetöötlussüsteem või
selle osa vastab turvanõuetele.
Sertifitseerimine
on vajalik riskide vähendamiseks kahe teineteist mitteusaldava
osapoole vahelises suhtluses. Sisuliselt notarid digitaalsel kujul.
On kaks kohta, kus neid kasutatakse - üks osapool soovib kinnitust,
kas talle esitatud avalik võti kuulub teisele osapoolele ning teine
olukord, kus kahel teineteist mitte usaldaval osapoolel on vaja leida
ühine võti, et pidada turvalist sidet.
Certification
Autority (CA), seob avalikud võtmed eraldiseisvate üksustega.
Iga üksus(inimene, ruuter) saab seal registreerida oma avaliku
võtme, kõigepealt tuleb end CA-le identifitseerida ja seejärel
luuakse sulle sertifikaat, mis seob sinu identiteedi avaliku võtmega.
CA allkirjastab sertifikaadi digitaalselt. Nt kui Mari tahab Bobi
avalikku võtit, siis ta saab Bobi sertifikaadi(Bobi käest või
mujalt), kasutab CA avalikku võtit Bobi sertifikaadil, ja saab Bobi
avaliku võtme.
54.
Võtmete jaotussüsteemid ja protokollid
Slaid 87 peab teadma. Kaheksas pt. - see põhimõte on oluline.
Wtf
is this
55.
Tulemüürid
Tulemüür on süsteem, mis enamasti takistab autentiseerimata kasutajatel
mingisse kindlasse arvutisse või väiksemasse võrku saamast, mis
omakorda on internetiga ühendatud. Kõik sõnumid, mis väljuvad või
sisenevad intranetti/arvutisse lähevad läbi tulemüüri. Need
sõnumid, mis ei vasta teatud nõuetele blokeeritakse. On erinevaid
tulemüüri tehnikaid: Paketi filter , rakenduse gateway,
circuit-level gateway, proxy server. Ta isoleerib näiteks mingi
organisatsiooni sisevõrgu ülejäänud internetist, lubades osasid
pakette läbi ja teisi mitte. Rakenduskihi väravaga saab ära
määrata millise rakenduse kõik ühendused lähevad läbi mingi
kindla gateway. Tulemüürid aga ei ole 100% kindlad.
56.
Transpordikihi turvalisus, SSL, E-kaubandus, SET
57.
Võrgukihi turvalisus, IPsec
58.
Võrguhaldus, SNMP
Hahahaha
GG :D OKEI Fakku disu shitto ma ei viitsi igale küsimusele eraldi
vastata, teen lslt kogu security peatükist tldr versiooni
Sümmeetriliste
võtmete korral
Nii!
Meil on plaintext m. Krüpteerimisalgoritm võtab sisendisse Ka ja
sõnumi m. Ka(m) = ciphertext ja see saadetakse Bobile. Bobi
dekrüptoalgoritm võtab sisendina ciphertexti ja enda võtme Kb ehk
Dekrüpt = Kb(Ka(m))=m. Antud juhul on Alicel ja Bobil sama
võti ja see võti on salajane.
Üks
kõige lihtsamaid algoritme on nt nihe paremale 3 võrra, Caesar Cipher ehk a = d, b = e jne.
Kuidas
seda lahti murda:
- Ciphertext-only attack - Ehk meil on ainult krüpteeritud tekst ja mitte midagi muud. Saab kasutada loogikat ja statistikat, et aidata seda lahti murda. Nt inglise keeles 1 tähelised “sõnad” oleks I või partikkel a. 3 tähelisi sõnu pole ka palju, nii saab juba mingid tähed paika ja on vähem vaja “brute force” meetodil läbi proovida.
- Known-plaintext attack - Kui pealtkuulaja for some reason teaks täpselt et sõnumis esineb “alice” ja “bob”, siis tal on tähepaarid olemas 7 tähe jaoks. Või on õnnestunud saada ligipääs hunnikule ciphertextile ja vähemalt ühele dekrüpteeritud versioonile.
- Chosen-plaintext attack - Trudy saab valida plaintext sõnumi ja saab kuidagi ka selle ciphertext vormi. Kui Trudy saaks panna Alice saatma mingi sõnumi, mis sisaldab iga tähestiku tähte, siis olekski algoritm murtud.
Mitmetähestikuline
krüpteerimine (polyalphabetic encryption) - ??? tra ma ei tea kas
keegi mõikab seda?
Block
ciphers
Sümmeetrilise
võtme üks tehnikatest (üks on veel, see tuleb hiljem). Siin sõnum
krüpteeritakse k biti pikkuste blokkidena. Nt kui k=64, siis sõnum
tehakse 64-biti pikkusteks blokkideks ja iga blokk krüpteeritakse
eraldi.
Võimalike
variante on 2^^k!
Kui
k=3, siis see on vähe variante (8!), aga k=64 tuleb ridiculously
suur hulk variante, mida läbi proovida.
Ainuke
kala on, et Alice ja Bob peaksid omama tabelit kus on 2^^64 väärtust,
et seda dekrüpteerida.
Avaliku
võtme krüpteerimine
Sümmeetrilise
võtme üks kitsaskohti on see, et kuidagi peab leppima kokku, mis
see võti on. Kuidas seda teha nii, et keegi ei kuulaks pealt ja et
see võti ka jõuaks õigesse kohta ja ainult sinna? Well magic juhtus 67 aastal ja leiutati avaliku võtme krüpteerimine.
Seda kasutatakse nii autentimiseks kui ka digiallkirjastamiseks.
Algoritmid
on tuntud ja avalikud võtmed on...noh...avalikud. Anyways. Alice
võtab sõnumi m, lükkab selle algoritmi sisendiks koos Bobi avaliku
krüpteerimise võtmega - K+b(m). See saadetakse Bobile, kes paneb
selle sisendiks oma dekrüpt algoritmi ja rakendab sellele enda
privaatvõtit. m=K-b(K+b(m)). So nad saavad sõnumeid vahetada ilma
et peaks oma privaatvõtmeid kuidagi edastama või jagama .
Võimalik
kala - kuna võti on avalik, siis on võimalik Bobile saata tema
avaliku võtmega krüpteeritud sõnumeid ja teeselda, et ise oled
Alice.
RSA
algoritm
Avaliku
võtme krüptograafia. Kasutab moodularitmeetikat e jäägiga
jagamine. 19 mod 5 = 4 ehk 19= 15 + 4.
Message
integrity/autentimine
Oletame,
et saame mingi sõnumi. Meil on vaja kuidagi kindlaks teha, et sõnum
tuli ka Alice käest ja et see on muutmata kujul jõudnud Bobini. Nt
kui kasutatakse kanali...somethingsomething link state algoritmi siis
on võimalik fakkida marsruutimisega seega pole kindel kas A tegelt
ka lõi selle sõnumi.
Räsifunktsioonid
H(m).
On võimatu leida kahte sõnumit x ja y mille puhul H(x)=H(y).
Nope.avi
ma ei jaksa rohkem.
MÄRKMED KONSULTATSIOONIST (22.03):
- Dijkstra algoritm (slaid 108): - EKSAMIL!
Joonistame
pildi ja näitame pildi, mis kuidas sammhaaval see töötab Seletada
algoritmi põhimõte ja tee näide- kuidas tabel muutub
paremaks kui naabritelt saadakse uus teave.
Joonista graaf - ja näita sammhaaval, kuidas teadmine tekib.
Kõikide
- teete tr teete t kirjutada lahti
- Tee t t tere R teretere tere teretere
Kõik kommentaarid