Kompiuterių komunikavimo laboratoriniai darbai bus atliekami Kompiuterių katedros personalinių kompiuterių laboratorijoje. Bus dirbama su programine įranga, kuri atlieka tinklo paketų skanavimą ir analizavimą. Norint sėkmingai atlikti laboratorinį darbą studentai turi būti įsisavinę teorinę medžiagą pateiktą žemiau. Laboratorinių darbų metu studentai atliks įvairių protokolų paketų struktūros analizę ir galės pagilinti teorines žinias. Laboratorinis darbas bus atliekami pagal iš anksto sudarytą grafiką. Studentai privalo laikytis nurodyto grafiko, nes kompiuterių klasės apkrovimas yra didelis ir nebus galimybės pakartoti darbo. Neatlikus laboratorinio darbo bus mažinamas viso kurso įvertinimas. Grupių seniūnai prašome atsiųsti savo elektroninio pašto adresus į vstak@viesulas.ktu.lt. Tai palengvins tolesnį tarpusavio bendravimą. Šiuo adresu taip pat galite siųsti klausimus susijusius su laboratoriniais darbais. Laboratorinių darbų laiką praneš dėstytojas. Tada grupių seniūnai turės sudaryti laboratorinio darbo atlikimo grafiką ir atsiųsti juos nurodytu adresu. Grafike turi būti nurodyta kokiu laiku kiekvienas studentas ateis atlikti laboratorinio darbo.
1. OSI modelis
1.1 Įvadas į OSI modelį
Panagrinėkime tokį pavyzdį. Tarkime vienas žmogus, kitam žmogui siunčia elektroniniu paštu žinutę. Informacija esanti žinutėje paprastai būna tekstas, kurį supranta žmonės. Tuo tarpu tinklu perduodama informacija yra vienetų – nulių sekos. Taigi žinutė siunčiama elektroniniu paštu turi virsti iš teksto į vienetų – nulių sekas. Kompiuteris priėmęs žinutę iš vienetų – nulių sekos turi atstatyti pradinį tekstą. Taip žinutė turėjo pereiti du apdorojimo etapus – iš teksto į dvejetainę seką ir iš dvejetainės sekos į tekstą. Kadangi paprastai kompiuterių tinklai apima daugelį tarpinių mazgų, tai žinutė turėjo kažkokiu būdu surasti adresatą. Taip pat galima daryti prielaidą, kad kompiuteriai tarp kurių buvo persiųstas elektroninis paštas naudoja skirtingą programinę įrangą. Be abejo kompiuteriai taip pat gali būti ir skirtingų gamintojų. Todėl gamintojai tiekiantis tinklinius produktus – aparatinę ir programinę įrangą privalo laikytis tam tikrų taisyklių aprašančių informacijos perdavimo procesą, bei standartų aprašančių tikslias tinklinių produktų specifikacijas.1980 jų pradžioje tarptautinė standartizavimo organizacija (International Standartization Organization – ISO) pripažino vieningo tinklo modelio poreikį, kuris padėtų tinklo produkcijos gamintojams sukurti tarpusavyje suderinamus tinklinius produktus. ISO 1984 metais patvirtino OSI (Open System Interconnection – ryšys tarp atvirų sistemų) modelį. Šis modelis išsprendė problemas susijusias su tinklų suderinamumu. OSI modelis greitai tapo pagrindiniu architektūriniu modeliu tarpsisteminiams ryšiams aprašyti. Buvo sukurti ir kiti modeliai, bet dauguma tinklo produktų gamintojų susieja savo produkciją su OSI modeliu. OSI modelio paskirtis yra aprašyti informacijos perdavimo procesą funkciniame lygyje, t.y. nusakomos visos funkcijos, kurios vykdomos vykstant informacijos mainams tarp sistemų. Tai nėra kažkoks konkretus standartas, o tik modelis. Remiantis šiuo modeliu, yra aprašomi tinklinių produktų standartai, kurie konkrečiai aprašo produkto specifikacijas. Informacijos mainų tarp kompiuterių procesas OSI modelyje yra padalintas į septynis mažesnius ir todėl lengviau išsprendžiamus uždavinius (funkcijas). Kiekvienas iš septynių uždavinių atitinka OSI modelio tam tikrą lygį. Dauguma tinklo sistemų apima visus septynis modelio lygius, tačiau sistemos gali ir neturėti kai kurių lygių. Du žemutiniai OSI modelio lygiai pagrinde įgyvendinti aparatinėm priemonėm, 5 viršutiniai modelio lygiai pagrinde įgyvendinami programiškai. OSI modelis aprašo kaip vyksta informacijos mainai tarp taikomųjų programų esančių skirtingose sistemose apjungtose tinklu. Pirmame pavyzdyje pateikta OSI modelio struktūrinė schema. Šioje struktūrinėje schemoje nėra detalizuoti atskiri lygiai, bei paaiškintos lygių atliekamos funkcijos. Šioje schemoje atvaizduota kaip informacija iš vienos sistemos patenka į kitą, bei kaip sąveikauja skirtingi OSI lygiai tarpusavyje.
1 pav. OSI modelis.
Čia yra pavaizduotos dvi sistemos A ir B (pavyzdžiui personaliniai kompiuteriai) apjungtos tinklu. Tarp sistemos A ir B informacijos mainai vyksta per jas jungiantį tinklą, tačiau informacijai prieš patenkant į tinklą ji yra apdorojama kiekvienoje iš šių sistemų. Informacijos apdorojimas atliekamas tam tikra aparatine ir programine įranga. Tarkime sistema A turi susisiekti su sistema B. Taikomoji programa sistemoje A bendrauja su sistemos A 7 lygiu. Sistemos A 7 lygis bendrauja su tos pačios sistemos 6 lygiu ir t.t. Sistemos A 2 lygis bendrauja su tos pačios sistemos 1 lygiu. Taip informacija palaipsniui pereidama visus lygius iš taikomosios programos patenka į sistemos A pirmą lygį. Tada informacija siunčiama per tinklą ir patenką į sistemos B pirmą lygį. Po to informacija keliauja sistemos B lygiais aukštyn ir pasiekia sistemos B taikomąją programą. Informacijai pereinant nuo aukštesnio lygio į žemesnį, ji tampa vis mažiau panaši į žmonėms panašią kalbą ir pereina į informacijos seką suprantamą kompiuteriui. Ką tik aprašytas informacijos keliavimo procesas apibūdina vertikalius informacijos srautus. Kiekvienas sistemos A lygis susietas su kaimyniniais tos pačios sistemos lygiais.Pagrindinis A sistemos 1 lygio tikslas bendrauti su B sistemos 1 lygiu, nes abejuose sistemose šie lygiai atlieka tas pačias funkcijas. Tą patį galima pasakyti ir apie kitus lygius: kiekvienas lygis gali apdoroti ir suprasti tik būtent tam lygiui skirtą informaciją. Pavyzdžiui žmogus turi suprasti tik tekstą gautą elektroniniu paštu, bet žmogus nesupranta ir jam nebūtina suprasti dvejetainės sekos pasiųstos ryšio linija. Taigi tarp dviejų sistemų egzistuoja ne tik vertikalūs ryšiai, bet ir horizontalūs ryšiai tarp atitinkamų lygių.
1.2 Duomenų srautai
Kaip sistemos B ketvirtas lygis žino ko nori sistemos A ketvirtas lygis, t.y. kaip atitinkami lygiai gali bendrauti tarpusavyje? Kiekvienas lygis turi papildyti siunčiamus duomenis tam tikra valdymo informacija, kuri suprantama kitos sistemos atitinkamam lygiui. Tarkime, kad sistema A nori perduoti informaciją sistemai B. Tada informacija perduodama iš taikomosios programos sistemos A viršutiniam lygiui. Sistemos A septintas lygis turi bendrauti su sistemos B tuo pačiu lygiu. Sistemos A septintas lygis papildo perduodama informacija tam tikra valdymo informacija. Ši informacija perduodama sistemos A šeštam lygiui, kuris savo ruožtu prideda savo valdymo informaciją. Taip informacija keliauja iki sistemos A pirmo lygio, kuriuo perduodama bitų seką į sistemą B. Sistemos B pirmas lygis pašalina sistemos A pirmo lygio valdymo informaciją. B sistema analizuoja šią valdymo informaciją ir žino kaip apdoroti gautus duomenis. Kai informacija pasiekia taikomąją programą, informacija turi savo pradinį formatą. Antras OSI lygis kaip matome dar be valdomos informacijos turi kontrolės lauką, kuris užtikrina patikimą duomenų perdavimą per fizines ryšio linijas.
2 pav. Duomenų srautas per OSI modelio lygius.
Čia: Data – duomenys; VI – valdymo informacija; K – kontrolės laukas.
1.3 OSI modelio lygiai
Kaip jau buvo minėta aukščiau, OSI modelis sudarytas iš septynių lygių:
Taikymo lygis (Application layer) – atitinka 7 OSI lygį;Atvaizdavimo lygis (Presentation layer) – atitinka 6 OSI lygį;Sesijos lygis (Session layer) – atitinka 5 OSI lygį;Transporto lygis (Transport layer) – atitinka 4 OSI lygį;Tinklo lygis (Network layer) – atitinka 3 OSI lygį;Ryšio lygis (Link layer) – atitinka 2 OSI lygį;Fizinis lygis (Physical layer) – atitinka 1 OSI lygį.
3 pav. OSI modelio lygiai.
Toliau bus nagrinėjamos kiekvieno lygio atliekamos funkcijos.
1.3.1 Taikymo lygis (Application layer)
Tai OSI lygis esantis arčiausiai vartotojo. Jis nuo kitų lygių skiriasi tuo, kad nėra servisas jokiam kitam OSI lygiui. Šis lygis apibrėžia taikomąsias programos, kurioms reikia siųsti informaciją tinklu, t.y. normaliam darbui reikalingi tinklo resursai. Jei taikomajai programai nereikalingas duomenų siuntimas, tai tinklo resursai jai nereikalingi ir ji nepriklauso šiam lygiui. Skiriamos tokios taikomųjų programų rūšys: tinklo taikomosios programos (network applications) ir tarptinklinės taikomosios programos (internetwork applications) taikymai. Tinklo taikomųjų programų pavyzdžiai:
Elektroninis paštas;Failų siuntimas;Kliento/serverio procesai;Tinklo valdymas ir t.t.
Tarptinklinių taikomųjų programų pavyzdžiai:
Elektroninis duomenų apsikeitimas (Electronic Data Exchange) – specializuoti standartai ir procesai pagreitinantys apskaitą, perdavimą, inventorizaciją tarp firmų;WWW – hipertekstinė informacija turinti įvairius atvaizdavimo formatus: tekstas, grafika, vaizdas, garsas, konferencijos – vaizdo, garso ir pan.;Konferencijos – vaizdo, garso ir t.t.
1.3.2 Atvaizdavimo lygis (Presentation layer)
Užtikrina, kad informacija pasiųsta vienos sistemos taikymo lygio, būtų priimta kitos sistemos taikymo lygio. Atvaizdavimo lygyje atliekamas informacijos formato keitimas ir vertimas. Informacijos formato keitimas užtikrina, kad taikomoji programa gaus naudingą ir prasmingą informaciją, kurią galės apdoroti. Jei reikia, šiame lygyje atliekamas vertimas iš skirtingų duomenų formatų (pavyzdžiui tekstinė informacija verčiama iš ASCII formato į EBCDIC formatą). Atvaizdavimo lygyje, gali būti atliekamas duomenų šifravimas taip apsaugant informaciją nuo neautorizuoto gavėjo. Informacija gali būti spaudžiama, verčiama į grafinius, vaizdo, garso formatus. Šiame lygyje atliekami ne tik vartotojo duomenų formato pakeitimai, bet ir duomenų struktūrų, kurias naudoja taikomosios programos, pakeitimai.
1.3.3 Sesijos lygis (Session layer)
Sesijos lygyje užmezgamos, valdomos ir nutraukiamos sesijos tarp taikomųjų programų. Šis lygis sinchronizuoja dialogą tarp atvaizdavimo lygių ir valdo jų duomenų mainus. Papildomai, be sesijų valdymo (užmezgimo, nutraukimo) turi išskirtinę teisę pranešti apie penkto, šešto ir septinto lygio problemas.Sesijos lygio protokolų pavyzdžiai:NFS (Network File System) – tinklo failų sistema, t.y. paskirstyta. Vartotojai turi skaidrų priėjimą per TCP/IP protokolą prie UNIX operacinės sistemos failų sistemų.X-Window sistema – intelektualūs terminalai darbui su UNIX operacine sistema.RPC (Remote Procedure Call) – nutolusių procedūrų iškvietimas.
Prieš užmezgant sesiją, abu komunikuojantys taškai turi suderinti ryšio parametrus, kaip greitis, klaidų kontrolė ir pan. Bet kuris iš galinių taškų gali pareikalauti pakeisti šiuos parametrus. Taip pat atlieka vartotojų identifikavimą.
1.3.4 Transporto lygis (Transport layer)
Riba tarp sesijos ir transporto lygių gali būti traktuojama kaip riba tarp taikymo lygio protokolų ir žemutinio lygio protokolų. Viršutiniai trys lygiai yra susiję su taikomosiomis programomis, tuo tarpu žemutiniai lygiai susiję su duomenų perdavimu. Transporto lygis užtikrina patikimą duomenų siuntimą. Šiame lygyje atliekamas aukštesnių lygių taikomųjų programų segmentavimas ir išskyrimas į vieną bendrą transporto lygio duomenų srautą. Taip pat sukuriamas loginis ryšys tarp dviejų siuntimo taškų.
1.3.5 Tinklo lygis (Network layer)
Atlieka kelio parinkimą tarp dviejų sistemų, kurios gali būti geografiškai skirtinguose potinkliuose. Šiuo atveju potinklis (Subnet) faktiškai yra vienas tinklo kabelis. Kadangi dvi sistemas gali skirti didelis atstumas ir daug potinklių, tai šis lygis atlieka maršrutizavimo uždavinį, t.y. parenka optimalų kelią tarp dviejų sistemų remiantis tam tikrais kriterijais. Suformavus kelią informacija perduodama per šį kelią. Plačiau apie maršrutizavimą bus kalbama kituose skyriuose.
1.3.6 Ryšio lygis (Link layer)
Ryšio lygis dar vadinamas duomenų ryšio lygiu (Data Link Layer), užtikrina duomenų transportą per fizinį ryšį. Ryšio lygis susietas su fiziniu adresavimu, tinklo topologija, klaidų notifikacija (pranešimus apie klaidas), paketų sutvarkymu ir duomenų srauto kontrole. Čia duomenis suskirstomi į freimus (Frame), aptinkamos ir ištaisomos perdavimo klaidos, nustatomi fiziniai adresai. Skirtingai nei kituose lygiuose duomenų freimas turi ne tik antraštę, bet ir freimo pabaigoje, kontrolinę sumą arba jos porūšį – CRC (Cyclic Redundancy Check – CRC), kuri suranda ir ištaiso informacijos perdavimo klaidas. Kontrolinė suma gali nustatyti duomenų iškraipymą arba praradimą.
1.3.7 Fizinis lygis (Physical layer)
Fizinis lygis specifikuoja elektrines, mechanines, procedūrines ir funkcines fizinio ryšio tarp sistemų charakteristikas. Pvz: įtampos lygiai, laikinės ch-os, maksimalus duomenų perdavimo ilgis, fizinės jungtys ir pan. Fizinis lygis ryšio kanalu perduoda dvejetainę informacijos seką tam tikru būdu. Ryšio kanalas – tai fizinės linijos ir aparatinės priemonės užtikrinančios informacijos perdavimą nuo vieno ryšio mazgo iki kito. Fizinė linija – tai erdvė arba medžiaga užtikrinanti signalo sklidimą. Pagrindinės ryšio kanalo charakteristikos, tai pralaidumas ir duomenų perdavimo patikimumas. Tinklo pralaidumas matuojamas ribiniu informacijos kiekiu (paprastai bitais), perduodamu kanalu per laiko vienetą. Duomenų perdavimo patikimumas – bito iškraipymo tikimybė perdavimo metu. Pagrindinė iškraipymo priežastis – įvairūs trikdžiai į ryšio liniją bei vidiniai duomenų perdavimo aparatūros triukšmai. Ryšio linijos dažnumų juosta F=fv-fa, nusako diapazoną tų dažnumų, kurie pradedant apatiniu fa ir baigiant viršutiniu fv, efektyviai perduodami ryšio linijoje. Informacijos perdavimui gali būti naudojamos:
Telefoninės linijos – neseniai buvo ribinis greitis 28.8 Kbitų/s dabar apie 56 Kbitai/s (esant tam tikrom sąlygom);Koaksialiniai kabeliai – apie 10 Mbitų/s;Suktos poros kabeliai – iki 100 Mbitų/s;Šviesolaidžiai – šviesai laidžios plastmasės ir stiklo gijos – Gbitų/s;
Infraraudoni spinduliai;Mikrobangų ryšio sistema.1.4 Svarbūs terminai naudojami toliau tekste
Kompiuterio adresas tinkle yra labai svarbi tinklo komponentė. Yra daug adresavimo schemų ir adresavimo būdas priklauso nuo protokolo šeimos, t.y. pavyzdžiui TCP/IP protokolo adresavimo schema skiriasi nuo IPX/SPX protokolo adresavimo schemos, kuri savo ruožtu skiriasi nuo OSI adresavimo ir t.t. Du svarbūs adresų tipai yra ryšio lygio adresas ir tinklo lygio adresas. Ryšio lygio adresai dar vadinami fiziniais (Physical) arba aparatiniais (Hardware) adresais. Jie yra unikalūs kiekvienam tinklo įrenginiui. Faktiškai daugumai lokalių tinklų, ryšio lygio adresai talpinami interfeiso (tinklo plokštėje) schemoje ir priskirti organizacijos, kuri aprašo protokolo standartą, kuriuo naudojasi interfeisas. Kadangi dauguma personalinių kompiuterių turi vieną fizinį interfeisą, jie turi tik vieną ryšio lygio adresą. Ryšio lygio adresai naudojami antrame OSI modelio lygyje (ryšio lygyje). Tinklo lygio adresai dar vadinami virtualiais (Virtual) arba loginiais (Logical) adresais ir naudojami trečiame OSI modelio lygyje. Jų forma priklauso nuo protokolo šeimos.
Tinklų literatūroje nėra bendros terminologijos apibūdinti informacijos vienetus perduodamus tarp kompiuterinių sistemų. Terminai Frame, Packet, Protocol Data Unit, Segment, Message, ir t.t. yra plačiai paplitę ir jų naudojimas nuo protokolo specifikacijų kūrėjo.
Frame – informacijos vienetas, kurio šaltinis ir paskirties vieta aprašoma ryšio lygio adresu.Packet – informacijos vienetas, kurio šaltinis ir paskirties vieta aprašoma tinklo lygio adresu.Message – informacijos vienetas, kurio šaltinis ir paskirties vieta aprašoma aukštesniame nei tinklo lygyjePDU – Protocol Data Unit. Protokolo duomenų vienetas (matas), apsikeičiami tarp įrenginių, viduje specifinio OSI lygio.Datagram – Loginis informacijos grupavimas, persiunčiamos kaip tinklo lygio vienetas, persiunčiamas tinklu be ryšio užmezgimo.Protokolas – formalus aprašymas taisyklių, kurios nustato kaip įrenginiai tinkle keičiasi informacija.Interfeisas – ryšys tarp dviejų sistemų arba įrenginių. Taip pat riba tarp kaimyninių OSI modelio lygių.2. LAN protokolai
2.1 Ethernet/ IEEE 802.3 protokolai
Ethernet protokolas buvo sukurtas Xerox korporacijos Palo Alto tyrimų centre 7 dešimtmetyje. Ethernet buvo technologinės bazės pagrindas IEEE 802.3 specifikacijai, kuri buvo išleista 1980m. Šią specifikaciją patvirtino IEEE institutas – (Institute of Electrical and Electronics Engineers) (įkurtas 1963m. JAV). Netrukus po IEEE 802.3 specifikacijos išleidimo Dec, Intel ir Xerox bendromis pastangomis sukūrė ir išleido naują Ethernet specifikaciją šiandien vadinamą Ethernet II versija, kuri yra suderinama su IEEE 802.3. Ethernet ir IEEE 802.3 kartu apima didžiausią lokalių tinklų rinkos dalį. Šiandien terminas Ethernet naudojamas apibūdinti visus CSMA/CD tipo tinklus. CSMA/CD – Carier Sense Multiple Access/Colission Detection (Nešančiajai jautrus su kreipiniais vienu metu/Kolizijos aptikimas).
2.1.1 Kolizijos aptikimas ir atsistatymas
Ethernet ir IEEE 802.3 specifikuoja panašias technologijas, t.y. jie labai panašūs. Kaip jau minėta abu jie yra CSMA/CD lokalūs tinklai. Kompiuteriai esantys tokiame tinkle gali kreiptis į LAN bet kuriuo metu. Prieš pasiunčiant duomenis kompiuteris “klausosi” tinklo stengdamasi nustatyti ar nėra tuo metu tinkle perduodama informacija, t.y. nustato ar tinklas yra laisvas. Jei tinklas laisvas, kompiuteris siunčia duomenis, jei tinklas užimtas, kompiuteris laukia ir po kurio laiko vėl tikrina tinklą. Dabar aptarsime kada gali įvykti kolizija. Tarkime du kompiuteriai klausosi tinkle. Abu nustato, kad tinklas yra neužimtas ir vienu metu išsiunčia informaciją. Šiuo atveju abiejų kompiuterių pasiųsta informacija prarandama, t.y. įvyko kolizija ir sistemos turi pakartoti siuntimą po tam tikro laiko tarpo. CSMA/CD tipo lokalūs tinklai gali nustatyti įvykusias kolizijas ir todėl žino, kad reikia pakartoti siuntimą. Laiko tarpą po kurio bus pakartotas siuntimas paprastai apsprendžia specialus algoritmas vadinamas Backoff. Backoff algoritmas paprastai generuoja atsitiktinius laiko tarpus.
2.1.2 Adresavimas
Kiekvienas kompiuteris Ethernet tinkle (arba tiksliau kiekviena tinklo plokštė) turi savo adresą. Jei kompiuteryje keičiama tinklo plokštė, tai keičiasi ir kompiuterio Ethernet adresas.Jei kuris nors kompiuteris pasiunčia freimą tinklu, tai visi kompiuteriai Ethernet tinkle turi analizuoti freimo adreso dalį ir pasitikrinti ar freimas yra skirtas jam. Jei freimas nėra jam skirtas, kompiuteris freimą ignoruoja. Jei kompiuteris nustato, kad freimas skirtas jam, tai jis freimą perduoda aukštesnio lygio protokolam tolimesniam apdorojimui. Ethernet adresas yra 48 bitų ilgio. Paprastai šis adresas yra kietai įsiūtas į tinklo plokštę. Todėl šis adresas vadinamas aparatiniu arba fiziniu adresu (arba dar kitaip MAC adresu – apie MAC terminą skaitykite 2.1.3 skyrelyje). Ethernet adresas gali būti trijų tipų:
Vienos tinklo plokštės adresas (kompiuteris gali turėti ne vieną tinklo plokštę);Broadcast adresas. Šiuo adresu galima pasiųsti freimą visiems kompiuteriams esantiems tinkle. Broadcast adrese visi adreso lauko 48 bitai lygūs vienetams. Dar naudojamas terminas Broadcast freimas- tai freimas pasiųstas visiems tame segmente tinklo esantiems kompiuteriams.;Multicast – adresas identifikuojantis grupę kompiuterių vienu adresu.
Abu Ethernet ir IEEE 802.3 protokolai yra Broadcast tipo.
2.1.3 Specifikacijos
IEEE organizacija aprašo OSI modelio ryšio lygį kaip lygį sudarytą iš dviejų polygių – MAC ir LLC:
MAC – Media Access Control – kanalo užėmimo valdymas. MAC yra žemesnis OSI modelio ryšio lygio polygis (Sublayer). Atsakingas už klaidų kontrolę.LLC – Logical Link Control – loginio ryšio valdymas. Atlieka srauto kontrolę, suskirstymą į freimus.
IEEE MAC ir LLC specifikacija yra standartas vadinamas IEEE 802.2 standartu. Ethernet ir IEEE 802.3 protokolai yra įgyvendinti aparatinėmis priemonėmis. Ethernet pagal OSI modelį atitinka fizinį ir ryšio lygius, IEEE 802.3 atitinka OSI modelio fizinį lygį ir ryšio lygio MAC polygį. IEEE 802.3 protokolas specifikuoja keletą skirtingų fizinių lygių, tuo tarpu Ethernet specifikuoja tik vieną fizinį lygį. Kiekvienas IEEE 802.3 fizinio lygio protokolas turi vardą, kuris trumpai jį charakterizuoja. IEEE 802.3 kodavimo komponentus:
Pirmas skaičius parodo greitį Mbitai/s; Po to einantis žodis rodo signalo perdavimo metodą; Paskutinis skaičius rodo maksimalų segmento ilgį metrais * 100;
Pvz: 10Base5Greitis: 10 Mbitų/s;Signalo perdavimo metodas: Baseband;
Segmento ilgis 500 metrų.Lentelėje 1. pateiktos IEEE802.3 fizinių lygių specifikacijos ir Ethernet fizinio lygio specifikacija.
1. Lentelė
Ethernet IEEE802.3 10Base5 10Base2 1Base5 10BaseT 10Broad36 Greitis (Mbitai/s) 10 10 10 1 10 10 Signalo perdavimo metodas Baseband Baseband Baseband Baseband Baseband Broadband Max segmento ilgis (m) 500 500 185 250 100 1800 Min. kabelio ilgis (m) 2.5 0.5 2.5 Max tinklo ilgis (m) 2500 925 – Max kom-piuterių skaičius 100 (segmente) 30 (segmente) 1024 (tinkle) 1024 (tinkle) Kabelis 50W koaksia-linis storas 50W koaksia-linis storas 50W koaksia-linis plonas Neekra-nuota sukta pora (UTP) Neekra-nuota sukta pora (UTP) 75W koaksia-linis Topologija Magistralė Magistralė Magistralė Žvaigždė Žvaigždė Magistralė
Kaip matome iš lentelės Ethernet labiausiai panašus į 10Base5, abiejų topologija yra magistralės tipo.
Siaurajuostis (Baseband) signalo perdavimo būdas, kai skaitmeniniai signalai perduodami ryšio kanalu be moduliacijos. Dar vadinamas Time-division Multiplexing. Kanale be moduliacijos gali vienu metu būti perduodamas tik vienas signalas. Tokiam perdavimo būdui galima naudotis koaksialiniu kabeliu ir suktos poros kabeliu. Signalas perduotas kabeliu sklinda į abi puses. Signalas sklisdamas kabeliu pastoviai slopsta ir gali būti iškraipomas. Todėl yra tinklų ilgio apribojimai. Šių apribojimų galima iš dalies išvengti naudojant kartotuvus, tiltus, koncentratorius. Šie įrenginiai aprašyti 2.4 skyrelyje.
Plačiajuostis (Broadband) signalo perdavimo būdas naudojant koaksialinius kabelius. Dar vadinamas Frequency-division Multiplexing. Signalų perdavimui naudojama moduliuota nešančioji. Signalas kanalu sklinda viena kryptimi, todėl norint signalą perduoti dviem kryptim reikia turėti arba du kabelius arba išskirti du kanalus. Ryšio kanalo dažnių juosta (apie 300 MHZ) padalinama į keletą kanalų. Kiekvienu kanalu galima perduoti vieną virtualų Ethernet signalą. Kanalo dažnio juostos plotis gali būti nuo kelių kilohercų iki kelių megahercų. Tinklo ilgio praplėtimui naudojami ne kartotuvai, bet signalo stiprintuvai. Technologija brangesnė už Baseband.
Segmentas (Segment)- tai darbo stotys (kompiuteriai terminalai, spausdintuvai) viena kabeline įranga sujungtos į vieną intervalą. Segmentas turi apribotą ilgį ir jungiamų darbo stočių kiekį. Kelis segmentus galima sujungti į tinklo segmentą (Network segment), statant tarp jų kartotuvus, koncentratorius ir panašiai. Šie įrenginiai plačiau nagrinėjami 2.4 skyrelyje.
Suktos poros neekranuoti (Unshielded Twisted Pair – UTP) kabeliai skirstomi į kategorijas:
Pirma kategorija – tai tradicinis telefoninis kabelis, kuriuo galima perduoti tik garsą bet ne duomenis;Kabelis galintis perduoti duomenis iki 4 Mbitų/s greičiu. Sudarytas iš keturių suktų porų;Kabelis, kuriuo galima perduoti duomenis iki 10 Mbitų/s greičiu. Sudarytas iš keturių suktų porų. Viename kabelio metre yra devyni apsisukimai tarp suktos poros kabelių;Kabelis galintis perduoti duomenis iki 16 Mbitų/s greičiu. Sudarytas iš keturių suktų porų;Kabelis galintis perduoti duomenis iki 100 Mbitų/s greičiu. Sudarytas iš keturių suktų porų varinio kabelio;
10BaseT technologijoje gali naudoti ir ekranuotos suktos poros kabelį (Shielded Twisted Pair – STP) IEEE specifikacijos tinkluose su sukta pora naudojami 3,4,5 kategorijos kabeliai.
2.1.4 Didelio greičio Ethernet
Didelio greičio Ethernet specifikuoja 100 Mbitų/s greitį. Vienas iš standartų yra 100BaseX. Tai egzistuojančio Ethernet standarto išplėtimas. Topologija panaši į 10BaseT topologiją. Specifikuojamos trys kabelių rūšis:100BaseT4 (UTP kabelis 5 kategorijos su keturiom suktom porom);100BaseTX (UTP arba STP kabelis 5 kategorijos su dviem suktom porom);100BaseFX (Šviesolaidis);
2.1.5 Fiziniai pajungimai
2.1.5.1 10Base2 fizinis pajungimas
Kaip matome pirmoje lentelėje 10Base2 specifikuoja ploną koaksialinį kabelį. Ši specifikacija apima tokias kabelio sujungimo komponentus:
BNC (British Naval Connector) barelio jungtis (barell connector);BNC T jungtis(T Connector);BNC terminatorius (Terminator).
Barell jungties pagalba galima sujungti kabelį. Pavyzdžiui, jei turime du kabelius po 10 metrų juos galima apjungti ir taip gauti bendrą kabelio ilgį (segmento) 20 metrų. Segmento galuose turi būti naudojami terminatoriai, kurie “sugeria” atsklidusi signalą ir neleidžia signalui grįžti atgal į kabelį. Jei segmento galuose nėra terminatorių, tai tokiame tinkle pastoviai vyks kolizijos. Prie kompiuterio plokštės kabelis jungiamas per T jungtį. Bendras segmentų skaičius negali viršyti penkių, o kompiuteriai gali būti pajungiami tik trijuose iš segmentų. Šis pajungimas dar vadinamas 5-4-3 taisykle (5 – segmentai, 4 – kartotuvai, 3 segmentai kuriuose gali būti pajungti kompiuteriai).
2.1.5.2 10Base5 fizinis pajungimas
Šioje specifikacijoje naudojamas storas koaksialinis kabelis. Taip pat galioja 5-4-3 taisyklė. Ši specifikacija apima tokias kabelio sujungimo komponentus:
Transiveris (Transceiver) – imtuvas/siųstuvas. Jis naudojamas sujungimui tarp kompiuterio ir kabelio. Dar vadinamas MAU (Medium Attachmen Unit).Transiverio kabelis. Šiuo kabeliu sujungiamas transiveris su kompiuterio tinklo plokšte.DIX (Digital Intel Xerox – firmos išdirbusios šią jungtį) jungtis arba AUI (Attachment Unit Interface) jungtis. Tai jungtis esanti ant transiverio kabelio. DIX jungtis dar vadinama DB-15 jungtimi.N serijos jungtys (tame tarpe ir Barell) ir N serijos terminatoriai.
2.1.5.3 10BaseT fiziniai pajungimai
10BaseT technologijoje naudojamas suktos poros kabelis. Šis kabelis paprastai jungiamas tiesiai prie kompiuterio plokštės per vadinamą TP jungtį. Kabelio jungtis vadinama RJ-45 jungtimi. Kompiuteriai sujungiami į magistralę per specialų įrenginį – Hub.
2.1.6 Ethernet freimo formatas
4 pav. Ethernet freimas.
Freimo formatas pateiktas pavyzdyje. Ethernet freimas prasideda preambule, kuri yra 7 baitų ilgio. Preambulė yra fiksuota vienetų nulių seka, kuri skirta imtuvui, kad jis galėtų atpažinti freimo pradžią. Po to seka SOF (Start-of-frame delimiter) laukas – freimo starto pradžia. Po to seka paskirties vietos fizinis adresas, bei šaltinio fizinis adresas. Abu adresai yra 6 baitų ilgio kiekvienas. Po adresų seka dviejų baitų tipo laukas, kuris nurodo kokio tipo aukštesnio lygio protokolui yra skirtas šis freimas. Šio lauko pagalba identifikuojami aukštesnių lygių protokolai, t.y. Ethernet tinklu gali būti perduodami įvairių protokolų duomenys. Po tipo lauko seka duomenys. Freimas baigiasi FCS (Frame Check Sequence) lauku, kuris yra ne kas kita kaip CRC reikšmė. IEEE 802.3 freimo struktūra panaši į Ethernet freimo struktūrą, čia jo struktūra nenagrinėjama.
2.2 LAN įrenginiai
2.2.1 Tiltai
Tiltai (Bridge) pasirodė 1980 – aisiais. Tuo metu jie atliko homogeninių tinklų sujungimo ir paketų perdavimo tarp jų funkcijas. Neseniai buvo standartizuota nauja funkcija – skirtingų tinklų sujungimas. Tiltai skirstomi į tokias rūšis:
Skaidrūs tiltai (Transparent). Naudojami Ethernet segmentų apjungimui;Transliavimo tiltai (Transliation). Skirtingų LAN technologijų apjungimui. Paprastai naudojami Ethernet ir Token Ring tinklų sujungimui;
Žiedo tiltai (Source-Route). Naudojami Token Ring tinklų apjungimui;Tiltai atlieka funkcijas aprašytas OSI modelio antrame lygyje. Tiltai valdo duomenų srautus atlieka fizinio adresavimo funkcijas ir t.t. Tiltai yra palyginus paprasti įrenginiai. Tiltai turi du portus. Tiltai analizuoja į portus ateinančius freimus ir nusprendžia į kurį portą reikia tuos freimus reikia pasiųsti. Tai atliekama remiantis freime esančiu fiziniu freimo paskirties adresu. Token Ring tinkle yra žinomas visas kelias iki paskirties vietos, tuo tarpu Ethernet atveju nežinomas. Tiltai neanalizuoja aukštesnių lygių informacijos esančios freime, todėl jie gali persiųsti, bet kokio aukštesnio lygio protokolo duomenis. Tiltai gali atlikti freimų filtraciją remiantis freimo laukais. Pvz. gali nufiltruoti konkretaus šaltinio perduodamus freimus remiantis šaltinio fiziniu adresu, kuris yra freime. Kadangi tiltais tinklas yra padalinamas į mažesnius segmentus, tai tiltų panaudojimas suteikia tokius privalumus:
Sumažina srautus tarp segmentų;Išplečia lokalaus tinklo ilgį, nes padalina tinklą į segmentus;Bendras tinklo stočių skaičius padidėja, taipogi dėl tinklo sudalinimo į segmentus;Atskiri segmentai nereaguoja į kitų segmentų trikius. Pavyzdžiui Ethernet tinke, įvykus kabelio ar jungties gedimui, sutrinka viso tinko darbas. Naudojant tiltus, įvykus analogiškam gedimui viename segmente, kitas segmentas toliau gali dirbti.
2.2.1.1 Srautų sumažinimas tarp segmentų
Kaip jau minėta tiltai atlikdami freimų paskirstymą tarp segmentų naudoja paskirties vietos fizinį adresą, kuris yra visuose ateinančiuose freimuose. Tiltas persiųsdamas freimus tarp segmentų atlieka tokius veiksmus:
Tiltas formuoja lentelę. Lentelė sudaryta iš tokių porų: šaltinio fizinis adresas/tilto portas. Ši lentelė sukuriama tilto darbo eigoje. Tik įjungus tiltą į tinklą jo vidinė lentelė yra tuščia. Tiltas analizuoja kiekvieną į bet kurį portą ateinantį freimą. Tiltas išanalizuoja freime esantį šaltinio adresą, taip pat tiltas žino iš kurio porto yra atėjęs freimas. Taigi tiltas patalpina šią informaciją į lentelę. Jei tilto lentelė persipildo, tai iš lentelės pašalinami seniausi įrašai. Tilto lentelėje įrašas saugomas tik tam tikrą laiką, po kurio jis yra pašalinamas.Tiltas nuskaito ateinančių freimų paskirties adresą. Pagal šį adresą tiltas turi nuspręsti ar reikia freimą persiųsti į kitą segmentą. Sprendimas priimamas atsižvelgiant į tilto lentelėje saugomus įrašus. Jei paskirties vietos adresas yra lentelėje, tai freimas perduodamas į portą atitinkantį paskirties vietos adresą. Jei paskirties vieta yra tame pačiame segmente (porte) iš kurio atėjo freimas, tai freimas niekur neperduodamas, jei freimo paskirties vieta yra kitame porte, tai freimas perduodamas į tą portą. Jei lentelėje nėra atitinkamo įrašo, tai freimas perduodamas į kitą portą, nes tiltas nežino kuriame segmente yra paskirties vietą. Be to lentelė papildoma nauju įrašu.Esant dideliam tinklo apkrovimui (tiltas nespėja laiku perduoti freimų), tiltas naudoja specialius buferius į kuriuos talpina ateinančius freimus.Jei į tiltą ateina broadcast freimas, tai tiltas turi perduoti freimą į kitą portą, nes broadcast freimas skirtas visiems tinklo įrenginiams.
Išskiriami du srautų tipai:
Lokalus srautas. Tai srautas esantis viename segmente. Pavyzdžiui duomenys perduodami tarp dviejų kompiuterių esančių tame pačiame segmente yra lokalus srautas;Nelokalus srautas. Tai srautas esantis tarp segmentų. Pavyzdžiui duomenys perduodami tarp dviejų kompiuterių esančių skirtinguose segmentuose yra nelokalus srautas;
2.2.1.2 Skaidrūs tiltai
Skaidrūs tiltai sukurti DEC firmos. Po to IEEE organizacija sukūrė tiltų IEEE802.1d standartą. Kaip jau minėta skaidrūs tiltai sujungia Ethernet segmentus.
2.2.1.3 Transliavimo tiltai
Freimų persiuntimas tarp vienarūšių tinklų nereikalauja freimo perdirbimo (transliavimo). Jei yra sujungti du nevienarūšiai tinklai, tai persiunčiant tarp jų freimus reikia atlikti freimo transliavimą. Du nevienarūšiai tinklai apjungiami transliavimo tiltais.
2.2.2 Kartotuvai
Kartotuvai (Repeater) skirti padidinti Ethernet tinklo ilgį. Skirtingai nei tiltai kartotuvai neanalizuoja freimų, bei nepaskirsto jų tarp įėjimų. Srautas sugeneruotas viename segmente visada pereis ir kitus segmentus. Kartotuvas gavęs signalą jį sustiprina ir perduoda į kitą segmentą. Kartotuvas atlieka funkcijas aprašytas OSI modelio fiziniame lygyje.
2.2.3 Koncentratoriai
Koncentratoriai (Hub), paprastai naudojami 10BaseT technologijoje. Ši technologija specifikuoja fizinę žvaigždės topologiją. Tačiau kompiuteriai sujungti į koncentratorių vis tiek suformuoja magistralę.
3. TCP/IP protokolų šeima
Internet tinklas ir TCP/IP protokolų šeima išsivystė iš specialaus tinklo, kuris buvo suprojektuotas 70 – ųjų metų viduryje. Tai buvo tinklas, kuris apjungė įvairius JAV tyrimų institutus. Šio tinklo kūrimo ir vystymo išdava yra TCP/IP protokolų šeima. TCP/IP protokolų specifikacijos aprašomi specialiuose dokumentuose vadinamuose RFC (Request For Comments). Kiekvienas dokumentas turi savo numerį. Šiuo metu dokumentų skaičius yra virš 2200. TCP/IP terminas kilęs iš dviejų protokolų pavadinimų: TCP (Transport Control Protocol) – transportavimo valdymo protokolas, bei IP (Internet Protocol) – Inerneto protokolas. Kiti protokolai ir jų ryšys su OSI modeliu pateiktas pavyzdyje.
5 pav. Internet protokolų šeima
Kiti pagrindiniai protokolai iš TCP/IP protokolų šeimos (kiekvienas bus nagrinėjamas išsamiau atskirai):UDP (User Datagram Protocol) – vartotojo datagramų protokolas;ICMP (Internet Control Message Protocol) – Interneto pranešimų valdymo protokolas;ARP (Address Resolution Protocol) – adreso išskyrimo protokolas;RARP (Reverse Address Resolution Protocol) – reversinis adreso išskyrimo protokolas;FTP (File Transfer Protocol) – failų persiuntimo protokolas;SNMP (Simple Network Management Protocol) – paprastas tinklo valdymo protokolas;SMTP (Simple Mail Transfer Protocol) – paprastas pašto persiuntimo protokolas;NFS (Network File System) – tinklo failų sistema, t.y. paskirstyta. Vartotojai turi skaidrų priėjimą per TCP/IP protokolą prie UNIX operacinės sistemos failų sistemų.RPC (Remote Procedure Call) – nutolusių procedūrų iškvietimas.
3.1 IP protokolas
IP protokolas aprašytas RFC 791 dokumente. Tai trečio OSI lygio protokolas. Jis yra vienas iš dviejų pagrindinių TCP/IP protokolų. IP protokolo paskirtis užtikrinti duomenų perdavimą nuo vieno kompiuterio iki kito, t.y. jis atlieka maršruto parinkimo uždavinį.
3.1.1 IP adresavimas
Kiekvienas kompiuteris ar įrenginys dirbantis su TCP/IP protokolu turi savo IP adresą. Kadangi TCP/IP protokolų šeimoje adresavimas vyksta IP protokole, tai kompiuterio adresas vadinamas IP adresu, nors vartojamas terminas ir TCP/IP adresas. Remiantis paskirties vietos IP adresu atliekamas paketų maršrutizavimas. IP adresas yra 32 bitų arba 4 baitų ilgio. IP adresas turi bent dvi dalis: adreso dalis skirta tinklų adresavimui ir adreso dalis skirta kompiuterių adresavimui. IP adresas gali turėti dar vieną dalį – potinklio dalį. Apie potinklius bus kalbama kitame skyrelyje. Bendru atveju IP adrese šios trys dalys išsidėsčiusios taip, kaip parodyta pavyzdyje.
6 pav. IP adreso formatas
Bitų skaičius skirtas tinklo, potinklio ir kompiuterių dalims adresuoti gali skirtis. Tai priklauso nuo to, kokiai IP adresų klasei priklauso konkretus adresas.Yra penkios IP adresų klasės:
A klasės IP adresai. Šioje klasėje tinklui adresuoti skirti pirmas IP adreso baitas arba tiksliau septyni jaunesnieji pirmojo (vyriausiojo) baito bitai. Vyriausias bitas A klasės IP adrese visada yra lygus nuliui. Kompiuteriams adresuoti šioje klasėje yra skirti likę trys IP adreso baitai. Taigi A klasės tinklų yra 27-1=127, o kiekviename tinkle kompiuterių gali būti iki 224-2=16777214.B klasės IP adresai. Šioje klasėje tinklui adresuoti skirti pirmi du (vyriausieji) IP adreso baitai arba tiksliau 14 bitų. Pirmojo baito vyriausias (aštuntas) bitas lygus 1, septintas bitas lygus nuliui. Kompiuteriams adresuoti šioje klasėje yra skirti likę du IP adreso baitai. Taigi B klasės tinklų yra 214-1=16383, o kiekviename tinkle kompiuterių gali būti iki 216-2=16382.C klasės IP adresai. Šioje klasėje tinklui adresuoti skirti pirmi trys (vyriausieji) IP adreso baitai arba tiksliau 21 bitas. Kompiuteriams adresuoti šioje klasėje yra skirtas jauniausias IP adreso baitas.Trys vyriausi vyriausio adreso baito bitai lygūs 110. Taigi C klasės tinklų gali būti 221-1=2097151, o viename tinkle kompiuterių gali būti 28-2=254.D klasės IP adresai. Ši klasė skirta adresuoti taip vadinamom multicast grupėm. Tai grupė susidedanti iš kelių kompiuterių, kurie adresuojami vienu IP adresu. Keturi vyriausieji adreso bitai lygūs 1110.E klasės IP adresai. Visi keturi vyriausieji adreso bitai lygūs vienetam. Ši klasė nėra naudojama, palikta ateities reikmėms.
Kaip išsidėstę bitai visose penkiose klasėse yra pateikta pavyzdyje.
7 pav. IP adresų klasės
Kaip matome A klasės tinklai yra patys didžiausi tinklai, B klasės tinklai yra vidutiniai, o C klasės tinklai yra maži tinklai. Tuo tarpu C klasės tinklų gali būti daugiausia, o A klasės tinklų – mažiausiai. Kiekvienas IP adreso baitas atskiriamas tašku. IP adresas užrašomas dešimtainiais skaičiais. IP adresų pavyzdžiai:
A klasės IP adresas – 10.1.1.1;B klasės IP adresas – 172.16.1.1;C klasės IP adresas – 192.168.44.1;D klasės IP adresas -224.0.0.9;
Nesigilinant į dvejetainę aritmetiką galima pasakyti, kad A klasės pirmasis IP adreso baitas gali įgyti reikšmes nuo 1 iki 127, B klasėje – nuo 128 iki 191, C klasėje – nuo 192 iki 223, D klasėje – nuo 224 iki 239, E klasėje – nuo 240 – 255.
Taisyklės kurios galioja sudarant IP adresus:Tinklo adreso dalis negali būti lygi nuliui;Potinklio dalis (jei tinklas sudalintas į potinklius) negali būti lygi nuliai;Kompiuterio adresas negali būti lygus nuliui;Paskutinis kompiuterio adresas (visi vienetai kompiuterio lauko bituose) tinkle ar potinklyje yra broadcast adresas;Tinklo adresas yra tada, kai kompiuterių lauko bitai lygūs nuliams;Potinklio adresas yra tada, kai IP adresas turi potinklį ir kompiuterio laiko bitai lygūs nuliam.
3.1.2 Potinkliai
TCP/IP tinklai gali būti sudalinti į mažesnius vienetus vadinamus potinkliais (Subnet). Potinkliai suteikia papildomą lankstumą valdant TCP/IP tinklus. Potinkliai sudaromi iš kompiuterio adresų dalies atimant dalį bitų ir priskiriant juos potinklių identifikavimui.
Pavyzdžiui turime B klasės IP adresą 128.10.1.2. Jei tinklas nesudalintas į potinklius, tai tinklo adresas yra 128.10, o kompiuterio adresas lygūs 1.2. Jei potinkliui skiriami 8 bitai, tai tinklo adresas išlieka tas pats, potinklio adresas bus lygūs 1, o kompiuterio adresas lygūs 2. Bitų skaičius kuris gali būti skirtas potinkliui identifikuoti gali būti kintamas dydis. Todėl kažkokiu būdu reikia žinoti ar IP adresas yra sudalintas į potinklius, ir jei taip, tai kiek bitų skiriama potinkliui. Potinklio kaukė (Subnet Mask) pasako kiek bitų skiriama potinkliui identifikuoti. Potinklio kaukė turi tokią pat užrašymo formą kaip ir IP adresas. Potinklio kaukėje yra visi vienetai toje dalyje, kuri atitinka IP adreso tinklo dalį, bei vienetai toje kompiuterių lauko dalyje, kuri skirta identifikuoti tinklą. Pavyzdžiui turime adresą 128.10.1.2, bei šis adresas neturi potinklių. Tai potinklio kaukė bus lygi 255.255.0.0. Jei potinkliui skiriami 8 bitai, tai potinklio kaukė bus lygi 255.255.255.0. Reik nepamiršti, kad čia buvo nagrinėjamas B klasės adresas. Kitas pavyzdys. Turime bet kokį A klasės adresą ir norime, kad potinkliui būtų skiriami 8 bitai. Tada potinklio kaukė bus lygi 255.255.0.0.
IP adresų pavyzdžiai:
IP adresas lygus 10.11.0.0, potinklio kaukė lygi 255.255.0.0. Matome, kad tai yra A klasės adresas. Potinkliui identifikuoti skiriami 8 bitai. Šiuo atveju potinklio adresas, lygus 11, o tinklo – 10. Kadangi IP adreso dalyje skirtoje identifikuoti kompiuteriams yra visi nuliai, tai šis adresas negali būti kompiuterio adresas, o yra tinklo ir potinklio adresas.IP adresas lygus 172.16.0.128, potinklio kaukė lygi 255.255.255.192. Matome, kad tai yra B klasės IP adresas. Potinkliui identifikuoti skiriama 10 bitų. Tinklo adresas lygūs 172.16, potinklio adresas lygūs 0.2, kompiuterio adreso lauke yra visi nuliai.IP adresas lygus 172.16.0.191, potinklio kaukė lygi 255.255.255.192. Tai vėl B klasės IP adresas. Potinkliui skiriama 10 bitų. Kompiuterių lauko dalyje yra visi vienetai, todėl šis adresas yra broadcast adresas.IP adresas lygūs 10.10.255.255, potinklio kaukė – 255.255.0.0. Tai A klasės IP adresas. Potinkliui skiriami 8 bitai. Kadangi kompiuterių lauko dalyje yra visi vienetai, tai yra broadcast adresas.
3.1.3 IP protokolo datagramos struktūra
IP datagramos struktūra pateikta pavyzdyje.
8 pav. IP datagrama
Laukas VERS – versijos numeris, lauko ilgis 4 bitai. IP protokolas yra nuolatos tobulinamas, t.y. kuriamos naujos protokolo versijos. Todėl vienu metu gali egzistuoti kelios IP protokolo versijos. Šiame lauke yra IP protokolo, kuris sukūrė datagramą, versijos numeris. Šiuo metu kaip standartas yra IP protokolo ketvirta versija, tačiau jau yra sukurta šešta versija, tačiau ji dar nėra standartas. Todėl šiuo metu daugumoje atvejų naudojama ketvirta IP versija.
Laukas HLEN – antraštės ilgis, lauko ilgis 4 bitai. Tai IP antraštės ilgis išreikštas 32 bitų ilgio žodžiais. Paprastai antraštės ilgis yra 20 baitų išskyrus tam tikrus atvejus. Tokiu atveju šiame lauke įrašomas skaičius 5, nes antraštės ilgis lygūs penkiems 32 bitų žodžiams.
Laukas TOS – serviso tipas, lauko ilgis 8 bitai. Tai laukas, kuris parodo IP datagramos prioritetą. Šio lauko detalesnė struktūra pavaizduota pavyzdyje.
9 pav. TOS laukas
Pirmi trys bitai yra prioriteto laukas. Šis laukas šiuo metu mažai naudojamas, bet jo pagalba maršrutizatoriai galėtų nuspręsti kurią datagramą perduoti pirmą. Tačiau paprastai šis laukas yra ignoruojamas, jis faktiškai paliktas ateities realizacijoms. Likę laukai taip pat yra beveik nenaudojami;Užlaikymas (D – Delay), rodo, kad datagramos užlaikymas turi būti minimalus;Pralaidumas (T – Throughput), rodo, kad reik maksimaliai išnaudoti turimą pralaidumą, perduodant datagramą;Patikimumas (R – Reliability), datagramos pristatymas turi būti maksimaliai patikimas;
Laukas bendras ilgis, lauko ilgis 16 bitų. Tai visos IP datagramos ilgis. Ilgis skaičiuojamas baitais, o ne 32 bitų žodžiais kaip tai daroma VERS lauke. Kadangi šiam laukui skirta 16 bitų, tai bendras IP datagramos ilgis negali būti didesnis, nei 65535 baitai. Paprastai perduodant datagramą per fizinio lygio protokolus reikia atlikti taip vadinamą datagramos fragmentaciją – skaidymą datagramos į mažesnius vienetus – fragmentus. Pavyzdžiui kaip žinoma Ethernet freime duomenų laukui skiriami tik 1500 baitų duomenims. Tuo tarpu IP datagrama yra kur kas didesnio ilgio.
Laukas fragmento identifikatorius, lauko ilgis 16 bitų. Šis laukas susijęs su datagramos fragmentacija. Laukas parodo, kokiai datagramai priklauso fragmentas.
Laukas vėliavėlės, lauko ilgis 3 bitai. Šio lauko du bitai skirti fragmentavimo informacijai. Iš jų vienas bitas pasako ar datagrama gali būti fragmentuojama, kitas bitas parodo ar fragmentas yra paskutinis datagramos fragmentas.
Laukas fragmento poslinkis, lauko ilgis 13 bitų.
Laukas TTL – gyvavimo laikas. lauko ilgis 8 bitai. Parodo datagramos gyvavimo trukmę. Pradžioje šaltinis nustato tam tikrą TTL reikšmę (paprastai ji būna lygi 30). Po to datagramai keliaujant tinklu, kiekvienas maršrutizatorius mažina šio lauko reikšmę, sekundžių skaičiumi, kurį datagrama buvo užlaikyta maršrutizatoriuje. Jei šio lauko reikšmė tampa lygi nuliui, datagrama sunaikinama ir šaltiniui perduodamas ICMP protokolo atitinkamas pranešimas.
Laukas protokolas, lauko ilgis 8 bitai. Tai protokolo, kuriam yra skirta datagrama, identifikatorius. Paprastai tai būna transporto lygio protokolai TCP arba UDP. Taip pat gali būti ICMP.
Laukas antraštės kontrolinė suma, lauko ilgis 16 bitų.
Laukai šaltinio IP adresas ir paskirties vietos IP adresas, laukų ilgiai po 32 bitus.
Laukas IP opcijos + užpildymas (jei reikia). Skirtas įvairių tinklinių taikymų derinimui ir testavimui. Paprastai tai atliekama su specialios paskirties kompiuteriais, kurie turi derinimo programas.
Paskutinis laukas – tai siunčiami aukštesnio lygio protokolo duomenys.
3.1.4 Fragmentacijos procesas smulkiau
IP datagramos perduodamos per tinklą turi pereiti fizinio lygio protokolus. Pavyzdžiui IP datagrama gali būti perduodama per kurį nors lokalaus tinklo protokolą (Ethernet, Token Ring, FDDI ir pan., arba per globalaus tinklo protokolą). Pavyzdžiui Ethernet atveju duomenų lauko ilgis Ethernet freime lygūs 1500 baitų. Apibūdinti protokolo maksimalų perduodamų duomenų lauko ilgį naudojamas terminas MTU (Maximum Transmission Unit) – maksimalus perdavimo vienetas. Taigi Ethernet MTU lygus 1500 baitų. Fragmentacija reikalinga, jei datagramos ilgis yra didesnis už fizinio protokolo MTU. Kaip jau minėta fragmentacija – tai datagramos smulkesnis suskaidymas. Kaip jau minėta vėliavėlių lauke yra du bitai skirti fragmentacijai. Pirmasis bitas rodo, kad fragmentacija yra uždrausta. Jei šaltinis aptiks, kad fragmetacija yra būtina, o šiuo bitu fragmentacija yra uždrausta, tai šaltiniui bus gražintas klaidos pranešimas. Paprastai šis bitas naudojamas atliekant įvairius testavimus. Kitas bitas parodo ar fragmentas yra paskutinis duotoje datagramoje. Visi datagramos fragmentai pažymimi vienetu, išskyrus paskutinį. Aišku, kad visada kai įmanoma reik stengtis išvengti fragmentacijos, kadangi jai atlikti reik papildomų veiksmų, kurie reikalauja resursų. Tačiau jei fragmentacija yra neišvengiama, tai pirmiausia apskaičiuojamas dalybos taškas (breaking point), kuris lygus MTU fizinio lygio protokolo. Dalybos taškas – tai baitas kuriame perskiriama datagrama. Tai yra poslinkis arba baitų skaičius nuo datagramos pradžios. Ši reikšmė naudojama paskirties vietoje gautų fragmentų surinkimui į vieną visumą. Fragmento poslinkio lauke, poslinkis skaičiuojamas 8 baitų dydžiais.
3.2 Maršrutizavimas
Maršrutizavimas, tai informacijos perdavimas tinklu nuo šaltinio iki paskirties vietos. Jei informacijos kelyje sutinkamas bent vienas tarpinis taškas, tai atliekamas maršrutizavimas. Maršrutizavimą tinkle atlieka specialūs įrenginiai vadinami maršrutizatoriais (Router). Maršrutizavimas nėra tas pats procesas, kuris vyksta naudojant tiltus. Tiltai duomenų paskirties vietą parenka pagal fizinį paskirties adresą, o maršrutizatoriai – pagal loginį adresą. Taigi tiltai atlieka funkcijas aprašytas antrame OSI modelio lygyje, o maršrutizatoriai – trečiame lygyje. Todėl maršrutizatoriai ir tiltai atlieka iš pažiūros panašias funkcijas, bet skirtingais būdais. Maršrutizavimo procesas yra labai sudėtingas. Kadangi maršrutizavimo eigoje naudojami loginiai adresai, tai maršrutizatorius turi pilnai dekapsuliuoti fizinių lygių protokolų freimus, bei atlikti trečio lygio paketo analizę. Maršrutizatoriai atlieka du uždavinius: parenka optimalų maršrutą, bei atlieka informacijos grupių perdavimą tinklu. Paskutinis iš uždavinių dar vadinamas (Switching).
3.2.1 Kelio parinkimas
Kelio parinkimui naudojamas specialus matas vadinamas metrika (Metric). Šis matas naudojamas kelio ilgiui nustatyti. Maršrutizatoriai panašiai kaip ir tiltai turi lenteles, vadinamas maršrutizavimo lentelėmis (Routing Table). Šios lentelės užpildomos priklausomai nuo naudojamo maršrutizavimo algoritmo. Lentelė sudaryta iš įrašų porų: paskirties vieta/kitas taškas (Next Hop). TCP/IP protokolo atveju paskirties vieta paprastai būna tinklo adresas. Remiantis šios lentelės duomenimis maršrutizatorius priima sprendimą į kurį išėjimą (portą) pasiųsti gautus duomenis. Maršrutizatorius turi turėti bent du portus. Maršrutizavimo lentelės pavyzdys pateiktas 2. lentelėje.
2. Lentelė
Paskirites vieta (tinklo adresas) Kitas taškas (Next Hop) 172.16.0.0 172.16.1.1 10.1.1.0 172.16.1.1 192.168.44.0 34.2.15.15 193.219.66.0 193.219.66.254 193.219.67.0 193.220.65.13
Maršrutizatorius analizuoja atėjusio paketo paskirties vietos adresą ir žiūri ar jis yra lentelėje. Jei toks adresas yra, tai paketas perduodamas į atitinkamą portą, jei nėra paketas atmetamas. Jei lentelėje yra keli įrašai identifikuojantys paskirties vietą, tai parenkamas tas, kurio metrika yra geriausia. Metrika arba matas priklauso nuo naudojamo maršrutizavimo algoritmo. Matas gali būti sudarytas iš kelių parametrų, o gali būti tik kuris nors vienas parametras. Apie tai bus nagrinėjama vėliau. Maršrutizatoriai kaip ir tiltai ką tik įjungti į tinklą neturi maršrutizavimo lentelės. Lentelė sudaroma gaunant pranešimus iš kitų maršrutizatorių esančių tinkle. Pranešimai, kuriais siunčiamos maršrutizavimo lentelės tarp maršrutizatorių vadinami maršrutų atnaujinimo pranešimai (Routing Updates). Šie pranešimai gali atnaujinti visą arba dalį turimos maršrutizatoriaus lentelės. Kiekvienas maršrutizatoriaus portas turi savo loginį adresą. Pagal savo loginius adresus maršrutizatorius gali susidaryti minimalią maršrutų lentelę, nes jis žino prie kokių tinklų yra prijungtas. Apie prijungtus tinklus jis praneša kaimyniniams maršrutizatoriams naudodamas maršrutų atnaujinimo pranešimus. Taip maršrutizatoriai bendraudami tarpusavyje susikuria tinklo topologiją. Žinodami tinklo topologiją maršrutizatoriai gali atlikti optimalaus kelio parinkimo uždavinį.
3.2.2 Duomenų perdavimas (Switching)
Perdavimo algoritmai yra palyginus paprasti ir yra iš esmės tie patys daugumai maršrutizavimo protokolų. Paketai perduodami remiantis fiziniais ir loginiais paskirties vietos adresais. Šaltinis siųsdamas duomenis į paketą įtraukia paskirties vietos loginį adresą, tačiau gali nežinoti paskirties vietos fizinio adreso. Maršrutizatorius gavęs paketą, analizuoja loginį paskirties adresą. Jei paskirties vietos adreso nėra lentelėje, tai paketas atmetamas. Jei adresas yra lentelėje, tai paketo paskirties vietos fizinis adresas pakeičiamas kito taško fiziniu adresu. Taip paketas keliauja per maršrutizatorius ir keičiasi jo paskirties vietos fizinis adresas. Kai paketas patenka į maršrutizatorių, kuris yra tiesiogiai prijungtas prie tinklo, kuriame yra paskirties vieta, tai maršrutizatorius fizinį adresą pakeičia paskirties vietos fiziniu adresu.
3.2.3 Maršrutizavimo algoritmai
Egzistuoja daug įvairių maršrutizavimo algoritmų. Maršrutizavimo algoritmai turi pasižymėti tokiomis savybėmis:
Optimalumu. Tai yra algoritmas turi sugebėti parinkti geriausią maršrutą. Maršrutas paprastai priklauso nuo jau anksčiau minėto mato – metrikos ir to mato svorio. Pavyzdžiui matu yra du parametrai – tarpinių taškų skaičius ir kaina. Tačiau kainos svoris gali būti didesnis. Apjungiant du ir daugiau parametrų gauname integralinį matą.Paprastumu. Algoritmas turi būti įgyvendintas kuo minimalesnėm priemonėm. Nes kuo algoritmas sudėtingesnis, tuo daugiau skaičiavimų reikia atlikti.Patikimumu. Algoritmas turi būti numatytos visos galimos situacijos.Augančia konvergencija. Visi maršrutizatoriai turi turėti vieną geriausią maršrutą. Maršrutizatorius įjungiant arba išjungiant iš tinklo, jie platina maršrutų atnaujinimo pranešimus. Tuo metu vyksta maršrutų perskaičiavimas kaimyniniuose maršrutizatoriuose, o gali vykti maršrutų perskaičiavimas viso domeno maršrutizatoriuose. Tuo metu tinkle gali nebūti vieningų maršrutų ir gali susidaryti maršrutų kilpos.
3.2.4 Maršrutizavimo algoritmų tipai
Yra du maršrutizavimo algoritmų tipai: statiniai ir dinaminiai. Statiniuose algoritmuose maršrutus nurodo tinklo administratorius. Maršrutai nekeičiami tol, kol jų nepakeičia tinklo administratorius. Kadangi jie nereaguoja į tinklo pasikeitimus, tai jie gali neužtikrinti patikimo maršrutizavimo. Todėl daugumoje tinklų taikomi dinaminiai maršrutizavimo algoritmai. Dinaminiai algoritmai reaguoja į tinklo topologijos pasikeitimus realiame laike. Tai atliekama maršrutų atnaujinimo pranešimų pagalba. Maršrutizatorių programinė įranga analizuoja pranešimus ir sudaro naujas maršrutų lenteles. Dar egzistuoja tokie algoritmai, kurie leidžia multipleksuoti paketus tarp skirtingų kelių.
3.2.5 Maršrutizavimo matai (Metric)
Kelio ilgis – pavyzdžiui tarpinių taškų skaičius;Patikimumas – kiekviena ryšio linija tarp dviejų maršrutizatorių gali turėti teisingo pranešimo perdavimo patikimumo reikšmę, t.y. tikimybė su kuria bus teisingai perduotas pranešimas;Vėlinimas – tai ryšio linijos vėlinimas;Pralaidumas – tai ryšio linijos maksimalus pralaidumas.Apkrovimas – tai ryšio linijos apkrovimo reikšmė esamu laiko momentu. Kai kurie algoritmai gali įvertinti ryšio linijos apkrovimą realiam laike ir pagal tai koreguoti maršrutus;Komunikavimo kaina – tai ryšio linijos panaudojimo kaina. Pavyzdžiui įmonė gali mokėti už persiųstų duomenų per ryšio liniją kiekį. Paprastai šie matai yra įvedami sistemos administratoriaus, išskyrus apkrovimo reikšmę, kuria apskaičiuoja maršrutizatoriai. Maršruto parinkimui gali būti taikomi vienas arba keli matai. Jei taikomi keli matai, tai išvedamas vienas integralinis matas.
3.3 Transporto lygio protokolai
Taikomoji programa dirbanti su TCP/IP protokolu paprastai tiesiogiai bendrauja su transporto lygio protokolais. TCP/IP atveju tai yra TCP arba UDP protokolai. TCP protokolas užtikrina patikimą duomenų perdavimą, nes siunčia duomenis būdu su ryšio užmezgimu, tuo tarpu UDP neužtikrina patikimo duomenų pristatymo, nes siunčia juos būdu be ryšio užmezgimo. Tokiu atveju taikomosios programos uždavinys yra užtikrinti patikimą duomenų pristatymą. Taigi transporto lygio uždavinys yra perduoti duomenys tarp dviejų taikomųjų programų, tuo tarpu tinklo lygio uždavinys perduoti duomenis tarp dviejų kompiuterių. Tinklo lygis tai atlieka remdamasis loginiais kompiuterių IP adresais. Natūralu, kad transporto lygis taip pat kažkokiu būdu turi identifikuoti taikomąsias programas, nes vienu metu kelios taikomosios programos gali siųsti ir gauti duomenis. Taikomąją programą transporto lygyje (TCP/IP protokolų šeimoje) identifikuoja portas. Pavyzdžiui nutolusio terminalo emuliavimo (telnet) protokolo portas lygus 23. Tačiau iškyla viena problema. Su ta pačia taikomąją programa gali dirbti keli vartotojai, o skirtingos programos turi turėti unikalius portus. Todėl serveris visada suteikia klientui tam tikrą unikalų porto numerį.
3.3.1 UDP protokolas
Tai labai paprastas protokolas. Pavyzdyje pateikta UDP datagramos struktūra.
10 pav. UDP datagrama
UDP datagramos antraštės ilgis lygus 8 baitams. Laukai – taikomųjų programų portai užima po du baitus. Laukas datagramos ilgis yra 2 baitų dydžio. Šiame lauke yra nurodomas datagramos ilgis baitais, įskaitant ir antraštę. Kitas laukas yra taip pat yra dviejų baitų ilgio. Tai yra kontrolinės sumos laukas. Po to seka duomenų laukas, kuris yra kintamo ilgio. Faktiškai UDP protokolas paskirsto atėjusias datagramas taikomosioms programoms.
3.3.2 TCP protokolas
TCP protokolas kartu su IP protokolu yra labiausiai paplitę protokolai iš TCP/IP protokolų šeimos. TCP kaip ir UDP yra transporto lygio protokolas, tačiau lyginant su UDP, TCP protokolas yra žymiai sudėtingesnis. Tai lemia, kad TCP protokolas užtikrina patikimą duomenų pristatymą, t.y. siunčia duomenis su ryšio užmezgimu. TCP protokole naudojama patvirtinimų technika ir langai. Apie tai buvo nagrinėjama OSI modelio transporto lygio skyrelyje.
3.3.2.1 TCP ryšio užmezgimas
Kaip jau buvo minėta TCP patikimai pristato duomenis (t.y. duomenis siunčia su ryšio užmezgimu), o tai reiškia, kad TCP turi patvirtinimo apie gautus duomenis pranešimus. Todėl reikia kažkokiu būdu identifikuoti perduodamus duomenis. Tam TCP antraštėje yra skirti keli laukai bei vėliavėlės. Jei taikomajai programai reikia persiųsti duomens, ji prašo TCP protokolo užmegzti ryšį. TCP protokolas siunčia pranešimą su nustatyta vėliavėle SYN (sinchronizacija). Šis pranešimas skirtas nutolusiam portui (serverio portui) su kuriuo taikomoji programa nori užmegzti ryšį. Ši vėliavėlė nurodo pranešimo gavėjui, kad programa klientas nori užmegzti ryšį. Katu su sinchronizacijos pranešimu siunčiamas sekos numeris (nurodomas lauke sekos numeris). Pranešimo gavėjas siunčia pranešimą atsakymą su nustatyta vėliavėlė ACK ir su patvirtinimo numeriu (nurodomas lauke patvirtinimo numeris). TCP protokole duomenys siunčiami abiem kryptim (dupleksinis ryšys). Šie abu srautai yra nepriklausomi. Siunčiami duomenys identifikuojami lauke sekos numeris. Abi komunikuojančios pusės turi savo individualius sekos numerius vienas nuo kito nepriklausančius. Tuo tarpu patvirtinimo numeriai priklauso nuo gauto pranešimo sekos numerio. Patvirtinimo numeris visada lygūs kito laukiamo pranešimo numeriui. Pavyzdžiui siuntėjas išsiuntė pranešimą, kurio sekos numeris lygus 2000, tada gavėjas siunčia patvirtinimą, kurio numeris lygus 2001. Taigi prieš pradedant bet kokį duomenų siuntimą turi būti užmegztas ryšys. Ryšio užmezgimas vykdomas tokiomis fazėmis:
TCP klientas nori užmegzti ryšį su TCP serveriu. Todėl jis siunčia sinchronizacijos pranešimą (SYN vėliavėlė nustatyta), taip pat pranešime yra pradinis sekos numeris;TCP serveris siunčia sinchronizacijos patvirtinimą (ACK vėliavėlė nustatyta), bei nurodo savo pradinį sekos numerį.TCP klientas patvirtina serverio atsakymą.
3.3.2.2 Sekos numeriai plačiau
Sekos numeris vienareikšmiškai identifikuoja duomenų baitą TCP sraute. Sekos numeris yra ne kas kita, kaip perduotų baitų skaičius. Panagrinėkime pavyzdį. Tarkime klientas nori perduoti 1500 baitų, per TCP protokolą. Tarkime, kad jau įvykdyta sinchronizacija ir sekos numeris lygus 1001. Tarkime, kad duomenų dydis segmente lygus 500 baitų. Tada perdavimas vyksta tokiais etapais.
TCP kliente:TCP klientas perduoda duomenų baitus nuo 1 iki 500. Kartu su duomenimis (tame pačiame pranešime) lauke sekos numeris įrašomas skaičius 1001;TCP klientas perduoda duomenų baitus nuo 501 iki 1000. Sekos numeris lygus 1501 (1001+500 = 1501);TCP klientas perduoda duomenų baitus nuo 1001 iki 1500. Sekos numeris lygus 2001 (1501+500 = 2001);
TCP serveryje:TCP serveris gavęs pirmą pranešimą, siunčia patvirtinimą, kurio numeris lygus 1001;TCP serveris gavęs antrą pranešimą, siunčia patvirtinimą, kurio numeris lygus 1501;TCP serveris gavęs trečią pranešimą, siunčia patvirtinimą, kurio numeris lygus 2001;
Kaip jau buvo minėta anksčiau duomenys TCP protokolu siunčiami abiem kryptim, be to abu duomenų srautai yra vienas nuo kito nepriklausomi. Todėl kiekvienas kompiuteris turi skaičiuoti atskirai siunčiamus ir gaunamus duomenis.
3.3.2.3 Ryšio nutraukimas
Ryšio nutraukimas gali būti inicijuojamas tiek kliento, tiek serverio. Ryšio nutraukimo iniciatorius siunčia pranešimą su nustatyta vėliavėle FIN (ryšio nutraukimas). Tai reiškia, kad ryšio nutraukimo iniciatorius nutraukia duomenų siuntimą. Ryšio nutraukimo iniciatorius turi gauti patvirtinimą. Tuo būdu abi pusės pasiruošusios nutraukti ryšį. Po to, kai abi pusės pasiuntė viena kitai pranešimus su FIN vėliavėle ir gavo patvirtinimus, ryšys yra nutraukiamas.
3.3.2.4 TCP paketo struktūra
TCP paketo struktūra pateikta pavyzdyje.
11 pav. TCP paketas.
3. Lentelė
Lauko pavadinimas Lauko ilgis (bitais) Lauko paaiškinimas Siuntėjo portas 16 Taikomosios programos – duomenų šaltinio portas Gavėjo portas 16 Taikomosios programos – duomenų gavėjos portas Sekos numeris 32 Sekos numeris TCP duomenų sraute (baitų poslinkis nuo pirmo pranešimo baito) Patvirtinimo numeris 32 Kito laukiamo duomenų baito numeris Antraštės ilgis 4 TCP antraštės ilgis skaičiuojamas 32 bitų žodžiais Vėliavėlė URG 1 Reiškia, kad yra neatidėliotinų duomenų. Lauke neatidėliotini duomenys yra rodyklė į juos. Vėliavėlė ACK 1 Rodo, kad lauke patvirtinimo numeris yra teisingai gauto pranešimo patvirtinimas Vėliavėlė PSH 1 Rodo, kad reik nedelsiant išsiųsti pranešimą (nelaukti kol užsipildys buferis) Vėliavėlė RST 1 Ryšio numetimui. Paprastai nustatoma atsiradus ryšio problemoms Vėliavėlė SYN 1 Sinchronizavimo vėliavėlė Vėliavėlė FIN 1 Ryšio nutraukimo vėliavėlė Lango dydis 16 Baitų skaičius, kuris gali būti pasiųstas negaunant patvirtinimo Kontrolinė suma 16 Duomenų kontrolinė suma Neatidėliotinų duomenų rodyklė 16 Rodo, kurioje vietoje duomenų lauke yra neatidėliotini duomenys. Opcijos kintamas Paprastai vienas iš parametrų yra maksimalus pranešimo ilgis (prasmė panaši kaip MTU) Duomenys kintamas Aukštesnio lygio protokolo duomenys
3.4 ARP ir RARP protokolas
Norint pasiųsti freimus tarp tiesiogiai sujungtų įrenginių, reikia žinoti paskirties vietos MAC adresą. Tačiau siunčiantis duomenis kompiuteris paprastai žino tik paskirties vietos IP adresą. Todėl kažkokiu būdu siunčiantis duomenis kompiuteris turi sužinoti paskirties vietos MAC adresą. Paskirties vietos MAC adresas sužinomas ARP (Address Resolution Protocol) protokolo pagalba. RARP (Reverse Address Resolution Protocol) protokolas yra atvirkščias ARP protokolui, t.y. žinant MAC adresą reikia rasti IP adresą. RARP naudojamas stotyse be diskų. Tokios stotys turi savo MAC adresą, bet nežino savo IP adreso. ARP ir RARP protokolų paketo struktūra pateikta pavyzdyje.
12 pav. ARP ir RARP protokolų paketų struktūra.
Laukų reikšmės:HLEN – aparatinio adreso ilgis;PLEN – IP adreso ilgis;Operacija: 1 – ARP užklausa; 2 – ARP atsakymas; 3 – RARP užklausa; 4 – RARP atsakymas.
Panagrinėkime kaip ARP protokolo pagalba vyksta MAC adreso radimas. Tarkime kompiuteris A nori sužinoti kompiuterio B MAC adresą. Todėl kompiuteris A siunčia ARP užklausą (operacijos lauke 1). Šio pranešimo tikslas surasti B kompiuterio MAC adresą. Pranešimas yra broadcast tipo (skirtas visiems LAN kompiuteriams). Todėl Ethernet freime į kurį yra enkapsuliuotas ARP pranešimas, paskirties vietos aparatinio adreso laukas užpildomas visais vienetais (broadcast adresu). Pranešime įtraukiamas B kompiuterio IP adresas, šaltinio t.y. kompiuterio A aparatinis ir IP adresai. Visi kompiuteriai esantys LAN gauna tokį freimą ir jį analizuoja. Atsakymą pasiunčia tik tas kompiuteris, kurio IP adresas sutapo su IP adresu ARP pranešime. ARP atsakyme operacijos laukas nustatomas į 2. Paskirties vietos aparatinį adresą užpildo B kompiuteris savo aparatiniu adresu.