09.03. ICMP

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

09.03. ICMP "nesasniedzamas mītnes" un "nesasniedzama tīkla" kļūdas

ICMP "nesasniedzamas mītnes" ("host unreachable") kļūdas ziņojumu izsūta maršrutētājs, kad tas saņem IP datagrammu, kuru tas nevar piegādāt adresātam vai pārsūtīt tālāk. (#picref("f_6_10.gif","6.10.attēls") parāda ICMP nesasniedzamības ziņojumu formātu.) Varam to viegli novērot savā tīklā, novācot SLIP datuposmu maršrutētājam sun, un pēc tam mēģinot sūtīt paketi cauri šim SLIP datuposmam no jebkuras citas mītnes, kura norāda sun kā noklusēto maršrutētāju.

Vecākas implementācijas BSD TCP/IP programmatūrai ģenerēja "nesasniedzamas mītnes" vai "nesasniedzama tīkla" ("network unreachable") kļūdu, atkarībā no tā, vai galamērķis bija lokālajā subnetā vai nē. 4.4BSD ģenerē tikai "nesasniedzamas mītnes" kļūdas ziņojumu.

Atcerieties no netstat izvades maršrutētājam sun, kurš parādīts iepriekšējā nodaļā, ka maršrutēšanas tabulas ieraksti, kuri izmanto SLIP datu posmu, tiek pievienoti, kad SLIP #term("datu posms", "data_link") tiek izveidots, un tiek dzēsti, kad SLIP datu posms pazūd. Tas nozīmē, ka tad, ja SLIP posms nedarbojas, uz sun nav noklusētā maršruta. Bet mēs necenšamies mainīt visas citu mītņu maršrutēšanas tabulas savā mazajā datortīklā, liekot tām izdzēst savu noklusēto maršrutu. tai vietā mēs paļaujamies uz ICMP "host unreachable", ko ģenerē sun jebkurām paketēm, kuras tas saņem un nevar nosūtīt tālāk.

Mēs to varam redzēt, darbinot ping komandu uz svr4 uz mītni, kura atrodas otrā galā SLIP iezvanpieejas posmam (kurš nedarbojas):

svr4 % ping gemini
ICMP Host Unreachable from gateway sun (140.252.13.33)
ICMP Host Unreachable from gateway sun (140.252.13.33)
^? type interrupt key to stop

9.2.attēls parāda tcpdump izvadi šim piemēram, ja to palaiž uz mītnes bsdi:

#pic("f_9_2.gif", "500")
9.2.attēls: ICMP "nesasniedzamas mītnes" ziņojums atbildē uz ping

Kad maršrutētājs sun neatrod maršrutu uz mītni gemini, tas atbild uz ICMP "echo" pieprasījumu ar "nesasniedzamas mītnes" ziņojumu.

Ja atjauno SLIP posmu, un cenšas pingot IP adresi, kura nav pieslēgta Internetam, gluži tāpat var sagaidīt kļūdu. Ir interesanti redzēt, cik tālu pakete nonāk Internetā pirms tiek atgriezts kļūdas paziņojums:

sun % ping 192.82.148.1   this IP address is not connected to the Internet
PING 192.82.148.1: 56 data bytes
ICMP Host Unreachable from gateway enss142.UT.westnet.net (192.31.39.21) 
  for icmp from sun (140.252.1.29) to 192.82.148.1

Apskatoties #picref("f_8_5.gif", "8.5.attēlu"), redzam, ka pakete izgāja cauri sešiem maršrutētājiem pirms tika konstatēts, ka IP adrese ir nederīga. Tikai tad, kad tā nonāca uz NSFNET #term("mugurkaula", "backbone") robežas, tika pamanīta kļūda. Tas nozīmē, ka seši maršrutētāji, kuri pārsūtīja paketi tālāk, to darīja pateicoties noklusētajiem maršrutēšanas likumiem, un tikai, sasniedzot NSFNET mugurkaulu, maršrutētājam bija pilnīgas zināšanas par katru tīklu, kas pieslēgts Internetam. Tas ilustrē to, ka daudzi maršrutētāji var sekmīgi darboties, zinot tikai nelielu daļu no kopējās bildes.

[Ford, Rekhter, and Braun 1993] definē #term("augstākā līmeņa maršrutēšanas domēnu", "top_level_routing_domain") kā tādu, kas uztur maršrutēšanas informāciju uz vairumu Interneta vietņu un neizmanto noklusētos maršrutus. Viņi atzīmē, ka Internetā eksistē pieci šādi augšējā līmeņa domēni - NSFNET mugurkauls, Komerciālā Interneta Centrāle (Commercial Internet Exchange, CIX), NASA Zinātnes Internets (NASA Science Internet, NSI), SprintLink un Eiropas IP mugurkauls (European IP Backbone, EBONE).

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