Şəbəkədə problemin səbəbi çox ola bilər, adi fiziki bağlantıdan tutmuş, provayder səviyyəsinə qədər. Problemin hardan qaynaqlandığını tapmaq üçün şəbəkədə çalışan bütün avadanlıqlarda təməl alətlər var. Bunlar ping və traceroute tətbiqləridir.
Nədən danışacağıq:
ping
Açıqlaması Packet InterNet Grooper olan kiçik tətbiq 1983-cü ildə yazılıb. Müəllif tətbiqin adını sonar sistemin çıxardığı səsdən götürüb. Elə ping tətbiqinin iş prinisipi də sonar cihazlarla oxşardır. Ping şəbəkədə hər hansı ünvanın əlçatan olub-olmadığını yoxlamaq üçün ICMP (Internet Control Message Protocol) paketləri göndərir. ICMP OSI şəbəkə modelinin 3-cü pilləsində (Network) çalışır.
C:\Users\Root>ping google.com
Pinging google.com [216.58.208.206] with 32 bytes of data:
Reply from 216.58.208.206: bytes=32 time=20ms TTL=58
Reply from 216.58.208.206: bytes=32 time=20ms TTL=58
Reply from 216.58.208.206: bytes=32 time=21ms TTL=58
Reply from 216.58.208.206: bytes=32 time=20ms TTL=58
Ping statistics for 216.58.208.206:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 20ms, Maximum = 21ms, Average = 20ms
ping tətbiqi bütün ƏS-lərdə var, lakin hər ƏS-də bir qədər fərqli çalışır. Məsələn, Windows ƏS-də ping varsayılan olaraq 4 paket göndərir. Unix əsasında çalışan sistemlərdə isə proses Ctrl+C kombinasiyası basılana qədər davam edir. Varsayılan olaraq sistem 32 baytlıq (Unix/Linux-da 56 baytlıq) bir paket göndərir. Paketin tərkibində isə latın əlifbasının hərflərindən ibarət bir məlumat var(mavi rənglə seçilib).

