Arvutid võrgus - 'neljakihiline tort'

teejuht
 
1.
Sissejuhatus
2.
Tehnilised vahendid arvutite ühendamiseks üksteisega ja võrgu topoloogia 
3.
Andmevahetus - TCP/IP protokollid
4.
IP datagramm
5.
   

1. Sissejuhatus

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, 
FTP - File Transfer Protocol, 
SMTP - Simple Mail Transfer Protocol.

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:
 
 
Filide kopeerimine
E-mail
terminal
võrgu failisüsteem
võrgu administreerimine
Rakenduste 
kiht
FTP 
RFC 959
SMTP 
RFC 821
Telnet 
RFC 854
NFS 
RFC 1094
SNMP 
RFC 1157
Transmission Control Protocol 
TCP 
RFC 793
User Datagram Protocol
UDP 
RFC 768
Transport kiht
Address Resolution
ARP RFC 826
RARP RFC 903
Internet Protocol
IP
RFC 791
Internet Control
Message Protocol
ICMP
RFC 792
Interneti kiht
Ethernet, Token Ring, FDDI, serial, ATM
Võrguinterface'i kiht
Keerupaar, koaksiaalkaabel, laine-optiline kaabel, raadiorelee liin, sateliitside liin

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
 
 

IP datagramm

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