L02 — Ağ I: port, dinleme, "refused" vs "timeout"#
Modül:
A2· Süre: ~1 saat · Kırık lab: yok
Bir servisi farklı arayüz ve portlara bağlar, dinleneni ss/nc ile doğrular, sonra iki temel ağ hatasını — connection refused ve timeout — bilerek üretip ayırt edersin. Bu ikisini karıştıran mühendis yanlış yerde saatlerce arar.
Gerekenler#
- Linux/WSL2/VM.
python3,ss(veyanetstat),nc(netcat),curl.
Görev#
- Sadece localhost'a bağla. Bir HTTP servisini yalnız
127.0.0.1:8080'de dinlet (dış arayüzde değil).starter/serve-localhost.shbaşlatır. - Dinleneni kanıtla.
ss -tlnpile bu servisin127.0.0.1:8080'deLISTENolduğunu gör. Çıktı satırınıreport.txt'e yapıştır. - "Refused" üret. Kapalı bir porta (örn.
127.0.0.1:9999) bağlanmayı dene. Neden anında reddedildi?report.txt'e yaz. - "Timeout" üret. Yönlendirilemeyen bir adrese (örn.
10.255.255.1, yerelde route'u yok) bağlanmayı dene. Neden asıldı kaldı (hemen reddedilmedi)?report.txt'e yaz. - Farkı yaz.
report.txtsonunda: "refused = ...; timeout = ...; hata mesajı bana ilk olarak neyi söyler?" — kendi cümlelerinle.
Kabul kriterleri#
-
bash verify.shsıfır hatayla geçiyor. -
report.txt127.0.0.1:8080veLISTENiçeren birsssatırı barındırıyor. -
report.txt"refused" ve "timeout" ayrımını sebepleriyle açıklıyor.
İpucu (çözüm değil)#
- Refused: hedef makine ulaşılabilir ama o portta dinleyen yok → TCP
RSTgelir, anında cevap. Yanlış port / servis çökmüş demektir. - Timeout: paket hedefe hiç varamıyor (route yok, firewall paketi sessizce düşürüyor) → cevap gelmez, istemci bekler. Ağ/firewall/route sorunudur.
nc -z -w3 <host> <port>bağlantıyı test eder; çıkış kodu ve süresi ipucudur.
Takılırsan solution/'a bak — ama önce kendin dene.