01.02. Tīklu slāņi

Pēdējais mainījis Administrator 2011-06-06 17:16

01.02. Tīklu slāņi

Tīklu protokolus parasti veido vairākos #term("slāņos", "layer"), kur katrs slānis atbild par citu sadarbības jomu. Piemēram, TCP/IP protokolu steks ir dažādu protokolu kombinācija, kas nodrošina vairākus šādus slāņus. TCP/IP parasti uzskata par 4-slāņu sistēmu - sk. tabulu:

SlānisProtokolu piemēri
Lietojumu slānis (Application layer) Telnet, FTP, e-mail, utt.
Transporta slānis (Transport layer) TCP, UDP
Tīkla slānis (Network layer) IP, ICMP, IGMP
Datu posma slānis (Data link layer) iekārtu dziņi un interfeisi
1.1 Attēls: 4 slāņi TCP/IP protokolu stekā

Slāņi atbild par sekojošām funkcijām:

  1. #term("Datu posma slānis","data_link_layer"), ko dažreiz sauc par #term("tīkla interfeisu slāni", "network_interface_layer") parasti ietver sevī iekārtas dzini konkrētā operētājsistēmā un atbilstošo tīkla plati datorā. Šie elementi abi kopā nodrošina datora fizisko mijiedarbību ar tīkla vadu vai citu datu nesēju.
  2. #term("Tīkla slānis", "network_layer") dažreiz saukts arī par #term("interneta slāni", "internet_layer") nosaka pakešu kustību pa tīklu. Šajā līmenī notiek pakešu maršrutēšana (routing). Protokoli IP (Internet Protocol), ICMP (Internet Control Message Protocol) un IGMP (Internet Group Management Protocol) nodrošina tīkla slāni TCP/IP protokolu stekā.
  3. Transporta slānis (transport layer) nodrošina datu plūsmu, kuru lieto augšējais - lietojumu slānis. TCP/IP protokolu stekā ir divi ļoti atšķirīgi transporta protokoli: TCP (Transmission Control Protocol) un UDP (User Datagram Protocol).

    1. TCP nodrošina drošu datu plūsmu starp divām #term("mītnēm","host"). Tas sadala tam nodotos datus piemērota izmēra gabalos, ko nodot tīkla slānim, sūta apstiprinājumus (acknowledgements) par saņemtajām paketēm, uzstāda #term("noildzes","timeout"), ar ko pārliecinās, vai otrs komunikāciju gals arī ir atsūtījis apstiprinājumus, utt. Tā kā šis transporta slāņa paveids nodrošina #term("uzticamu","reliabile") datu nosūtīšanu, lietojumu slānis var par to nerūpēties.
    2. UDP turpretī piedāvā daudz vienkāršāku lietojumu slāņa pakalpojumu. Tas nosūta datu paketes jeb #term("datagrammas","datagram") no vienas mītnes uz otru, bet nav garantijas, ka paketes/datagrammas sasniegs otru galu. Lai nodrošinātu uzticamību, lietojumu slāņa programmām tas ir jānodrošina pašām.

    Katra lietojumu slāņa programma izmanto vienu vai otru transporta protokolu, ko mēs redzēsim, kad aplūkosim attiecīgos TCP un UDP lietojumus.

  4. Lietojumu slāņa protokoli nodrošina noteiktas ("lietotnes","application") darbību. Ir vairākas izplatītas TCP/IP lietotnes, kas pieejamas gandrīz visur:
    • SSH - lai attālināti pieslēgtos ar teksta konsoli
    • FTP - failu pārsūtīšanas protokols (File Transfer Protocol)
    • SMTP - pasta nosūtīšanas protokols (Simple Mail Transfer protocol), ko lieto e-pastam.
    • SNMP - tīklu pārvaldības protokols (Simple Network Management Protocol)
    • u.c. ko aplūkosim vēlākās nodaļās.

Ja 2 mītnes sazinās lokālajā tīklā (local area network (LAN)), piemēram, Ethernet-ā un abi izmanto FTP, tad attēls 1.2 parāda lietotos protokolus:

