Python ile ağ programlama: soket, HTTP, TLS
Soketlerle istemci ve sunucu yazar, HTTP ve TLS'i alt düzeyden anlar, zaman aşımı ve hatalara dayanıklı ağ kodu geliştirirsin; yalnızca kendi lab hedeflerinde çalışırsın.
Seviye 301 · 20 ders · 21 pratik lab
Dersler
Soketler
- Soket nedir? Adres, port ve bağlantı
- TCP istemcisi: bağlan, gönder, al
- TCP sunucusu ve birden çok istemci
- Mesaj sınırları: uzunluk öneki ve satır sonu
- UDP soketleri
- Zaman aşımı ve ağ hataları
- Kısa görev: kendi küçük metin protokolünü yaz
Ad çözümleme ve HTTP
- getaddrinfo, IPv4 ve IPv6
- HTTP isteğini elle yazmak
- http.client ve urllib ile HTTP
- http.server ile küçük sunucu ve sınırları
- httpx ile oturum, yeniden deneme ve bağlantı havuzu
- Kısa görev: sayfalı API'den tüm kayıtları çek
TLS ve güvenli iletişim
- ssl modülü ile TLS istemcisi
- Sertifika doğrulama ve neden kapatılmamalı
- TLS sunucusu ve kendi sertifikan
- selectors ile bloklamayan sunucu
- asyncio akışlarıyla sunucu
- Kısa görev: lab sunucularının sertifika bitiş tarihlerini raporla
Bitirme
- Bitirme görevi: TLS'li, çok kullanıcılı sohbet sunucusu
Pratik lablar
- Çok satırlı yanıtlı metin protokolü istemcisi: Çok satırlı yanıt veren e-posta benzeri bir metin protokolü için durum makineli istemci yaz; beklenmeyen kodda oturumu düzgün kapat.
- Lab servisinin karşılama satırını okumak: Lab hedefindeki metin servisine TCP ile bağlanıp ilk satırı oku ve bağlantıyı with ile kapat.
- Satır tamamlanana kadar okumak: Tek recv çağrısına güvenen istemciyi satır sonu gelene dek biriktirerek okuyacak şekilde düzelt; parçalı gelen yanıtlar testte doğru birleşsin.
- Çok istemcili söz sunucusu: Her bağlantıya rastgele bir söz gönderen sunucuyu iş parçacıklarıyla yaz; yavaş bir istemci diğerlerini bekletmesin.
- Ağ hatalarını ayırt eden bağlantı denetçisi: Lab hedeflerinde reddedilen bağlantı, zaman aşımı ve ad çözümleme hatasını ayrı ayrı raporlayan denetçiyi yaz.
- Uzunluk önekli JSON mesajları: 4 baytlık uzunluk önekiyle JSON gönderen ve alan iki fonksiyon yaz; kısmi okumalar doğru birleşsin.
- UDP ile kalp atışı izleyicisi: Cihazlardan gelen UDP kalp atışlarını dinleyip on saniyedir ses vermeyenleri listeleyen izleyiciyi yaz.
- Mesaj boyutuna üst sınır koymak: Uzunluk alanına güvenip sınırsız bellek ayıran alıcıya üst sınır ve zaman aşımı ekle; dev uzunluklu mesaj bağlantıyı kapatsın.
- Bir adın IPv4 ve IPv6 adreslerini listelemek: getaddrinfo ile lab alan adlarının adres ailelerini ayırıp tablo halinde yazdır.
- Elle yazılmış HEAD isteğiyle başlık okumak: Lab web hedefine soket üzerinden HEAD isteği gönder ve durum satırı ile başlıkları sözlüğe ayrıştır.
- Tek istemciyle yeniden denemeli istekler: Her istekte yeni bağlantı açan kodu tek bir httpx.Client ve yeniden deneme taşıyıcısıyla düzenle; bağlantı sayısı testte düşsün.
- İmleçli sayfalamayı sonuna kadar izlemek: Lab API'sinin next imleciyle sayfalanan uç noktasından tüm kayıtları topla; yinelenen imleçte sonsuz döngüye girme.
- Sunucu sertifikasının alanlarını okumak: ssl modülüyle lab TLS hedefine bağlanıp sertifikanın konu, veren ve bitiş tarihini yazdır.
- Kapatılmış sertifika doğrulamasını geri açmak: Doğrulamayı kapatan istemciyi lab CA dosyasına güvenen varsayılan bağlamla düzelt; yanlış adlı sunucu reddedilsin.
- TLS sunucusunda eski sürümleri kapatmak: Kendi sertifikanla çalışan TLS sunucusunda en düşük sürümü TLS 1.2 yap ve eski sürümle bağlanan test istemcisinin reddedildiğini göster.
- selectors ile tek iş parçacıklı sunucu: selectors modülüyle birden çok istemciye aynı anda yanıt veren bir büyük harf sunucusu yaz.
- asyncio streams ile anahtar-değer sunucusu: GET ve SET satır komutlarını anlayan bir asyncio streams sunucusu yaz; bilinmeyen komuta hata satırı dön.
- Boşta kalan bağlantıları kapatmak: Asenkron sunucuya otuz saniye veri göndermeyen istemcileri kapatan zaman aşımı ve bağlantı sayısı sınırı ekle.
- Parça parça gelen çerçeveleri birleştirmek: Uzunluk önekli iletileri okuyan alıcıyı, bir ileti birkaç parçada ya da iki ileti tek parçada geldiğinde de doğru çalışacak şekilde düzelt.
- UDP sorgusunda zaman aşımı ve yeniden deneme: Lab sunucusuna UDP ile sorgu gönderen istemciye zaman aşımı ve artan beklemeli yeniden deneme ekle; yanıtlar istek numarasıyla eşleştirilsin, ilgisiz paketler yok sayılsın.
- Tek istemciyle zaman aşımlı istek atmak: Her çağrıda yeni bağlantı açan kodu tek bir istemci nesnesine taşı, bağlanma ve okuma zaman aşımı ver ve hatalı durum kodlarını istisnaya çevir.
Kurs hakkında
Soketlerle istemci ve sunucu yazar, HTTP ve TLS'i alt düzeyden anlar, zaman aşımı ve hatalara dayanıklı ağ kodu geliştirirsin; yalnızca kendi lab hedeflerinde çalışırsın.
Ne öğreneceksin
- Soketler
- Ad çözümleme ve HTTP
- TLS ve güvenli iletişim
- 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.