Go ile ağ programlama
net paketiyle TCP ve UDP istemci ve sunucuları yazar, DNS çözer, süre sınırlarını ve TLS’i doğru kurarak kendi lab ağında güvenilir ağ araçları geliştirirsin.
Seviye 301 · 19 ders · 15 pratik lab
Dersler
TCP ve UDP
- net paketi: Dial, Listen ve Conn
- TCP istemcisi: bağlanmak, yazmak, okumak
- Eşzamanlı TCP sunucusu
- Mesaj çerçeveleme: satır, uzunluk öneki ve bufio
- Süre sınırları: SetDeadline ve DialContext
- UDP ile istemci ve sunucu
- Kısa görev: satır tabanlı küçük sohbet sunucusu
Ad çözümleme ve ağ bilgisi
- net.Resolver ile DNS sorguları
- net/netip ile adres ve ağ aralıkları
- Arayüzleri ve adresleri listelemek
- İzinli lab hedeflerinden servis karşılama metni okumak
- Kısa görev: alan adı listesi için DNS raporu
TLS ve güvenli bağlantılar
- crypto/tls ile istemci ve sertifika doğrulama
- TLS sunucusu ve güvenli yapılandırma
- x509 ile sertifika incelemek ve süre uyarısı
- Karşılıklı TLS: istemci sertifikasıyla kimlik doğrulama
- Basit TCP vekil sunucusu ve io.Copy
- Kısa görev: lab sunucularının sertifika süresini denetle
Bitirme
- Bitirme görevi: lab ağındaki servislerin erişilebilirlik ve TLS raporu
Pratik lablar
- net.Dial ile karşılama satırını okumak: net.Dial ile lab hedefindeki hizmete bağlan, ilk satırı oku ve bağlantıyı her yolda kapat.
- Eşzamanlı satır dönüştürme sunucusu: Her bağlantıyı ayrı goroutine'de işleyen, gelen satırı büyük harfe çevirip geri yazan TCP sunucusunu yaz ve kapanışta dinleyiciyi düzgün kapat.
- Satır tabanlı sohbet odası: İletileri odadaki herkese yayan sunucuyu yaz; yavaş istemci diğerlerini bekletmemeli, ayrılan istemcinin goroutine'i sızmamalı.
- UDP yankı istemcisi ve sunucusu: Datagramları geri gönderen UDP sunucusunu ve yanıtı okuma süre sınırıyla bekleyen istemciyi yaz.
- Uzunluk önekli iletileri okumak: Dört baytlık uzunluk öneki taşıyan iletileri io.ReadFull ile oku; azami boyutu aşan iletide bellek ayırmadan hata döndür.
- Yavaş karşı tarafı süre sınırıyla kesmek: Veriyi damla damla gönderen istemcinin goroutine'leri tükettiği sunucuya okuma, yazma ve boşta kalma süre sınırları ekle; yük testinde goroutine sayısı sabit kalmalı.
- Adresin izinli aralıkta olup olmadığını bulmak: net/netip ile verilen adresleri özel, döngü ve izinli lab aralığı olarak sınıflandıran fonksiyonu yaz.
- Alan adı listesi için DNS raporu: Lab çözümleyicisine net.Resolver ile A, AAAA, MX ve TXT sorguları gönder; her ada zaman aşımı uygula ve bulunamayanı ayrı işaretle.
- İzin listesindeki hedeflerden karşılama satırı toplamak: Yalnızca izin listesindeki lab adreslerine eşzamanlılık sınırı ve zaman aşımıyla bağlan; liste dışı hedefi reddet ve karşılama satırlarını JSON olarak yaz.
- Sertifikanın bitişine kalan günü bulmak: Lab TLS hedefine bağlan, sunucu sertifikasının bitiş tarihini oku ve kalan gün sayısını döndür.
- İstemciyi iç sertifika yetkilisine güvendirmek: InsecureSkipVerify ile çalışan istemciyi lab iç yetkilisini içeren kök havuzuyla düzelt ve yanlış adlı sunucunun reddedildiğini göster.
- Sertifika zincirini inceleyip uyarı üretmek: Lab sunucularının zincirlerini x509 ile incele; otuz günden az kalan, zayıf anahtarlı ve adı uyuşmayan sertifikalar için ayrı uyarılar üret.
- TLS sunucusunda en düşük sürümü belirlemek: Hazır sertifikayla TLS sunucusu kur; en düşük sürümü 1.2 yap ve eski sürümle gelen istemcinin reddedildiğini test et.
- İstemci sertifikasıyla karşılıklı doğrulama: Sunucuyu yalnızca iç yetkilinin imzaladığı istemci sertifikalarını kabul edecek şekilde ayarla ve sertifikadaki adı işleyiciye aktar.
- TCP vekilinde yarım kapanışı doğru yönetmek: io.Copy ile iki yönü kopyalayan vekilde bir taraf kapandığında asılı kalan goroutine'i gider; CloseWrite ve süre sınırlarıyla sızıntı testini geç.
Kurs hakkında
net paketiyle TCP ve UDP istemci ve sunucuları yazar, DNS çözer, süre sınırlarını ve TLS’i doğru kurarak kendi lab ağında güvenilir ağ araçları geliştirirsin.
Ne öğreneceksin
- TCP ve UDP
- Ad çözümleme ve ağ bilgisi
- TLS ve güvenli bağlantılar
- Bitirme
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde ve ona bağlı özel bir lab ağında geçer. Kurulum gerekmez.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.