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

Show last authors
1 = 06.03. ICMP adreses maskas pieprasījums un atbilde =
2
3 ICMP adreses maskas pieprasījums ir domāts, lai bezdiska sistēma iegūtu tās apakštīkla masku ([[3.5.nodaļa>>03_05]]) //sāknēšanas// laikā. Pieprasošā sistēma apraida ICMP pieprasījumu (tas ir līdzīgi tam, kā bezdiska sistēma izmanto RARP, lai iegūtu IP adresi sāknēšanas laikā). Alternatīva metode kā bezdiska sistēmai var iegūt apakštīkla masku, ir BOOTP protokols, ko aprakstīsim [[16.nodaļā>>16]]. 6.4.attēls parāda ICMP adreses maskas pieprasījuma un atbildes ziņojumus.
4
5 {{velocity filter="none"}}
6 {{html clean="false" wiki="true"}}
7 #pic("f_6_4.gif", "500")
8 //6.4.attēls: ICMP adreses maskas pieprasījuma un atbildes ziņojumi//
9 <p/>
10 Identifikatora (//identifier//) un virknes numura (//sequence number//) lauki ICMP ziņojumā var būt uzstādīti uz jebkurām vērtībām, ko izvēlas sūtītājs, un šīs pašas vērtības atgriež atbildē. Tas ļauj sūtītājam atrast atbilstību starp atbildēm un pieprasījumiem.
11 <p/>
12 Mēs varam uzrakstīt vienkāršu programmu (to sauc ##icmpaddrmask##), kas izsūta ICMP adreses maskas pieprasījumu un drukā visas atbildes. Tā kā parasti to sūta apraides adresei, tad arī mēs tā darīsim. Galamērķa adrese (##140.252.13.63##) ir apraides adrese apakštīklam ##140.252.13.32## (#picref("f_3_12.gif", "3.12.attēls")).
13
14 {{code language="none"}}
15 sun % icmpaddnnask 140.252.13.63
16 received mask = ffffffeO, from 140.252.13.33 from ourself
17 received mask = ffffffeO, from 140.252.13.35 from bsdi
18 received mask = ffff0000, from 140.252.13.34 from svr4
19 {{/code}}
20
21 Pirmā lieta, ko ievērojam no šīs izvades - ##svr4## atgriež aplamu vērtību. Izskatās, ka ##svr4## atgriež vispārīgo B klases adreses masku, pieņemot, ka nav apakštīklu, lai gan saskarne uz ##svr4## ir bijusi konfigurēta ar pareizo apakštīkla masku:
22
23 {{code language="none"}}
24 svr4 % ifconfig emd0
25 emd0: flags=23<UP, BROADCAST ,NOTRAILERS>
26 inet 140.252.13.34 netmask ffffffe0 broadcast 140.252.13.63
27 {{/code}}
28
29 Tātad programmā ir kļūda ##svr4## veiktajā ICMP adreses maskas pieprasījuma apstrādē.
30 <p/>
31 Apskatīsim šo ziņojumu apmaiņu uz mītnes ##bsdi## izmantojot ##tcpdump## Izvade ir parādīta #picref("f_6_5.gif", "6.5.attēlā"). Norādīsim ##-e## opciju, lai redzētu aparatūras adreses:
32 <p/>
33 #pic("f_6_5.gif", "500")
34 //6.5.attēls: ICMP adreses maskas pieprasījuma nosūtīšana apraides adresei//
35 <p/>
36 Ievērojiet, ka sūtošā mītne ##sun## saņem ICMP atbildi (izvades rindiņu ar mūsu komentāru, kas parādīta agrāk), lai gan pa vadu nekas nav redzams. Tā ir ir vispārēja apraides īpatnība: sūtītājs saņem apraides paketes kopiju pa kādu atcilpas mehānismu. Tā kā pēc definīcijas jēdziens "apraide" nozīmē visas mītnes lokālajā tīklā, tai ir jāietver arī sūtītāja mītne. (Atgriežoties pie #picref("f_2_4.gif", "2.4.attēla") - kad Ethernet'a dzinis atpazīst, ka galamērķa adrese ir apraides adrese, paketi nosūta tīklam kā arī izgatavo kopiju, ko padod atcilpas saskarnei).
37 <p/>
38 Pēc tam ##bsdi## apraida atbildi, kamēr ##svr4## sūta atbildi tikai pieprasītājam. Parasti atbildei jābūt //vienraidei//, izņemot gadījumu, kad pieprasījuma avota IP adrese ir ##0.0.0.0##, kas šajā gadījumā nav taisnība. Tādēļ sūtīt atbildi apraides adresei ir BSD/386 kļūda.
39 <p/>
40 RFC apgalvo, ka sistēma nedrīkst sūtīt adreses maskas atbildi izņemot gadījumu, kad tā ir autoritatīvs adrešu masku aģents. (Lai būtu autoritatīvs aģents, mītnei ir jābūt īpaši konfigurētai sūtīt šādas atbildes. Sk. [[Pielikumu E>>App_E]]). Kā varam redzēt no šī piemēra, vairums mītnes implementāciju tomēr sūta atbildi, ja saņem šādu pieprasījumu. Dažas mītnes pat nosūta aplamu atbildi!
41 <p/>
42 Beidzamā piebilde izriet no šāda piemēra. Mēs nosūtam adreses maskas pieprasījumu mūsu pašu IP adresei un atcilpas adresei:
43
44 {{code language="none"}}
45 sun % icmpaddrmask sun
46 received mask = ff000000, from 140.252.13.33
47 sun % icmpaddrmask localhost
48 received mask = ff000000, from 127.0.0.1
49 {{/code}}
50
51 Abos gadījumos atgrieztās adreses maska atbilst atcilpas adresei, A klases adresei ##127.0.0.1##. Atkal, atsaucoties uz #pic("f_2_4.gif", "2.4.attēlu") redzam, ka IP datagrammas, kas nosūtītas uz pašas mītnes IP adresi (##140.252.13.33## šajā piemērā) patiesībā tiek nosūtītas uz atcilpas saskarni. ICMP adreses maskas atbildei ir jāatbilst apakštīkla maskai no tā interfeisa, uz kura pieprasījums tika saņemts (tā kā daudzmāju mītnei var būt dažādas apakštīklu maskas katrai saskarnei), un abos gadījumos pieprasījums tiek saņemts no atcilpas saskarnes.
52 {{/html}}
53 {{/velocity}}