Wiki source code of 09.03. ICMP

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

Show last authors
1 = 09.03. ICMP "nesasniedzamas mītnes" un "nesasniedzama tīkla" kļūdas =
2
3 {{velocity filter="none"}}
4 {{html clean="false" wiki="true"}}
5 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.
6 (#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.
7 <p/>
8 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.
9 <p/>
10 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 //datu posms// 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.
11 <p/>
12 Mēs to varam redzēt, darbinot ##ping## komandu uz ##svr4## uz mītni, kura atrodas otrā galā SLIP iezvanpieejas posmam (kurš nedarbojas): <pre>
13 svr4 % <b>ping gemini</b>
14 ICMP Host Unreachable from gateway sun (140.252.13.33)
15 ICMP Host Unreachable from gateway sun (140.252.13.33)
16 ^? type interrupt key to stop
17 </pre>
18 <p/>
19 9.2.attēls parāda ##tcpdump## izvadi šim piemēram, ja to palaiž uz mītnes ##bsdi##:
20 <p/>
21 #pic("f_9_2.gif", "500")
22 //9.2.attēls: ICMP "nesasniedzamas mītnes" ziņojums atbildē uz ##ping##//
23 <p/>
24 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.
25 <p/>
26 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: <pre>
27 sun % <b>ping 192.82.148.1</b> <i>this IP address is not connected to the Internet</i>
28 PING 192.82.148.1: 56 data bytes
29 ICMP Host Unreachable from gateway enss142.UT.westnet.net (192.31.39.21)
30 for icmp from sun (140.252.1.29) to 192.82.148.1
31 </pre>
32 <p/>
33 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 //mugurkaula// 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.
34 {{/html}}
35 {{/velocity}}
36
37 [Ford, Rekhter, and Braun 1993] definē //augstākā līmeņa maršrutēšanas domēnu// 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).