OSI modelis un TCP

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

OSI modelis un TCP

OSI modelis ir daudzslāņains, abstrakts tīkla komunikāciju apraksts, kas ir iecienīta atsauce protokolu projektēšanā. To izveidoja kā daļu no Open Systems Interconnection (OSI) iniciatīvas un to reizēm sauc par 7-slāņu OSI modeli. No augšas uz leju šie slāņi ir #term("lietotņu slānis", "application_layer"), #term("prezentācijas slānis", "presentation_layer"), #term("sesiju slānis", "session_layer"), #term("transporta slānis", "transport_layer"), #term("tīkla slānis", "network_layer"), #term("datu posma slānis", "data_link_layer") un #term("fiziskais slānis", "physical_layer"). Slānis ir saistītu funkciju kopums, kas piegādā servisus virsējam slānim un saņem servisu no apakšējā slāņa. Piemēram, slānis, kurš nodrošina bezkļūdu saziņu tīklā, dod baitu plūsmas servisu augšējam slānim, bet pats izsauc zemāku slāni, lai saņemtu un izsūtītu paketes, kuras šo baitu plūsmu nodrošina.

Vēlāki darbi saistībā ar tīkla standartizāciju (IETF, IEEE un arī OSI ietvaros) ir daudzas lietas precizējuši, tomēr tradicionālais OSI modelis var labi kalpot, lai radītu priekšstatu par tīkla arhitektūru. Tomēr jāapzinās, ka OSI modeļa jēdzieni ir izveidojušies vēsturisku abstrakciju rezultātā, tie precīzi neatspoguļo reālo situāciju. Tādēļ būtu maldīgi ļauties kārdinājumam ikvienu protokolu viennozīmīgi likt kādā no OSI 7 slāņiem. Daudzi populāri protokoli Internetā ir veidojušies kā TCP/IP protokolu steka sastāvdaļa, to modelis ir citāds un tie tīrā veidā neatbilst OSI modelim.

Vēsture

1977. gadā ANSI (Amerikas nacionālais standartu institūts) sāka darbu pie sadalītām sistēmām. Jēdziens OSI parādījās ap 1979.gadu. OSI ir divas sastāvdaļas - abstraktais tīklošanās modelis (pamata referenču modelis jeb septiņu slāņu modelis) un konkrētu protokolu kopums. Šos dokumentus var savākt no ISO vai ITU-T.

Dažādi OSI modeļa aspekti ir iespaidojuši Interneta protokolu veidošanos; tīklu sistēmu sadala slāņos; katrā slānī viens vai vairāki programmu komponenti implementē slāņa funkcionalitāti. Katrs komponents tieši mijiedarbojas vienīgi ar slāni, kas atrodas tieši zem tā un sniedz servisus slānim tieši virs tā.

Interneta protokoli nav projektēti striktā atbilstībā OSI modelim, bet gan TCP/IP parasti iedala četros slāņos. Interneta (jeb TCP/IP) protokolu gadījumā lietotņu slānis ietver OSI #term("lietotņu slāni", "application_layer"), #term("prezentācijas slāni", "presentation_layer") un lielāko daļu no sesiju slāņa. TCP/IP "End-to-end" jeb transporta slānis ietver #term("pieklājīgās aizvēršanas", "graceful_close") funkciju no OSI sesiju slāņa kā arī transporta slāni. TCP/IP starptīklu slānis ir ekvivalents OSI tīklu slānim, savukārt TCP/IP interfeisu slānis ietver OSI datu posma slāni un fizisko slāni. Šie salīdzinājumi balstīti uz sākotnējo septiņu slāņu protokolu modeli, kas definēts ISO 7498, nevis papildinājumus kā piemēram, dokumentu Internal Organization of the Network Layer.

Protokoli dod iespēju komponentam vienā #term("mītnē", "host") sadarboties ar atbilstošu komponentu attālinātā mītnē, kurš atrodas tanī pašā slānī. Servisu definīcijas turpretī apraksta funkcionalitāti, kuru slānis ar numuru N-1 piegādā slānim ar numuru N, kur N=2,3,4,5,6,7.

