teejuht
1.
|
Sissejuhatus |
2.
|
Tehnilised vahendid arvutite ühendamiseks üksteisega ja võrgu topoloogia |
3.
|
Andmevahetus - TCP/IP protokollid |
4.
|
IP datagramm |
5.
|
|
Kui on kaks või enam arvutit, siis on ikka mõtet nad nii tööle panna, et muuhulgas saavad nad omavahel infot vahetada - öeldake, et arvutid on võrku (võrguks) ühendatud. Ja isegi kui on üks arvuti, siis saab ta teistega - Internet'iga - kokku ühendada (nt. aegaajalt kasutades modemit ja telefoni), mis on samuti mõistlik.
Järgneb jutt sellest kuidas arvutid omavahel suhtlevad püüdes laskuda deitailidesse. Tõsi, see jutt ei pretendeeri mitte niivõrd juhiste andmiseks kuidas ise hakata tühja saare peal interneti seadmeid tootma vaid pigem sellele, et mõista hiljem või varem aktuaalseks tõusvat teemat IP filtritest (sh. firewall, masquerade):
Mitme arvuti võrguks ühendamine annab võimalused, mida ühe arvutiga põhimõtteliselt realiseerida ei saa; ning ta avardab nende võimaluste praktilist väärtust mida saab tegelikult ka ühe arvutiga kasutada:
1. töö jaotamine mitme protsessori vahel (kõige lihtsam
on vast X serveri kasutamine)
2. failide ülekandmine ühest arvutist teise (ftp)
3. nn. elektron-kirjade vahetamine (e-mail)
4. kodulehekülgede väljapanek/vaatamine (http)
5. võrgu failisüsteem (nfs)
6. üle võrgu teise arvuti administreerimine
7. klient-server tüüpi rakenduste kasutamine (nt. mittegraafilised
-ja X-terminaid)
8. mõnede arvutite bootimine serverilt
- kõneldes ettevõtte-sisestest infovahetuseks võimelistest
arvutite ühendusest nimetame seda intranetiks;
- kõneldes ülemaailmsest infovahetuseks võimelisest
arvutite ühendusest nimetame seda Internetiks.
Intranet on tavaliselt ühenduses Internetiga. Võib öelda,
et intranet on Inerneti osa. Reeglina on nii, et ettevõttesisesed
nö. emaarvutid pakuvad enamus teenustest ainult nö intraneti
arvutitele (nt. failide vahetamine, virtuaalsed teadetetahvlid ..) ning
mõnda teenust välismaailmale (nt. elektronkirjade vahetamine,
kodulehekülgede eksponeerimine, uudistegrupid). Rangelt võttes
peaks intranetiks nimetama sellist arvutite ühendust, mis ei oma mitte
mingisugust kontakti ülemaailmse arvutivõrguga - Internetiga.
Praktiliselt pole aga mõistlik ennast nii ära isoleerida, vist.
Tehnilised vahendid arvutite ühendamiseks üksteisega ja võrgu topoloogia:
Selleks on mitmeid erinevaid võimalusi, milline neist ühel või teisel konkreetsel juhul valitakse sõltub võimalustest ja vajadustest.
1.
kõige levinum viis arvuteid omavahel kokku ühendada on
kasutada nn. ethernet'i kaarte ja kahesoonelisi koaksiaalkaableid koos
T-konnektorite ja ja terminaatoritega.
Siin tuleb arvestada sellega, et kaarte ei tohi otse kaabli kulge ühendada
vaid ainut T - connectori vahendusel.
Kunagi oli oluline kaabli pikkus kahe sõlme vahel, nüüd
see enam nii ei ole. Tegemist on muidugi kaablis liikuvate elektromagnetlainete
peegeldumiste ja hajumistega ja sumbumistega.
2.
teie viis on kasutada nn. keerupaari 7 kiulist kaablit. Jutme otsab
tuleb ühendada otse võrgukaartidesse.
3.
Kasutada mõlemalt nimetatud viisi kombineeritult
Nimetame aparaadi mis realiseerib ühendust arvuti ja võrgu
vahel, aparaadi hinna, ühenduse kiiruse, ühendusmeediumi ja märkuse
nimetus, tüüp | hind (ca ) | andmeedastuse kiirus | märkus |
ISA - kaart | 300 EEK | 0,2 - 1 MB/s | kõige levinum arvutiklassides jne |
PCI - kaart | 400 EEK | 1 - 10 MB/s | kõige levinum arvutiklassides jne |
ISDN - kaart | 2 500 EEK | 256 kB/s | nt. kodus spetsiaalsele telefoniliinile |
modem (i kaart) | 1 800 EEK | 33,3 kB/s | tavalisele telefoniliinile |
serial port nn. cua0 cua1, ... | emaplaadiga paratamatult koos
aga olemas on nn. BOCA kaardid |
5 kB/s | mõnel puhul üteldakse, et kasutatakse null-modemit
mõnel puhul on põhjut käsitleda taha ühendatud arvutit mittegraafilise terminalina |
parallel port | emaplaadiga koos | 20 kB/s | null modemi laadne |
Andmevahetus -TCP/IP protokollid
Nagu aimata võib liiguvad nö. võrgukaartide vahel elektrisignaalid. Need elektrisignaalid kannavad endas infot mis ongi arvutivõrgu toimimise aluseks.
Kujutleme, et on vaja üle arvutivõrgu saata lause "Ma armastasin sind". Ilmselt on palju ernevaid võimalusi kuidas lausele vastavad baidid (st. bitid) teisesndada elektrisignaalide järgnevuseks. Aga praktiliselt on väljakujunenud komplekt reegleid, mis on teistest levinum kuidas seda teha - nn.
TCP/IP (Transmission Control Protocol/Internet Protocol) protokollid.
Selles andmevahetuse korraldamise reeglistikus (protokollide komplektis) on peale nimetatud kahe (TCP ja IP) veel hulk muid protokolle. See standard sai alguse UNIX alguspäevil 1969. aastal kui Ameerika Ühendriikide kaitseministeerium asus finantseerima teadusprojekti arvutite vahelise side korraldamiseks. Konkreetselt toimetati võrgus nimega APRANET. 1983. aastal TCP/IP standardiseeriti ja Kalifornia Ülikool Berkley'is asus seda rakendama konkreetselt UNIX-i masinatele.
TCP/IP olulised omadused
1.
|
Standardid millele need protokollid alluvad on vabalt kättesaadavad ning esitatud selliselt, et ei lähtuta mingist konkreetsest riist- või tarkvarast (OS-sist). |
2.
|
TCP/IP protokollid ei sõltu konkreetsest võrgu realiseerivast riistvarast - Ethernet, Token-Ring, X.25 |
3.
|
Protokollid omavad paindlikku võrguseadmete (nt. kaartide) adresseerimist, mis rakendub nii lokaal kui globaalvõrgus (nt. Internet) |
4.
|
TCP/IP protokollide hulka kuuluvad ka sellised nn. kõrgetaseme protokollid, mis toetavad elektron-kirjade vahetamist, failide kopeerimist, terminalist sisselogimist etc. |
TCP/IP ahritektuur
Protokollide ülesehitus põhineb arvutivõrgu sellisel käsitluse, kus on kolm objekti:
- protsessid - need mida ps näitab; võib ka ütelda,
et protsess on töötav programm (tegelikult just nemad omavahel
andmeid vahetavadki)
- hostid - www.ee, www.eyp.ee, 193.40.51.51
- võrk - meedium: metalltraadid, valguskiud ..., sh. marsuutimine
Protsessid on need asjad mis tegelikult suudavad omavahel infot vahetada.
Host on see konkreetne arvuti kus protsess käib ja võrk võimaldab
füüsilist ühendust. Niisiis kõik pingutused tehakse
selleks, et kaks protsessi mis läivad erinevates arvutites saaksid
omavahel andmeid vahetada.
Kui üks protsess tahab teisele midagi saata, siis peab ta umbes
selliselt hõikama andmete vahetust korraldavale TCP/IP protokollide
kihtide komplektile:
- hei, siin on mu andmed: "Ma armastan sind"
- tahan need saata hostile ut.ee
- ning seal töötavale protsessile nr. 23 (see nö. protsessi
number pole päris see mida 'ps' näitab ja sellepärast nimetatakse
teda ka port'i numbriks)
Ja nüüd tuleb loota, et juhtmed on ühendatud õieti ja tarkvara on samuti õigesti konfigureeritud ning andmed jõavad siis kohale)
Kirjeldatud ettekujutusest lähtudes luuakse neljatasemeline konstruktsioon
selgitamaks infovahetust kahe arvuti vahel, mis kasutavad TCP/IP protokolle
(lugemist alustada tabeli alumisest reast):
Rakenduste kith (Application/process layer) | See kiht tagab kasutajale oluliste rakenduste
(e-mail, telnet-iga terminali tekitamine) funktsioneerimise; Protokollideks
on
Telnet,
|
Transoprdi kiht (Host to host layer) | See kiht tagab andmevahetuse kahe suhtleva hosti
(host_a ja host_b) vastavate protsesside vahel. Siia kihi kuuluvad nt.
TCP ja UDP protokollid. |
Interneti kiht (Internet layer) | See kiht tagab info vahetuse host_a ja host_b vahel. Muu hulgas
otsustatakse selles kihis millist teed mööda signaalid liiguvad
alguspunkti hostist (host_a) lõpp-punkti (host_b). Siia kihti kuulub
nt.
IP protokoll. |
Võrguinterfece'i kiht (Network interface layer) | Selle kihi protokollid peavad oskama korraldada (füüsikaliste
:) infoimpulsside (elektriliste, optiliste, magnetiliste, mehhaaniliste)
liikumist kahe omavahel suhtleva hosti (host_a ja host_b) ühendusteel
olevate kõigi infoülekande sõlmede vahel (nt. sillad
ehk mast'id). Võimalik, et kahe vaatlusaluse hosti vahele jääb
reaaselt pikk maa ning ühendus on realiseeritud erinevate tehniliste
vaheditega (opitiline kaabel, keerupaar etc. ning neile vastavad võrguaparaadid).
Ta on kõige madalam (st. elektriga, optikaga jms. tegelev) kiht. Räägitakse sellistest standarditest/protokollidest nagu: Ethernet, IEEE802.x, SLIP, PPP |
Illustreerime tabelis öeldut ühe skeemiga, kus on asi veidi
konkreetsem:
|
|
|
|
|
kiht |
RFC 959 |
RFC 821 |
RFC 854 |
RFC 1094 |
RFC 1157 |
TCP RFC 793 |
UDP RFC 768 |
|
ARP RFC 826 RARP RFC 903 |
IP RFC 791 |
Message Protocol ICMP RFC 792 |
|
|
|
|
Ning veel asjakohane skeem kahe läbi lüüsi omavahel suhtleva hosti kohta:
ning selgitus viimasele skeemile:
1. Kõige madalamal tasemel - võrguinterface'i kihis -
kasutatakse protokolle, mis vastavad konkreetsetele võrku realiseerivatele
aparaatidele (Ethernet, FDDI, ATM kaardid ja ühendusmeedium
etc.).
2. Kui host_a ja host_b asuvad erinevates alamvõrkudes, siis
info alamvõrkude vahel liigub läbi nn. lüüside. Läbi
nö. "õigete lüüside" liikumise tagab IP
protokoll. Nagu jooniselt näha IP protokoll korraldab info
liikumise host_a-st host_b-sse läbi kõikide vahepeal
olevate sõlmede (nt. lüüside) ning kokkuvõttes
tagab info alguspunktist (host_a) lõpp-punkti (host_b) jõudmise.
3. Info vahetamise host_a ja host_b vastavate protsesside vahel
tagab TCP või UDP protokoll.
Kuivõrd protsessid seostuvad kindlate hostidega, siis öeldakse,
et TCP on realiseeritud omavahel suhtlevatel hostidel (host_a ja host_b).
TCP ja UDP protokollid justkui ei näe vahepealseid lüüse;
IP protokoll nö. varjab nende töö ja rolli andmevahetuses
TCP eest ära. Rõhutame, et lüüsid eksisteerivad Internet
layer'i protokollide jaoks ja nad on nähtamatud teiste kihtide jaoks.
4. Protsessid mitte lihtsalt ei vaheta omavahel andmed (selle tagab
TCP) vaid teevad seda mingi kindla reeglistiku põhjal: nt. Telnet,
FTP.
Aadresseerimine
Et omavahel infot vahetada peab iga sõlm (host, lüüs, iga võrgukaart kui neid on ühes hostis mitu) omama unikaalset IP aadressi.
Kirjeldame veelkord:
1. Lokaalse arvutivõrgu puhul kõige madalam infovahetuse kiht (füüsilise võrguga tegelev) kasutab hostide poole pöördumiseks nn.
MAC aadresse (nt. MAC=00:00:C9:00:73:11). See on tavaliselt kaarti sisse 'keevitatud'.
2. Et IP tasemel andmeid vahetada kasutatakse host'i IP numbrit ehk Interneti aadressi. (a la 193.40.0.12)
3. Kui MAC ja IP on oma töö teinud ja andmed on jõudnud soovitud hosti, siis tuleb nad toimetada vastavat protokolli (TCP või UDP) kasutades neid ootava protsessi kätte - öeldakse õigesse porti
FTP - port 21,
Telnet - port 23
SMTP - port 25
www - port 80
nnews - port 119
Lõpetuseks
Niisiis, et host_a saaks edukalt hakata suhtlema host_b -ga peab:
1. (process/application layer)
host_a andmeid saatev protsess ära näitama
- host_b pordi numbri kuhu andmed suunduvad (so. host_b protsessi numbri
millele saadetis on määratud)
- näitama millise protokolliga nad teha segmentideks (kas TCP
või UDP)
- näitama ära host_b IP aadessi
ning edastama need andmed oma hosti TCP kihile (so. üldiselt transpordi kihile)
ii (transport layer)
transpordi kiht saab andmed ja pakendab need ära nn. TCP segmentideks
kusjuures nõutud protokolliga (TCP).
Lõpuks saadab ta need endast allapoole jäävale kihile:
Interneti layer.
- näidates ära sihtjaama IP aadessi
iii (internet layer)
interneti kiht saab andmed, teeb neist IP datagrammid ja otsustab milline
on kõige sobivam tee (st. milline võrgukaart omas masinas
valida ja millised on hostid mida kasutada host_b'ni jõudmiseks)
ning annab andmed üle kõige alumisele kihile: transpordi kihile.
iv (network interface layer)
transpordi kiht saab andmeid ja tal on täiesti ükskõik
milliste protsesside vahel need liiguvad või milliste IP numbritega
hostide vahel.
Tema kasutab elektrinignaalide andmiseks nn. MAC aadresse. Igal võrgukaardil
on see unikaalne: vähemalt samas subnetis peab see nii olema.
Ja tema ülesandeks on nüüdseks juba kaunis mitmekordselt
pakendatud andmed düüsiliselt ühest võrgu interfacest
teiseni mööda traati, raadiolaineid vms. toimetada.
siin on kujutatud skeem mis on PEAEGU minu jutuga kooskõlas; või õigemine millega on minu jutt PEAEGU kooskõlas :)
Ja teine pool:
v (network interface layer)
Kui andmed on IP ja Transpordi kihis toimunud pingutuste tulemuse jõudnud host_b võrgukaardini siis annab too need taas üle endast kõrgemale kihile so. Interneti kihile.
vi (internet layer)
Interneti kiht saab andmed, võtab IP datagrammid lahti TCP segmentideks ja toimetab nad omakorda transpordi kihile
vii (transport layer)
transpordi kiht pakib saadud segmendid lahti ja hoolitseb õige
järjekorra eest
(Internet layer'is võivad datagrammid liikuda nii, et nad saabuvad
host_b' sse kohale ebaõiges järjekorras. TCP kihi ülesanne
on enne protsessi kihile andmete edastamist panna nad õigesse järjekorda).
viii (process/application layer)
Protsessi kiht saab järjestatud andmed ja kasutab neid. Protsessi
kiht ei tea midagi sellest mis andmetega vahepeal on juhtunud ja millistest
hostidest on nad läbikäinud enne sihtpunkti jõudmist.
See oli üks kirjeldus. Teine võimalus on vaadelda toimuvat nii, et host_a ja host_b sama kihi protokollid võimaldavad host_a ja host_b vastavate kihtide omavahelist suhtlust otse. Kusjuures madalamad kihid teevad selle võimalikuks.
- Nii näiteks võib ütelda, et telneti klient suhteb
telneti serveriga ja protsessid vahetavad omavahel andmeid.
- host_a ja host_b transpordi kihid suhtlevad omavahel
- host_a ja host_b interneti kihid suhtleva omavahel
- host_a ja host_b võrguinterface'i kihid suhtleva omavahel
nn. IP kiht tegeleb nn. IP datagrammide adressaatimise, fragmenteerimise ja marsuutimisega. IP datagrammi on kokku pakitub andmed endid ja veel info transpordi kihi rolli ja andmete kohta.
Midagi sellist
| IP datagrammi
| UDP või TCP | ANDMED
------------------------------------------|
| päis
| päis
| ISE ---------------------------------------------|
| <--------UDP datagramm või TCP segment ---------------------------------->|
|<------------IP datagramm
------------------------------------------------------------------>|
Fragmenteerimine tähendab seda, et IP kihis toimuval on lubatud datagramme hostist hosti minnes ümber teha. Selle vajaduse põhjustab asjaolu, et nt. IP kihist allapoole jäävas nn. network layeris võivad
FDDI puhul olla kaadri suuruseks olla kuni 4 470 oktetti (st. baiti)
Ethernei puhul aga 1 500 oktetti.
Vaatame nüüd aga lähemalt milline info sisaldub IP datagrammi päises:
| 0
| 4 | 8
| 12 | 16
| 20 | 24
| 28 | bitid
| version
| IHL | type of service
|
TOTAL LENGTH
|
|
Identification |
| Flags | Fragment Offset
|
|
TTL |
Protocol |
header checksum
|
|
source address
|
|
destination address
|
|
OPTIONS
| Padding
|
|
ADNMED ISE (sh TCP päis) ------------------
|
| ------------------------------------------------------------------------------------
|
| ------------------------------------------------------------------------------------
|
| ------------------------------------------------------------------------------------
|
| ------------------------------------------------------------------------------------
|
Selgitus:
Nagu näha võtab IP datagrammi päis enda alla antud juhul 32/8 = 4 B korda 7 = 28 baiti (reeglina mitte alla 20 B)
Version - võtab 4 bitti on on tavaliset võrne arvuga 4. see vastab IPv4'le
IHL - 'internet header lenght' näitab kui pikk on
IP header 32 bitistes nn. sõnades (antud juhul 7)
seda kasutatakse ka selle koha kindlakstegemisel kust algavad nö.
'andmed ise' sh. TCP või UDP päis.
Type of Service -siin määratakse datagrammi prioriteet mis tuleb mängu koormatud võrkude puhul
Total length, - IP datagrammi kogupikkus (maksimaalselt saab olla 65 535 oktetti ehk B).
Identification, Flags ja Fragment Offset - need on andmed mida on vaja kasutada kui läheb IP datagrammide fragmenteerimiseks. Fragmenteerimise tulemusena tekib hulk uusi IP datagramme mis saadetakse ühest võrgukaardist teise ja teises monteeritakse IP kihis nad taas kokku. Mõnel juhul nende andmetega ei tule üldse tegelda, st. siis kui pole vaja fragmenteerida.
TTL - time to live, see parameeter tagab selles, et IP datagrammid ei jääks mööda võrku ringi hulkuma. Algul on sellel väljal mingi väärtus, nt. 20 ja peale iga hosti läbimist sihtpunkti suunas välja väärtust vähendatakse 1 võrra. Kui on nii, et datagramm on ekslenud juba kaua ja TTL välja väärtus on 0 siis datagramm hävitatakse (tema alla jääv mälu vabastatakse).
Protocol - See väli näitab arvu mis vastab omakorda transpordi kihi protokollile millega andmed kord kokku pandi:
1 - Internet Control Message
Protocol (ICMP)
2 - Internet Group Management
Protocol (IGMP)
4 - IP'e IP'ks inkapsulatsioon
6 - Transmission Control
Protocol (TCP)
17 - User Datagram Protocol
(UDP)
46 - Resource Reservation Protocol
(RSVP)
75 - Pacet Vidoe Protocol (PVP)
Lisame märkusena, et enamus asju pakitakse transpordi kihis kokku vastavalt TCP'le või UDP'le.
Header Checksum - IP datagrammi päise kontrollsumma.
Source Address - kaardi IP aadress kust datagramm lähtus, saadeti algselt välja
Destination Address - kaardi IP aadress kuhu datagramm peab lõpuks välja jõudma
(fragmenteerimisel need väärtused muutuvad ajutiselt)
Options - veel teatud optsioonid
Padding - placeholder, et saaks 32 bitti midagi täis :)
Aadresseerimine
See on nüüd selline keerulisem interneti IP aadressite moodustamise põhimõtete selgitus. Aga seda tõepärasem ta on.
Nagu üteldud on IP aadressile eraldatud 32 bitti mis on 4 x 4 baiti. minimaalne nelik on 0.0.0.0 ja maksimaalne 255.255.255.255
No on näha, et sinna vahele mahuvad kenasti ära kõik tuntud aadressid: 192.168.1.1 ja 193.40.0.12 jne.
Aga kõikvõimalikud interneti aadressid on jagatud veel
klassideks, nimelt niisuguse skeemi alusel:
|<-- 7 bitti --> |
< -------------------- 24 bitti -------------------------------------------->|
|0| võrk
|
host
| klass A
|<----14 bitti
--------------> | <--------------- 16 bitti ----------------------------------->|
|10|
võrk
|
host
| klass B
|<-----------------------
21 bitti ----------------------> | <-------- 8 bitti --------------->|
|110|
võrk
| host
| klass C
|<-----------------------
28 bitti ---------------------------------------------------------->|
|1110|
grupi aadress
| klass D
Enamus masinaid kuulub klassi A, B või C :)
Märgakem, et IP aadressis eristatakse kahte osa nn. võrgu ja hosti poolt.
Järeldused:
A -klassi kuuluvad masinad saavad asuda 2 ^ 7 = 128 kust tuleb 0 ja 128 maha arvata kuna need on reserveeritud muudeks eesmärkideks, seega 126 erinevas alamvõrgus. Igas võrgus omakorda saab olla 2 ^ 24 masinat.
numbritega:
1.1.1.1 kuni 126.254.254.254
bittides oleks see nii:
(0000 0001 . 0000 0001 . 0000 0001 . 0000 0001 kuni 0111
1110 . 1111 1110 . 1111 1110. 1111 1110)
B - klassi kuuluvad masinad saavad olla
alamvõrke on siin 2 ^ 14 = 16 382 -2 ja igasse võib kuuluda 65 534 masinat
numbritega:
129.1.1.1 kuni 191.254.254.254
bittides oleks see nii:
(1000 0001 . 0000 0001 . 0000 0001 . 0000 0001 kuni 1011
1110 . 1111 1110 . 1111 1110. 1111 1110)
C - klassi kuuluvad masinad saavad asuda 2 ^ 21 = 2 097 152 -2 alamvõrgus, igas 254 masinat.
192. 1.1.1 kuni 223.254.254.254
D - klassi on kummaline ja mulle on tema funktsioon arusaamatu aga aadressid saavad olla seal sellised:
224.1.1.1 kuni 239.254.254.254
lt on siin
hhh