06.02. ICMP ziņojumu tipi

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

06.02. ICMP ziņojumu tipi

#picref("f_6_3.gif", "6.3.attēls") ir parādīti dažādu ICMP ziņojumu tipi, ko nosaka ICMP ziņojuma tipa (type) lauks un koda (code) lauks.

Pēdējās divas kolonnas šajā zīmējumā norāda, vai ICMP ziņojums ir pieprasījuma ziņojums, vai kļūdas ziņojums. Atšķirt abus veidus ir nepieciešams, jo ICMP kļūdu ziņojumus dažreiz apstrādā īpaši. Piemēram, ICMP kļūdas ziņojumu nekad neģenerē, atbildot uz citu ICMP kļūdas ziņojumu. (Ja šāda likuma nebūtu, varētu būt scenāriji, kur viena kļūda ģenerē otru, tā savukārt ģenerē kļūdu, un tā tālāk.)

Kad nosūta ICMP kļūdas ziņojumu, ziņojums vienmēr satur IP sākumposmu un pirmos 8 baitus tai IP datagrammai, kura izraisīja šīs ICMP kļūdas ģenerēšanu. Tas ļauj ICMP saņēmējmodulim saistīt ziņojumu ar konkrētu protokolu (TCP vai UDP no protokola lauka IP sākumposmā) un konkrētu lietotāja procesu (no TCP vai UDP portu numuriem, kuri ir TCP vai UDP sākumposmā, ko arī ietver pirmie 8 IP datagrammas biti). Parādīsim šādas situācijas piemēru 6.5.nodaļā. ICMP kļūdas ziņojumu nekad neģenerē atbildot uz:

  1. Citu ICMP kļūdas ziņojumu (ICMP kļūdas ziņojumu toties drīkst ģenerēt, atbildot uz ICMP pieprasījuma ziņojumu).
  2. Datagrammu, kuras adresāts ir IP apraides adrese (#picref("f_3_9.gif", "3.9.attēls")) vai IP multiraides adrese (D klases adrese, #picref("f_1_5.gif", "1.5.attēls")).
  3. Datagrammu, kura nosūtīta kā datuposma slāņa apraide.
  4. Fragmentu, kurš nav pirmais (IP fragmentāciju aprakstīsim 11.5.nodaļā).
  5. Datagrammu, kuras avota adrese nenosaka konkrētu mītni. Tas nozīmē, ka avota adrese nevar būt nulles adrese, atcilpas adrese, apraides adrese vai multiraides adrese.

    #pic("f_6_3.gif", "500") 6.3.attēls: ICMP ziņojumu tipi

Šie likumi ir domāti apraides vētru novēršanai, kas gadījās agrāk, kad ICMP kļūdas sūtīja arī, atbildot uz apraides paketēm.