OSI slāņu apraksts

Vieglākai iegaumēšanai izdomātas vairākas mnemonikas, piemēram - Programmers Do Not Throw Sausage Pizza Away (t.i. atbilstoši slāņu nosaukumiem angļu valodā: Physical, Data link, Networking, Transport, Session, Presentation, Application).

Datu vienības nosaukums Slānis Funkcija
Mītnes
slāņi
Dati 7. Lietotņu Tīklu procesi saistībā ar lietotni
6. Prezentācijas Datu reprezentācija un šifrēšana
5. Sesiju Starpmītņu saziņa
Segmenti un datagrammas 4. Transporta End-to-end savienojumi un drošība (TCP)
Tīkla vides
slāņi
Pakete 3. Tīkla Maršrutu noteikšana un loģiskā adresācija (IP)
Kadrs 2. Datu posma Fiziskā adresācija (MAC & LLC)
Bits 1. Fiziskais Fizikālā vide, signālu un bināru datu pārsūtīšana
Attēls: OSI modeļa slāņi

Lietotņu slānis (#7)

Lietotņu slānis nodrošina lietotņu procesiem nepieciešamos tīklošanās pakalpojumus; tas savukārt dod pieprasījumus prezentācijas slānim. Svarīgi ievērot, ka šis slānis piegādā servisus lietotņu procesiem, nevis pašam #term("gala lietotājam", "end_user"). Piemēram, lietotņu slānis var aprakstīt failu pārsūtīšanas protokolu (piem. FTP), bet lietotājam ir jāveic darbības kādā lietotnē, lai izsauktu šo protokolu. OSI modelī nav iekļauta saskarne ar lietotāju. #term("Kopīgo lietotņu servisu apakšsslānis", "Common_Application_Services_Sublayer") piedāvā funkcionalitātes elementus, t.sk. "Remote Operations Service Element" (sal. "Internet Remote Procedure Call"), "Association Control" un "Transaction Processing" atbilstoši ACID transakciju prasībām.

Virs kopīgo lietotņu servisu slāņa ir lietotnēm būtiskas funkcijas - ziņojumu apmaiņa (X.400), direktoriju serviss (X.500), failu pārsūtīšana (FTAM), virtuālais terminālis (VTAM) un #term("pakešu darbu", "batch_job") manipulācijas (JTAM). Šie servisi ir jānošķir no lietotnēm, kuras izmanto lietotņu slāņa pakalpojumus, bet pašas nav šī slāņa sastāvdaļa. Piemēram,

  1. Failu pārsūtīšanas lietotnes, kuras lieto FTAM (OSI protokols) vai FTP (TCP/IP protokols)
  2. Pasta pārsūtīšanas klienti, kuri lieto X.400 (OSI protokols) vai SMTP/POP3/IMAP (TCP/IP protokoli)
  3. Web'a pārlūkprogrammas, kas izmanto HTTP (TCP/IP protokols); Web'ā nav atbilstoša OSI analoga.

Prezentācijas slānis (#6)

Prezentācijas slānis izveido kontekstu starp lietotņu slāņa programmatūras komponentiem, kuros šīs augstāka līmeņa komponentes var izmantot noteiktu veidu sintaksi un semantiku, ja prezentācijas slānis to saprot abos galos, kā arī nepieciešamības gadījumā nodrošina attēlojumu to starpā. Prezentācijas servisa izveidotās datu vienības savukārt tiek iekapsulētas sesijas protokolu datu vienībās un padotas zemākam līmenim protokolu stekā.

Sākotnējā prezentācijas slāņa iecere izmantoja #term("Pamata kodējuma likumus", "Basic_Encoding_Rules") no ASN.1 standarta, kas deva iespēju EBCDIC pārkodēt par ASCII vai serializēt objektus un datu struktūras par XML. ASN.1 piedāvā arī kriptogrāfijas risinājumu, kas ļauj sašifrēt saziņu starp lietotņu līmeņa komponentiem.

Uz prezentācijas slāni attiecas arī daži citi datu sintakses noteikumi, piemēram, MIME-tipi (kas ļauj e-pastā un Web lietotnēm apmainīties ar dažādu formātu failiem), JSON (praktiska alternatīva XML-iskam objektu struktūru pierakstam), OWL - nodrošina ontoloģijas, kas ļauj izmantot RDF formāta datos sastopamās sakarības.

Sesiju slānis (#5)

Sesiju slānis vada dialogus un savienojumus (jeb sesijas) starp (gala) datoriem. Tas izveido, pārvalda un pārtrauc savienojumus starp lokālo un attālināto lietotni. Tas nodrošina #term("pilno dupleksu", "full_duplex"), #term("pusdupleksu", "half_duplex") vai #term("simpleksu", "simplex") saziņas režīmu un nosaka #term("kontrolpunktu", "checkpoint"), #term("atlikšanas", "adjournment"), #term("izbeigšanas", "termination") un #term("pārstartēšanas", "restart") procedūras. Saskaņā ar OSI modeli šis slānis ir atbildīgs par sesiju #term("pieklājīgo aizvēršanu", "graceful_close"), ar ko nodarbojas TCP, kā ari par sesiju kontrolpunktiem un to atjaunošanu, ar ko TCP/IP protokoli parasti nenodarbojas. Sesiju slāni bieži izmanto lietotnēs, kurās izmanto #term("attālinātos izsaukumus", "remote_procedure_call") (RPC).

"iSCSI", kas implementē #term("Mazo datorsistēmu interfeisu", "Small_Computer_Systems_Interface") (SCSI) var būt iekapsulēts TCP/IP paketēs. Tas ir sesiju slāņa protokols, ko izmanto #term("datu glabāšanas tīklos", "Storage_Area_Network") un iekšēji - starp procesoriem un augstas veiktspējas datu glabāšanas ierīcēm. iCSI izmanto TCP garantētam transportam un sūta SCSI #term("komandu apraksta blokus", "Command_Descriptor_Block") (CDB) kā derīgo kravu, lai izveidotu virtuālu SCSI #term("maģistrāli", "bus") starp iSCSI iniciatoriem un iSCSI mērķiem.

Transporta slānis (#4)

Transporta slānis ļauj caurspīdīgi pārsūtīt datus starp komunikācijas galiem, piedāvājot uzticamus (vai līdzīgā abstrakcijas līmenī iekapsulētus neuzticamus) datu pārsūtīšanas servisus augšējiem slāņiem. Transporta slānis kontrolē dotās saites drošību ar plūsmas vadību, segmentēšanu/desegmentēšanu un kļūdu kontroli. Daži protokoli ir orientēti uz stāvokli un savienojumu. T.i. transporta slānis var uzskaitīt pārsūtāmos segmentus un #term("atkalsūtīt", "retransmit") tos, kurus neizdodas pārsūtīt.

Lai gan tam nav tiešas saistības ar OSI modeli un tas arī īsti neatbilst OSI priekšstatam par transporta slāni, labāk zināmais transporta līmeņa protokols ir #term("Pārsūtīšanas vadības protokols", "Transmission_Control_Protocol") (TCP) kā arī #term("Lietotāja datagrammu protokols", "User_Datagram_Protocol") (UDP).

No paša OSI protokoliem, pastāv 5 transporta līmeņa protokolu klases - sākot no 0.klases (ko apzīmē ar TP0, kam ir vismazāk kļūdu labošanas iespēju) līdz 4.klasei (ko apzīmē ar *TP4", kurš domāts darbam nedrošos tīklos - līdzīgos globālajam Internetam). 4.klase ir vistuvākā TCP protokolam, lai gan TCP satur funkcijas, piemēram, #term("pieklājīgo aizvēršanu", "graceful_close"), ko OSI pieraksta sesiju slānim. TP0-TP4 klašu dažādie raksturlielumi attēloti sekojošā tabulā:

Funkcijas nosaukums TP0 TP1 TP2 TP3 TP4
#term("Savienojumorientācijas", "connection_oriented") iespēja - - - Yes Yes
#term("Bezsavienojumu", "connectionless") iespēja - - - No Yes
#term("Segmentācija", "segmentation") Yes Yes Yes Yes Yes
#term("Atkalsavākšana", "reassembly") Yes Yes Yes Yes Yes
#term("Atlabšana", "error_recovery") No Yes No No Yes
Savienojuma #term("atkalsākšana", "reinitiate"), ja daudz neapstiprinātu #term("PDU", "protocol_data_unit") No Yes No Yes Yes
#term("Multipleksēšana", "multiplexing") un #term("demultipleksēšana", "demultipleksēšana") uz konkrētas #term("virtuālās ķēdes", "virtual_circuit") No No Yes Yes Yes
#term("Uzticams transporta serviss", "reliable_transport_service") No Yes Yes Yes Yes

Vienkāršs veids kā iztēloties transporta slāni ir to salīdzinot ar pasta nodaļu, kas nodarbojas ar pasta nosūtīšanu un šķirošanu. Tomēr jāiegaumē, ka pasts nodarbojas tikai ar pasta sūtījuma ārējo aploksni. Augstāki slāņi var būt līdzvērtīgi "dubultām aploksnēm", piemēram, kriptogrāfiski prezentācijas servisi, kurus var izlasīt tikai adresāts. Vienkāršoti sakot, #term("tunelēšanas", "tunneling") protokoli darbojas transporta līmenī, piemēram, pārnesot ne-IP protokolus, piemēram IBM'a SNA vai Novell'a IPX pa IP tīklu, vai arī iešifrētu saziņu pa IPsec. Lai gan #term("GRE", "Generic_Routing_Encapsulation") var šķist tīkla slāņa protokols, ja #term("derīgo datu", "payload") iekapsulēšana notiek tikai galapunktā, GRE kļūst līdzīgāks transporta protokolam, kurš izmanto IP #term("galvenes","header"), bet satur pilnus kadrus jeb paketes, ko piegādāt #term("galapunktā", "endpoint"). #term("2.slāņa tunelēšanas protokols", "Layer_2_Tunneling_Protocol") pārnes #term("PPP protokola", "Point_to_Point_Protocol") kadrus transporta slāņa pakešu iekšienē.

Tīkla slānis (#3)

Tīkla slānis dot funkcionālas iespējas pārvietot dažāda garuma datu virknes no #term("avota","source") uz #term("galapunktu", "destination") cauri vienam vai vairākiem tīkliem, uzturot servisa kvalitāti, kas nepieciešama transporta slānim. Tīkla slānis veic tīkla #term("maršrutēšanas", "routing") funkcijas un var arī veikt #term("fragmentāciju", "fragmentation") un #term("atkalsavākšanu", "reassembly"), kā arī paziņot par piegādes kļūdām. Maršrutētāji darbojas šajā slānī - sūtīdami datus cauri paplašinātam tīklam un nodrošinot globālo Internetu. Tīkla slānis lieto loģisku #term("adresācijas shēmu", "addressing_scheme") - vērtības hierarhiski piešķir tīklu pārvaldes organizācijas un lokālo tīklu administratori.

Pazīstamākais 3.slāņa protokola piemērs ir #term("Interneta Protokols", "Internet_Protocol") (IP). Tas veic #term("bezkonekciju", "connectionless") datu pārsūtīšanu posmu pa posmam no avota sistēmas uz #term("ieejas maršrutētāju", "ingress_router"), pēc tam varbūt cauri vienam vai vairākiem maršrutētājiem, uz #term("izejas maršrutētāju", "egress_router") un visbeizot uz galamērķa sistēmu. IP neatbild par uzticamu piegādi uz nākamo posmu, bet tikai par kļūdainu pakešu atklāšanu, lai varētu tās izmest. Ja nākamā posma vide nevar pieņemt paketi pašreizējā garumā, IP nodrošina tās #term("fragmentāciju", "fragmentation") pietiekami mazās paketēs, ka nākamā vide tās var paņemt pretī.

Tīkla pārvaldības protokoli (kā aprakstīts Management Annex, ISO 7498/4) pieder tīkla slānim. Tie ir maršrutēšanas protokoli, #term("multiraides", "multicast") grupu pārvaldība, tīkla slāņa informācija un kļūdas kā arī tīkla slāņa adrešu piešķiršana. Šādas ar pārvaldību saistītas tīkla saziņas piederību tīklu slānim nosaka #term("derīgie dati", "payload") ko tas pārsūta, nevis tas, kura veida protokols ar to nodarbojas.

Datu posma slānis (#2)

Datu posma slānis dod funkcionālos līdzekļus, lai pārsūtītu datus starp tīkla kompentēm un lai konstatētu un izlabotu kļūdas, kas var rasties fiziskajā slānī. Sākotnēji šis slānis bija domāts point-to-point un point-to-multipoint videi, kas raksturīga plaša mēroga videi telefonu sistēmās. LAN arhitektūra, kas ietver apraides-spējīgu multipiekļuves vidi, tika veidota neatkarīgi no ISO darbības - IEEE projektā 802. IEEE darbs pieņēma, ka apakšslāņu funkcijas un vadība nav vajadzīgas WAN lietošanai. Mūsdienās tikai kļūdu labošana (nevis plūsmas vadība ar #term("slīdošo logu", "sliding_window") ir sastopama tādos protokolos kā Point-to-Point protokolā PPP un LAN vidē IEEE 802.2 LLC slānis netiek lietots vairumā Etherneta protokolu. Citos LAN protokolos plūsmas vadība un apstiprinājumu mehānismi tiek reti lietoti. Slīdošā loga plūsmas kontrole un apstiprinājumi parādās transporta slāņa protokolos, piemēram, TCP, bet datu posma līmenī to izmanto nišu protokolos, kur X.25 sniedz veiktspējas priekšrocības.

Gan WAN gan LAN servisi sakārto bitus, kuri nāk no fiziskā slāņa loģiskās virknītēs, ko sauc par #term("kadriem", "frame"). Ne visi fiziskā slāņa biti nokļūst kadros, jo daži biti ir domāti paša fiziskā slāņa funkcionēšanai. Piemēram FDDI datu plūsmā katru piekto bitu neizmanto datu saišu slānim.

WAN protokolu arhitektūra

Savienojumorientēti WAN datu posma protokoli papildus kadru veidošanai konstatē un var izlabot kļūdas. Tie arī spēj kontrolēt raidīšanas ātrumu. WAN datu posma slānis var realizēt slīdošā loga plūsmas kontroli un apstiprinājuma mehānismu, lai varētu garantēt kadru piegādi. Tā tas notiek SDLC un HDLC, kā arī HDLC atvasinājimiem, piemēram, LAPB un LAPD.

IEEE 802 LAN protokolu arhitektūra

Bezsavienojumu LAN'i sākās ar pirms-IEEE Ethernet'a specifikāciju, kas ir IEEE 802.3 priekštecis. Šis slānis pārvalda sistēmu mijiedarbību ar kopīgu vidi, kas ir #term("Vides Piekļuves Vadības", "Media_Access_Control") (MAC) apakšslānis. Virs šī MAC apakšslāņa ir no vides neatkarīgais IEEE 802.3 #term("Loģisko Saišu Vadības", "Logical_Link_Control") (LLC) apakšslānis, kas nodarbojas ar adresāciju un multipleksēšanu multipiekļuves vidē. Lai gan IEEE 802.3 ir dominējošais LAN protokols un IEEE 802.11 - bezvadu LAN protokols, veclaicīgi MAC slāņi ir Token-ring un FDDI. MAC apakšslānis kļūdas konstatē, bet neizlabo.

Fiziskais slānis (#1)

Fiziskais slānis nosaka iekārtu elektriskās un fizikālās specifikācijas. Tas definē attiecību starp iekārtu un fizikālo vidi. Tas nozīmē adatiņu izvietojumu savienojumos, spriegumus, kabeļu aprakstus, #term("rumbas", "hub"), #term("atkārtotājus", "repeater"), #term("tīklu adapterus", "network_adapter"), #term("mītnes-maģistrāles adapterus", "host_bus_adapter").

Lai saprastu fiziskā slāņa funkcijas atšķirībā no datu posma slāņa funkcijām, jāpiebilst, ka fiziskais slānis pirmkārt nodarbojas ar vienas ierīces mijiedarbību ar sakaru vidi, turpretī datu posma slānis galvenokārt nodarbojas ar vairāku ierīču savstarpēju mijiedarbību, kuras visas saziņai izmanto kopīgu vidi. Fiziskais slānis nosaka, kā vienai ierīcei vajag raidīt vidē un kā otrai ierīcei saņemt datus no vides (lai gan parasti tas neapraksta kā ierīce būtu pieslēdzama videi).

Galvenās funkcijas un servisi, ko nodrošina fiziskais slānis ir sekojošas:

  • Elektriska savienojuma ar komunikāciju vidi #term("izveidošana", "establishment") un #term("pārtraukšana", "termination").
  • Piedalīšanās procesā, kur komunikāciju resursus jeb #term("vidi", "medium") kopīgi lieto daudzi lietotāji.
  • Modulāciju jeb pārveidošanu starp digitālu datu attēlojumu lietotāja ierīcē un signāliem, kas jāraida pa #term("sakaru kanālu", "communications_channel"). Šie ir signāli, kas darbojas fiziskajos kabeļos (vara vados un optiskajās šķiedrās) vai tiek sūtīti pa radio linku.
Paralēlās SCSI maģistrāles darbojas šajā slānī, lai gan jāpiebilst, ka loģiskais SCSI protokols ir transporta slāņa protokols, kurš darbojas šajā maģistrālē. Daudzi fiziskā slāņa Ethernet'a standarti arī ir šajā slānī; Ethernet's sevī ietver gan šo slāni, gan arī datu posma slāni. Tas pats sakāms arī par citiem lokālajiem tīkliem, piemēram Token-ring'u, FDDI un IEEE 802.11, kā arī personāliem tīkliem, piemēram, Bluetooth un IEEE 802.15.4.

Saskarnes

Ne OSI modelis ne arī OSI protokoli nedefinē programmējamus saskarnes, atskaitot visai abstraktus servisu aprakstus. Protokolu specifikācijas precīzi definē saskarnes starp dažādiem komponentiem, bet programmatūras interfeisi ir atkarīgi no OSI implementācijas.

Piemēram, Winsock, un Berkeley #term("ligzdas", "socket") ir saskarnes starp lietotņu slāņiem (slānis #5 un augstāki slāņi) un transportu (slānis #4). #term("Tīkla dziņu saskarņu specifikācija", "Network_Driver_Interface_Specification") (NDIS) un #term("atvērtā datu posma saskarne", "Open_Data_Link_Interface") (ODI) ir saskarne starp vidi (slānis #2) un tīkla protokolu (slānis #3). Saskarņu standarti (izņemot fiziskā slāņa saskarni ar vidi) ir aptuvenas implementācijas saskaņā ar OSI Servisu Specifikācijām.

TCP/IP un radniecīgu protokolu saistība ar dažādiem OSI slāņiem

Lietotņu slānis
NNTP, SIP, SSI, DNS, FTP, Gopher, HTTP, NFS, NTP, DHCP, SMPP, SMTP, SNMP, Telnet
Prezentācijas slānis
MIME, XDR, SSL, TLS (TCP/IP šo neatzīst par atsevišķu slāni)
Sesiju slānis
#term("Ligzdas","socket"), TCP sesijas, SIP
Transporta slānis
TCP, UDP, IPsec, PPTP, L2TP
Tīkla slānis
IP, ARP, ICMP, RIP, OSPF, BGP, IGMP, IS-IS
Datu posma slānis
PPP, SLIP, Ethernet
Fiziskais slānis
RJ 45, BNC

Atsauces

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