Qarşı tərəfi uğurla pingləyə bilsək cavabında Echo Reply paketi alırıq. Bu paketdə bizə ping sorğuları göndərdiyimiz sistemin IP ünvanı (Reply from 216.58.208.206), cavab paketinin həcmi (bytes=32), paketin səyahət müddəti (time=20ms) – bu paketin bizim kompüterdən çıxıb geri gəlməyə sərf etdiyi vaxtı göstərir. Bu dəyər nə qədər aşağı olsa, o qədər yaxşıdır. Time-to-Live (TTL=58) – bu paketin ömrünü göstərir. IP şəbəkələrdə sonsuz dövrənin qarşısını almaq məqsədi ilə paketə maksimum 255 ola bilən TTL dəyəri tətbiq olunur. Bu o deməkdir ki, əgər 255 cihazdan keçdikdən sonra paketə cavab alınmazsa paket məhv edilir.
TTL dəyərinə görə hətta ƏS-ni müəyyən etmək olar. Məsələn, əgər pinglənən cihaz Windows-dursa TTL dəyəri 128 olacaq. Linux əsaslı sistemdirsə – 64.
Paket hər dəfə router-dən keçən zaman TTL dəyəri 1 vahid azalır. Əgər sonuncu əməliyyatdan sonra TTL dəyəri 0-a bərabər olsa, router belə paketi məhv edir və bu haqda məlumatı sorğulayan sistemə göndərir:
C:\Users\Root>ping -i 2 google.com
Pinging google.com [142.250.186.206] with 32 bytes of data:
Reply from 84.116.254.140: TTL expired in transit.
Reply from 84.116.254.140: TTL expired in transit.
Reply from 84.116.254.140: TTL expired in transit.
Reply from 84.116.254.140: TTL expired in transit.
Ping statistics for 142.250.186.206:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Yuxarıdakı nümunədə -i parametri vasitəsi ilə TTL dəyərini 2 təyin etmişik. Bu o deməkdir ki, paket ünvana çatmaq üçün cəmi iki routerdən keçməlidir, əks halda paket məhv ediləcək. TTL expired in transit mesajı bizə məhz bu haqda məlumat verir. Reply from hissəsində isə cavabı göndərən routerin IP ünvanını görə bilərik.
ping sorğuları sonunda kiçik bir statistika verir. Göndərilən (Sent = 4), qəbul edilən (Received = 4) və yolda itən paketlərin sayı (Lost=0). Növbəti nümünədə ixtiyarı bir domeni pingləməyə cəhd etdim:
C:\Users\Root>ping goog.com
Pinging goog.com [35.163.48.255] with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 35.163.48.255:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)
Request timed out mesajı o deməkdir ki, sorğu ünvana çatıb, lakin qarşı tərəf tələb olunan müddət ərzində cavab vermyib. Nəticədə biz 100%-lik paket itkisi görürük. Windows ƏS sorğuya cavab üçün 5 saniyə gözləyir.
C:\Users\Root>ping 192.168.0.2
Pinging 192.168.0.2 with 32 bytes of data:
Reply from 192.168.0.10: Destination host unreachable.
Reply from 192.168.0.10: Destination host unreachable.
Reply from 192.168.0.10: Destination host unreachable.
Reply from 192.168.0.10: Destination host unreachable.
Ping statistics for 192.168.0.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Əgər ping zamanı cavabda Destination host unreachable alırıqsa, bu o deməkdir ki, ping göndərdiyimiz ünvan əlçatan deyil.
ping paremetrləri
ping tətbiqi bizə varsayılan parametrləri dəyişməyə imkan verir. Hər əməliyyat sistemində bu paremetrlər və açar sözləri fərqlidir. ping /? komandası ilə mümkün paremetrləri görmək olar:
C:\Users\Root>ping /?
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
[-r count] [-s count] [[-j host-list] | [-k host-list]]
[-w timeout] [-R] [-S srcaddr] [-c compartment] [-p]
[-4] [-6] target_name
Options:
-t Ping the specified host until stopped.
To see statistics and continue - type Control-Break;
To stop - type Control-C.
-a Resolve addresses to hostnames.
-n count Number of echo requests to send.
-l size Send buffer size.
-f Set Don't Fragment flag in packet (IPv4-only).
-i TTL Time To Live.
-v TOS Type Of Service (IPv4-only. This setting has been deprecated
and has no effect on the type of service field in the IP
Header).
-r count Record route for count hops (IPv4-only).
-s count Timestamp for count hops (IPv4-only).
-j host-list Loose source route along host-list (IPv4-only).
-k host-list Strict source route along host-list (IPv4-only).
-w timeout Timeout in milliseconds to wait for each reply.
-R Use routing header to test reverse route also (IPv6-only).
Per RFC 5095 the use of this routing header has been
deprecated. Some systems may drop echo requests if
this header is used.
-S srcaddr Source address to use.
-c compartment Routing compartment identifier.
-p Ping a Hyper-V Network Virtualization provider address.
-4 Force using IPv4.
-6 Force using IPv6.
ping -t
Vacib olan bir neçə parametrin üzərindən keçək. -t parametri varsayılan 4 paket əvəzinə sonsuz icmp sorğular göndərir və Ctrl+C klaviş kombinasiyası ilə prosesi dayandırmaq mümkündür. Bu adətən uzaqda olan cihazların yenidən başladılması və ya şəbəkədə hər hansı bir dəyişiklik edən zaman istifadə olunur ki, paket itsə dərhal xəbərdar olaq.
C:\Users\Root>ping -t google.com
Pinging google.com [2a00:1450:401b:810::200e] with 32 bytes of data:
Reply from 2a00:1450:401b:810::200e: time=20ms
Reply from 2a00:1450:401b:810::200e: time=17ms
Reply from 2a00:1450:401b:810::200e: time=15ms
Reply from 2a00:1450:401b:810::200e: time=15ms
Reply from 2a00:1450:401b:810::200e: time=16ms
Reply from 2a00:1450:401b:810::200e: time=18ms
Reply from 2a00:1450:401b:810::200e: time=14ms
Ping statistics for 2a00:1450:401b:810::200e:
Packets: Sent = 7, Received = 7, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 14ms, Maximum = 20ms, Average = 16ms
Control-C
^C
ping -4 -6
Yuxarıdakı nümunəyə fikir versəniz, sorğuların IPv6 formatlı ünvana göndərildiyini görə bilərsiniz. Səbəb mənim istifadə etdiyim provayderlə bağlıdır. Amma bu davranışı dəyişmək olar ki, IPv4 istifadə edilsin. Bunun üçün ping -4 komandasında istifadə edə bilərik. IPv6 üçün isə müvafiq olaraq -6 parametri yazılır:
C:\Users\Root>ping -4 google.com
Pinging google.com [216.58.208.206] with 32 bytes of data:
Reply from 216.58.208.206: bytes=68 (sent 32) time=20ms TTL=58
Reply from 216.58.208.206: bytes=68 (sent 32) time=20ms TTL=58
Reply from 216.58.208.206: bytes=68 (sent 32) time=20ms TTL=58
Reply from 216.58.208.206: bytes=68 (sent 32) time=21ms TTL=58
ping -a
Bu parametr pinglədiyimiz IP ünvanın domen adını göstərmək üçün istifadə olunur. Bunun adına RARP Reverse ARP deyilir.
C:\Users\Root>ping -a 84.116.254.140
Pinging pl-ktw01a-rt1.aorta.net [84.116.254.140] with 32 bytes of data:
Reply from 84.116.254.140: bytes=32 time=14ms TTL=63
Reply from 84.116.254.140: bytes=32 time=14ms TTL=63
Reply from 84.116.254.140: bytes=32 time=15ms TTL=63
Reply from 84.116.254.140: bytes=32 time=16ms TTL=63
Ping statistics for 84.116.254.140:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 14ms, Maximum = 16ms, Average = 14ms
ping -n
Əvvəldə qeyd etmişdik ki, Windows ƏS varsayılan olaraq cəmi 4 paket göndərir, Unix əsaslı sistemlər isə fərqli davranır və uzunmüddətli ping göndərir. Bu davranışı dəyişmək üçün -n (Unix-də -c ) paremetrindən istifadə olunur:
C:\Users\Root>ping -n 2 google.com
Pinging google.com [2a00:1450:401b:810::200e] with 32 bytes of data:
Reply from 2a00:1450:401b:810::200e: time=17ms
Reply from 2a00:1450:401b:810::200e: time=19ms
Ping statistics for 2a00:1450:401b:810::200e:
Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 17ms, Maximum = 19ms, Average = 18ms
ping -l -f
Bəzən şəbəkədə 32 baytdan daha çox paket göndərmək lazım olur. Bu problemin MTU-dan qaynaqlanıb qaynaqlanmadığını aşkarlamağa imkan verir.
MTU dəyəri router və ya svitç tərəfindən emal edilə bilən paketin maksimal həcmini müəyyən edir. Bu dəyər iki veriləndən cəmlənir: MSS (Maximum Segment Size) + Headers (IP (20 bayt) və TCP (20 bayt) başlıqları – 40 bayt). Adətən MTU 1500 bayt olur və daha böyük paketlər 1500 baytlıq kiçik paketlərə bölünür. Prosesin adı fraqmentasiyadır.
-l (kiçik L) və -f parametrləri birgə çalışaraq şəbəkədə ən kiçik MTU dəyərini tapmağa imkan verir. -f parametri Don’t fragment yəni paketi hissələrə bölmə deməkdir. -l isə paketin həcmini dəyişməyə imkan verir:
C:\Users\Root>ping -l 1432 google.com -f
Pinging google.com [142.250.203.206] with 1432 bytes of data:
Reply from 142.250.203.206: bytes=68 (sent 1432) time=21ms TTL=58
Reply from 142.250.203.206: bytes=68 (sent 1432) time=19ms TTL=58
Reply from 142.250.203.206: bytes=68 (sent 1432) time=23ms TTL=58
Reply from 142.250.203.206: bytes=68 (sent 1432) time=20ms TTL=58
Ping statistics for 142.250.203.206:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 19ms, Maximum = 23ms, Average = 20ms
C:\Users\Root>ping -l 1433 google.com -f
Pinging google.com [142.250.203.206] with 1433 bytes of data:
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Ping statistics for 142.250.203.206:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Yuxarıdakı nümunədə şəbəkədə maksimum MTU-nun 1432 + 28 = 1460 bayt olduğunu görə bilərik (IP (20) və ICMP(8) başlıq). Çünki 1432 bytlıq paket uğurla ünvana çatır, lakin bir bayt artıq olan paketin isə fraqmentlərə bölünməli olduğu haqqında məlumat alırıq: Packet needs to be fragmented but DF set.
ping -w
Varsayılan olaraq Windows ƏS hər paketə cavab üçün 5 saniyə gözləyir. Lakin bu dəyəri artırmaq və ya azalmaq olar. Bunun üçün -w parametrindən istifadə edirik. Parametrin dəyəri millisaniyələrdə göstərilir. Yəni gözləmə müddətini 10 saniyə etmək üçün ping -w 10000 yazmaq lazımdır.
traceroute
Tutaq ki, hər-hansı bir hosta ping sorğuları göndərdik, amma cavab almadıq. Hostun işlədiyindən əminik. Belə olan halda sorğunun ünvana gedən yolda olan hansı cihazda ilişdiyinə baxmaq lazım ola bilər. Bunun üçün traceroute (Windows-da tracert) tətbiqindən istifadə edilir. traceroute da ping kimi müxtəlif ƏS-lərdə fərqli çalışır. Məsələn, Unix/Linux əsaslı sistemlərdə ƏS sorğuları 33434-dən başlayaraq ixtiyarı UDP portuna göndərir. Windows-da isə adi ping sorğulardan istifadə olunur. traceroute-dan istifadə qaydası elə ping ilə eynidir. Dəstək menyusunun çağırmaq üçün tracert /? (Linux/Unix traceroute -h) komandasından istifadə edilir:
C:\Users\Root>tracert /?
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]
[-R] [-S srcaddr] [-4] [-6] target_name
Options:
-d Do not resolve addresses to hostnames.
-h maximum_hops Maximum number of hops to search for target.
-j host-list Loose source route along host-list (IPv4-only).
-w timeout Wait timeout milliseconds for each reply.
-R Trace round-trip path (IPv6-only).
-S srcaddr Source address to use (IPv6-only).
-4 Force using IPv4.
-6 Force using IPv6.
traceroute-nin parametrləri ping ilə demək olar eynidir. Fərqli olan -d parametridir ki, bu da IP ünvanları domen adlarına çevirməmək komandasını verir. Aşağıda tracert komandasının nəticəsini görə bilərik:
C:\Users\Root>tracert -4 google.com
Tracing route to google.com [216.58.208.206]
over a maximum of 30 hops:
1 3 ms 4 ms 3 ms 192.168.0.1
2 15 ms 13 ms 15 ms pl-ktw01a-rt1.aorta.net [84.116.254.140]
3 * * * Request timed out.
4 24 ms 19 ms 21 ms pl-waw26b-rc1-ae-4-0.aorta.net [84.116.137.30]
5 20 ms 20 ms 19 ms pl-waw26b-ri1-ae-24-0.aorta.net [84.116.138.73]
6 20 ms 20 ms 20 ms 72.14.203.234
7 20 ms 20 ms 21 ms 142.250.227.13
8 21 ms 26 ms 22 ms 142.250.224.89
9 22 ms 20 ms 20 ms waw07s02-in-f14.1e100.net [216.58.208.206]
Trace complete.
Gördüyümüz kimi, burada domen adları və IP ünvanlar göstərilib. -d komandasını əlavə etsək yalnız IP ünvanlar əks olunacaq. Nəticəyə nəzər salaq:
- Nəticənin 1-ci sütünü paketin keçdiyi routerlərin sıra nömrəsini göstərir.
- 2-4 sütünlar paketin səyahət üçün sərf etdiyi vaxtı göstərir. Bəs niyə üç? Çünki traceroute bir sorğuda 3 paket göndərir. Bunun səbəbi paketə cavab alınmadığı halda problemin zamanla bağlı olmadığını müəyyən etməkdir. Cavab alınan hər bir paketin isə səyahət vaxtı qeyd edilir. Diqqət etsəniz 3-cü cihazda hər üç sütun üçün * işarəsi qeyd olunub. Bu o deməkdir ki, 3-cu cihaz bizə cavab verməyib. Bu adətən firewall kimi təhlükəsizlik avadanlıqları olur.
- 5-ci sütünda sorğuya cavab verən cihazın IP ünvanı qeyd olunub.
Əslində traceroute işləmə məntiqi ping-ə əsaslanıb. ƏS traceroute paketini göndərəndə ilkin olaraq TTL dəyərini 1 qoyur. Şəbəkədə olan birinci router TTL dəyirini bir vahid azaldır və TTL dəyəri 0 olduğu üçün TTL Exceeded tipli mesaj göndərir. traceroute tətbiqi bu məlumatı görür və TTL dəyərini 1 vahid artıraraq yeni sorğu göndərir. Bu dəfə ikinci cihaz TTL dəyərinin 0 olduğunu görüb oxşar mesajı göndərir. Bu proses sorğu təyinat ünvanına çatana qədər davam edir. Bizim nümunədə sorğu 8 cihazdan keçir 9-cu isə istədiyimiz ünvandır.
tracroute Wireshark-ın gözü ilə
Wireshark tətbiqi ilə traceroute paketlərinə baxsaq qeyd etdiyim məqamları aydın şəkildə görə bilərik:

Şəkildəki dumpda ilk 6 sətr bir sorğuya aiddir. Şəkilə böyüdün baxsanız sorğuya cavab olaraq Time-to-live exceeded mesajı görəcəksiniz. Bu mənim evdəki routerimdən gələn cavabdır. Birinci paketin detallarına baxaq:
Internet Protocol Version 4, Src: 192.168.0.10, Dst: 216.58.208.206
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
Total Length: 92
Identification: 0x0db7 (3511)
000. .... = Flags: 0x0
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..0. .... = More fragments: Not set
...0 0000 0000 0000 = Fragment Offset: 0
Time to Live: 1
[Expert Info (Note/Sequence): "Time To Live" only 1]
["Time To Live" only 1]
[Severity level: Note]
[Group: Sequence]
Protocol: ICMP (1)
Header Checksum: 0x422f [validation disabled]
[Header checksum status: Unverified]
Source Address: 192.168.0.10
Destination Address: 216.58.208.206
Time to Live (TTL) dəyərinə baxın 1-ə bərabərdir. Növbəti üç paketə baxaq:

Bu dəfə cavab 84.116.254.140 IP-li cihazdan gəlib. Bu paketin TTL dəyərinə baxaq:
Internet Protocol Version 4, Src: 192.168.0.10, Dst: 216.58.208.206
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
Total Length: 92
Identification: 0x0dba (3514)
000. .... = Flags: 0x0
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..0. .... = More fragments: Not set
...0 0000 0000 0000 = Fragment Offset: 0
Time to Live: 2
[Expert Info (Note/Sequence): "Time To Live" only 2]
["Time To Live" only 2]
[Severity level: Note]
[Group: Sequence]
Protocol: ICMP (1)
Header Checksum: 0x412c [validation disabled]
[Header checksum status: Unverified]
Source Address: 192.168.0.10
Destination Address: 216.58.208.206
Və nəhayət sonuncu paketə baxaq:

Sorğulara cavab bizə lazım olan ünvandan gəlib. Bu sorğunun TTL dəyərinə baxaq:
Internet Protocol Version 4, Src: 192.168.0.10, Dst: 216.58.208.206
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
Total Length: 92
Identification: 0x0dcf (3535)
000. .... = Flags: 0x0
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..0. .... = More fragments: Not set
...0 0000 0000 0000 = Fragment Offset: 0
Time to Live: 9
Protocol: ICMP (1)
Header Checksum: 0x3a17 [validation disabled]
[Header checksum status: Unverified]
Source Address: 192.168.0.10
Destination Address: 216.58.208.206
[Destination GeoIP: US, ASN 15169, GOOGLE]
[Destination GeoIP Country: United States]
[Source or Destination GeoIP Country: United States]
[Destination GeoIP ISO Two Letter Country Code: US]
[Source or Destination GeoIP ISO Two Letter Country Code: US]
[Destination GeoIP AS Number: 15169]
[Source or Destination GeoIP AS Number: 15169]
[Destination GeoIP AS Organization: GOOGLE]
[Source or Destination GeoIP AS Organization: GOOGLE]
[Destination GeoIP Latitude: 37.751]
[Source or Destination GeoIP Latitude: 37.751]
[Destination GeoIP Longitude: -97.822]
[Source or Destination GeoIP Longitude: -97.822]
Varsayılan olaraq traceroute maksimum 30 cihaza qədər gedə bilər. Lakin bu davranışı dəyişmək olar və bunun üçün -h parametrindən istifadə etmək olar. Paremetrin dəyəri maksimum 255 ola bilər. Tapın görək niyə.
Xülasə
ping və traceroute kimi alətlər şəbək inzibatçıları tərəfindən tez-tez istifadə olunur. Amma təkcə ping və traceroute məlumatlarına əsaslnamaq olmaz, çünki şəbəkədə bu sorğuları bloklayan cihazlar ola bilər. Məsələn, ping çalışa bilər, amma traceroute yox və sair. Hər bir halda ilkin analiz üçün məqalədə danışdığım tətbiqlər çox faydalıdır.
netadmin.az IT haqqında Azərbaycan dilində