06.03. ICMP adreses maskas pieprasījums un atbilde

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

06.03. ICMP adreses maskas pieprasījums un atbilde

ICMP adreses maskas pieprasījums ir domāts, lai bezdiska sistēma iegūtu tās apakštīkla masku (3.5.nodaļa) #term("sāknēšanas", "bootstrap") 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ļā. 6.4.attēls parāda ICMP adreses maskas pieprasījuma un atbildes ziņojumus.

#pic("f_6_4.gif", "500")
6.4.attēls: ICMP adreses maskas pieprasījuma un atbildes ziņojumi

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.

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")).

sun % icmpaddnnask 140.252.13.63
received mask = ffffffeO, from 140.252.13.33 from ourself
received mask = ffffffeO, from 140.252.13.35 from bsdi
received mask = ffff0000, from 140.252.13.34 from svr4

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:

svr4 % ifconfig emd0
emd0: flags=23<UP, BROADCAST ,NOTRAILERS>
inet 140.252.13.34 netmask ffffffe0 broadcast 140.252.13.63

Tātad programmā ir kļūda svr4 veiktajā ICMP adreses maskas pieprasījuma apstrādē.

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:

#pic("f_6_5.gif", "500")
6.5.attēls: ICMP adreses maskas pieprasījuma nosūtīšana apraides adresei

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).

Pēc tam bsdi apraida atbildi, kamēr svr4 sūta atbildi tikai pieprasītājam. Parasti atbildei jābūt #term("vienraidei", "unicast"), 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.

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). 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!

Beidzamā piebilde izriet no šāda piemēra. Mēs nosūtam adreses maskas pieprasījumu mūsu pašu IP adresei un atcilpas adresei:

sun % icmpaddrmask sun
received mask = ff000000, from 140.252.13.33
sun % icmpaddrmask localhost
received mask = ff000000, from 127.0.0.1

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.

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