IlmHamroh
JavaScript Full-stack/2-qism. Internet, veb va brauzer13/20-dars17 daqiqa
Mundarija (33)

Tarmoqni terminaldan tekshirish: ping, nslookup, tracert va curl

Qisqacha: Sayt ochilmasa, muammoni yaqindan uzoqqa qarab qidiring. ipconfig — kompyuter tarmoqqa ulanganmi, ping — router va internetga yo'l bormi, nslookup — domen IP'ga aylanyaptimi, Test-NetConnection yoki curl — server porti ochiqmi va qanday javob beryapti. Besh buyruq muammo Wi-Fi'da, provayderda, DNS'da yoki serverning o'zida ekanini ko'rsatadi.

Bu darsda

  • Tarmoq muammosini qadamma-qadam, yaqindan uzoqqa qarab tekshirish tartibini o'rganasiz.
  • ipconfig, ping, nslookup va Resolve-DnsName chiqishlarini o'qiy olasiz.
  • tracert bilan paket yo'lini, Test-NetConnection bilan portni tekshirasiz.
  • curl -I, -v, -L bilan server javobini ko'rasiz va curl xato kodlarini tushunasiz.
  • Windows va Linux/macOS buyruqlari orasidagi farqlarni bilasiz.

Oldin bilishingiz kerak: Manzilni yozganda nima bo'ladi: to'liq sayohat, Jarayonlar va band portlar, PowerShell asoslari va bash bilan farqi.

1. Nega bu kerak?

Siz kichik kompaniyada ishlaysiz. Mijoz qo'ng'iroq qiladi: "Saytingiz ishlamayapti!" Siz o'z kompyuteringizda ochasiz — ochilyapti. Muammo qayerda?

  • Mijozning uydagi interneti uzilganmi?
  • Uning provayderi domen nomini topa olmayaptimi?
  • Server ma'lum bir mintaqadan kelgan so'rovlarga javob bermayaptimi?
  • Yoki sertifikat muddati o'tib ketganmi?

Oddiy foydalanuvchi sahifani qayta-qayta yangilaydi. Dasturchi esa terminalni ochadi va har bir taxminni bitta buyruq bilan tekshiradi.

Oldingi to'liq sayohat darsida zanjirni o'rgandik: DNS → TCP → TLS → HTTP. Bugun har bir bo'g'inni tekshiradigan vositani qo'lga olamiz. Chiqishlarning hammasi — haqiqiy, Toshkentdagi Wi-Fi'ga ulangan Windows 11 kompyuterdan olingan.

Maslahat: Bu darsdagi Windows buyruqlarini PowerShell'da bajaring. ping, ipconfig, nslookup, tracert Git Bash'da ham ishlaydi, lekin Resolve-DnsName va Test-NetConnection — faqat PowerShell buyruqlari.

2. Tekshirish tartibi: yaqindan uzoqqa

Chiroq yonmasa, elektrchi avval lampochkani, keyin kalitni, keyin uydagi schyotchikni tekshiradi. Butun shaharning elektr tarmog'idan boshlamaydi. Tarmoqda ham xuddi shunday: eng yaqin bo'g'indan boshlab, uzoqqa qarab boramiz.

flowchart TD
    A[Sayt ochilmayapti] --> B{ping router}
    B -- javob yo'q --> B1[Wi-Fi yoki kabel]
    B -- javob bor --> C{ping 1.1.1.1}
    C -- javob yo'q --> C1[Provayder]
    C -- javob bor --> D{nslookup domen}
    D -- topilmadi --> D1[DNS muammosi]
    D -- IP bor --> E{443-port ochiqmi}
    E -- yo'q --> E1[Server yoki firewall]
    E -- ha --> F{curl -I}
    F -- 4xx yoki 5xx --> F1[Sayt kodi yoki sozlama]
    F -- 200 --> F2[Brauzerni tekshiring]

Besh qadam:

  1. Kompyuterim tarmoqqa ulanganmi, IP olganmi? — ipconfig
  2. Router javob beryaptimi? — ping routerga
  3. Internet bormi? — ping 1.1.1.1
  4. DNS domenni IP'ga aylantiryaptimi? — nslookup
  5. Server porti ochiqmi va HTTP javobi qanday? — Test-NetConnection, curl