#pic("f_1_2.gif", "300")
1.2 Attēls: Divas mītnes LANā, kas darbina FTP

Viena kastīte apzīmē FTP klientu, bet otra - FTP serveri. Vairums tīklu lietotņu ir veidotas tā, ka viens gals ir klients, bet otrs - serveris. Serveris piegādā klientiem kaut kādu pakalpojumu, piemēram, FTP gadījumā tā ir piekļuve failiem uz servera. SSH gadījumā piegādātais pakalpojums ir iespēja izpildīt teksta komandas uz servera. Katram slānim ir viens vai vairāki protokoli, kas ļauj savstarpēji sadarboties diviem procesiem. Viens protokols, piemēram, ļauj sazināties diviem TCP slāņa procesiem, bet otrs - diviem IP slāņa procesiem.

Attēla 1.2 labajā pusē ir uzsvērts, ka lietojumu slānī ir lietotāja procesi, kamēr zemākie 3 slāņi parasti ir realizēti operētājsistēmas kodolā (kernel). Lai gan tā nav prasība, tas ir ļoti tipiski, un UNIX-veidīgās sistēmās tā tiek darīts. Ir arī cita kritiska atšķirība starp augšējo slāni attēlā 1.2 un zemākajiem 3 slāņiem. Lietojumu slānis nodarbojas ar lietojumu nodrošināšanu, nevis ar datu nodošanu tīklā. Savukārt zemākie 3 slāņi neko nezina par lietojumu, bet apstrādā visas komunikācijai vajadzīgās lietas.

Attēlā 1.2 ir skaidri redzams, kā katrs protokols darbojas citā slānī - FTP ir lietojumu slāņa protokols, TCP ir transporta slāņa protokols, IP ir tīkla slāņa protokols un Ethernet protokoli darbojas savienojumu līmenī. TCP/IP protokolu steks ir daudzu protokolu kombinācija. Lai gan šo kopu parasti apzīmē ar kopīgu vārdu TCP/IP, jāatzīmē, ka TCP un IP ir tikai divi no protokoliem. Precīzāks nosaukums būtu Interneta protokolu steks (Internet Protocol Suite).

Nodalījums starp transporta slāni un lietojumu slāni ir acīmredzams - viens nodarbojas ar komunikāciju vides detaļām (Ethernet, token ring, utt.), toties otrs apkalpo noteiktu lietojumprogrammu (FTP, Telnet, utt.). Bet pirmajā acumirklī atšķirība starp tīkla slāni un transporta slāni šķiet izplūdusi. Lai saprastu, kāda ir starpība, jāpaplašina mūsu perspektīva no viena tīkla uz vairāku tīklu kopsalikumu.

Datortīklu fenomenālā izaugsme 1980-tajos gados notika, pateicoties izpratnei par to, ka no izolēta datora ir maz jēgas. Tādēļ datorus saslēdza tīklā. 1990-tajos gados cilvēki apzinājās, ka arī lielāka sala (viens lokāls tīkls) neko daudz nedod - tādēļ daudzus tīklus saslēdza kopā starptīklā (internetwork) jeb internetā. Internets ir daudzu datortīklu kopums, kas visi izmanto to pašu protokolu steku.

Vieglākais veids, kā veidot internetu, ir saslēgt divus vai vairākus tīklus ar #term("maršrutētāju", "router"). Maršrutētājs parasti ir atsevišķa aparatūras (hardware) kaste; to jaukākā īpašība ir spēja savienot dažādu tipu fiziskos tīklus (Ethernet, token ring, point-to-point saites, FDDI - Fiber Distributed Data Interface, utt.).

Tās sauc arī par IP maršrutētājiem (IP routers), bet mēs lietosim vienkāršāku terminu - maršrutētājs.

Vēsturiski šīs kastes sauca par #term('vārtejām', 'gateway'), un šo terminu lieto daudzkur TCP/IP literatūrā. Šobrīd vārteju korektāk lietot lietojumu vārtejas nozīmē: tas ir process, kas savieno divus dažādus protokolu stekus (piemēram, TCP/IP un IBM'a SNA) vienai konkrētam lietojumam, piemēram, e-pastam vai failu pārsūtīšanai.

