Wiki source code of 01.06. Iekapsulēšana

Last modified by Valdis Vītoliņš on 2018/01/15 21:44

Show last authors
1 = 01.06. Iekapsulēšana =
2
3 {{velocity filter="none"}}
4 {{html clean="false" wiki="true"}}
5 Kad lietotne sūta datus, izmantojot TCP, šie dati tiek pārsūtīti lejup pa //protokolu steku//, caur katru slāni, kamēr tie pārtop par bitu plūsmu, ko var nosūtīt pa (fizisko) tīklu. Katrs slānis pievieno informāciju šiem datiem, pievienojot //sākumposmus// (un dažreiz pievienojot arī //beiguposma// informāciju) saņemtajiem datiem. #picref("f_1_7.gif", "1.7.attēls") parāda šo procesu. Datu vienība, ko TCP sūta uz IP sauc par //TCP segmentu//. Datu vienību, ko IP sūta tīkla interfeisam sauc par //IP datagrammu//. Bitu plūsmas vienība, kas iet caur Ethernet'am saucas //kadrs//.
6 <p/>
7 Skaitļi zem sākum- un beiguposmiem Ethernet'a kadrā #picref("f_1_7.gif", "1.7. attēlā") ir tipiskie sākumposmu izmēri baitos. Par sākumposmiem mēs pastāstīsim vairāk turpmākās nodaļās. Ethernet'a tīkla fizisko īpašību dēļ, kadra datu izmēram jābūt starp 46 un 1500 baitiem. Minimumu sastapsim [[4.5.nodaļā>>04_05]], savukārt maksimumu - [[2.8.nodaļā>>02_08]].
8 <p/>
9 Visi Interneta standarti un vairums grāmatu par TCP/IP izmanto jēdzienu //oktets// nevis //baits//. Tas ir korekts, bet senatnīgs termins, jo sākotnējā TCP/IP pētniecība tika veikta uz tādām sistēmām kā DEC-10, kuras nelietoja 8-bitu //vārdus//. Tā kā ilgu laiku datorsistēmas izmantoja 8-bitu vārdus, ar jēdzienu "baits" saprotam 8 bitus.
10 <p/>
11 Lai mēs būtu pilnīgi precīzi 1.7.attēlā, mums būtu jāsaka, ka datu vienība, ko apmaina IP un tīkla interfeiss ir //pakete//. Šī pakete var būt vai nu //IP datagramma// vai arī fragments no IP datagrammas. Fragmentāciju apspriedīsim [[11.5.nodaļā>>11_05]].
12 <p/>
13 Varētu uzzīmēt gandrīz identisku bildi arī par UDP datiem. Vienīgās izmaiņas ir tās, ka informācijas vienība, ko UDP padod IP slānim sauc par //UDP datagrammu// un UDP sākumposma izmērs ir 8 baiti.
14 <p/>
15 #pic("f_1_7.gif", "300")
16 //1.7.attēls: Datu iekapsulēšana, tiem ejot lejup pa protokolu steku//
17 <p/>
18 Atcerieties no #picref("f_1_4.gif", "1.4.attēla"), ka TCP, UDP, ICMP un IGMP visi sūta datus uz IP. IP protokolam būtu jāpievieno kaut kāds identifikators IP sākmposmam, lai norādītu slāni, kuram šie dati pieder. IP to dara, noglabājot 8-bitu vērtību savā sākumposmā, ko sauc par protokola lauku. Vērtība "1" atbilst ICMP, 2 atbilst IGMP, 6 atbilst TCP un 17 atbilst UDP.
19 {{/html}}
20 {{/velocity}}
21
22 Uz datora var būt vairākas lietotnes, kuras vienlaikus izmanto TCP, UDP vai abus šos protokolus. Lietotņu identificēšanai, transporta slāņa protokoli noglabā identifikatoru ģenerētajos sākumposmos. Gan TCP, gan UDP //avota// un //galapunkta// lietotņu identificēšanai izmanto 16-bitu portu numurus.
23
24 Savukārt tīkla interfeiss sūta un saņem kadrus gan no IP, gan ARP un RARP. Jābūt kaut kādai identifikācijai Ethernet'a sākumposmā, kas norāda, kurš tīkla slāņa protokols ģenerēja datus. Lai ar to tiktu galā, Ethernet'a sākumposmā ir 16-bitu kadra tipa lauks.