3. 1-qadam: kompyuteringizning tarmoq holati — ipconfig

PowerShell'da:

powershell
ipconfig

Chiqish uzun bo'lishi mumkin — har bir tarmoq adapteri uchun alohida blok. Bizga ulangan Wi-Fi yoki Ethernet bloki kerak (qisqartirilgan):

text
Wireless LAN adapter Wi-Fi:

   IPv4 Address. . . . . . . . . . . : 192.168.1.140
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.1.1

Adapter nomi tizim tiliga qarab boshqacha yozilishi mumkin. Ikki qatorga qarang:

  • IPv4 Address — kompyuteringizning uy tarmog'idagi manzili. IP darsidan eslang: 192.168.x.x — xususiy (private) manzil, uni faqat uy tarmog'i ko'radi.
  • Default Gateway — "chiqish eshigi", ya'ni routeringiz manzili. Uydan tashqariga ketadigan har bir paket shu orqali o'tadi.

Nimaga e'tibor berish kerak:

  • Media disconnected — adapter ulanmagan (kabel chiqib qolgan yoki Wi-Fi o'chiq).
  • IP 169.254.x.x — kompyuter routerdan manzil ololmadi va o'ziga "vaqtinchalik" manzil qo'ydi. Router bilan aloqa yo'q.
  • Default Gateway bo'sh — routerga yo'l yo'q.

Linux'da xuddi shu ma'lumotni ip a (manzillar) va ip route (gateway) ko'rsatadi. macOS'da — ifconfig yoki ipconfig getifaddr en0.

4. 2–3-qadam: ping — "sen bormisan?"

4.1 ping qanday ishlaydi

ping manzilga kichik maxsus paket yuboradi va "aks-sado" kutadi. U ikki narsani o'lchaydi: javob keldimi va qancha vaqtda keldi. Bu vaqt kechikish (latency) — borib-kelish vaqti, millisekundlarda.

Nom sonar'dan olingan: suv osti kemasi tovush yuboradi va qaytgan aks-sadoga qarab masofani biladi.

4.2 Routerni tekshirish

ipconfig da ko'rgan Default Gateway manzilini ping qilamiz. Windows'da -n 4 — 4 ta paket yuborish:

powershell
ping -n 4 192.168.1.1

Natija:

text
Pinging 192.168.1.1 with 32 bytes of data:
Reply from 192.168.1.1: bytes=32 time=12ms TTL=64
Reply from 192.168.1.1: bytes=32 time=32ms TTL=64
Reply from 192.168.1.1: bytes=32 time=10ms TTL=64
Reply from 192.168.1.1: bytes=32 time=9ms TTL=64

Ping statistics for 192.168.1.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 9ms, Maximum = 32ms, Average = 15ms
  • Reply from — "javob keldi".
  • time=12ms — borib-kelish 12 millisekund. Wi-Fi'da odatda bir necha millisekunddan bir necha o'n millisekundgacha bo'ladi, kabelda — 1 ms atrofida.
  • Lost = 0 (0% loss) — hech bir paket yo'qolmadi.

Router javob berdi — demak, kompyuter bilan router orasidagi aloqa (Wi-Fi yoki kabel) ishlayapti.

TTL — paketning "umri": u har bir routerdan o'tganda bittaga kamayadi. Hozircha unga e'tibor bermasangiz ham bo'ladi.

4.3 Internetni tekshirish

Endi uydan tashqariga — doim ishlaydigan ma'lum manzilga. 1.1.1.1 — Cloudflare'ning ochiq DNS serveri, 8.8.8.8 — Google'niki. IP bilan ping qilamiz — DNS'ni hozircha aralashtirmaslik uchun:

powershell
ping -n 4 1.1.1.1
text
Reply from 1.1.1.1: bytes=32 time=65ms TTL=52
Reply from 1.1.1.1: bytes=32 time=61ms TTL=52
Reply from 1.1.1.1: bytes=32 time=61ms TTL=52
Reply from 1.1.1.1: bytes=32 time=66ms TTL=52

Ping statistics for 1.1.1.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 61ms, Maximum = 66ms, Average = 63ms

Javob bor — internet ishlayapti. O'rtacha 63 ms — paket Toshkentdan Yevropadagi serverga borib qaytdi.

4.4 ping xatolari

Javob kelmasa:

text
Request timed out.
Request timed out.

Ping statistics for 10.255.255.1:
    Packets: Sent = 2, Received = 0, Lost = 2 (100% loss),

Request timed out — "so'rov vaqti tugadi": javob kutilgan vaqtda kelmadi. Manzil o'chiq, yo'l yo'q yoki qurilma ping'ga javob bermaydi.

Domen nomini ping qilsak va u topilmasa:

text
Ping request could not find host bunday-sayt-yoq-12345.uz.
Please check the name and try again.

"Ping so'rovi hostni topa olmadi. Nomni tekshirib, qayta urinib ko'ring." Bu xato ping'gacha, DNS bosqichida yuz berdi — domen IP'ga aylanmadi.

Diqqat: Linux va macOS'da ping o'zi to'xtamaydi — Ctrl + C bilan to'xtatasiz. Paketlar sonini -c 4 bilan berasiz (-n emas). Windows'da esa ping 4 ta paketdan keyin o'zi to'xtaydi, cheksiz ping — ping -t.

Tekshirib ko'ring: ping 192.168.1.1 — 100% loss, ipconfig da IP 169.254.12.7. Muammo qayerda?

Javob

Kompyuter va router orasida. 169.254.x.x — kompyuter routerdan manzil ololmaganini bildiradi. Wi-Fi paroli, kabel yoki routerning o'zini tekshirish kerak. Provayder yoki sayt bilan bog'liq emas — undan oldin to'xtab qolyapmiz.

5. 4-qadam: DNS'ni tekshirish

1.1.1.1 ga ping bor, lekin sayt nomi bilan ochilmasa — gumon DNS'ga tushadi. Endi nslookup ni tashxis vositasi sifatida ishlatamiz.

5.1 nslookup — hamma tizimda bor

powershell
nslookup example.com
text
Server:  dns.google
Address:  8.8.8.8

Non-authoritative answer:
Name:    example.com
Addresses:  2606:4700:10::ac42:93f3
          2606:4700:10::6814:179a
          172.66.147.243
          104.20.23.154

Bu chiqishni DNS darsida bo'laklagan edik. Qisqa eslatma: Server — javob bergan resolver (bu yerda Google'ning 8.8.8.8, ko'pincha esa provayderniki), Non-authoritative answer — javob resolver keshidan keldi (bu normal), Addresses — ikkita IPv6 va ikkita IPv4 manzil.

Muayyan DNS serverdan so'rash uchun uni oxiriga qo'shasiz:

powershell
nslookup example.com 1.1.1.1

Bu provayder resolveri eski yoki xato javob berayotganini tekshirishda kerak. Ikki server har xil IP qaytarsa — kimdir eski keshni ushlab turibdi.

Domen mavjud bo'lmasa:

text
*** dns.google can't find bunday-sayt-yoq-12345.uz:
Non-existent domain

Non-existent domain — "mavjud bo'lmagan domen". Brauzerdagi DNS_PROBE_FINISHED_NXDOMAIN bilan bir xil ma'no.

5.2 Resolve-DnsName — PowerShell'ning zamonaviy vositasi

Bu buyruq bilan DNS darsida tanishgan edik. Eslatib o'tamiz:

powershell
Resolve-DnsName example.com
text
Name        Type TTL Section IPAddress
----        ---- --- ------- ---------
example.com AAAA 226 Answer  2606:4700:10::ac42:93f3
example.com AAAA 226 Answer  2606:4700:10::6814:179a
example.com A    228 Answer  104.20.23.154
example.com A    228 Answer  172.66.147.243

Jadval ko'rinishida, va qo'shimcha foydali ustunlar bor:

  • Type — yozuv turi: A — IPv4, AAAA — IPv6 (DNS yozuvlari).
  • TTL — bu javob yana necha soniya keshda turadi (bizda ~4 daqiqa).

Yozuv turini va serverni tanlash mumkin:

powershell
Resolve-DnsName example.com -Type AAAA -Server 1.1.1.1

Domen topilmasa: bunday-sayt-yoq-12345.uz : DNS name does not exist — "DNS nomi mavjud emas".

5.3 dig — Linux va macOS

Linux va macOS'da DNS uchun asosiy vosita — dig. Windows'da u yo'q. +short — faqat IP'larni chiqarish:

bash
dig +short example.com

Chiqish — IPv4 manzillar ro'yxati, har biri alohida qatorda (104.20.23.154 va 172.66.147.243). Boshqa server: dig @1.1.1.1 example.com, boshqa tur: dig example.com AAAA.

Maslahat: Kompyuteringiz eski IP'ni eslab qolgan bo'lsa, DNS darsidagi ipconfig /flushdns keshni tozalaydi.

6. Yo'lni kuzatish: tracert

ping "yetib borildimi?" deydi. tracert (trace route — yo'lni kuzatish) esa qaysi yo'l bilan yetib borilganini ko'rsatadi. Uni birinchi darsda ko'rgan edik — endi chiqishini diagnostika uchun o'qiymiz. Paket sizdan serverga borguncha o'nlab routerdan o'tadi. Har biri — bitta hop (sakrash).

powershell
tracert -d 1.1.1.1

-d — IP'larni nomga aylantirmaslik (tezroq ishlaydi). Buyruq bir necha o'n soniya ishlashi mumkin — sabr qiling. Natija (qisqartirilgan):

text
Tracing route to 1.1.1.1 over a maximum of 30 hops

  1     8 ms     8 ms    12 ms  192.168.1.1
  2    14 ms     5 ms    16 ms  100.64.0.1
  3     5 ms     5 ms     5 ms  172.16.248.65
  4     9 ms    10 ms     9 ms  203.0.113.68
  ...
  7     8 ms     4 ms     7 ms  203.0.113.55
  8    42 ms    31 ms    57 ms  198.51.100.12
  9    58 ms    58 ms    60 ms  198.51.100.14
 10    64 ms     *        *     162.158.100.252
 11    62 ms    59 ms    58 ms  162.158.100.27
 12    61 ms    59 ms    58 ms  1.1.1.1

Trace complete.

Qanday o'qiladi:

  • Birinchi ustun — hop raqami. 1-hop doim uydagi router.
  • Uchta vaqt — o'sha routergacha uch marta o'lchangan borib-kelish.
  • Oxirgi ustun — routerning IP manzili.
  • * — shu urinishda javob kelmadi.

Bizda: 1-hop — router, 2–7-hoplar — O'zbekistondagi provayder tarmog'i (vaqt 4–16 ms). 8–9-hoplarda vaqt 31–60 ms ga sakradi — paket mamlakatdan chiqib, uzoq kabel orqali ketdi. 10–12 — Cloudflare tarmog'i. Qayerda vaqt keskin oshsa — o'sha yerda masofa katta yoki tiqilinch bor.

Yulduzchalar faqat o'rtada bo'lsa, lekin oxirgi qatorga yetib borilgan bo'lsa — muammo yo'q. Ko'p routerlar xavfsizlik uchun bunday so'rovlarga javob bermaydi. Muammo belgisi — yulduzchalar biror hopdan boshlab oxirigacha davom etsa.

Linux va macOS'da buyruq nomi to'liq: traceroute 1.1.1.1. Zamonaviy muqobil — mtr: u ping va traceroute'ni birlashtirib, jonli jadval ko'rsatadi.

Tekshirib ko'ring: tracert 1–4 hoplarda javob beradi, 5-hopdan boshlab oxirigacha faqat * * *. Muammo qayerda bo'lishi mumkin?

Javob

Paket 4-hopgacha yetib bormoqda, undan keyin yo'l uzilgan. 1-hop — uyingiz, keyingilari — provayder. Demak, muammo provayder tarmog'ida yoki undan chiqishda. Uy routeringiz va kompyuteringiz aybdor emas — provayderga murojaat qilish kerak.

7. 5-qadam: port va server

7.1 Port ochiqmi? — Test-NetConnection

Server "tirik" bo'lishi mumkin, lekin kerakli port yopiq bo'lsa, sayt ochilmaydi. Portlar darsidan eslang: HTTPS — 443. PowerShell'da portni tekshirish:

powershell
Test-NetConnection example.com -Port 443
text
ComputerName     : example.com
RemoteAddress    : 104.20.23.154
RemotePort       : 443
SourceAddress    : 192.168.1.140
TcpTestSucceeded : True

TcpTestSucceeded : True — TCP ulanish o'rnatildi (3-way handshake muvaffaqiyatli). Port ochiq, server tinglayapti.

Endi server tinglamaydigan portni sinaymiz — masalan, 5432 (PostgreSQL bazasining standart porti):

text
WARNING: TCP connect to (104.20.23.154 : 5432) failed
...
PingSucceeded          : True
TcpTestSucceeded       : False

Qiziq holat: PingSucceeded : True — server tirik. Lekin TcpTestSucceeded : False — bu portda hech kim eshikni ochmadi. Bu farq muhim: "server ishlayapti, lekin kerakli dastur ishlamayapti yoki himoya devori (firewall) to'sib qo'ygan". Firewall'ni IP va port darsida uchratgan edik: u qaysi portlarga ulanish mumkinligini hal qiladi.

Linux va macOS'da shunga o'xshash vosita — nc -zv example.com 443.

7.2 curl -I — HTTP javobi

Port ochiq. Endi server HTTP darajasida nima deyapti? Sarlavhalar darsidan tanish curl -I:

bash
curl -I https://example.com
text
HTTP/1.1 200 OK
Content-Type: text/html
Server: cloudflare

Birinchi qator asosiy javob: 200 — sayt ishlayapti. 404 — sahifa yo'q. 500 — server kodida xato. 502 yoki 503 — server orqasidagi ilova ishlamayapti (status kodlari).

Diqqat: Windows PowerShell 5.1 da curl — Invoke-WebRequest ning taxallusi. curl -I u yerda xato beradi. PowerShell'da doim curl.exe deb yozing. Buni PowerShell darsida ko'rgan edik.

Linux yoki macOS'da birinchi qator ko'pincha HTTP/2 200 bo'ladi. Windows'dagi curl HTTP/2'siz yig'ilgan, shuning uchun HTTP/1.1 ko'rsatadi (HTTP versiyalari darsi). Ma'nosi bir xil.

7.3 curl -L — yo'naltirishlarni kuzatish

-L bilan curl 301/302 ga uchrasa, Location dagi manzilga o'zi o'tadi va har bir javobni ko'rsatadi. Qisqa ko'rinish uchun faqat kerakli qatorlarni grep bilan ajratamiz:

bash
curl -sIL http://github.com | grep -iE "^HTTP|^location"

-E — grep'ga "bir nechta variantdan birini qidir" deydi: HTTP yoki location bilan boshlangan qatorlar.

text
HTTP/1.1 301 Moved Permanently
Location: https://github.com/
HTTP/1.1 200 OK

http:// → 301 → https:// → 200. Yo'naltirish zanjiri to'g'ri ishlayapti.

7.4 curl -v — hamma bosqichlar birga

-v bitta buyruqda DNS, TCP, TLS va HTTP'ni ko'rsatadi. Qaysi qatorda to'xtaganiga qarab muammo bosqichini bilasiz:

text
* Host example.com:443 was resolved.        ← DNS ishladi
*   Trying 104.20.23.154:443...              ← TCP boshlandi
* ALPN: server accepted http/1.1            ← TLS o'tdi
* Established connection to example.com ... ← ulanish tayyor
> GET / HTTP/1.1                             ← so'rov ketdi
< HTTP/1.1 200 OK                            ← javob keldi

(O'ng tomondagi izohlar — biz qo'shgan, curl ularni chiqarmaydi.)

7.5 curl xato kodlari

curl muvaffaqiyatsiz bo'lsa, xato raqamini aytadi. Eng keraklilari — haqiqiy xabarlar:

text
curl: (6) Could not resolve host: bunday-sayt-yoq-12345.uz
curl: (7) Failed to connect to localhost:3999 after 2250 ms:
      Could not connect to server
curl: (28) Connection timed out after 5004 milliseconds
curl: (60) schannel: SEC_E_UNTRUSTED_ROOT ...
Kod Tarjimasi Bosqich
(6) Hostni topa olmadim DNS
(7) Ulana olmadim — port yopiq TCP
(28) Vaqt tugadi — javob yo'q TCP (tarmoq, firewall)
(35), (60) Sertifikat yoki TLS xatosi TLS

(7) ni IP va port darsida, (28) ni TCP darsida uchratgan edik. Ularning farqi foydali. (7) — server darhol "yo'q" dedi: kompyuter bor, lekin portda hech kim tinglamayapti. Masalan, serveringizni ishga tushirishni unutgansiz. (28) — umuman javob kelmadi: manzil noto'g'ri, tarmoq uzilgan yoki firewall paketlarni jimgina tashlab yuboryapti. Kutish vaqtini --max-time 5 bilan cheklash mumkin.

Tekshirib ko'ring: Siz o'z serveringizni localhost:3000 da ishga tushirdingiz deb o'ylaysiz, lekin curl -I http://localhost:3000 → curl: (7) Failed to connect. Birinchi nimani tekshirasiz?

Javob

Server haqiqatan ishlayaptimi va aynan 3000-portdami. (7) — ulanish rad etildi, ya'ni bu portda hech kim tinglamayapti. Server xato bilan to'xtagan yoki boshqa portda ishga tushgan bo'lishi mumkin. Band portlar darsidagi netstat -ano | findstr :3000 bilan kim tinglayotganini ko'rasiz.

8. Vositalar jadvali

Savol Windows (PowerShell) Linux / macOS
IP va router? ipconfig ip a, ip route
Manzil javob beradimi? ping -n 4 IP ping -c 4 IP
Domen qaysi IP'da? nslookup, Resolve-DnsName nslookup, dig
Paket yo'li? tracert -d traceroute, mtr
Port ochiqmi? Test-NetConnection -Port nc -zv
HTTP javobi? curl.exe -I, -v, -L curl -I, -v, -L

HTTPie haqida ham eshitasiz. Bu curl ga o'xshash, lekin chiqishni rangli va chiroyli ko'rsatadigan vosita: http GET https://api.github.com/zen. U alohida o'rnatiladi va ixtiyoriy — curl hamma joyda tayyor turadi, shuning uchun asosiy vosita u.

9. Ko'p uchraydigan xatolar

9.1 Ping javob bermadi — "sayt o'lik"

Ko'p serverlar va firewall'lar ping paketlarini ataylab bloklaydi. Sayt ping'ga javob bermasa ham, brauzerda bemalol ochilishi mumkin. Tuzatish: ping — faqat birinchi taxmin. Oxirgi so'z — Test-NetConnection -Port 443 va curl -I.

9.2 Windows'da traceroute

text
traceroute : The term 'traceroute' is not recognized as the name of
a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the
path is correct and try again.

"traceroute buyruq sifatida tanilmadi". Windows'da buyruq nomi qisqa: tracert.

9.3 PowerShell'da curl -I

text
Invoke-WebRequest : Cannot process command because of one or more
missing mandatory parameters: Uri.

PowerShell curl ni o'zining Invoke-WebRequest buyrug'i deb tushundi. Tuzatish: curl.exe -I https://example.com.

9.4 DNS o'zgarishini tekshirishda keshga aldanish

Domenni yangi serverga yo'naltirdingiz, nslookup esa eski IP'ni ko'rsatyapti. Provayder resolveri eski javobni TTL tugaguncha ushlab turibdi. Tuzatish: to'g'ridan-to'g'ri boshqa serverdan so'rang — nslookup domen 1.1.1.1 — va TTL'ga qarang (Resolve-DnsName).

9.5 Tracert'dagi o'rtadagi yulduzchalardan qo'rqish

O'rtadagi bitta-ikkita * — normal: router shunchaki javob bermaydi, lekin paketni uzatadi. Oxirgi qatorga yetib borilgan bo'lsa — yo'l butun.

10. Mashqlar

1-mashq (oson): O'z routeringiz

  1. PowerShell'da ipconfig bajaring va o'z Default Gateway manzilingizni toping.
  2. Unga 4 ta ping yuboring.
  3. O'rtacha vaqt va yo'qolgan paketlar foizini yozing.
Yechim

Masalan, gateway 192.168.1.1 bo'lsa:

powershell
ping -n 4 192.168.1.1

Yaxshi natija: Lost = 0 (0% loss). Vaqt Wi-Fi'da odatda 1–10 ms, kabelda 1 ms dan kam. Wi-Fi'da vaqt 50–100 ms dan oshsa yoki paketlar yo'qolsa — signal zaif: routerga yaqinroq boring yoki kabel ulang.

Sizda gateway 192.168.0.1 yoki 10.0.0.1 bo'lishi mumkin — routerlar har xil sozlangan.

2-mashq (o'rta): Tashxis qo'ying

Dilnoza "sayt ochilmayapti" dedi va to'rtta buyruq natijasini yubordi:

text
ping 192.168.1.1  →  Reply from 192.168.1.1: time=4ms
ping 1.1.1.1      →  Reply from 1.1.1.1: time=58ms
nslookup menyu.example.com  →  Non-existent domain
nslookup menyu.example.com 1.1.1.1  →  Non-existent domain

Muammo qaysi bosqichda? Kim tuzatishi kerak — Dilnozami yoki sayt egasi?

Yechim

Router va internet ishlayapti (birinchi ikki ping). DNS bosqichida to'xtadi: domen topilmadi. Ikki xil DNS server (provayder va Cloudflare) ham shunday deyapti — demak, bu bitta resolverning keshi emas. Domen yozuvi haqiqatan yo'q.

Tuzatish — sayt egasida: menyu subdomeni uchun DNS yozuvini qo'shish kerak (yoki Dilnoza manzilni xato yozgan — harflarini tekshirish ham foydali).

3-mashq (qiyin): Bir qatorlik tashxis

Exit code darsidagi && ni eslang: oldingi buyruq muvaffaqiyatli bo'lsagina keyingisi bajariladi. Git Bash'da shunday zanjir yozing:

  1. 1.1.1.1 ga bitta ping yuborsin;
  2. muvaffaqiyatli bo'lsa — example.com ning IP'sini nslookup bilan topsin;
  3. muvaffaqiyatli bo'lsa — curl -sI bilan javobning faqat birinchi qatorini chiqarsin.

Ishora: Git Bash'dagi ping — Windows ping'i, u -n ni tushunadi. Birinchi qatorni ajratish — head -n 1 (fayllar bilan ishlash darsi).

Yechim
bash
ping -n 1 1.1.1.1 > /dev/null && nslookup example.com \
  && curl -sI https://example.com | head -n 1

> /dev/null ping'ning uzun chiqishini yashiradi — bizga faqat uning muvaffaqiyati kerak. Natija oxirida:

text
HTTP/1.1 200 OK

Qaysidir qadam muvaffaqiyatsiz bo'lsa, zanjir o'sha yerda to'xtaydi — va qaysi bosqich buzilganini darhol ko'rasiz. Linux yoki macOS'da ping -c 1 yozasiz.

11. Real ishda

  • Qo'llab-quvvatlash: "Sayt ishlamayapti" xabari kelganda birinchi 2 daqiqada shu besh qadam bajariladi. Javob "sizda internet yo'q" yoki "DNS yozuvi o'chib qolgan" bo'lishi mumkin — kod tuzatish shart ham bo'lmaydi.
  • Backend va DevOps: serverga ulanib, curl -I http://localhost:3000 bilan ilova ichkaridan javob berayotganini tekshirish — har kungi ish. Docker va serverlar qismida bu buyruqlarni doim ishlatasiz.
  • Monitoring: UptimeRobot kabi xizmatlar aslida har daqiqada saytingizga curl qiladi va javob kelmasa xabar beradi. Ularni kursning DevOps qismida sozlaymiz.
  • Intervyu: "Sayt ochilmayapti — qanday tekshirasiz?" savoliga qadamma-qadam javob (yaqindan uzoqqa) sizni tajribali ko'rsatadi.

Xulosa

  • Tekshirish tartibi: kompyuter → router → internet → DNS → port → HTTP.
  • ipconfig — IP va gateway; 169.254.x.x — routerdan manzil olinmagan.
  • ping — javob va kechikish; lekin javob yo'qligi har doim ham "sayt o'lik" degani emas.
  • nslookup / Resolve-DnsName / dig — DNS; tracert — yo'l; Test-NetConnection — port.
  • curl -I, -L, -v — HTTP javobi; (6) DNS, (7) port yopiq, (28) vaqt tugadi, (60) sertifikat.

Keyingi dars: Brauzer tuzilishi va dvigatellar — tarmoq qismini tugatdik; endi javob yetib kelgan joyga — brauzerning ichiga kiramiz va u qanday qismlardan iboratligini ko'ramiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
Tarmoqni terminaldan tekshirish: ping, nslookup, tracert va curl — IlmHamroh