Attēls 1.3 parāda internetu, kurš sastāv no diviem tīkliem - Etherneta un token-ring'a, kurus savieno maršrutētājs. Lai gan te attēloti tikai divi komunicējoši saimniekdatori, kur maršrutētājs savieno abus tīklus, faktiski jebkurš dators, kurš pieslēgts Ethernet'am var sazināties ar jebkuru saimniekdatoru uz token-ring'a.

Attēlā 1.3 pastāv atšķirība starp "gala sistēmu" (diviem saimniekdatoriem katrā komunikācijas galā) un "starpsistēmu" (šajā gadījumā - maršrutētāju starp tām). Lietojumu slānis un transporta slānis izmanto #term("galapunktu protokolus", "end_to_end_protocol"). Mūsu attēlā šie divi slāņi ir atrodami tikai uz gala sistēmām. Savukārt tīkla slānis nodrošina #term("posma protokolu", "hop_by_hop_protocol"), ko lieto gan uz gala sistēmām, gan arī uz ikvienas starpsistēmas.

#pic("f_1_3.gif", "300")
Attēls 1.3 Divi tīkli, kas saslēgti ar maršrutētāju

TCP/IP protokolu stekā tīkla slānis jeb IP nodrošina neuzticamu servisu. T.i. tas mēģina novirzīt paketi no avota uz galamērķi, bet nedod garantijas. TCP turpretī nodrošina uzticamu transporta slāni, balstoties uz nedrošā IP. Lai to panāktu, TCP ievieš noildzi un vairākkārtēju pārsūtīšanu, sūta un saņem galu apstiprinājumus, utt. Transporta slānim un tīkla slānim tātad ir dažādas funkcijas.

Maršrutētājam pēc definīcijas ir divi vai vairāki tīkla interfeisa slāņi, jo tas savieno vismaz divus tīklus. Jebkuru sistēmu ar vairākiem interfeisiem sauc par daudzmājnieku (multihomed). Arī #term("mītne","host") var būt daudzmājnieks, bet, ja vien tas īpaši nenodarbojas ar pakešu pārsūtīšanu no viena interfeisa uz citu, to nesauc par maršrutētāju. Maršrutētājiem nav jābūt specializētām aparatūras kastēm; vairums TCP/IP implementāciju ļauj arī daudzmāju mītnei piestrādāt kā maršrutētājam, bet tad šī mītne ir īpaši jākonfigurē, lai tas varētu notikt. Šajā gadījumā varam sistēmu saukt gan par mītni, gan par maršrutētāju - turpmāk izvēlēsimies apzīmējumu atkarībā no konteksta.

Viens no interneta mērķiem ir noslēpt interneta fizikālā izvietojuma detaļas no lietojumiem. Lai gan tas nav acīmredzami no attēla 1.3, lietojumu slāņa programmas nevar ņemt vērā (un arī neņem vērā), vai otrs dators ir Ethernet'ā vai arī token-ring'ā ar maršrutētāju pa vidu. Pat ja starpā būtu 20 maršrutētāji ar papildu fizikāliem starpsavienojumiem, lietojumiem ir jādarbojas tieši tāpat. Šī detaļu noslēpšana padara interneta jēdzienu tik varenu un noderīgu.

Cits veids, kā savienot tīklus ir ar tiltu. Tas savieno tīklus datu posma slānī, turpretī maršrutētāji savieno tīklus tīkla slānī. Tilti rada iespaidu, ka vairāki LAN'i uzrādās augšējiem tīkla slāņiem kā viens LAN's. TCP/IP internetus būvē, izmantojot maršrutētājus nevis tiltus, tādēļ mēs detalizēti apskatīsim tikai pirmos. 12. nodaļa grāmatā [Perlman 1992] salīdzina maršrutētājus un tiltus.

Tagi:
Izveidojis Kalvis Apsītis 2008-03-15 11:11
    
This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 6.4 - Documentation